JPH02260033A - ブランチ予測 - Google Patents

ブランチ予測

Info

Publication number
JPH02260033A
JPH02260033A JP1290973A JP29097389A JPH02260033A JP H02260033 A JPH02260033 A JP H02260033A JP 1290973 A JP1290973 A JP 1290973A JP 29097389 A JP29097389 A JP 29097389A JP H02260033 A JPH02260033 A JP H02260033A
Authority
JP
Japan
Prior art keywords
branch
instruction
taken
cache memory
information
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
JP1290973A
Other languages
English (en)
Inventor
David B Fite
ディヴィッド ビー ファイト
John E Murray
ジョン イー マーリー
Dwight P Manley
ドワイト ピー マンリー
Michael M Mckeon
マイケル エム マッキオン
Elaine H Fite
エレイン エイチ ファイト
Ronald M Salett
ロナルド エム サレット
Tryggve Fossum
トリューグヴ フォッサム
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 JPH02260033A publication Critical patent/JPH02260033A/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Amplifiers (AREA)
  • Steroid Compounds (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本願は、計算システムの成る側面を開示するものであっ
て、これについては本願と同時に出願された以下の米国
特許出願にも記載されている。
Evance et al、、 AN INTERFA
CE BETWEEN A SYSTEMCONTRO
L [INIT AND A 5ERVICE PRO
CESING UNIT OFA DIGITAL C
OMPUTER(ディジタルコンピューターのシステム
制御装置とサービス処理装置との間のインターフェース
)  ;、Arnold et at、、 METHO
DAND  APPARATUS  FORINTER
PACING  A  SYSTEM  C0NTR0
LUNIT  FORA  MULTIPROCESS
ORSYSTEM  WITHTHECENTRAL 
PROCESSING UNITS (中央処理装置を
持ったマルチプロセッサーシステムのシステム制御装置
をインターフェースする方法及び装置);Gaglia
rdo  et  al、、  METHOD  AN
D  l’1EANs  FORINTERFACIN
G A SYSTEM C0NTR0L UNIT F
ORA MULTI−PROCHSSORSYSTEM
 WITHTHE SYSTEM ?fAIN MEM
ORY(システム主メモリーを持ったマルチプロセッサ
ーシステムのシステム制御装置をインターフェースする
方法及び装置)  ; D、 Fite et al、
、 METHODAND  APPARATUS  F
ORRESOLVING  A  VARIABLE 
 NUMBEROF  POTENTIAL MEMO
RY  ACCESS C0NFLICTS  IN 
 APIPELINED COMPUTERSYSTE
M  (パイプライン方式コンピューターシステムにお
ける可変個数の潜在的メモリーアクセス矛盾を解決する
方法及び装置):D、 Fite et al、、 D
HCODING MULTIPLE 5PECIFIE
R5IN  A  VARIABLE  LENGTH
lN5TRUCTION  ARCHITECTURE
(可変長命令アーキテクチャにおける多重指定子の解読
); D、 Fite et al、、 VIRTLI
AL lN5TRUCTIONCAC)IE REFI
LL ALGORITHM (仮想命令キャッシュ再補
充アルゴリズム); Murray et al、 P
IPELI)JEPROCESSING OF REG
ISTERAND REGISTERMODIPYIN
GSPECIFIERS WITHIN TIIE S
AME lN5TRUCTION (レジスター及び同
じ命令内のレジスター修飾指定子のパイプライン処理)
: Murray at al、、 MULTIPLE
INSTRUCTION PREPROCESSING
 SYSTEM葬ITHDATADEPENDENCY
 RESOLUTION FORDIGITAL CO
MPUTE!R5(ディジタルコンピューターのデータ
依存分解能を持った多重命令処理システム); D、 
Fite etal、、PREPROCESSING 
 IMPLIf!D 5PECIFIER5IN AP
IPELINHD PROCESSOR(パイプライン
化したプロセッサーにおける暗示指定子の前処理); 
Fossumet al、、 PIPELINED F
LOATING POINT ADDERFORDIG
ITAL Co門PUTER(ディジタルコンピュータ
ーのパイプライン化浮動小数点加算器); Grund
taannet al、、 5RLP TIMED R
EGISTERFILE (自己計時レジスターファイ
ル); Beaven et al、、 METHOD
 AN(lAPPARATUS  FORDETECT
ING  AND  C0RRECTING  ERR
ORSIN A PIPELINED COMPUTE
RSYSTEM (パイプライン化コンピューターシス
テムにおいて誤りを検出し訂正する方法及び装置); 
Flynn et al、、 METHODAND月E
ANS FORARBITRATING COMMUN
ICATIONREQUESTS [l5ING A 
SYSTEM C0NTR0L UNIT IN AM
ULTI−PROCESSORSYSTEM (マルチ
プロセッサーシステムにおいてシステム制御装置を使っ
て通信要求を調停する方法及び手段); E、 Fit
e et at、。
C0NTR0L  OF  MtlLTIPLE  F
[lNCTl0N  UNrTS  l[THPARA
LLEL  0PERATION  IN  A  M
ICROCODED  EXECUTIONUNIT 
(マイクロコード化された実行装置における並列動作機
能付き多重機能装置の制?11) ; Webb。
Jr、 et al、、 PROCESSING OF
 MBMORY ACCESS EX−CEPTION
S讐ITHPRE−FETCHED lN5TRUCT
IONS WITHINTIIE lN5TRUCTI
ON PIPELINE OF A VTTUAL M
EMORYSYSTEM−BAS!l!D DIGIT
AL COMPUTER(仮想記憶装置システムベース
ドディジタルコンピューターの命令パイプライン内での
先取りされた命令に伴うメモリーアクセス除外の処理)
; Hetherington etal、、 MET
HOD AND APPARATUS FORC0NT
R0LLINGTHE C0NVER3ION OF 
VIRTUAL To PHYSICAL MEMOR
YADDRESSES IN A DIGITAL C
OMPUTERSYSTEM (ディジタルコンピュー
ターシステムにおける仮想メモリーアドレスから物理的
メモリーアドレスへの変換を制御する方法及び装置);
 Hetherington etal、、WRITE
 BACK BUFFERWITHERRORC0RR
ECTINGCAPABILITIES (誤り訂正能
力を持ったライトパンクバッフy  ); Flynn
 et al、、 METHOD AND MEANS
FORAI?BITRATING GOと河υNICA
TION REQUESTS USINGA SYST
EM C0NTR0L tlNIT IN A Mtl
LTIPROCESSOR3YSTE、M (多重処理
システムにおいてシステム制御装置を使って通信要求を
調停する方法及び手段);Chinnasway et
 al、、 MODULARCROSSBARINTE
RCON−NBCTION NETWORK FORD
ATA TRANSACTIONS BETWEENS
YSTEM UNITS IN A MULTI−PR
OCESSOI? SYSTEM (多重処理システム
におけるシステム装置間でのデータトランザクションの
ためのモジュラ−クロスバ−相互接続ネットワーク) 
; Po1zin  et al、。
Ml!THOD  AND  APPARATUS  
FORINTf!RFACING  A  SYSTE
MCONTROL UNIT FORA MULTI−
PROCESSOi? SYSTEM WITHINP
UTloUTPUT UNITS (入出力装置を有す
るマルチプロセッサーシステムのためのシステム制御装
置をインターフェースする方法及び装置) ; Gag
li−ardo  et  al、、  MEMORY
  C0NFIGURATION  FORUSE  
WITFIMHANS FORINTERFACING
 A SYSTEM C0NTR0L UNITORA
 MULTI−PROCESSORSYSTEM騙IT
HT)18 SYSTEMMAIN MEMORY  
(システム主メモリーを持ったマルチプロセッサーシス
テム用のシステム制御装置をインターフェースする手段
に用いるメモリー排列);Gagliardo et 
al、、 METHOD AND MEANS FOR
ERRORCIIEGKING OF DRAM−CO
NTROL 5IGNALS BETWEENSYST
EM MODtlLES (システムモジュール間のド
ラム制御信号の誤りチエツクのための方法及び手段)。
本発明はディジタルコンピューターに関し、特にパイプ
ライン方式の中央処理装置に関する。
パイプライン方式は、ディジタルコンピューターにおい
て中央処理装置(cP U)の動作を向上させる証明済
みの方法である。パイプライン方式CPUにおいては、
複数の機能単位が複数の命令についての基本的動作を同
時に実行する。
パイプライン方式〇PUは、命令がメモリーに出現する
順にその命令が実行される時に最も効率良く働く、シか
し、数個の部類の命令については、その命令の順序と異
なる指定された命令に実行がジャンプすることがある。
その様な部類の一つはブランチ(分岐)命令である。
ブランチ命令が実行される時、実行は、次の順番の命令
に続くか又は指定された「目標」アドレスにジャンプす
る。ブランチ命令により指定される「ブランチ」は、若
しプログラムがジャンプすれば「取られた」と言われ、
若し次の順番の命令が実行されれば「取られない」と言
われる。
色々な属性を持った色々な種類のブランチ命令がある。
ブランチ命令は、無条件(即ち命令が実行される毎にブ
ランチが取られることを意味する)であるか又は条件付
き(即ちその命令に付随する成る条件に応じてブランチ
が取られたり取られなかったりする)である、また、ブ
ランチ命令は単純であることも複雑であることもある。
単純なブランチ命令については、それが実行される直前
に、ブランチが取られるか否かが分かる。しかし、複雑
なブランチ命令については、その命令が実際に実行され
るまではブランチが取られるか否かは分からない。
ブランチ命令は、従来のパイプライン方式CPUの機能
停止の原因となる。例えば、単純なパイプライン方式プ
ロセッサーでは、単純な条件付きブランチ命令は第1サ
イクルで取り出され、第2サイクルで解読され、第3サ
イクルでブランチ判定がなされる。cpuは、該ブラン
チを取るべきか否か判定するまでは命令取り出し及び解
読のステージを機能停止させ、それを実行させるべき場
合に限って命令の取り出し及び解読を行なう。
ブランチ判定が行なわれている間の「機能停止」時間を
、目標アドレスの「目標命令」を先取りすることによっ
て、成る程度使用することが出来る。
その方法は、Troiani氏外のrVAX8600I
Box、VAXアーキテクチャのパイプライン方式実施
」という論文(’The VAX 8600 I Bo
x。
A Pipelined Implementatio
n of the VAXArchitecture 
 、 Digital Technical Jour
nal。
Digital Equipment Corp、+ 
(1985) 、 Pp、36−37)に記載されてい
る様にVAX8600コンピューターで使われている。
第1サイクルで、例えば、単純なブランチ命令が取り出
される。第2サイクルで、該ブランチ命令が解読され、
該ブランチ命令の次の命令が取り出される。第3サイク
ルでは、ブランチ判定がなされ、該ブランチ命令の次の
命令が解読され、該ブランチの目標アドレスにある命令
が取り出される。若し「ブランチを取る」判定があれば
、該ブランチ命令の次の命令は命令解読ステージから排
除され、その目標アドレスに添って取り出しが継続する
。若し「ブランチを取らない」判定があれば、ブランチ
目標命令の代わりに「不作動」コードを解読ステージに
挿入することによって目標命令が取り消され、該ブラン
チ命令に続く命令の順序で取り出しが継続する。
ブランチ命令に続く命令と目標命令との両方を取り出す
単純な手法は、いわゆる「ブランチ準備」法でこれらの
取り出された命令の両方を解読することにより拡張する
ことが出来る。取り出し及び解読の論理を複写して、ブ
ランチ判定前に追加の処理を設けることが出来る。しか
し、この方法は、解読論理の複写及び−時記憶に伴う経
費及び複雑さにより制限される。
ブランチ命令はプログラムに頻繁に(3ないし5個の命
令に約1個の割合で)現われるので、処理量を向上させ
るためにはブランチによるパイプラインの機能停止を減
少させなければならない。
この目的のために、進歩したパイプライン方式は、ブラ
ンチ命令が解読される時は各条件付きブランチ命令の結
果を予測し、該ブランチが取られると予測されれば「目
標」アドレスから始まる命令の取り出し及び実行を成る
程度まで継続し、若し該ブランチが取られないと予測さ
れれば該ブランチ命令後の次の命令から始まる命令の取
り出し及び実行を成る程度までmtaする「ブランチ予
測j法を使用する。命令の取り出し及びロードの方向が
正しいと確認し、或は正しい命令ストリームの取り出し
を再開するために、ブランチが取るべき方向をなるべく
速く解明するべきである。
幾つかのブランチ予測方法が提案されている。
G、 Desrochers氏の著作「並列処理及び多
重処理の原理J (Principles of Pa
rallel and Multi−processi
ng、 Internet Publications
 Inc++ NewYork(1987)、pp、1
61−163)を参照されたい。第1のブランチ予測方
法は、各ブランチ命令について「ブランチバイアス」ビ
ットを格納するステップを含む。命令解読器がブランチ
命令を解読する時、該解読器は「ブランチバイアス」ビ
ットを使って、該ブランチが取られるか否か予測する。
このバイアスは、そのブランチの過去の履歴を観察する
ことによって統計的に決定することが出来るものである
。この方法による予測は、ブランチ命令がバイアスに反
して分岐する時は常に誤っており、従ってその予測は、
分岐が取られる確立と取られない確立とがほぼ同じであ
る場合には大して役に立たない。
「履歴保存」と称する第2のブランチ予測方法は、キャ
ッシュメモリーに格納されている命令に余分のビットを
付加する。これらのビットは、命令のブランチ履歴に基
づいてセット又はリセットされる。例えば、2個の余分
のビットを使うことが出来る:その一つ(ブランチビッ
ト)は最後のブランチが取られたか否かを示し、他の一
つ(誤りビット)は、先の予測が正しかったか否かを示
す。この「ブランチ」ビットは、次の順番の命令(先の
ブランチが取られなかった場合)を取り出すべきか或は
ブランチ目標(先のブランチが取られた場合)を取り出
すべきかを決定するために検査される。ブランチの実際
の状態が計算されブランチ決定がなされる時、「誤り」
ビットは、予測が正しかったか否かを反映する様に更新
される。
若し最後の予測と現在の予測とが共に誤っていれば、該
ブランチ命令についての「バイアス」の変化を示すべく
「ブランチ」ビットは否定される。
もう一つのブランチ予測方法は、「ブランチ準備j方式
で「ブランチ目標バッファー」を使う。
予測メカニズム以外に、該ブランチの目標命令を指すア
ドレスが保存される。ブランチが取られると予測された
時には、このブランチ目標バッフブーに内蔵されている
目標アドレスを使ってその目標命令を取り出し、これに
より、有効アドレス計算を行なうのに要する時間を節約
することが出来る。ブランチ命令がキャッシュに留まっ
ている限りは、目標の有効アドレスの計算は、該ブラン
チに最初に遭遇した時に1回だけ計算されなければなら
ない。
命令解読プロセスの複数のステップにおいて、なるべく
速くブランチ予測を提供し、該ブランチが取るべき方向
をなるべく速く解明するために、パイプライン方式ディ
ジタルコンピューターは、パイプライン・ステージと整
合させられていて、他の種類の命令を解読し実行するの
に必要な遅れを予期又は迂回するブランチ予測装置を包
含している。
(発明の概要) 本発明の第1の側面によると、付随するブランチ履歴情
報を求めてキャッシュメモリーを探索することにより、
ブランチ命令についてブランチ予測を行なう、若しその
関連又は付随情報がキャッシュ内に発見されないならば
、そのブランチ命令の命令コードについての所定ブラン
チバイアスに基づいて該ブランチが予測される;そうで
ない場合には、該付随情報はキャッシュから読み出され
る。付随情報が、先のブランチが取られなかったことを
示していれば、そのブランチは取られないと予測される
。付随情報が、先のブランチが取られたことを示してい
れば、該ブランチは取られると予測される。
本発明の他の面によると、ブランチ脂層キャッシュは、
先に使われた変位情報と目標アドレスとを格納する。若
し付随情報がキャッシュ内に発見され、ブランチが取ら
れると予測されれば、付随する変位情報をそのブランチ
命令についての変位情報と比較して、付随する目標アド
レスが該ブランチ命令について妥当か否かを判定する。
若し付随目標アドレスが妥当であると判定されれば、該
ブランチにおける命令の前処理は、付随目標アドレスに
ある命令から直ちに始まる。そうでない場合には、目標
アドレスが計算される。キャッシュからの目標アドレス
が使われるのは、変位情報の比較によって、計算された
目標アドレスが同一であると保証される場合だけである
ので、キャッシュの所要の大きさを最小限にするために
、新しい「ブランチが取られる」項目又は誤って予測さ
れたブランチについての項目のみが該キャッシュに書き
込まれる。
本発明の別の面によるると、パイプラインプロセッサー
の実行装置は、ブランチ判定を解明することの出来る命
令を待ち、可能な時にはそのブランチ判定を少な(とも
1実行サイクル先に解明する。
命令解読、目標アドレス計算、及びブランチ判定の順序
に拘らずブランチ予測を実行するために、−次状態、二
次状態(「マーカー」と称する)、及び状態変化を判定
する状態信号を有する順次状態機械を使う。
複数のブランチ命令についてブランチ予測を行なうため
に、それぞれのブランチについての情報が一群のレジス
ターに格納され、該順次状態機械には、任意の時に両方
のブランチ予測の状態を識別する追加の一次状態と、保
留されている各条件付きブランチ予測についてのマーカ
ーの追加の組とが設けられる。本発明の他の目的及び利
点は、添付図面を参照して以下の記述を読むことから明
らかとなろう。
(実施例) 本発明は色々に修正、変形することの出来るものである
が、特定の実施例のみを図面に示した。
これについて以下に詳しく説明する。しかし、開示した
特別の形態のみに本発明を限定する意図は無く、むしろ
、特許請求の範囲の欄で定義された発明の範囲に属する
あらゆる修正、同等物及び代替物を網羅するべきもので
ある。
図面の第1図を先ず参照すると、この図はディジタルコ
ンピューターシステムを示しており、このシステムは、
主メモリー10と、メモリー−CPIJ間インタインタ
ーフエース装置11なくとも1個のCPUとを包含し、
このCPUは命令装置12と実行装置13とから成る。
この様なシステムにおいては、主メモリー10を共有す
ることによって追加のCPUを使うことが出来ることを
理解するべきである0例えば、4個に上るCPUを同時
に作動させ且つ共有の主メモリー10を通して効率的に
通信させることは実際的である。データと、そのデータ
を処理するための命令との両方が主メモリー10内のア
ドレス指定可能な記憶場所に格納される。命令は、CP
Uにより実行されるべき動作を符号化された形で指定す
る命令コード(オプコードと称する)と、オペランドの
場所を示すための情報を提供するオペランド指定子とを
含む。
個々の命令は、複数の、より小さなタスクに分解される
。これらのタクスは、その目的に最適化された専用の、
別個の、且つ独立の、機能単位によって実行される。
各命令は結局は別々の動作を行なうものであるが、その
命令を分解して得られる小さなタスクの多くは全ての命
令に共通である。一般に、命令の実行中、次のステップ
即ち、命令取り出し、命令解読、オペランド取り出し、
実行、及び結果格納、が行なわれる。そこで、専用のハ
ードウェアステージを使うことによって、それらのステ
ップをパイプライン方式動作で重ね合わせ、命令処理総
量を増大させることが出来る。
該パイプラインを通るデータ経路は、各パイプラインス
テージの結果を次のパイプラインステージへ転送するた
めの、それぞれのレジスターの組を含む。これらの転送
レジスターは、共通のシステムクロワクに応じてクロッ
クされる。例えば、第1クロツクサイクルにおいて第1
の命令が命令取り出し専用のハードウェアによって取り
出される。第2クロフクサイクルにおいては、その取り
出された命令が転送され、命令解読ハードウェアによっ
て解読されるが、同時に、次の命令が該命令取り出しハ
ードウェアによって取り出される。
第3クロツクサイクルにおいて、各命令が該パイプライ
ンの次のステージヘシフトされると共に、新しい命令が
取り出される。この様にして、該パイプラインが満たさ
れた後は、各クロックサイクルの終了時に一つの命令が
完全に実行され終る。
このプロセスは、製造環境における組み立てラインに似
ている。各労働者は、その作業ステージを通過する各製
品に単一の作業を行なう。各々の作業が行なわれてゆく
に従って、製品は完成に近づいてゆく。最終ステージで
は、労働者がその割当の仕事を行なう毎に、完成した製
品が該組立体ラインから出てゆく。
第1図に示されているシステムにおいては、インターフ
ェース装置1ffillは主キャッシュ14を含み、こ
のキャッシュは、平均では、命令装置12及び実行装置
13が主メモリー10のアクセス時間より速くデータを
処理することを可能にする。
このキャッシュ14は、データ要素の選択された予め画
定されたブロックを格納する手段と、指定されたデータ
要素にアクセスする翻訳バッファー15を介して命令装
置12から要求を受は取る手段と、該キャッシュに格納
されたブロック内にデータ要素があるか否かを検査する
手段と、指定されたデータ要素を含むブロックについて
のデータがその様に格納されていない時に、指定された
データのブロックを主メモリー10から読み出してその
データブロックをキャッシュ14に格納する手段とを包
含する。換言すると、該キャッシュは、主メモリーへの
「窓」を提供し、命令装置及び実行装置が必要とするか
も知れないデータを内蔵する。
命令装置12及び実行装置13が必要とするデータ要素
がキャッシュ14内に発見されなければ、該データ要素
は主メモリー10から得られるが、そのプロセスにおい
ては、追加のデータを包含するブロック全体が主メモリ
ー10から得られてキャッシュ14に書き込まれる0時
間及び記憶スペースにおける局在性の原理により、命令
装置及び実行装置が次にデータ要素を希望する時には、
先にアドレス指定されたデータ要素を包含するブロック
内にそのデータ要素が見出される可能性が高い。従って
、命令装置12及び実行装置13が要求したデータ要素
をキャッシュ14が既に包含している可能性が大きい。
一般に、キャッシュ14は主メモリー10より溝かに高
速でアクセスされるので、主メモリーは、データ処理シ
ステムの平均性能を実質的に低下させずに、それに応じ
てキャッシュより遅いアクセス時間を持つことが出来る
。従って、主メモリー10を低速で安価な記憶素子で構
成することが出来る。
翻訳バッファー15は、最近使われた仮想アドレスから
物理的アドレスへの翻訳を格納する高速連想記憶装置で
ある。連想記憶システムでは、単一の仮想アドレスへの
参照が、所望の情報が使用可能となる前に数回のメモリ
ー参照を引き起こすことがある。しかし、翻訳バッファ
ー15が使われる場合には、翻訳は、単に翻訳バッファ
ー15内で「ヒツト」を発見することに還元される。
コマンド及び入力データをシステムに送り、システムか
ら出力データを受は取るためにI10バス16が主メモ
リー10及び主キャッシュ14に接続されている。
命令装置12はプログラムカウンター17と、主キャッ
シュ14から命令を取り出すための命令キャッシュ18
とを包含する。プログラムカウンター17は、好ましく
は、仮想記憶場所ではなくて主メモリー10及びキャッ
シュ14の物理的記憶場所をアドレス指定する。そこで
、プログラムカウンター17の仮想アドレスを、命令を
検索する前に主メモリーlOの物理的アドレスに翻訳し
なければならない。従って、プログラムカウンター17
の内容はインターフェース装置11に転送され、ここで
翻訳バッファー15はアドレス変換を行なう。命令は、
その変換されたアドレスを使うことにより、キャッシュ
14内のその命令の物理的記憶場所から検索される。キ
ャッシュ14は、その命令を、データ戻りラインを介し
て命令キャッシュ18へ送る。キャッシュ14及び翻訳
バッファー15の構成及び動作については、Levy氏
及びEchhouse Jr、氏の著作「コンピユー 
ター 7’ ロクラミング及びアーキテクチャ」の第1
1章(chapterl 1 of Levy and
 Eckhouse、 Jr、、 ComputerP
rogramming and Architectu
re、 The VAX −11+Digital f
!quipment Corporation、 pp
、 351−368  (1980))に更に記載され
ている。
殆どの時間、命令キャッシュは、プログラムカウンター
17が指定したアドレスの命令をその中に予め格納して
おり、アドレス指定された命令は直ちに命令バッファー
19の中に転送することが出来る。バッファー19から
、アドレス指定された命令は、オプコード(命令コード
)及び指定子の両方を解読する命令解読器20に送られ
る。オペランド処理装置(OPU)21は、指定された
オペランドを取り出し、これを実行装置13に供給する
0PU21は仮想アドレスも生成する。特に、0PU2
 iはメモリーソース(読み出し)オペランド及び宛先
(書き込み)オペランドについての仮想アドレスを生成
する。少な(ともメモリー読み出しオペランドについて
は、0PU21は、これらの仮想アドレスをインターフ
ェース装置11に送らなければならず、ここで該仮想ア
ドレスは物理的アドレスに翻訳される。キャッシュ14
の物理的記憶場所は、メモリーソースオペランドについ
てオペランドを取り出すためにアクセスされる。
各命令において、第1バイトはオプコードを包含し、後
続のバイトは解読されるべきオペランド指定子である。
各指定子の第1バイトは、その指定子についてのアドレ
ス指定モードを示す。このバイトは普通は半分と半分に
分けられ、一方の半分はアドレス指定モードを指定し、
他方の半分は、アドレス指定に使われるべきレジスター
を指定する。5trecker氏外に1980年12月
23日に発行された米国特許筒4,241.397号に
開示されている様に、命令は、好ましくは可変の長さを
有し、色々な種類の指定子を同じオブコードと共に使う
ことが出来る。
命令を処理する第1ステツプは、命令の「オプコード」
部分を解読することである。各命令の第1部分は、該命
令で実行されるべき動作を指定するオプコードから成っ
ている。解読は、命令解読器20においてテーブル参照
法を使って行なわれる。該命令解読器は参照テーブルに
おいて命令を実行するためのマイクロコード開始アドレ
スを見出し、その開始アドレスを実行装置13へ送る。
その後、該実行装置は、予め格納されてあったマイクロ
コードを、指示された開始アドレカから実行してゆくこ
とによって、指定された動作を行なう。また、該解読器
は、ソースオペランド指定子及び宛先オペランド指定子
が該命令内のどこに存在するかを判定し、これらの指定
子を、該命令の実行前に前処理させるべく0PU21に
送る。
参照テーブルは、各々複数の項目を有する複数のブロッ
クのアレイとして構成される。各項目を、そのブロック
及び項目インデックスによってアドレス指定することが
出来る。オプコード・バイトは該ブロックをアドレス指
定し、(該命令内の現、在の指定子の位置を指示する)
実行点カウンターからのポインターは、該ブロック内の
特定の項目を選択する。参照テーブルの出力は、各指定
子についてデータ文脈(バイト、ワード等)、データの
種類(アドレス、整数、等)及びアクセス・モード(読
み出し、書き込み、修飾、等)を指定すると共に、マイ
クロコード指名アドレスを実行装置に提供する。
命令が解読された後、0PU21はオペランド指定子を
分解してその有効アドレスを計算する:このプロセスは
、GPRの読み出しと、場合によっては自動インクリメ
ント又は自動デクレメントによるGPRの内容の修正と
を包含する。その後、該オペランドはこれらの有効アド
レスから取り出されて実行装置13に送られ、該実行装
置は該命令を実行し、その結果を、その命令についての
宛先ポインターにより特定された宛先に書き込む。
命令が実行装置に送られる毎に、該命令装置はマイクロ
コード指名アドレスと、(1)実行装置レジスター内の
、ソースオペランドを発見することの出来る場所と、(
2)結果を格納するべき場所とについてのポインターの
組とを送る。実行装置内において、キュー23の組は、
該マイクロコード指名アドレスを格納するフォーク・キ
ューと、ソース・オペランド記憶場所を格納するソース
・ポインター・キューと、宛先場所を格納する宛先ポイ
ンター・キューとを包含する。これらのキューは、各々
、複数の命令についてデータを保持する容量を持ったF
IFOバッファーである。
実行装置13は、ソース・リスト24も持っており、こ
れはGPRのコピーとソース・オペランドのリストとを
内蔵する、複数のボートを持ったレジスターファイルで
ある。そこで、ソース・ポインター・キュー内の項目は
、レジスター・オペランドについてのGPR記憶場所又
はメモリー・オペランド及びリテラル・オペランドにつ
いてのソース・リストを指す。インターフェース装置1
1及び命令装置12は共に項目をソース・リスト24に
書き込み、実行装置13は、命令を実行するのに必要な
オペランドをソース・リストから読み出す。命令を実行
するために、実行装置13は、発令装置25と、マイク
ロコード実行装置26と、算術論理装置(ALU)22
と、リタイア装置27とをも包含する。
本発明は、パイプライン方式プロセスに適用すると特に
有益である。上述した様に、パイプライン方式プロセス
においては、該プロセスの命令取り出しハードウェアが
一つの命令を取り出しつつある時に、他のハードウェア
が第2の命令の命令コードを解読し、第3の命令のオペ
ランドを取り出し、第4の命令を実行し、第5の命令の
処理済みデータを格納している、ということがある。第
2図は、 ADDL3  RO,B12(R1)、R2等の典型的
命令についてのパイプラインを示す。
これは、変位モードのアドレス指定を使う長ワード加法
である。
この命令のパイプライン方式による実行の第1ステツプ
において、該命令のプログラム・カラン) (PC)が
生成される。これは、普通は、先の命令からプログラム
カウンターをインクリメントし、或はブランチ命令の目
標アドレスを使うことによって達成される。次に、パイ
プラインの第2ステージにおいて、このPCを使って命
令キャッシュ18にアクセスする。
パイプラインの第3ステージにおいて、命令データは、
キャッシュ18から命令解読器20により利用され、或
は命令バッファー19にロードされる。詳しく後述する
様に、命令解読器20は単一のサイクルでオブコードと
3個の指定子とを解読する。R1数はバイト変位と共に
解読サイクル終了時に0PU21に送られる。
ステージ4において、ROポインター及びR2ポインタ
ーがキュー装置23に送られる。また、オペランド装置
21は、そのGPRレジスターファイルの記憶場所R1
の内容を読み出し、その値を指定された変位(12)に
加え、その結果としてのアドレスを、アドレス生成ステ
ージ終了時に0PREAD要求と共にインターフェース
装置11内の翻訳バッファー15に送る。第2オペラン
ドを受は取るためのソース・リストの留保されている場
所へのポインターがキュー装置23に送られる。OP 
 READ要求が処理される時、メモリーから読み出さ
れた第2のオペランドがソース・リストの留保されてい
る場所に転送される。
ステージ5において、インターフェース装置11は、ス
テージ4で生成されたアドレスを実行のために選択する
。翻訳バッファー15を使って、インターフェース装置
11はアドレス翻訳ステージにおいて仮想アドレスを物
理的アドレスに翻訳する0次に、該物理的アドレスを使
ってキャッシュ14をアドレス指定するが、これはパイ
プラインのステージ6において読み出される。
パイプラインのステージ7において、該命令はALU2
2に発せられ、該ALUは2個のオペランドを加え合わ
せて、その結果をリタイア装置27に送る。ステージ4
において、R1及びR2についてのレジスタ一番号と、
メモリーデータについてのソース・リスト記憶場所への
ポインターとが実行装置に送られてポインター・キュー
に格納された。その後、キャッシュ読み出しステージに
おいて、実行装置はソース・リスト内の2個のソース・
オペランドを探し始めた。この特別の例においては、該
実行装置は、ROにレジスター・データのみを発見する
が、このステージの終了時に該メモリ′−・データが到
着し、レジスター・ファイルの無効にされた読み出しと
置換される。この様にして、命令実行ステージにおいて
両方のオペランドが使用可能となる。
パイプラインのリタイアステージ8において、結果デー
タがリタイアキュー内の次の項目と対にされる。この時
に条件コード(ブランチ判定はこれに基づく)も使用可
能となる。数個の機能実行装置が同時に作動中となるこ
とがあるが、単一のサイクルで唯一の命令を退役(リタ
イア)させることが出来る。
図示のパイプラインの最後のステージ9において、デー
タは実行装置13及び命令装置12の両方のレジスター
ファイルのGPR部分に書き込まれる。
上記した様に、パイプラインにおける機能停止又は「ギ
ャップ」の衝撃を最小限にするために、条件付きブラン
チ判定の結果を予測するメカニズムをパイプライン方式
プロセッサーに設けることが望ましい。第1図のパイプ
ライン方式プロセッサーについては、キュー23は多数
の命令の中間結果を格納することが出来るので、これが
特に重要である。機能停止又はギャップが生じた時、該
キューは、該プロセッサーの処理量を増大させる上での
有効性を失う。しかし、パイプラインの深さは、誤った
予測がなされた場合、ハードウェアや実行時間に関して
命令シーケンスの「巻き戻し」のコストを一層増大させ
る原因となる0巻き戻しは、誤って予測されたブランチ
に続く誤った経路における命令からの情報をパイプライ
ンから排除すること、及び実行を正しい経路に添って向
は直すこと、を必然的に伴う。
第1図に示されている様に、パイプラインプロセッサー
の命令装置12にはブランチ予測装置28が設けられて
いる。このブランチ予測装置28の機能は、プログラム
カウンター17がブランチ命令をアドレス指定した後に
取る値(PRHDIC−TION  PC)を決定又は
選択することである。
この値又は選択値は、バス29を介してブランチ予測装
置28からプログラムカウンター装置17へ送られる。
ブランチ予測装置28は、4個の主な入力信号に応答す
る。命令解読器20がブランチ・オブコードを命令バッ
ファー19から受は取る時、ブランチ・オプコード情報
及びブランチ・オプコード・ストローブ信号(BSI(
OP)が入力バス30を介してブランチ予測装置に送ら
れる。同時に、ブランチ命令のアドレス(DECODR
PC)がプログラムカウンター装217から入力バス3
1において受信される。ブランチ命令の目標アドレス(
TARGET  PO)及び目標アドレス・ストロープ
信号(TARGET  VAL I D)はオペランド
装置21から入力バス32において受信される。例えば
、オペランド装置21は、ブランチ命令に従って該ブラ
ンチ命令内の変位指定子の値を該命令のアドレスに加え
て目標アドレスを計算する。条件付きブランチについて
は、ブランチ判定がなされ、実行袋W13からバス33
でデータ信号(BRANCHDECI S l0N)と
共に受信される妥当信号(B RA N CHV A 
L I D )により予測が妥当であることがTJf確
認される。
殆どの命令シーケンスの実行中に、ブランチ予測装置2
8は、最初にブランチ・オプコード及びこれに対応する
アドレスを受取り、次に対応する目標アドレスを受取り
、最後に妥当性信号受は取る。更に後述する様に、ブラ
ンチ予測装置28は、この典型的シーケンスに応答して
、ブランチ・オブコード及びこれに対応するアドレスが
受信された直後にブランチ予測を行なう。好ましくは、
これは、ブランチ命令のアドレスの最下位ビットにより
アドレス指定される「ブランチ履歴」キャッシュメモリ
ー(第4図の79)を読取ることによってなされる。該
キャッシュ内に格納されているアドレス指定された情報
が該ブランチ命令と関連していることを確かめるために
、該アドレスの残部についてタグ突き合わせが行なわれ
る。オペランド処理装置が目標アドレスを計算するのを
待つことを避けるために、ブランチ命令の先に計算され
た目標アドレスもブランチ履歴キャッシュに格納される
ブランチ命令に以前に遭遇したことが無いか又はそのブ
ランチ履歴がキャッシュ上で異なる命令のブランチ履歴
に書き換えられてあったためにタグ突き合わせが目標を
達成しないことがある。いずれの場合にも、ブランチ予
測は該命令のオブコードに基づいてなされる。ブランチ
命令は、各々、コンピュータープログラムの実行中不変
に保たれる所定のバイアスを持っている。「ブランチが
取られる」予測がブランチ・バイアスに基づいてなされ
る時、プログラムカウンターが取る値(PREDICT
ION  PC)は、オペランド装W21により計算さ
れる目標アドレス(TARGET  PO)である。該
目標アドレスが使用可能になると、ブランチ予測装置は
、それをプログラムカウンター装置に向ける。この目標
アドレスは、同じブランチ命令に再び遭遇した場合にそ
れを使用可能にするためにブランチ履歴キャッシュにも
書き込まれる。
「ブランチ取られず」判定がなされる時は、プログラム
カウンターは当然に該ブランチ命令の直後に次の命令に
進むので、目標アドレスを待つ必要は無い。また、「ブ
ランチ取られず」予測を記録する必要もない。その理由
は、それが同じ命令についての後の予測の結果を変えも
しないし、また、その後の予測を速やかに行なうことを
可能にするわけでもないからである。
ブランチ予測装置が条件付きブランチ命令についてブラ
ンチ予測を行なう時は、該ブランチ予測が誤っているこ
とが分かった場合には、プログラムカウンター装置17
を元に戻すために、それが取らなかった代替経路の開始
アドレス(PCUNWIND)が保存される。
条件付きブランチ命令についてのブランチ予測を有効に
する好適な方法は、命令解読器内のオプコード情報に、
該ブランチが取られると予測されたか否かを示す「予測
」ビットを付けることである。上記した様に、命令解読
器20は参照テーブル(「フォーク」テーブル)により
オブコードを解読して、マイクロコード実行装置26に
より実行されるマイクロコード内の対応する入口点アド
レスを得る。この入口点アドレスに該予測ビットが付け
られ、従って該予測ビットはキュー23及び発令装置2
8を通過する。マイクロコード実行装置26は、命令に
ついてのマイクロコードを実行する時、ブランチ判定を
支配するそれぞれの条件と予測ビットとを比較して、妥
当性信号(BRANCIIVALID)を生成し、ブラ
ンチ予測装置にライン33を介してBRANCHDEC
ISION信号を送る。
単純な条件付きブランチについての妥当性検査プロセス
を高速化するために、マイクロコード実行装置はそのマ
イクロコートドを介して「先を見」て、次の命令が単純
な条件付きブランチ命令であるか否かを判断する様にプ
ログラムされており、若しそうであれば、該実行装置は
、その現在の命令の実行の終了時に妥当性信号(BRA
NCHVALID)を生成し送信する。同じ論理が複雑
なブランチ命令について同じ様に使用されるが、この場
合には分岐するべき旨の判定は該ブランチ命令自体の実
行により支配される。それ自体の実行により実際上その
それぞれの条件を変化させる。この場合「先を見る」論
理は、ブランチ検査を行なうべき旨の次のマイクロ命令
を探し、条件コードが決定されると直ちに妥当性信号(
BRANCHVALID)が送信される。複雑なブラン
チ命令の一つの例はrACBxJである。この命令は、
実行された時、数Aを数Cに加え、その和を数Bと比較
して分岐するべきか否かを判定する。
第1図のプロセッサーが仮想アドレス−物理的アドレス
・翻訳バッファー15を使っているので、複雑なブラン
チ命令の中途で「ページ誤り」が生じる可能性がある。
変位指定子は最後の指定子で、実行装置には送られない
ので、変位が誤っても実行装置は該ブランチ命令を完全
に実行することが出来る。この誤りを訂正する普通の方
法は、現在のプログラムを中断して情報の新しいページ
を主メモリー10にロードすることによりページ誤りを
治癒することが出来る様に、処理装置が部分的に完了し
た複雑なブランチ命令の結果を捨てて、その誤りの原因
となった命令が解読のために命令バッファー19にロー
ドされる直前の該プロセッサーの状態即ち命令境界を回
復することである。
この新しい情報は、例えばI10バス16に接続された
大量記憶装置(図示せず)から読み出される。この様に
してページ誤りが治癒された後、該ブランチ命令が解読
され、再びその全部が実行される。
単純なブランチは機械状態を変化させないので、妥当性
信号は成るべく速く実行装置によって送られる。若し変
位指定子がページ誤りを起こせば、ブランチ命令を再実
行することが出来る。しかし、複雑なブランチは機械状
態(GPR又はメモリー)を変化させ、ブランチ条件を
チエツクする。若し変位指定子が複雑なブランチの実行
及び妥当性検査の後にページ誤りを起こせば、機械状態
が既に変化しているので、それを再実行することは出来
ない。従って、複雑なブランチでは、実行と、その後の
妥当性検査とは、変位指定子がページ誤りを起こさなか
ったことが実行装置に通知されるまで延期される。
若し条件付きブランチ命令が妥当と確認されれば、実行
は正常に継続する。そうでなくて、ブランチ判定が予測
と−敗しなければ、「巻き戻し」動作が行なわれる。こ
れは、該判定をブランチ履歴キャッシュに記録すること
と、その後に命令ストリームを向は直すことを伴う。中
央処理装置の状態を、予測がなされた時に存在していた
状態に戻し、次に該ブランチ命令からの交互の実行経路
の初めから実行を再開することによって該命令ストリー
ムを向は直す。実行は、例えば、先に保存された「巻き
戻し」アドレス(II N W I N D  P C
”)から再開される。
ここで第3図を参照すると、この図は命令解読、目標ア
ドレス計算及びブランチ判定又は妥当性検査の普通のシ
ーケンスについての本発明の好適なブランチ予測方法の
フローチャートを示す、この方法は、保留されているブ
ランチ予測が無いアイドル時に始まると仮定される。第
1ステツプ42で、ブランチ命令が解読される時にブラ
ンチ予測が開始される。ブランチ履歴キャッシュメモリ
ーをアドレス指定するためにブランチ命令のアドレスの
最下位部分が使われ、該キャッシュから読み出された付
随のタグが該ブランチ命令のアドレスの最上位部分と比
較される。若し釣り合うタグがキャッシュ内に見出され
れば、該キャッシュについての項目は該ブランチ命令の
先のブランチ履歴に恐らく対応する。
しかし、本発明の重要な面に従って、新しいコンピュー
タープログラムがロードされる時にキャッシュはクリア
されない:還元すれば、キャッシュは、文脈転換時にク
リアされない。その結果、キャッシュをクリアするのに
必要な大量の回路又はプロセッサー時間を無くすことが
出来る。キャッシュがクリアされないので、非常に小さ
いけれども潜在的には重要な、該ブランチ命令アドレス
に付随するキャッシュ内の情報が不当であるという可能
性がある。しかし、ブランチが取られるか否か判定する
目的上、該ブランチ命令アドレスに付随する如何なる情
報も、予測の基礎を形成するには充分に信頬することが
出来る。従って、ステップ44において、ブランチ命令
アドレスに付随するキャッシュ内の情報に応じてブラン
チが取られるか取られないか予測がなされる。
若しブランチが取られると予測されれば、ステップ45
において、キャッシュ内の項目を生成した先のブランチ
命令についてキャッシュ内に格納されている目標アドレ
スがステップ42で解読された現在のブランチ命令につ
いて計算されている目標アドレスと同じであるか否か判
定するために、該ブランチ命令についての変位情報が、
該命令アドレスに付随するキャッシュ内の変位情報と比
較される。若しステップ45の比較によって変位情報が
矛盾しないことが示されれば、キャッシュからの付随す
る目標アドレスは該ブランチ命令の目標アドレスであり
、該ブランチの前処理が、キャッシュから得られた目標
アドレスから直ちに始まる。この場合、ステップ46に
おいて、命令バフファーはクリアされ、プログラムカウ
ンターは、目標アドレスから取り出し命令及び前処理命
令を始める様に目標プログラム・カウンターにセットさ
れる。また、該ブランチ命令の直後の命令の値(NEX
T  PC)は、後にブランチ予測が正しくないと分か
った時に該命令ストリームを巻き戻すのに使用されるべ
く保存される。
ステップ47において、ブランチ予測装置は、ブランチ
が実行装置によって決定されるまで待つ。
これが行なわれると、予測は妥当と確認されるか又はス
テップ48において誤っていることが見出される。若し
予測が正しければ、ブランチ予測装置はそのアイドル状
態41に戻る。さもなければ、ステップ49において、
命令解読器、オペランド装置及びキューから前処理の結
果を排除し、次にプログラムカウンターを、巻き戻しの
ために先に保留されていた値(UNWIND  PC)
にセットすることによって、前処理済みの命令ストリー
ムを巻き戻す必要がある。また、予測はキャッシュから
取られ、今、正しくないことが分かったので、ステップ
50において少なくとも該命令が「ループ・ブランチ」
命令でなければ、キャッシュ項目の予測ビットを反転さ
せなければならない。
ループ・ブランチ命令は、コンパイラがソース言語プロ
グラムのループを実施するのに非常に頻繁に使う成る命
令コードを有する命令である。斯かるループ命令の一つ
の例は、AとCとを加えあわせて、その結果をBと比較
して分岐するべきか否かを判定するrAcBXJである
。この命令は、Do  100 1=1.10」の形r
DOLOOP  Jを実施するFORTRANコンパイ
ラに使用される。この場合、命令のループを10回実行
させるためにインデックスKが繰り返し1に加えられ、
和が10と比較される。還元すると、「ループ・ブラン
チ」命令についてのブランチは10回取られ、該ループ
についての処理の終了時に1回だけ「取られない」、そ
の結果、ループ命令は常に取られると予測される。
このことをキャッシュ内の予測ビットに正確に反映させ
るために、若し現在の命令が「ループ・ブランチ」命令
であれば、ステップ50においてこのビットを反転させ
ない。しかし、「ループ・ブランチ」命令についてのブ
ランチが予測される時にはキャッシュから読み出された
予測がORゲートにより1にセットされるので、キャッ
シュ内の予測がループ・ブランチ命令についての予測を
正確に反映することは必ずしも必要ではない。ループ・
ブランチ及び無条件ブランチについてのキャッシュ内の
予測は常に「取られる」である。無条件ブランチ又はル
ープ・ブランチが解読されつつあって予測ビットが「取
られない」ことを示せば、B P−HI T信号がアサ
ート解除される。この場合、そのキャッシュに格納され
ている情報は、解読されるブランチについての情報では
あり得ない。無条件ブランチの場合に成るべく速く正し
い予測を行なうために、このチエツクがなされる。
このメカニズムも、ループ・ブランチが常に取られると
予測されることを保証するものである。
ここでステップ43に戻って、若し釣り合うタグがブラ
ンチ履歴キャッシュから読み出されなければ、該命令の
先の履歴に顛ることなく予測を行なわなければならない
。この場合、ブランチ予測を行なう好適な方法は、該ブ
ランチ命令の命令コードに基づいて予め決定されてあっ
た「ブランチ・バイアス」を使うことである。無条件ブ
ランチ命令は全て取られると予測される。条件付きブラ
ンチ命令は、コンピューターが初期化されるか、或は新
しいコンピュータープログラムが文脈転換時にロードさ
れる時に選択された値にセットされることの出来るバイ
アスを有する。従づて、それぞれの条件付きブランチ・
オブコードについてのバイアスを、そのオプコードにつ
いての分岐の統計的頻度と、コンピューターで走らせる
べきプログラムの種類とに基づいて予め決定することが
出来る。例えば、特定のコンパイラでコンパイルされた
FORTRANプログラムをコンピューターが実行する
べき時には、そのコンパイラでコンパイルされた数個の
代表的FORTRANプログラムムの実行時における各
オプコードについてブランチが取られたり取られなかっ
たりした頻度により、各オプコードについてのブランチ
・バイアスを決定することが出来る。
ブランチが恐らく取られないであろうことをブランチ・
バイアスが示せば、該予測法はステップ51からステッ
プ52へ続く。また、ブランチが取られることは殆どな
いであろうことをキャッシュ内の予測情報が示せば、実
行はステップ44からステップ52へ分岐する。ステッ
プ52において、計算された目標アドレスをステップ5
3で巻き戻しアドレス(UNWIND  PC)として
使うことが出来る様に該ブランチ命令の目標アドレスに
ついての値が計算されるまでブランチ予測装置は待機す
る。次に、ステップ54において、ブランチが取られる
か否かを実行装置が判定することが出来る様になるまで
ブランチ予測装置は待機する。ブランチが判定されると
、ステップ55において該予測方法は、予測が正しいか
否かに応じて分岐する。若し正しければ、ブランチ予測
装置はステップ41のアイドル状態に戻る。そうでなけ
れば、ステップ56において、命令ストリームの前処理
が巻き戻され、プログラムカウンターは巻き戻し値(U
NWIND  PC)にセットされる。次に、ステップ
57において、ブランチが取られたことを記憶する項目
がブランチ履歴キャッシュに書き込まれ、巻き戻しアド
レス(IJNWIND PC)が該ブランチ命令につい
ての目標アドレスとして該キャッシュに書き込まれ、ブ
ランチ予測装置はアイドル状841に戻る。
第3図の好適な手順においてはブランチ命令が取られな
いであろうことを予測するためにキャッシュに新しい項
目を作る必要はないので、ステップ53ではキャッシュ
項目は前辺て書き込まれない。従って、取られると予測
されるべきブランチについてのみ新しい項目を作ること
により、キャッシュメモリーの大きさを、その様にしな
い場合の様に大きくする必要が無くなる。
ブランチがステップ51で取られると予測されるか、又
はステップ44で取られると予測されたがステップ45
でキャッシュ内の変位情報が該命令についての変位情報
と矛盾することが分かったならば、ステップ58で該ブ
ランチ命令についての目標アドレスを計算しなければな
らない。目標アドレスが計算されると、次にステップ5
9において新しい項目をキャッシュに書き込むことが出
来、或は該ブランチが取られるであろうと予測するブラ
ンチ予測情報と共に該目標アドレスをキャッシュに書き
込むことによって、矛盾する項目を固定することが出来
る。予測を確認するブランチ判定を待たずに直ちにキャ
ッシュを更新するのが好ましいが、その理由は、その様
にしなければ、計算された目標アドレスを確認ステップ
までレジスターに保留することが必要となるからである
ブランチが取られると予測されるので、ステップ60に
おいて命令バッファーはクリアされ、ブロダラムカウン
ターは計算された目標アドレスの値にセットされ、巻き
戻しアドレスは、該ブランチ命令の直後の命令のアドレ
スの値(N E X T  P C)にセットされる。
該ブランチ予測法は、次に、ステップ47において予測
の妥当性を確認し、若しその予測が誤りであると分かれ
ば、キャッシュ内の予測情報を訂正する。
ここで第4図を参照すると、この図は複数のブランチを
同時に予測することの出来ない単純なブランチ予測装置
70の略図である。即ち、予測された経路内の命令が解
読されている時、該解読器は、ブランチ命令を認めると
機能停止する。第4図の単純なブランチ予測装置の動作
が分かれば、第9図ないし第18図に記載されている好
適なブランチ予測装置の動作を容易に理解することが出
来るであろう。
ブランチ予測装置70は新しい命令が解読される時命令
解読器からライン71でオプコード・ストローブ信号を
受は取る。命令解読器は、該オプコードがブランチ命令
であるか否かを示すと共に、該オブコードが無条件ブラ
ンチ命令を指定するか或はループ・ブランチ命令を指定
するかを示すオプコード解読器72を包含する。該命令
解読器は、走査クロック信号によってレジスター73が
クロックされる時にそれぞれの条件付きブランチ命令の
命令コードについてのバイアスビットを順に受は取るシ
フトレジスター73も包含する。該プロセッサーに電源
が投入された時、走査システムを使ってこのレジスター
で各条件付きブランチについての「バイアス・ビット」
が確立される。該命令解読器が無条件ブランチ命令を認
めた時、オブコード解読器72は、レジスター73から
それぞれのバイアス・ビットを選択するマルチプレクサ
74を作動させる。
命令解読器がブランチ命令を完全に解読すると、ブラン
チ予測装置70内のゲート75はブランチ・オプコード
・ストローブ(BSHOP)を生成する。ゲート75は
、ライン71上のオプコード・ストローブ信号と、オブ
コード解読器72によるブランチ・オブコードの解読と
、ブランチ予測装置70がアイドル状態にあることを示
す信号とが一致した時に作動する。ブランチ・オプコー
ド・ストローブ(BSHOP)は、予測されるブランチ
命令に関する情報を受は取るランチ76をストローブす
る。ラッチ76は、命令解読器が予測された経路の後続
の命令を解読している間、この情報を保持する。しかし
、ブランチ予測装置70がアイドル状態にない時に、予
測された経路において後続のブランチ命令が認められる
と、該命令解読器は、第4図のこの単純な実施例ではゲ
ート77からの信号により機能停止させられる。
ブランチ・オプコード・ストローブ(BSHOP)は、
そのブランチが予測されたブランチ命令のアドレスを保
持するラッチ78もストローブする。
このアドレスの最下位部分は、命令長さ、命令変位、ブ
ランチ予測ビット、及び、アドレスに関連する目標アド
レスを格納するブランチ履歴キャッシュメモリー79を
アドレス指定するのに使われる。特に、該キャッシュは
、比較器80により命令アドレスの最上位部分と比較さ
れるそれぞれのタグを格納する連想記憶装置として構成
される。
即ち、比較器80は、該キャッシュが、長さと、変位と
、予測ビットと、当該ブランチ命令のアドレスに関連さ
せられた目標アドレスとを保持しているか否かを示す。
ブランチ命令についての変位情報と矛盾しない関連の変
位情報を該キャッシュが内蔵しているか否かを判定する
ために、該キャッシュに格納されている変位を該命令に
ついての変位と比較する比較器81と、該キャッシュに
格納されている命令長さを該ブランチ命令の長さと比較
する他の比較器82とが設けられている。第4図のブラ
ンチ予測装置70については、該命令についての命令長
さと変位とは、ブランチ・オプコード・ストローブの1
サイクル後に受信される。即ち、該ブランチ命令につい
ての変位は該命令に明示的に包含されている。若しこれ
が真であれば、その命令は「キャッシュ可能なJ (c
hacheable″)命令であり得る。
処理の際に命令長さ及び変位を保持するために、ブラン
チ予測装置70はブランチ変位ストローブ(B S H
D)によってストローブされるラッチ83を包含してお
り、このストローブは、命令解読器が命令の長さと変位
とを得るのに要する時間だけ該ブランチ・オプコード・
ストローブを遅延させる遅延フリップフロップ84によ
って提供される。
第4図において、キャッシュ79は情報をブランチ命令
のアドレスと関連させる様に構成されている。この場合
、与えられたブランチ命令についての目標アドレスは、
長さ及び変位の両方を該ブランチ命令のアドレスに加え
ることによって計算される。従って、キャッシュに格納
されている、与えられたブランチ命令と関連させられた
変位情報は、該キャッシュに格納されている長さが該命
令の長さと一致し且つ該キャッシュに格納されている関
連の変位が該命令についての変位と一致する時は、該ブ
ランチ命令についての変位情報と矛盾しない。
第4図の回路については、次の命令のアドレス(NEX
T  PO)は、該ブランチ・オプコード・ストローブ
が生じるサイクルにおいてキャッシュ79が最初にアド
レス指定されるのと同時に加算器85によって計算され
る。比較器80は、第3図のステップ43に対応して、
整合するタグがキャッシュメモリー内に見出されたか否
かを示す。
整合するタグがある時にキャッシュから予測を選択しく
第3図のステップ44に対応)、整合するタグが無い時
にバイアスを選択する(第3図のステップ51に対応)
マルチプレクサ86を作動させるために比較器80の出
力が使われる。いずれの場合にも、ORゲート87によ
り保証された通りに、ループ・ブランチ及び無条件ブラ
ンチは共に常に取られると予測される。
ブランチが取られると予測され、且つ整合するタグがキ
ャッシュ内に見出されたならば、キヤ。
シュ内の変位情報が現在のブランチ命令についての変位
情報と矛盾するか否か判定しなければならない、この目
的のために、比較器8182の出力は、ラッチされた変
位妥当信号(DV)、比較器80の出力、及びBSHD
信号と共にNANDゲート88に供給され、該NAND
ゲートは、キャッシュからの関連の目標を、保留されて
いるブランチ命令についての目標アドレスに使うべきが
否かを判定する。予測「取られる」信号及び調整された
キャッシュピット信号は、組み合わせ論理91、−次状
態レジスター92、及びマーカー・レジスター93を包
含する順次状態機械に供給される。組み合わせ論理91
は、計算された目標アドレスがオペランド装置(第1図
の21)から受信された時を示す目標妥当信号と、ブラ
ンチが判定され又はその妥当性が確認された時を示す実
行装置(第1図の13)からのブランチ判定信号と共に
、ブランチ・オプコード・ストローブ(BSHOP)を
受は取る。−待状態レシスター92の現在の状態とマー
カー・レジスター93の状態とに応じて、組み合わせ論
理91は、ブランチ・オプコード・ストローブ、目標妥
当信号、及び、保留されているブランチ命令についての
ブランチ判定信号の順序に依存して一時状態しシスター
92についての次の状態を決定する。特に、ブランチ・
オプコード・ストローブに応じて、該組み合わせ論理は
、目標妥当信号がアサートされた時にオペランド装置か
ら受信される計算された目標アドレス(TARGETP
C)に何をするべきかを判定するために「取られる予測
」信号と「キャッシュ目標使用」信号とに基づいてマー
カー・レジスター93をセットする。
マルチプレクサ94は、キャッシュ79からの目標又は
オペランド装置からの目標を選ぶ、マルチプレクサ95
.96は、マルチプレクサ94が選んだ目標を選ぶ。特
に、若しブランチが取られると予測されたならば、マル
チプレクサ94に選ばれた目標がマルチプレクサ ムカウンターへ送られ、該ブランチ命令の直後の命令の
アドレス(NEXT  PC)がマルチプレクサ96を
介して巻き戻しラッチ97に送られる。
また、ブランチが取られないと予測されたならば、マル
チプレクサ96は選択された目標を巻き戻しラッチ97
に送り、マルチプレクサ95はNEXT PCをプログ
ラムカウンターへ送る。
代表的シーケンスにおいては、レジスター内のマーカー
の組は、ブランチ・オブコード・ストローブ(BSHO
P)がアサートされた後に「取られる予測」信号及び「
キャッシュ目標使用」信号に応じてセットされる。妥当
な目標がオペランド装置から受信されると、この計算さ
れた目標はマーカー・レジスター93の状態により指示
される方法で使用される。特に、若しブランチが取られ
るがキュッシエからの目標が使用されるべきでないなら
ば、「取られる」予測は、オペランド装置からの計算さ
れた目標と共にキャッシュに書き込まれる。この目的の
ために、組み合わせ論理91はマルチプレクサ98を作
動させて、キャッシュに書き込まれるべき目標をオペラ
ンド装置から選択させ、マルチプレクサ99はブランチ
履歴キャッシュの予測ビットに書き込まれるべき「取ら
れる」の論理値をアサートする。しかし、ANDゲー)
100は、保留されているブランチ命令が「キャッシュ
可能」である場合に限って項目がキャッシュ79に書き
込まれることを保証する。
目標が受信され、そして、ブランチが取られるけれども
計算された目標を保存するべきであることをマーカーが
示しているならば、組み合わせ論理91は巻き戻しラッ
チ97をストローブしてオペランド装置から目標を受は
取らせる。そうでない場合、若しブランチが取られると
予測されれば、巻き戻しラッチ97はNEXT  PC
を受取り、マルチプレクサ94により選択された目標は
、マルチプレクサ95及び他のマルチプレクサ101を
通してプログラムカウンターを通して送られる。
「キャッシュ目標使用」信号がアサートされた時、又は
、計算された目標がオペランド装置から受信された時、
組み合わせ論理91は命令バッファー(第1図の19)
をクリアする信号を送るゲート103ヘライン102を
介して信号を送り、マルチプレクサ101に選択された
PREDICTION PC値をプログラムカウンター
(第1図の17)にロードする。従って、若しキャツシ
ュヒツトがあり、ブランチが取られると予測され、且つ
キャッシュ内の関連の変位情報が該命令についての変位
と矛盾しないならば、組み合わせ論理91は該ブランチ
の命令の前処理を開始する信号をライン102に発する
前にオペランド装置からの妥当な目標を待つ必要はない
普通の命令シーケンスでは、実行装置は、予測された経
路の成る命令の前処理後にブランチ予測の妥当性を確認
する。若し該ブランチ予測が妥当であることが分かれば
、ブランチ予測装置70はそのアイドル状態に戻る。さ
もなければ、組み合わせ論理91は命令シーケンスを巻
き戻す信号をライン104にアサートする。ライン10
4上の信号は、マルチプレクサ101をして巻き戻しラ
ッチ97からの巻き戻しアドレスをプログラムカウンタ
ーにロードせしめる・更に、組み合わせ論理91は、ブ
ランチ判定の取る経路を反映する様にキャッシュ79を
更新する。若しブランチが取られないであろうと誤って
予測されたならば、「取られる」の値がキャッシュ内の
関連の予測ビットに書き込まれる。さらに組み合わせ論
理はマルチプレクサ98に作用して、巻き戻しランチか
らの巻き戻しアドレスをキャッシュ内の関連の目標に書
き込ませる。これにより、該ブランチ命令についてのバ
イアスに基づいてブランチが取られないと当初予測され
たのであれば、新しいキャッシュ項目が生成されること
になる。また、予測がキャッシュからの予測に基づいて
いたのであれば、目標アドレスが該ブランチ命令につい
て変化している可能性があるので、キャッシュ内の古い
項目は新しい目標アドレスで更新される。
誤った予測の内容が、ブランチが取られるであろうとい
うことであれば、「取られない」の値はその変位、長さ
及びタグと共にキャッシュ内の関連の予測ビットに書き
込まれる。この場合、目標は重要でない。更に、ゲート
106は、ループ・ブランチ命令については、或はブラ
ンチ命令がキャッシュ可能でなければ、予測ビットが変
更されないことを保証する。好適な実施例においては、
キャッシュ79は1024個の項目を有し、各項目は2
2ビツトのタグ部分と、6ビツト長さ部分と、16ビツ
ト変位部分と、1ビツト予測部分と、32ビット目標部
分とを包含する。
以上、第4図の単純なブランチ予測装置70の動作を命
令解読、目標アドレス計算、及びブランチ妥当性検査の
普通のシーケンスに関連させて説明した。本発明の重要
な面によると、ブランチ命令解読、目標アドレス計算、
及びブランチ妥当性検査は、各ブランチ命令についてど
の様な順序で行なわれても良い0組み合わせ論理91は
、起こり得る如何なる順序にも最適の方法で答える様に
プログラムされる。第5図に示されている。これは、起
こり得る順序に対応し且つレジスター92の状態により
指示されるブランチ予測装置の一次状態を定義すること
によってなされる。与えられた時に唯一のブランチ命令
が前処理されると仮定されるならば、アイドル状態を含
む6個の起こり得る状態があることになる。アイドル状
態以外の5個の状態は、組み合わせ論理91がアイドル
状態に戻るために受信しなければならないストローブ信
号によって便利に命名される。第5図の状態図において
、目標妥当信号はTARと略され、ブランチ判定又は妥
当信号はVALと略されている。
第3図と関連して上記した普通のシーケンスでは、条件
付きブランチ命令が最初に解読され(c−BSHOP)
 、ブランチ予測装置はそのアイドル状態からそのVA
L  TAR状態へ移る。次に、ブランチ予測装置は目
標(TAR)を受は取ってそのVAL状態へ移る。最後
に、ブランチ予測装置は実行装置から妥当性検査信号(
VAL)を受取り、そのアイドル状態に戻る。
普通のシーケンスは、無条件ブランチが実行装置により
妥当性検査される必要が無(、且つ好ましくは妥当性検
査されないので、無条件ブランチについては僅かに異な
る。従って、ブランチ予測装置が当初そのアイドル状態
にあって無条件ブランチ命令−(U−BSHOP)が解
読される時、ブランチ予測装置はTAR状態に変化して
、計算された目標を待つ、計算された目標を受は取ると
、ブランチ予測装置はそのアイドル状態に戻る。この同
じシーケンスが、若しブランチ予測装置が条件付きブラ
ンチ命令を解読すると同時に妥当な目標を受信する場合
(c−BSHOP&VAL) に生じる。
ブランチ予測装置は、キャッシュから妥当な目標を得て
も、計算された目標を待ってTAR状態に留まり、ブラ
ンチについて命令の前処理を始める。即ち、第5図に示
されている状態は一次状態であり、ブランチ予測装置は
レジスター92が供給する一次状態以外の組み合わせ論
理91への入力に応じて一次状態で異なる時に異なるこ
とを行なうことがある。
ブランチ予測装置は、命令JSB (サブルーチンへの
ジャンプ)等の、変位指定子後の変位指定子を意味して
いる成る無条件ブランチについてのみ到達される状[B
SHOP  VALを含む、これらの場合、命令が完全
に解読される前に妥当な目標が受信されることがあり得
る。従って、ブランチ予測装置は、無条件ブランチ命令
が解読されるまでは(U−BSHOP)BSHOP  
VAL状態に留まる。また、ブランチ予測装置は無条件
ブランチ命令を解読すると同時に妥当な目標を受は取る
ことがある(U−BS)(OP&TAR)。
また、ブランチ予測装置は、条件付きブランチ命令変位
がメモリーから取り出される前にブランチ妥当性検査信
号を受は取ることも出来る。これが起こると、ブランチ
予測装置はBSHOP  TAR状態に移って、条件付
きブランチ命令の解読が完了するのを待つ(c−BSH
OP)、上記した様に、ブランチ予測装置が行なう動作
は、マーカーの状態と共に、第5図に示されている一次
状態にも依存する。マーカーを使ってブランチ予測及び
ブランチ判定又は妥当性検査情報を記録する方法は幾通
りかある。第4図に示されている回路については、マー
カーは好ましくは第6図に示されている情報を記録する
。ブランチ予測装置がそのTAR状態にある時は、マー
カーは、計算された目標アドレスがオペランド装置から
受信された時に何がなされるべきかを示す。マーカー・
ビットQOは、第4図のマルチプレクサ94による選択
に対応して、オペランド処理装置からの計算された目標
が使われるべきか否かを示す。2個のマーカービットQ
1、QOは、共同して、「クリア」状態、「巻き戻しに
格納」状態、「無視」状態、及び「解読に格納」状態と
称される4個の状態を定義する。
「クリア」状態は、何らのブランチ予測も判定もなされ
ていないことを示す、「巻き戻しに格納」状態は、ブラ
ンチが「取られない」と予測され、実行装置が該予測を
誤っていると判定した場合に前処理されている命令スト
リームを巻き戻すために、計算された目標を巻き戻しラ
ッチ97に保存するべきことを示す、「無視」状態は、
キャッシュからの目標が使用されたか又は実行装置が該
ブランチが取られないと決定したので、計算された目標
を無視するべきことを示す。「解読に格納」状態は、計
算された目標アドレスがオペランド装置から受信された
時、命令バッファーがクリアされると共に、該ブランチ
が取られるという予測又は該ブランチを取るべき旨の判
定に応じて命令の前処理を始める計算された目標アドレ
スがプログラムカウンターにロードされるべきことを意
味する。
ブランチ予測装置の次の状態がアイドル状態である時は
、マーカーはクリアされるべきである。
マーカーは、(1)ブランチ予測がrBsHOPJ信号
と同時になされる時、(2)目標アドレスがrTARJ
信号により示されている様に得られる時、又は(3)妥
当性検査信号rVALJが信号rBsHOPJ前にアサ
ートされる時、変更される。
組み合わせ論理91がTAR又はVAL信号より前にB
 S HOP 18号又は「キャッシュ目標使用」信号
を受信すると、マーカーは、第7図に示されている様に
、「キャッシュ目標使用」信号及び「取られる予測信号
」に応じてセットされる。オペランド装置からの計算さ
れた目標アドレスは、ブランチが取られないと予測され
ていれば、受信された時に巻き戻しラッチに格納される
。若しブランチが取られると予測されれば、ブランチ履
歴キャッシュからの目標を使用するべきでないならば、
計算された目標は次の解読pcとして格納される。即ち
、前処理は目標アドレスから始まる。
若しブランチが取られると予測され且つキャッシュから
の目標が使用されるべきであれば、計算された目標は無
視される。
TAR信号に応じて、目標が実際にオペランド処理装置
(第1図の21)から到着した時にマーカーがクリアさ
れる。
目標アドレスが受信される前に(TAR) 、ブランチ
判定又は妥当性検査がなされた時は、マーカーはセット
又は修正されなければならない(VAL)。
これは幾通りかの方法で行なわれ得るが、好適な方法が
第8図に示されている。いずれの場合にも、ブランチが
判定され又は妥当性を確認されているので、何も巻き戻
しラッチに格納する必要はない。
その結果、いずれの場合にも、第1マーカーQ1の次の
状態D1は論理1である。
若しブランチ判定(VAL)が予測(B S HOP 
)前に行なわれたならば、第1に、マーカーは当初はク
リアであると仮定する。この場合、マーカーは、ブラン
チが取られるか否かに従ってセットされる。若しrPR
EDICT  TAKENJ  (取られる予測)が誤
っていて且つrBRANCHVALIDJ  (ブラン
チ妥当)が誤っているか、又は両方とも真であれば、マ
ーカーはr 5TOREAND  DECODEJ  
(格納、解読)状態ニセットされる。
第8図のその他の場合、ブランチ判定により、先の予測
の妥当性が確認又は否定される。従って、第1マーカー
Q1は、該ブランチが取られると予測された否かを示し
、ブランチ妥当信号とQ1信号との排他的NORは、該
ブランチが確かに取られるべきか否かを示す。若しブラ
ンチが取られるべきであるならば、オペランド装置から
の計算された目標が使用可能となったならば、それを使
用するべきである(キャッシュからの目標を先に使うこ
とが出来ないのならば)。従って、この状況ではDl及
びDOの両方が、マーカーを「解読に格納」状態へ変化
させるべくセットされるべきである。従って、両方の状
況においてDOはプランチ妥当信号及びQlの排他的N
ORである。
マーカーの状態を定義するための規則が確立された後、
第5図に示されている各々の起こり得る遷移を考慮して
組み合わせ論理91を設計することが可能となる。例え
ば、第4図のブランチ予測装置70が第3図の代表的シ
ーケンスを実行することを可能にする組み合わせ論理9
1を設計するために必要なのは、ブランチ予測装置がア
イドル状態からVAL  TAR状態へ、次にVAL状
態へ遷移し、次にアイドル状態に戻るのを考慮すること
だけである。基本ステップは、ハード配線論理に還元さ
れ、又は、組み合わせ論理91を具現するメモリーのた
めのプログラミングに還元される標準的な積の和の形に
コンパイルされ得る高水準言語で定義され得る。例えば
、第3図のフローチャートに対応するプログラムを、以
下の様に符号化することが出来る。
IDLE: 0.0゜ Q、=0゜ (IP  (NOT UNC)  AND BSHOP
TIIEN  Dl=PREDICT  TAKEND
o・l 50=O GOTOVAL   TAR ELSE Do=O DI・0 GOTOIDLE) VAL  TAR: 0o=D。
Q、・D。
(IF USE THEN ELSE CACHE   TARGET  AND  5o=O
Dll=O nt=1 S0=1 FLIISHIBUF  &  LOAD  PCST
ROBE  UNWIND  LATCH(IF TA
RTHEN GOTOVAL)Do=G。
D+J+ (IF TAR THEN (IF Q+  THEN SELIICT  TARGET  PCWRITEW
RITE  CACHII!  TAKENFLUSH
IBUF  &  LOAD  PCSTROBE  
UNWINI)  LATCH)GOTOVAL ELSE GOTOVAL  TAR))VAL: 口0=DO QI=D1 (IF  VAL THEN D0=O D、・0 (IF  (NOT BRANCHVALID)THE
N     UNWIND (IFQt    THENINVERT  PRE[
)  IN  CACHELSE SELECT  UNWIND  PCWRITE  
CACHE TAKEN) GOTOIDLE ELSE Do・Q。
D+=Q+ GOTOVAい その他の状態についてのシーケンスも同様にして容易に
決定される。
巻き戻し処理時の状態の復元を許す様に処理装置を設計
するには、幾つかの兼ね合いを必要とする。命令処理は
ブランチ予測後の選択された実行経路で継続し、幾つか
の後続の条件付きブランチ命令は該ブランチ予測の妥当
性検査以前に見出されるであろうから、これらの後続の
条件付きブランチ命令のうちのいずれかの分岐が予測さ
れ、追従され、必要に応じて巻き戻されるべきか否かと
いう問題がある。また、成る命令は通常は、実行される
前に汎用レジスターの状態を変化させることを許されて
いる。前述のLevy及びEckhouseに記RIT
E 載されているVAX命令アーキテクチャについては、斯
かる命令は、「レジスター・インクリメント」及び「レ
ジスター・デクリメント」指定子を含んでいるが、これ
は、該指定子がオペランド装置21により評価された時
に、指定された汎用レジスターをインクリメント又はデ
クリメントさせるものである。
中央処理装置の状態を、ブランチ予測時に1対のレジス
ターに保存し、巻き戻し処理時にその1対のレジスター
からのデータの転送によって直ちに回復することが出来
る。中央処理装置の状態を格納し回復するためのブツシ
ュダウン・スタックとして多数の重複するレジスターを
設ければ、最初のブランチの妥当性が確認される前に任
意の個数の後続のブランチを再帰的に予測し、追従させ
、巻き戻すことが出来る。しかし、第1図の中央処理装
置については、ハードウェアの複雑さと実行処理量との
兼ね合いから、予測されたブランチに続く命令による汎
用レジスターの変更を、該ブランチの妥当性が確認され
るまでは許すべきでない。
即ち、オペランド装W2 tは、若し予測されたブラン
チ後に自動デクリメント又は自動インクリメント指定子
を受は取れば、その予測されたブランチの妥当性力身1
認されるまでは機能停止する。従って、汎用レジスター
を巻き戻し動作中に回復させる必要は無く、誤った経路
内の命令から情報のパイプラインをクリアすることによ
って処理装置の状態を容易に回復することが出来る。例
えば、キュー23は、該キューからクリアされるべきデ
ータ要素の個数に対応する選択された数だけ除去ポイン
ターをインクリメントすることによってクリアされる。
その他のパイプライン・ステージは、データ要素が妥当
であるか否かを示すフラグをリセットすることによって
クリアされる。
第1図の中央処理装置については、ブランチ予測装置2
8は好ましくは単一レベルの再帰的ブランチ予測を可能
にするものである。換言すれば、命令装置12は、最初
のブランチ予測の妥当性が確認される前に最初の条件付
きブランチ命令及び次の1個の条件付きブランチ命令に
続く予測された経路内の命令を解読することを許される
。複数のブランチ内の命令を同時に前処理することの出
来るブランチ予測装置を提供するためには、該ブランチ
予測装置内に保留されている各ブランチ命令に関連する
情報を格納するための複数のレジスター又はスタックを
設けること、並びに、同時に保留されている各条件付き
ブランチに関連するマーカー及びUNWIND  PC
値のための複数のレジスター又はスタックを設けること
が必要である。
複数のブランチ命令を同時に予測するためには、ブラン
チ履歴キャッシュが第1ブランチ命令の直後の第2ブラ
ンチ命令について読み出されている間に該第1ブランチ
命令についての「キャッシュ目標使用」信号を判定する
ことが出来る様に、ブランチ予測論理を第9図に示され
ている様にパイプライン化することが望ましい。また、
キャッシュが読み出される時にブランチ予測情報でマー
カーをセットすること、並びに、キャッシュから読み出
された変位情報が該命令についての変位情報と矛盾しな
いか否かを判定する後続のサイクルでマーカーを変更す
ることも望ましい。
第9図に示されている様に、DECODE  PCの最
上位部分は比較器120でキャッシュタグと比較され、
キャツシュヒツト信号はマルチプレクサ121を作動さ
せてキャッシュからの予測ビット又はそれぞれのブラン
チ命令についてのバイアス・ビットを選択させる。しか
し、若しブランチ命令がループ・ブランチ又は無条件ブ
ランチを指定すれば、ORゲート122は、これらのブ
ランチが取られると予測する。
後続の機械サイクルで「キャッシュ目標信号」を判定す
るために、パイプラインレジスター123は、ブランチ
履歴キャッシュから読み出された変位及び命令長さと共
に「取られる予測」信号及び「キャッシュヒント」信号
を受信する。後続のサイクル及びパイプラインの次のス
テージにおいて、比較器124は、第1ブランチ命令に
関連するキャッシュからの変位を第1ブランチ命令の変
位と比較し、他の比較器125は、第1ブランチ命令に
関するキャッシュからの命令長さを第1命令の長さと比
較する。ANDゲートは、該命令変位と命令長さとの両
方が一致するか否かを判定する。
ゲート126は更に「変位妥当」信号及びBSHD信号
により作動可能にさせられて「キャッシュ目標使用」信
号を提供する。「キャッシュ目標使用」信号に応じて、
それぞれのマーカーは典型的には「解読に格納」状態に
変更される。
ここで第10図を参照すると、この図は3個に上るブラ
ンチ命令に関連する情報を格納すると共に第2条件付き
ブランチ命令についての第2巻き戻しPC値を格納する
複数のレジスターを含むデータ経路の概略を示す。これ
らのレジスターは、第11図に示されている制御回路に
より制御されるラッチによって構成される。第10図の
データ経路は、該ラッチの入力及び出力を選択する数個
のマルチプレクサも含む。
ラッチ130はDECODRPCの値を受は取る。この
値は、マルチプレクサ131により、ブランチの解読が
始まる時にはTARGlliT  PCとして、解読が
次の後続の命令から始まる時にはNEXT  PCとし
て選択される。若し解読されている命令がブランチ命令
ならば、マルチプレクサ132は、読み出しのためにブ
ランチ履歴キャッシュをアドレス指定するためにDEC
ODRPCを選択する。しかし、第1命令についてキャ
ッシュに書き込みをすることが必要となるまでに他のブ
ランチ命令が解読されてしまうこともあり得ることであ
る。従って、該ブランチについてのDECODE PC
は、該ブランチ命令に関する他の全ての情報と同様に、
第1ラツチ133、第2ランチ134及びマルチプレク
サ135を含む2レベル・スタックに格納されるが、こ
のマルチプレクサ135は、該第1ラツチ133に供給
するべくDECODRPC又は第2ラツチ134の出力
を選択する。
NEXT  PCの値は、現在の命令の長さをDECO
DRPCに加える加算器136により提供される。マル
チプレクサ137は、巻き戻しラッチ138にロードす
るべくNEXT  PC又はオペランド装置からの目標
アドレスを選択する。
2個の予測されたブランチについて命令が前処理される
ことがあるので、第2巻き戻しラッチ139も設けられ
ているが、これには単にNl!XT  PCの値をロー
ドする必要があるに過ぎない、マルチプレクサ137は
、第2UNWIDN  PCを巻き戻しラッチ138に
転送するための追加の入力を持っている。
オペランド装置は、ブランチが命令バッファーの外ヘシ
フトされる前にその目標値を送ることが出来る。この場
合、ラッチ140は、TARGf!T PCを、それが
DECODRPCとして使用されるべくラッチ130に
受信され得る様になるまで、保持する。TARGET 
 POは、マルチプレクサ141によりUNWIND 
 PC,オペランド装置からの目標アドレス、ラッチ1
40からの遅延した目標アドレス、又はブランチ履歴キ
ャッシュから読み出された目標として選択される。プロ
グラムカウンター17は、オーバーライド信号をマルチ
プレクサ141と他のマルチプレクサ142とに提供し
て該プログラムカウンターが実行装置により指定された
アドレスから実行を始めることを可能にするが、これは
、特別のアドレスから実行を開始するのを除いてブラン
チ予測装置の動作には適切でない。
第11図の制御論理150を考察すると、該制御論理は
、マイクロコードメモリー151と、レジスター153
におけるマーカーの第1及び第2の組をセット、リセッ
トする論理152とに分割されていることが分かる。こ
の分割の結果として、制御装置150の一次状態の変化
を単に第1組のマーカーに依存させることのみが必要と
なるに過ぎないので、相当単純となる。
3個のブランチ(その内の2個は条件付きブランチであ
り得る)についての前処理を調停するために、−次状態
レジスター154は16個の一次状態を定義する4個の
ビットを供給する。これら−次状態についての遷移は第
12図ないし第18図の状態図に示されている。該状態
図において、その間に1ブランチが保留される状態の状
態名は1ラインに書かれ、該状態名は第5図に示されて
いるのと同じである。2個のブランチを保留させる状態
の状態名は2本のラインに書かれ、その第1ラインは第
1の解読済みブランチ命令の処理を完了させるのに必要
なものを示し、第2ラインは第2の解読済みブランチ命
令の処理を完了させるのに必要なものを示す。−次状態
は更に、その間に3個のブランチ命令が保留される3個
の状態を含む。
第11図に示されている様に、状態解読器155は、現
在の状態が2個の条件付きブランチを保留させているか
3個のブランチを保留させているかを示す。若し3個の
ブランチが保留されていて且つもう一つのブランチ命令
が解読されていれば、ゲート156は命令解読器を機能
停止させる信号を生成する。条件付きブランチが解読さ
れていて且つ2個の条件付きブランチが既に保留されて
いる時には他のゲート157が命令解読器を機能停止さ
せる信号を生成する。ゲート156.157の出力はN
ORゲート158で組合わされて、命令解読器への機能
停止信号を生成する。状態解読器155は、妥当性が6
’ffl U’fflされていない条件付きブランチが
保留されていることを示す信号をも提供する。この信号
はオペランド装置が、評価するべきレジスターインクリ
メント指定子又はレジスターデクリメント指定子を受信
する毎にオペランド装置を機能停止させるためにオペラ
ンド装置に供給される。
マーカー論理をマイクロコードメモリー151から完全
に分離するために、マイクロコードは「ブランチ妥当」
信号と、「ブランチ判定」信号と、その−次状態とを組
み合わせて、「ブランチ判定」信号が受信された時から
、計算された目標アドレスがオペランド装置から受信さ
れた時まで第8図に示されている様にマーカーをセット
するために使われる「ブランチ妥当j信号を制限し拡張
するBRANCH0K(8号を決定する。ブランチの妥
当性検査が計算された目標アドレスの前に来た時になさ
れる予測(BSHOP)の条件は、マイクロコードメモ
リー151からマーカー論理152への4個のモード選
択ライン159上の2進状態の特定の組み合わせ(SE
L=01002)により示されるTARCASES動作
モードによって示される。rTARCASESJ選択に
応じて、マーカーは下記のテーブルに従ってセットされ
る。
0    0d    無視(ignore)1   
 0d    無視(ignore)1   1  1
   無視(ignore)マーカー論理152は、「
キャッシュ目標使用」信号を受信すると、普通は第1m
のマーカーを「無視」状態に変更する。しかし、若しマ
ーカーがクリアであるか又はクリアされるか又はロード
されるならば、「キャッシュ目標使用」信号は何の効果
も持たない。更に、若し1個のブランチ命令が他のブラ
ンチ命令に続けば、変化するマーカーは第1組のマーカ
ーから第2組のマーカーへとシフトしている。マイクロ
コードメモリー151は第1組のマーカーではなくて第
2組のマーカーが変更されるか又は「キャッシュ目標使
用」信号に関して適切であることをマーカー論理152
に知らせる信号SECMARKS  IN  USEを
生成する。
4モ一ド選択ライン159はマーカー論理152の他の
数個の動作モードを提供する、N0OPモード(SEL
−0000□)では、マーカーの変化はない。
TRtJP、モードでは(SEL=0001□)、第1
マーカーは、若しブランチが取られないと予測されれば
(「取られない予測」=0)、「巻き戻しに格納」にセ
ットされる。若しブランチが取られると予測されれば、
該ブランチがブランチ履歴キャッシュ内に無ければ「解
読に格納」にセットされる。若しブランチがブランチ予
測キャッシュ内にあり、且つ「取られる」と予測されれ
ば、マーカーは「無視」にセットされる。
FALSEモード(SEL=0010□)では、第1マ
ーカーがクリアされる。SET  SIDモード(SE
L=0011g )では、第1マーカーは「解読に格納
」に変更される。このモードは、第1マーカーが「巻き
戻しに格納」状態にあり、「ブランチ判定信号」がアサ
ートされ、「ブランチ妥当」信号が該ブランチ予測が誤
っていたことを示している時に使われる。
FROM  5ECONDモード(sat、ololz
)では、第1マーカーは第2マーカーの値にセットされ
、第2マーカーはクリアされる。この動作モードは、2
個のブランチが保留されていてブランチ予測装置が第1
のブランチの処理を終えようとしている時、即ち、現在
の一次状態が2個のブランチを保留にしていて次の一次
状態が1個のブランチを保留にしでいる時、に使われる
SET  IGモード(SEL=0110□)では、マ
ーカーの第1組は「解読に格納」から「PC無視」に転
換される。この動作モードは、「取られる予測」ブラン
チがオペランド装置からの目標アドレスを待っていて実
行装置が該予測が誤っていることを示している時に使わ
れる。
5ECONDモード(SEL= 1000x )では、
マーカーの第2の組が前述の「真」モードにセットされ
、マーカーの第1組はその先の値を保留する。
上記の他の動作モードでは、第2マーカーは、N0OP
モードの場合を除いて、クリアされる。
N0OPモードでは、第2マーカーの次の状態はその現
在の状態と同じである(該マーカーが「キャッシュ目標
使用」信号により変更されなければ)。
PtJSHモード(SEL=1101□)では、第1マ
ーカーは第2マーカーの値にセットされ、第2マーカー
は「真」モードに従ってセットされる。
この動作モードは、−次状態VAL VAL TARU
NCTARに行(時に使わ4れる。
マーカー制御論理は第19図に示されている。
ライン159の内の3本でのモード選択により、マーカ
ーレジスター153内のマーカーの第1&llの次の状
態を決定するマルチプレクサ170が作動させられる。
TARCASESモードについての「取られる予測」信
号を選択的に反転させるために排他的N0R171が使
われる。
「キャツシュヒツト」の場合に、その後にキャッシュか
らの命令長さ又は経にか一致しないために「キャッシュ
目標使用」が無い場合にマーカーを修正するために、2
個の中間信号r DEMOTEFIR3T  MARK
ER3JとrDEMOTESECOND  MARKE
R3Jとが設けられており、これらは2個のANDゲー
ト174.175により生成される。インバーター17
6 ハ(を号SECMARKS  TN  USEが真
であることにより示される様に第2マーカーが使用され
ているか否かによってどの信号がセットされるべきカラ
決定する。ORゲー)177は、r DEMOTEFI
R3T  MARKER3Jが真であればMoが常に真
となる様に第1マーカーを修正する。同様に、ORゲー
ト178は第2マーカーを修正するために使われる。第
2マーカーの、5ECOND又はPUSHモードへのセ
ットは、第4の選択ライン159により示される。
N0OPモードでは、rDEMOTH5BCOND  
J信号により強制されなければ、第2マーカーは、マル
チプレクサ179により選択されたその先の状態を受は
入れる。N0OPモードはANDゲート180により解
読される。
第20図を参照すると、実行されるブランチ命令を監視
する実行装置(第1図の13)内の制御論理の略図が示
されている。この制御論理は一時に2個に及ぶマクロブ
ランチを監視しなければならない。第3マクロブランチ
は、第1マクロブランチが完了するのと同じサイクルに
おいて「発せられる」。この場合、第1のものの制御を
シフトアウトさせて新しいブランチのための余地を作る
ことが出来る。SAV   BRANCHUCODE(
ラッチ263の)は最新のマイクロコードであり、これ
はマルチプレクサ267により選択されて現在のブラン
チ命令の実行に使われることが出来る。現在のマイクロ
コードは、該ブランチが完了するまでランチ269に保
持される。単純なブランチ命令については、マイクロコ
ードラッチは1回ロードされる。成る複雑なブランチ(
VAX命令BBXX等)については、マイクロコードは
第1組のコントロールを送ってブランチ方向をチエツク
するが、予測が誤っていればEBOXBRANCHVA
LIDを阻止する。ブランチ命令が実行しなければなら
ない書き込みが全て完了したことをマイクロコードがV
I!認した時は、それはマイクロコードラッチをロード
し直してEBOXBRANCH及びEBOX  BRA
NCHVALIDを強制する。一つのブランチがなお処
理中である時に新しいブランチが発せられた時には、N
EXT  BRANCHUCODEラッチ(266)が
ロードされる。信号NEXT  BRANCHWAIT
rNG(ラッチ286)がこれらのランチがロード済み
であることを示していれば、第1ブランチが完了する時
には、マルチプレクサ167はNEXTマイクロコード
を選択する。
同様に、各命令の開始時に、その命令についての命令装
置のブランチ予測をラッチしなければならない。進行中
のブランチが無ければ、5AVISStJE  PRE
DICTIONランチ(277)がロードされる。若し
実行装置が既にブランチに対して作用し初めていたなら
ば、NEXTISSUE  PREDICTIONラッ
チ(273)がロードされる。信号NEXT  PRE
DICTIONWAITING (191)は、このラ
ッチがロードされてあるので、第1ブランチが完了した
時、マルチプレクサ178がNEXT予測をとるであろ
うことを示す。
どのマイクロコードを使ってブランチ検査を行なうかを
ブランチ論理が知ると、該論理は可能なブランチ条件を
全て生成しなければならない。第21図を参照すると、
全ての可能なブランチ条件を生成する実行装置内のこの
論理の略図が示されている。可能なブランチ条件は第2
2図に示されている。
単純なブランチは、先の命令により左のPSL条件コー
ドを検査する。先の命令は、UCCKマイクロコードと
その命令の動作の結果としての条件コードとを使うこと
によって、これらのビットを「クロック」することが出
来る。先の命令は、その結果をPSL条件コードラッチ
に直接書き込むことも出来る。成る場合には、先の命令
は、分岐するであろう条件コードを変化させないので、
先の値即ちPSL  C0ND  C0DESDLYが
使われる。複雑なブランチについては、先のマイクロ命
令(INTERNAL C0NDITION  C0D
ES)から生じた条件が検査される。ブランチ検査を行
なう前にPSL条件コードをセットし、次にそれらをI
NTERNAL  C0NDITION  C0DES
と多重化するのには余りに長い時間を要するので、これ
らのステップは併合されてBRANCHC0ND’  
S(マルチプレクサ296)を形成する。
ブランチ条件が決定されると、正しい条件を選択し、且
つ、ブランチを取るべきであればTAKEBRANCH
(マルチプレクサ302)をセットするために現在のブ
ランチのマイクロコードが使われる。この値は、EBO
X  BRANCH(303)をセットする(予測が誤
っていたことを意味する)ために命令装置の予測と比較
される。
このチエツクは、まさに結果が使用される場合に、各サ
イクルでなされる。
若し同じサイクルでブランチ検査を完了するのに充分な
速さでブランチ条件を生成することが出来なければ、特
別のブランチ検査論理の利点は失われる。その時は、次
のサイクルにおける整数機能単位においてブランチ検査
を行なうのとちょうど同じ速さとなる。先の命令の状態
に依存する非ブランチ命令は全て、実行される前に余分
のサイクルを待たなければならない。
ここで第3図を参照すると、第21図のブランチ条件論
理の結果の妥当性の確認を行なう時を決定する実行装置
のブランチ制御論理が示されている。図示の第1状態即
ちTRYING  TOBRANCH(ラッチ308)
は、ブランチが進行中である時には常にセットされる。
これは、新しいブランチが発せられる時(ゲート304
)、又は他のブランチが開始を待っている(NEXT 
 BRANCHWA I T I NG)時にセットさ
れる。これは、ブランチの妥当性が確認される(ゲート
305)まで維持される。
複雑なブランチについては、ブランチ検査についてのマ
イクロコードと、動作を行なうマイクロコード(その結
果は検査を行なうために使われる)とは同時に発せられ
る。それゆえ、複雑なブランチは、検査が行なわれる前
に動作を完了させるために1サイクル待たなければなら
ない。「待機」サイクルがなされると直ちに状態WAI
TEDON  COMPLEX (ラッチ317)がセ
ットされる。内部条件コードが妥当(動作がリタイアさ
せられたことを意味する)であれば、複雑なブランチ検
査を行なうことが出来る。
単純なブランチについては、先の命令が終了すると直ち
に検査を行なうことか出来る。実行装置内の結果キュー
は、実行装置が現在働き掛けている命令をリタイアさせ
る順序を監視する。若し結果キューが空ならば、先の命
令を仕上げなければならず、ブランチ検査を直に行なう
ことが出来る。
結果キューが空でなくて、ブランチが2番目から最後へ
のスロットにあれば、先の命令はリタイア寸前である。
その条件コードが妥当となったならば(リタイアが実際
に行なわれる)直ちに、ブランチ検査を行なうことが出
来る(ゲート310)。
これらの条件のいずれかが存在していて(ゲート311
)且つそれが単純なブランチであれば(UCOMPLE
Xがセットされない)、そのブランチの妥当性を確認す
ることが出来る。これらの条件のいずれかが存在してい
て、且つそれが複雑なブランチであれば、「待機」サイ
クルが始まることが出来る。
単純なブランチは決して結果を書かないので、ブランチ
検査がなされると直ちに方向を報告することが出来る。
実際、予測が誤っていて、(誤っている)命令が単純な
分岐後にレジスター又はメモリーに書き込みを行なおう
と試みれば、その書き込みを停止させなければならない
。予測が誤っノ ていた時は、信号BAD  BRANCH(ゲート33
3)が励起されて、その命令のリタイアを止め、実行装
置のパイプラインをクリアする。しかし、複雑なブラン
チは、レジスター又はメモリーへの書き込みを必要とす
ることがある。これらについては、ブランチ妥当性検査
はリタイアする書き込みを待たなければならず、これは
l5SUE装置からのRESQ  ULASTにより示
される(ゲー)325)。若し妥当性検査が待たなかっ
たならば、BAD  BRANCHがその書き込みを阻
止することが出来る。殆どの場合に、リタイアは直ちに
完了し、妥当性検査は遅延させられない。リタイアが停
止させられている時、HOLDCOMPLEX  BR
VALID(ランチ330)がセットされるので、その
ブランチが忘れられることはない。
標準的な単純なブランチに単純な又は複雑なブランチが
続く時、2番目のブランチのタイミングは1番目のブラ
ンチとは無関係である。しかし、単純なブランチが複雑
なブランチの直後に続く時は、その単純なブランチの検
査は1サイクル遅延させられる。その理由は、複雑なブ
ランチはその「ブランチ」サイクル前に「待機」サイク
ルを持ち、単純なブランチが理想的には検査されている
時にブランチ検査をしているであろうからである。
実際、若し複雑なブランチの後に単純なブランチの−様
な流れが続く場合には、その単純なブランチの各々の検
査が遅延させられる。
EBOX  BRANCHVALIDと単純なブランチ
のリタイアとの相対的タイミングが遅延させられる時は
、l5SUE装置に警告するためにイ言号SIMPLE
  BAD  BRANCH(ラッチ335)が必要と
される。S IMPLEBAD  RANCHは、EB
OX  BRANCHVAL I Dが遅延させられず
且つ予測が悪かった時(予測が良くて、l5SUE装置
が実際にはど(7)BRANCHVALID7!l(ど
の命令と対応するのかを知ることを必要としない時)、
アサートされる。SIMPE  BAD  BRANC
Hは、複雑なブランチ(これは常に遅延させられる)と
、先の複雑なブランチによって遅延させられた単純なブ
ランチとについてはクリアされる。
同様に、若し複雑なブランチの直後に1サイクルの複雑
なブランチが続く場合には、2番目のブランチの「待機
」サイクルは1番目のブランチの「ブランチ」サイクル
と重なりあう。2番目のブランチについての二重待機を
阻止するために、信号DONT  WAIT (ラッチ
323)が生成される。これと讐AITED   ON
   COMPLEχ(ゲート317)とのORが取ら
れてWAITDONE (ゲート318)がセットされ
、これによりその複雑なブランチの妥当性が確認される
著しくRESQ−ULASTが停止させられたために)
該ブランチが停止させられれば、待機が行なわれたとい
う事実がWAITED  ON  COMPLEX論理
に保存される。
遅延させられたブランチに複数サイクルの複雑なブラン
チが続く時は、2番目のブランチの第1マイクロサイク
ルがブランチ検査論理を必要としないので2番目のフ゛
ランチは1番目のフ゛ランチから独立している。遅延さ
せられたブランチに1サイクルの複雑なブランチが続く
場合は、2番目のブランチの「待機」サイクルは1番目
のブランチの「ブランチ」サイクルと重なりあう。それ
故、2番目の複雑なブランチのタイミングはなお1番目
のブランチから独立している。
ブランチ予測が誤っている時、或は実行装置が他の何ら
かの理由で命令をクリアした時、命令装置が実行装置に
送るコントロールとデータとは、3サイクルが経過する
か又はIBOX  C0RRECTIONがアサートさ
れるまではくどちらが先であるにしても)妥当とはなら
ない。実行装置が悪いデータを使うのを防止するために
、命令装置からデータを受は取る実行装置の全ての部分
にIGNOREIBOX(ランチ338)散布される。
以上から分かる様に、誤ったブランチ予測に起因する機
能停止の穎度を減らすべく複数のブランチ命令を同時に
予測し前処理するパイプライン方式コンピューター用ブ
ランチ予測装置が開示された。予測は、該コンピュータ
ーの実行又は類似のコンピュータープログラムの実行の
過去の履歴について使用可能な最も信頬出来る情報に基
づいて、成るべく早くになされる。ブランチ履歴キャッ
シュを使って先に計算された目標アドレスを格納するが
、キャッシュも関連の変位情報を格納し、この情報が、
キャッシュ内の目標アドレスが正しいことを確認するた
めに、予測されるブランチ命令についての実際の変位情
報と比較されるので、コンピュータープログラムの変更
の際にキャッシュをクリアする必要は無い。キャッシュ
の大きさを最小限にするために、新しい[ブランチが取
られるj項目のみがキャッシュに書き込まれる。ブラン
チ命令が解読され、その目標アドレスが計算され、その
ブランチ判定がなされる順序に拘らずになるべく早くブ
ランチ予測をなす制御論理も開示された。該制御論理を
、ブランチ予測及び判定を記録するマーカー論理と、命
令解読、目標アドレス計算、及びブランチ判定の順序に
応答するマイクロコードとに分割することによって、ブ
ランチ予測装置が単純化されている。更に、実行装置内
のブランチ解明論理は、ブランチ判定を成るべく早く行
なうことによって機能停止の穎度と長さとをさらに減少
させている。
【図面の簡単な説明】
第1図は、本発明を採用したパイプライン方式中央処理
装置を持ったディジタルコンピューターシステムのブロ
ック図である。 第2図は、命令を処理するために、第1図のパイプライ
ン方式命令処理装置により色々な命令について平行して
行なうことの出来る色々なステップを示す図である。 第3図は、命令解読、目標アドレス計算、及びブランチ
判定又は妥当性検査の普通の順序についての本発明の好
適なブランチ予測方法のフローチャートである。 第4図は、複数のブランチを同時に予測することの出来
ない単純化されたブランチ予測装置の略図である。 第5図は、第4図の単純化されたブランチ予測装置の一
次状態図についての状態図である。 第6図は、第4図の単純化されたブランチ予測装置にお
いてブランチ予測、判定又は妥当性検査情報を格納する
一組のマーカーの4個の状態を示す状態テーブルである
。 第7図は、第6図のマーカーがブランチ予測に応じてど
の様にセットされるかを示す状態テーブルである。 第8図は、第6図のマーカーがブランチ判定又は妥当性
検査に応じてどの様にセットされるかを示す状態テーブ
ルである。 第9図は、第1ブランチ命令に割当てられたマーカーの
第1の組がブランチ脂層キャッシュからの目標アドレス
の確認に応じて選択的に変更されるのと同時に第2のブ
ランチ命令に割り当てられたマーカーの第2の組がブラ
ンチ予測に応じてセットされることを可能にする様にパ
イプライン方式とされたブランチ予測・目標アドレス確
認理論の略図である。 第10図は、ブランチ命令情報及び「巻き戻し」アドレ
スについてのスタックを含むデータ経路論理の略図であ
る。 第11図は、同時に3個のブランチ命令(そのうちの2
個は条件付きブランチ命令であっても良い)を予測し前
処理することの出来るブランチ予測装置を構成するため
に第9図のブランチ予測・目標アドレス確認論理及び第
11図のデータ経路論理と関連して使われる好適な制御
論理のブロック図である。 第12図ないし第18図は、第11図の制御論理につい
ての状態遷移図を構成する。 第19図は、第11図の制御論理に使われるマーカー論
理の略図である。 第20図は、実行されるブランチ命令を監視する第1図
のプロセッサーの実行装置における制御論理の略図であ
る。 第21図は、全ての起こり得るブランチ条件を生成し、
実行されている現在の命令についての条件を選択する実
行装置内の論理の略図である。 第22図は、起こり得るブランチ条件のテーブルである
。 第23A図及び第23B図は、第21図の論理によって
選択されたブランチ条件の妥当性を確認する時を決定す
る実行装置内の論理の略図である。 (フ ト

Claims (47)

    【特許請求の範囲】
  1. (1)コンピュータープログラムにおけるブランチ命令
    により指定されるブランチがディジタルコンピューター
    による前記命令の実行時に取られるか否かを予測する方
    法であって、前記コンピューターは前記命令の実行前に
    前記コンピュータープログラムの命令を前処理する命令
    解読器を有し、前記ブランチ命令は前記コンピューター
    プログラムにおてそれぞれの命令アドレスに位置し、前
    記ブランチ命令は予め定義された複数のブランチ命令コ
    ードのうちの特定の一つを包含し、前記ブランチ命令は
    、前記ブランチ命令が実行される前記ブランチが取られ
    る時に前記コンピュータープログラムの実行が分岐して
    行く対応目標アドレスを指定する様になっている方法で
    あって、 命令と関連したブランチが取られるべきか否かを示す、
    前記命令と関連した情報が予め格納されてあるキャッシ
    ュメモリーを探し、 該ブランチ命令に関連する情報が前記キャッシュメモリ
    ー内に見出されない時、該ブランチ命令のブランチ命令
    コードについての各所定ブランチ・バイアスに基づいて
    前記ブランチが取られるか否かを予測し、 該ブランチ命令に関連する情報が前記キャッシュメモリ
    ーに見出されない時、前記ブランチ命令に関連する前記
    情報が、該ブランチ命令に関連するブランチが取られる
    べきであることを示しているか否かに従って前記ブラン
    チが取られるか否かを予測し、 ブランチが取られると予測された時に該ブランチ命令に
    より指定される目標アドレスから前記コンピュータープ
    ログラムの命令を前処理してゆくステップから成ること
    を特徴とする方法。
  2. (2)前記ブランチ命令は、前記対応目標アドレスの、
    前記コンピュータープログラム内の前記ブランチ命令の
    場所からの変位を指定し、前記キャッシュメモリーには
    、所定の変位情報と、前記命令に関連するブランチの目
    標アドレスとが予め格納されており、前記方法は更に、
    該ブランチ命令に関連する情報が該キャッシュメモリー
    に見出される時に前記ブランチ命令が指定する変位を該
    キャッシュメモリー内の関連変位情報と比較するステッ
    プを含み、前記コンピュータープログラムの該目標アド
    レスの命令を前処理する前記ステップは、前記キャッシ
    ュメモリー内の該関連目標アドレスが該ブランチ命令の
    指定する目標アドレスと同じであることが前記比較ステ
    ップによって示された時に該キャッシュメモリー内の該
    ブランチ命令に関連する各目標アドレスを、該ブランチ
    命令の指定する目標アドレスとして使うステップを包含
    することを特徴とする請求項1に記載の方法。
  3. (3)前記ブランチ命令についての前記目標アドレスは
    、該ブランチ命令のアドレスと、該ブランチ命令の長さ
    と、該ブランチ命令内の変位指定子の値との和に等しく
    ;該キャッシュメモリーに格納されている該情報は命令
    アドレスに関連させられており;該キャッシュメモリー
    に格納されている該変位情報は、変位値と命令長さ値と
    を包含し;前記比較のステップは、該関連変位値を該ブ
    ランチ命令内の前記変位指定子の値と比較すると共に該
    関連長さ値を前記ブランチ命令の前記長さと比較するこ
    とを含み、前記比較のステップは、該関連長さ値が前記
    ブランチ命令の前記長さと同じで且つ該関連変位値が前
    記ブランチ命令内の前記変位指定子の値と同じである時
    には前記キャッシュメモリー内の該関連目標アドレスが
    該ブランチ命令の指定する目標アドレスと同じであるこ
    とを示すことを特徴とする請求項2に記載の方法。
  4. (4)前記複数の所定命令コードは、実行中に時には取
    られるけれども常に取られると予測される「条件付き」
    ブランチ命令である或る「ループ・ブランチ命令」につ
    いてのコードを含むことを特徴とする請求項1に記載の
    方法。
  5. (5)前記複数の所定命令コードは、実行時に常にとら
    れると共に常に取られると予測される或る「無条件」ブ
    ランチ命令についてのコードを含むことを特徴とする請
    求項1に記載の方法。
  6. (6)前記各ブランチに基づいて前記ブランチが取られ
    るか否か予測するべく該ブランチ命令の命令コードに応
    じて選択される並列出力を有するブランチ・バイアス・
    レジスターへブランチ・バイアス情報を順次にシフトさ
    せる最初のステップを更に備えることを特徴とする請求
    項1に記載の方法。
  7. (7)書き込まれるべき情報が該ブランチが取られるべ
    きことを示す時に限って、関連情報が既に該キャッシュ
    メモリーにない時に前記ブランチ命令に関連する情報を
    前記キャッシュメモリーに書き込むステップを更に備え
    ることを特徴とする請求項1に記載の方法。
  8. (8)前記キャッシュメモリーへの書き込みの前記ステ
    ップは、前記のそれぞれのブランチ・バイアスに基づい
    て前記ブランチが取られると予測される時には該ブラン
    チの実行の前に、該ブランチが取られないと誤って予測
    されていたならば該ブランチ命令の実行の後に、行なわ
    れることを特徴とする請求項7に記載の方法。
  9. (9)該ブランチが取られた後に該ブランチが取られる
    べきか否かを示す前記キャッシュメモリー内の情報を変
    更するステップを更に備え、前記の変更は、該ブランチ
    命令に関連する前記情報が既に該キャッシュメモリー内
    にあり、且つ該ブランチが取られると誤って予測された
    時に行なわれることを特徴とする請求項8に記載の方法
  10. (10)前記のそれぞれのブランチ・バイアスに基づい
    て前記ブランチが取られると予測されている時に該ブラ
    ンチ命令の実行前に前記情報が既に前記キャッシュメモ
    リー内にない時に前記ブランチ命令に関連する情報を前
    記キャッシュメモリーに書き込むステップを更に備える
    ことを特徴とする請求項1に記載の方法。
  11. (11)前記キャッシュメモリーは、前記命令に関連す
    る変位情報を格納し、前記キャッシュメモリーは、第1
    期間内に前記ブランチ命令と関連する情報について前記
    キャッシュメモリーを探索し、関連変位情報が前記キャ
    ッシュメモリーから読み出され、その後の第2期間に、
    前記キャッシュメモリーが後続の命令に関連する情報に
    ついて探索されている間、前記キャッシュメモリーから
    読み出された該関連変位情報は該ブランチ命令により指
    定される変位情報と比較されることを特徴とする請求項
    1に記載の方法。
  12. (12)ブランチが取られると予測されるべきか否かを
    示す該関連情報は前記第1期間内に前記キャッシュメモ
    リーから読み出されて格納され、前記の格納された情報
    は該比較に基づいて前記第2期間に修正されることを特
    徴とする請求項11に記載の方法。
  13. (13)該ブランチ命令についての情報が前記第1期間
    中に前記キャッシュメモリー内に発見されず、前記ブラ
    ンチが前記のそれぞれのブランチ・バイアスに基づいて
    取られると予測され、該ブランチ命令により指定される
    目標アドレスが前記第2期間に使用可能である時には、
    前記コンピュータープログラム内の命令を前処理する前
    記ステップは前記第2期間に行なわれることを特徴とす
    る請求項11に記載の方法。
  14. (14)コンピュータープログラムにおけるブランチ命
    令により指定されるブランチがディジタルコンピュータ
    ーによる前記命令の実行時に取られるか否かを予測する
    方法であって、前記コンピューターは前記命令の実行前
    に前記コンピュータープログラムの命令を前処理する命
    令解読器を有し、前記ブランチ命令は前記コンピュータ
    ープログラムにおいてそれぞれの命令アドレスに位置し
    、前記ブランチ命令は予め定義された複数のブランチ命
    令コードのうちの特定の一つを包含し、前記ブランチ命
    令は、前記ブランチ命令が実行され且つ前記ブランチが
    取られる時に前記コンピュータープログラムの実行が分
    岐してゆく対応目標アドレスを決定するブランチ変位を
    指定する様に成っている方法であって、それぞれの命令
    に関連するブランチが取られるべきか否かを示す情報と
    、該ブランチについてのそれぞれの変位情報と、該それ
    ぞれの変位情報により決定されるそれぞれの目標アドレ
    スとが予め格納されてあるキャッシュメモリーを探索し
    、 該ブランチ命令に関連する情報が前記キャッシュメモリ
    ー内に見出される時は、 (a)前記ブランチが取られないと予測されるべきこと
    を前記情報が示している時は前記ブランチは取られない
    と予測し、 (b)前記情報が、前記ブランチは取られると予測され
    るべきであることを示している時は、前記キャッシュメ
    モリー内の該関連変位情報を、該ブランチ命令の指定す
    る変位と比較し、且つ、その比較によって、該関連変位
    情報により決定される目標アドレスが該ブランチ命令に
    より指定される変位により決定される目標アドレスと同
    じであることが示された時には、前記ブランチが取られ
    ると予測し、且つ、前記コンピュータープログラム内の
    命令を、該ブランチ命令に関連する該キャッシュメモリ
    ー内のそれぞれの目標アドレスから前処理するステップ
    から成ることを特徴とする方法。
  15. (15)前記ブランチ命令についての前記目標アドレス
    は、該ブランチ命令のアドレスと、該ブランチ命令の長
    さと、該ブランチ命令内の変位指定子の値との和に等し
    く;該キャッシュメモリーに格納されている前記情報は
    命令アドレスに関連させられており;該キャッシュメモ
    リーに格納されているそれぞれの変位を示す情報は、変
    位値と命令長さ値とを包含し;前記比較は、該変位指定
    子の値が該キャッシュメモリーに格納されている変位値
    と同じで且つ該ブランチ命令の長さが該キャッシュメモ
    リーに格納されている該命令長さ値と同じである時には
    該関連変位情報により決定される目標アドレスが該ブラ
    ンチ命令により指定される変位により決定される目標ア
    ドレスと同じであることを示すことを特徴とする請求項
    14に記載の方法。
  16. (16)前記複数の所定命令コードは、時には実行時に
    取られるが常に取られると予測される「条件付き」ブラ
    ンチ命令である或る「ループ・ブランチ命令」について
    のコードを含むことを特徴とする請求項14に記載の方
    法。
  17. (17)前記複数の所定命令コードは、実行時に常にと
    られると共に常に取られると予測される或る「無条件」
    ブランチ命令についてのコードを含むことを特徴とする
    請求項14に記載の方法。
  18. (18)前記各ブランチに基づいて前記ブランチが取ら
    れるか否か予測するべく該ブランチ命令の命令コードに
    応じて選択される並列出力を有するブランチ・バイアス
    ・レジスターへブランチ・バイアス情報を順次にシフト
    させる最初のステップを更に備えることを特徴とする請
    求項14に記載の方法。
  19. (19)書き込まれるべき情報が該ブランチが取られる
    べきことを示す時に限って、関連情報が既に該キャッシ
    ュメモリーにない時に前記ブランチ命令に関連する情報
    を前記キャッシュメモリーに書き込むステップを更に備
    えることを特徴とする請求項14に記載の方法。
  20. (20)前記キャッシュメモリーは、第1期間に、前記
    ブランチ命令に関連する情報について探索され、該関連
    情報が前記キャッシュメモリーから読み出されて格納さ
    れ、その後の第2期間に、該キャッシュメモリーから読
    み出されて格納されてあった関連変位情報が該ブランチ
    命令の指定する変位と比較されると共にその間に前記キ
    ャッシュメモリーは後続の命令に関連する情報について
    探索されることを特徴とする請求項14に記載の方法。
  21. (21)ブランチが取られると予測されるべきか否かを
    示す情報は前記第1期間に前記キャッシュメモリーから
    読み出されて格納され、該ブランチ命令に関連するブラ
    ンチが取られるべきであるか否かを示す格納されてあっ
    た該関連情報は、前記第2期間に、該関連変位情報と、
    該ブランチ命令の指定する変位との該比較に基づいて修
    正されることを特徴とする請求項20に記載の方法。
  22. (22)前記の探索、予測、比較及び前処理の前記ステ
    ップを繰り返しながら前記キャッシュメモリーをクリア
    せずに前記コンピュータープログラムを変える後続のス
    テップを更に備えることを特徴とする請求項14に記載
    の方法。
  23. (23)コンピュータープログラムにおけるブランチ命
    令により指定されるブランチがディジタルコンピュータ
    ーによる前記命令の実行時に取られるか否かを予測する
    方法であって、前記コンピューターは前記命令の実行前
    に前記コンピュータープログラムの命令を前処理する命
    令装置を有し、前記ブランチ命令は前記コンピューター
    プログラムにおいてそれぞれの命令アドレスに位置し、
    前記ブランチ命令は予め定義された複数のブランチ命令
    コードのうちの特定の一つを包含し、前記ブランチ命令
    は、前記ブランチ命令が実行され且つ前記ブランチが取
    られる時に前記コンピュータープログラムの実行が分岐
    してゆく対応目標アドレスを決定するブランチ変位を指
    定し、前記命令装置は、第1期間には前記ブランチ命令
    の命令コード及びアドレスを提供し、第2期間には前記
    ブランチ命令のブランチ変位を提供し、第3期間には前
    記ブランチ変位から対応する目標アドレスを計算する様
    に成っている方法であって、 (a)該ブランチ命令が実行される時に前記ブランチ命
    令のブランチが取られるか否かを予測し、 (b)前記第1期間に、前記ブランチ命令の前記アドレ
    スに関連する変位情報及び目標アドレスを前記キャッシ
    ュメモリーから得るために、命令アドレスに関連する目
    標アドレス及び変位情報を格納するキャッシュメモリー
    を探索し、 (c)関連変位情報及び関連目標アドレスが前記キャッ
    シュメモリーから得られた時には、前記第2期間に、前
    記キャッシュメモリーから得られた該関連変位情報を前
    記ブランチ命令の該ブランチ変位と比較することによっ
    て該関連目標アドレスが前記第3期間に計算される該対
    応目標アドレスと同じであることを確認し、該関連目標
    アドレスがその様に確認され且つ前記ブランチが取られ
    ると予測された時には、前記目標アドレスから前記命令
    の前処理を開始し、 (d)前記確認のステップによって、該関連目標アドレ
    スが前記第3期間に計算される該目標アドレスと同じで
    ないと判定され且つ前記ブランチが取られると予測され
    た時には、計算される該目標アドレスを待ち、前記第3
    期間にその計算された目標アドレスから前記命令の前処
    理を開始するステップから成ることを特徴とする方法。
  24. (24)前記予測のステップは、該ブランチが取られる
    と予測されるべきであるか否かを示す前記ブランチ命令
    のアドレスに関連する情報を前記キャッシュメモリーか
    ら読み出すことを含むことを特徴とする請求項23に記
    載の方法。
  25. (25)前記の予測のステップは、該ブランチ命令に関
    連する情報が前記キャッシュメモリー内に発見されない
    時に該ブランチ命令の命令コードについて予め決められ
    るブランチ・バイアスに基づくことを特徴とする請求項
    24に記載の方法。
  26. (26)前記の予測のステップは、前記命令コードを解
    読して該命令コードが無条件ブランチ又はループ・ブラ
    ンチを指定するか否かを判定し、若しそうならば、該ブ
    ランチ命令のアドレスに関連する該キャッシュ内の如何
    なる情報にも拘らず前記ブランチが取られると予測する
    ことを含むことを特徴とする請求項24に記載の方法。
  27. (27)なされた該予測は格納され、その格納された結
    果は前記の比較に基づいて選択的に変更されることを特
    徴とする請求項23に記載の方法。
  28. (28)前記ブランチ予測はパイプライン方式回路の第
    1ステージでなされ、前記比較は前記パイプライン方式
    回路の後続の第2回路で行なわれることを特徴とする請
    求項23に記載の方法。
  29. (29)前記比較が前記ブランチ命令について行なわれ
    る時、前記コンピュータープログラム内の後続のブラン
    チ命令についてブランチ予測がなされることを特徴とす
    る請求項23に記載の方法。
  30. (30)コンピュータープログラムにおけるブランチ命
    令により指定されるブランチがディジタルコンピュータ
    ーによる前記命令の実行時に取られるか否かを予測する
    方法であって:前記コンピューターは前記命令の実行前
    に前記コンピュータープログラムの命令を前処理する命
    令装置と、前処理後に該命令を実行する実行装置とを有
    し;前記ブランチ命令は前記コンピュータープログラム
    においてそれぞれの命令アドレスに位置し、前記ブラン
    チ命令は予め定義された複数のブランチ命令コードのう
    ちの特定の一つを包含し、前記ブランチ命令は、前記ブ
    ランチ命令が実行され且つ前記ブランチが取られる時に
    前記コンピュータープログラムの実行が分岐してゆく対
    応目標アドレスを決定するブランチ変位を指定し;前記
    命令装置は、ブランチ命令の解読を示すブランチ信号を
    提供する命令を解読する手段と、該ブランチ命令に対応
    する目標アドレスを計算して、該目標アドレスの計算を
    示す目標信号を提供する手段とを含み;前記実行装置は
    、実行時にブランチが取られるか否かを示す妥当性信号
    を提供し、前記ブランチ信号、目標信号及び妥当性信号
    は、それぞれのブランチ命令の前処理及び実行について
    色々な順序で生じ;前記方法は、 (a)ブランチ信号、目標信号、及び妥当性信号の現在
    の順序を特徴付ける一次状態を決定し、(b)前記ブラ
    ンチ信号に応じて、それぞれのブランチ命令が実行時に
    取られるか否かを予測し、目標アドレスが計算された後
    に該計算済み目標アドレスをどのように処置するべきか
    を示すマーカーをセットし、 (c)前記妥当性信号と現在の一次状態とに応じて、ブ
    ランチがまだ予測されていなければ該ブランチが取られ
    るべきか否かに応じて前記マーカーをセットし、又は、
    ブランチが誤って予測された場合には間違っている経路
    の前処理された命令の結果を放棄して正しい経路を取る
    ことによって該命令装置を巻き戻し、(d)前記目標信
    号に応じて、前記マーカーを指示する方法で該計算され
    た目標アドレスを処分するステップから成ることを特徴
    とする方法。
  31. (31)第1ブランチ命令は取られると予測され、そ目
    標アドレスから始まる命令は該第1ブランチ命令が実行
    される前に前処理され、前記命令は第2ブランチ命令を
    含んで前処理され、前記第2ブランチ命令は取られると
    予測され、その目標アドレスにある命令は該第1ブラン
    チ命令が実行される前に前処理されることを特徴とする
    請求項30に記載の方法。
  32. (32)該第2ブランチ命令についての目標アドレスが
    計算された後にその計算された目標アドレスをどの様に
    処置するべきかを示すマーカーの第2の組をセットする
    ステップを更に備えることを特徴とする請求項31に記
    載の方法。
  33. (33)次の一時状態が該マーカーの組の一方の現在の
    状態のみに依存することを特徴とする請求項32に記載
    の方法。
  34. (34)前記コンピューターは、ブランチ命令に関連す
    る予測情報と目標アドレスとを格納するキャッシュメモ
    リーを包含し、前記ブランチ信号の受信後に前記キャッ
    シュを読んで、前記キャッシュから読み出された関連予
    測情報に応じて前記マーカーをセットし、その後、該キ
    ャッシュメモリーからの該関連目標アドレスが妥当であ
    るか否かを判定し、この判定に応じて選択的に前記マー
    カーを変更するステップを更に備えることを特徴とする
    請求項30に記載の方法。
  35. (35)命令装置と実行装置とを有するパイプライン方
    式プロセッサーのためのブランチ予測方法であって、前
    記命令装置は、命令を解読して、前記命令の指定するオ
    ペランドを得る手段を包含し、前記実行装置は、前記命
    令を実行して、前記オペランドに対して指定された動作
    を行なってそれぞれの結果を得る手段を包含し、前記命
    令は、命令実行のシーケンスが分岐するべきか否かの決
    定が前記の結果に支配される条件付きブランチ命令を包
    含し、前記ブランチ予測方法は、 前記条件付きブランチ命令について分岐するか否かのそ
    れぞれの決定の結果を予測することと、 前記命令実行装置は、該条件付きブランチ命令に続く予
    測された命令のストリーム中の命令を解読することと、 前記実行装置は、前記予測手段による予測の妥当性を確
    認し、それぞれの結果が予測に反することが分った時、
    該条件付きブランチ命令に続く該予測された命令のスト
    リームの中の命令の解読から得られたオペランドを該プ
    ロセッサーから排除するために妥当性信号を生成するこ
    とと、 前記実行装置が現在の命令を実行している間に、該命令
    ストリーム中の次の命令を待って、前記次の命令が条件
    付きブランチ命令である場合には該命令についての妥当
    性信号を生成することとを含むことを特徴とする方法。
  36. (36)次の命令を待つ前記のステップは、前記の次の
    命令が条件付きブランチ命令であって、その実行により
    そのブランチ判定の基礎を成す結果が変更される場合に
    は、前記次の命令が現在の命令となって実行されるまで
    は前記次の命令についての妥当性信号の生成を送らせる
    ことを含むことを特徴とする請求項35に記載のブラン
    チ予測方法。
  37. (37)次の命令を待つ前記のステップは、前記の現在
    の命令の実行によって、前記次の命令についてのブラン
    チ判定の基礎を成す結果が変更されない場合に、前記現
    在の命令以前の該命令ストリーム中の命令の実行の結果
    から、前記次の命令についてのブランチ判定の基礎を成
    す結果を選択し、前記現在の命令の実行により前記結果
    が変更される場合には前記結果を現在の命令の実行の結
    果の中から選択することを含むことを特徴とする請求項
    35に記載の方法。
  38. (38)前記の次の命令について前記妥当性信号を生成
    する前記ステップは、前記命令装置により解読可能な色
    々な種類の条件付きブランチ命令のブランチ判定の基礎
    を成す一組の起こり得る結果を生成することと、該次の
    命令についてのブランチ判定の基礎を成す結果を前記の
    起こり得る結果の組から選択することとを含むことを特
    徴とする請求項35に記載の方法。
  39. (39)命令装置と実行装置とを有するパイプライン方
    式プロセッサーであって、前記命令装置は、命令を解読
    して、前記命令の指定するオペランドを得る手段を包含
    し、前記実行装置は、前記命令を実行して、前記オペラ
    ンドに対して指定された動作を行なってそれぞれの結果
    を得る手段を包含し、前記命令は、命令実行のシーケン
    スが分岐するべきか否かの決定が前記の結果に支配され
    るブランチ命令を包含し、前記命令装置は、前記ブラン
    チ命令についての分岐するべきか否かの判定の結果を予
    測して前記命令装置に該ブランチ命令後の予測された命
    令ストリーム中の命令の解読を行なわせるブランチ予測
    手段を包含しており、前記実行装置は、前記予測手段に
    よる予測の妥当性を確認して、結果が予測に反すると分
    かった場合に該条件付きブランチ命令後の予測された命
    令のストリーム中の命令の解読かれ得られたオペランド
    を該プロセッサーから排除するための妥当性信号を生成
    する手段を包含しており、前記ブランチ命令は前記命令
    ストリーム中のそれぞれの命令アドレスに位置し、前記
    ブランチ命令は複数の所定ブランチ命令コードのうちの
    それぞれの一つを包含し、前記ブランチ命令は、前記ブ
    ランチ命令が実行され且つ前記ブランチが取られる時に
    前記命令ストリームの実行が分岐して行く、それぞれに
    対応する目標アドレスを指定し、前記ブランチ予測手段
    は、 命令に関連するブランチが取られると予測されるべきか
    否かを示す、前記命令に関連する情報が予め格納されて
    あるキャッシュメモリーと、解読される現在のブランチ
    命令に関連する情報について前記キャッシュメモリーを
    探索する手段と、 該ブランチ命令に関連する情報が前記キャッシュメモリ
    ー内に見出されない時には該ブランチ命令のブランチ命
    令コードについて予め定められてあったブランチ・バイ
    アスに基づいて前記ブランチが取られるか否かを予測し
    、該ブランチ命令に関連する情報が前記キャッシュメモ
    リー内に見出された時には該ブランチ命令に関連するブ
    ランチが取られると予測されるべきであるか否かを示す
    前記ブランチ命令に関連する前記情報に従って前記ブラ
    ンチが取られる否かを予測する手段と、から成ることを
    特徴とするパイプライン方式プロセッサー。
  40. (40)前記ブランチ命令は、前記命令ストリーム内に
    おける前記ブランチ命令のそれぞれの位置からの前記対
    応目標アドレスの変位を指定し、前記キャッシュメモリ
    ーには、前記命令に関連するブランチの所定変位情報と
    目標アドレスとが予め格納されており、前記ブランチ予
    測手段は、更に、該ブランチ命令に関連する情報が該キ
    ャッシュメモリー内に見出される時には前記ブランチ命
    令により指定される変位を該キャッシュメモリー内の関
    連変位情報と比較する手段と、前記の比較によって、前
    記キャッシュメモリー内の関連目標アドレスが該ブラン
    チ命令の指定する目標アドレスと同じであることを示し
    た時に該キャッシュメモリー内の該ブランチ命令に関連
    する目標アドレスを該ブランチ命令の指定する目標アド
    レスとして選択する手段とを備えることを特徴とする請
    求項39に記載のパイプライン方式プロセッサー。
  41. (41)前記ブランチ命令についての前記目標アドレス
    は、該ブランチ命令のアドレスと、該ブランチ命令の長
    さと、該ブランチ命令内の変位指定子の値との和に等し
    く;該キャッシュメモリーに格納されている情報は命令
    アドレスに関連し;該キャッシュメモリーに格納されて
    いる変位情報は変位値と命令長さ値とを包含し;前記比
    較手段は、該関連変位値を該ブランチ命令内の前記変位
    指定子の値と比較すると共に該関連長さ値を前記ブラン
    チ命令の前記長さと比較して、該関連長さ値が前記ブラ
    ンチ命令の前記長さと同じで且つ該関連変位値が前記ブ
    ランチ命令内の前記変位指定子の値と同じである時には
    前記キャッシュメモリー内の該関連目標アドレスが該ブ
    ランチ命令の指定する目標アドレスと同じであることを
    示す手段を含むことを特徴とする請求項40に記載のパ
    イプライン方式プロセッサー。
  42. (42)前記ブランチ予測手段は、更に、少なくとも第
    1及び第2のブランチ命令についてのブランチ情報を待
    ち合わせさせて、前記第1ブランチ命令についての予測
    されたブランチ判定が前記実行装置により確認される間
    に前記第2ブランチ命令以後の予測された命令のストリ
    ームの中の命令を解読するために前記第2ブランチ命令
    についての該ブランチ判定を予測する手段を備えること
    を特徴とする請求項39に記載のパイプライン方式プロ
    セッサー。
  43. (43)前記待ち合わせ手段は、1個の無条件ブランチ
    命令と2個の条件付きブランチ命令とを含む3個のブラ
    ンチ命令についてのブランチ情報を待ち合わせさせるこ
    とを特徴とする請求項42に記載のパイプライン方式プ
    ロセッサー。
  44. (44)命令装置と実行装置とを有するパイプライン方
    式プロセッサーであって、前記命令装置は、命令を解読
    して、前記命令の指定するオペランドを得る手段を包含
    し、前記実行装置は、前記命令を実行して、前記オペラ
    ンドに対して指定された動作を行なってそれぞれの結果
    を得る手段を包含し、前記命令は、命令実行のシーケン
    スが分岐するべきか否かの決定が前記の結果に支配され
    る条件付きブランチ命令を包含し、前記命令装置は、前
    記条件付きブランチ命令についての分岐するべきか否か
    の判定の結果を予測して前記命令実行装置に該条件付き
    ブランチ命令後の予測された命令ストリーム中の命令の
    解読を行なわせるブランチ予測装置を包含しており、前
    記実行装置ま、前記予測手段による予測の妥当性を確認
    して、結果が予測に反すると分かった場合に該条件付き
    ブランチ命令後の予測された命令のストリーム中の命令
    の解読から得られたオペランドを該プロセッサーから排
    除するための妥当性信号を生成する手段を包含しており
    、 前記実行装置は、現在の命令の実行中に作動して該命令
    ストリーム中の次の命令を見て、前記次の命令が条件付
    きブランチ命令である場合に該次の命令について妥当性
    信号を生成する手段を包含することを特徴とするパイプ
    ライン方式プロセッサー。
  45. (45)前記現在の命令の実行中に作動する前記手段は
    、前記次の命令が条件付きブランチ命令であってそれ自
    体の実行が、そのブランチ判定の基礎を成す結果を変化
    させることとなる場合には前記次の命令が現在の命令と
    なって実行されるまで前記次の命令についての妥当性信
    号の生成を遅延させる手段を包含することを特徴とする
    請求項44に記載のパイプライン方式プロセッサー。
  46. (46)前記現在の命令の実行中に作動する前記手段は
    、前記現在の命令の実行が前記結果を変化させない場合
    に前記現在の命令以前の該命令ストリーム中の命令の実
    行の結果から、該次の命令についてのブランチ判定の基
    礎を成す結果を選択し、前記現在の命令の実行が前記結
    果を変化させる場合には該現在の命令の実行の結果から
    前記結果を選択する手段を備えることを特徴とする請求
    項44に記載のパイプライン方式プロセッサー。
  47. (47)前記現在の命令の実行中に作動する前記手段は
    、前記命令装置により解読される色々な種類の条件付き
    ブランチ命令のブランチ判定の基礎を成す一組の起こり
    得る結果を生成する手段と、次の命令についてのブラン
    チ判定の基礎を成す結果を前記の起こり得る結果の組か
    ら選択する手段とを備えることを特徴とする請求項44
    に記載のパイプライン方式プロセッサー。
JP1290973A 1989-02-03 1989-11-08 ブランチ予測 Pending JPH02260033A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US306760 1989-02-03
US07/306,760 US5142634A (en) 1989-02-03 1989-02-03 Branch prediction

Publications (1)

Publication Number Publication Date
JPH02260033A true JPH02260033A (ja) 1990-10-22

Family

ID=23186714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1290973A Pending JPH02260033A (ja) 1989-02-03 1989-11-08 ブランチ予測

Country Status (6)

Country Link
US (1) US5142634A (ja)
EP (1) EP0381444B1 (ja)
JP (1) JPH02260033A (ja)
AT (1) ATE186132T1 (ja)
AU (1) AU631419B2 (ja)
DE (1) DE69033331T2 (ja)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
JP2682217B2 (ja) * 1989-08-28 1997-11-26 日本電気株式会社 マイクロプロセッサ
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
EP0463973A3 (en) * 1990-06-29 1993-12-01 Digital Equipment Corp Branch prediction in high performance processor
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JP2504312B2 (ja) * 1990-08-29 1996-06-05 三菱電機株式会社 プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
US5276825A (en) * 1991-03-12 1994-01-04 Chips & Technologies, Inc. Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5301295A (en) * 1991-05-22 1994-04-05 Analog Devices, Inc. Data processor apparatus and method with selective caching of instructions
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5649097A (en) * 1991-10-25 1997-07-15 International Business Machines Corporation Synchronizing a prediction RAM
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
WO1993018459A1 (en) * 1992-03-06 1993-09-16 Rambus Inc. Prefetching into a cache to minimize main memory access time and cache size in a computer system
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
DE69327927T2 (de) 1992-08-31 2000-10-12 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
US5442766A (en) * 1992-10-09 1995-08-15 International Business Machines Corporation Method and system for distributed instruction address translation in a multiscalar data processing system
JP3254019B2 (ja) * 1992-11-30 2002-02-04 富士通株式会社 データ先読み制御装置
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US5737561A (en) * 1993-01-22 1998-04-07 Intel Corporation Method and apparatus for executing an instruction with multiple brancing options in one cycle
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
US5825921A (en) * 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
BR9406606A (pt) * 1993-05-14 1996-01-02 Intel Corp Mecanismo para história especulativa em um buffer objeto de ramificação
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5463748A (en) * 1993-06-30 1995-10-31 Intel Corporation Instruction buffer for aligning instruction sets using boundary detection
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
US5918046A (en) * 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5592634A (en) * 1994-05-16 1997-01-07 Motorola Inc. Zero-cycle multi-state branch cache prediction data processing system and method thereof
US5777614A (en) * 1994-10-14 1998-07-07 Hitachi, Ltd. Editing support system including an interactive interface
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5574937A (en) * 1995-01-30 1996-11-12 Intel Corporation Method and apparatus for improving instruction tracing operations in a computer system
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
US5680598A (en) * 1995-03-31 1997-10-21 International Business Machines Corporation Millicode extended memory addressing using operand access control register to control extended address concatenation
US6185674B1 (en) * 1995-04-05 2001-02-06 International Business Machines Corporation Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5848433A (en) * 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5754825A (en) * 1995-05-19 1998-05-19 Compaq Computer Corporation Lower address line prediction and substitution
US6237074B1 (en) * 1995-05-26 2001-05-22 National Semiconductor Corp. Tagged prefetch and instruction decoder for variable length instruction set and method of operation
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5819079A (en) * 1995-09-11 1998-10-06 Intel Corporation Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch
GB9521978D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Computer instruction supply
US5898877A (en) * 1996-02-29 1999-04-27 Sanyo Electric Co., Ltd. Processor using special instruction set to enhance exception handling
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5805876A (en) * 1996-09-30 1998-09-08 International Business Machines Corporation Method and system for reducing average branch resolution time and effective misprediction penalty in a processor
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6631454B1 (en) 1996-11-13 2003-10-07 Intel Corporation Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6219784B1 (en) 1997-11-17 2001-04-17 Advanced Micro Devices, Inc. Processor with N adders for parallel target addresses calculation
US6256728B1 (en) 1997-11-17 2001-07-03 Advanced Micro Devices, Inc. Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction
US6047351A (en) * 1997-12-12 2000-04-04 Scenix Semiconductor, Inc. Jitter free instruction execution
US6240509B1 (en) 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6463522B1 (en) 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6772324B2 (en) 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6151672A (en) 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6150724A (en) * 1998-03-02 2000-11-21 Motorola, Inc. Multi-chip semiconductor device and method for making the device by using multiple flip chip interfaces
US6223280B1 (en) * 1998-07-16 2001-04-24 Advanced Micro Devices, Inc. Method and circuit for preloading prediction circuits in microprocessors
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6223338B1 (en) 1998-09-30 2001-04-24 International Business Machines Corporation Method and system for software instruction level tracing in a data processing system
US6289442B1 (en) 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US6332191B1 (en) 1999-01-19 2001-12-18 Advanced Micro Devices, Inc. System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
US6308322B1 (en) 1999-04-06 2001-10-23 Hewlett-Packard Company Method and apparatus for reduction of indirect branch instruction overhead through use of target address hints
US6842457B1 (en) * 1999-05-21 2005-01-11 Broadcom Corporation Flexible DMA descriptor support
US6385719B1 (en) * 1999-06-30 2002-05-07 International Business Machines Corporation Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US6408381B1 (en) * 1999-10-01 2002-06-18 Hitachi, Ltd. Mechanism for fast access to control space in a pipeline processor
US6633974B1 (en) 1999-11-04 2003-10-14 International Business Machines Corporation Apparatus and method for controlling link stack corruption during speculative instruction branching using multiple stacks
US6526503B1 (en) 1999-11-04 2003-02-25 International Business Machines Corporation Apparatus and method for accessing a memory device during speculative instruction branching
US6976157B1 (en) 1999-11-04 2005-12-13 International Business Machines Corporation Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables
US6421774B1 (en) * 1999-11-05 2002-07-16 Ip First L.L.C. Static branch predictor using opcode of instruction preceding conditional branch
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US6823446B1 (en) 2000-04-13 2004-11-23 International Business Machines Corporation Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables
US6910124B1 (en) 2000-05-02 2005-06-21 International Business Machines Corporation Apparatus and method for recovering a link stack from mis-speculation
US7000096B1 (en) 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US6745323B1 (en) 2000-08-03 2004-06-01 International Business Machines Corporation Global history vector recovery circuits and methods and systems using the same
US7051193B2 (en) * 2001-03-28 2006-05-23 Intel Corporation Register rotation prediction and precomputation
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6687794B2 (en) * 2001-10-18 2004-02-03 International Business Machines Corporation Prefetching mechanism for data caches
US6948053B2 (en) * 2002-02-25 2005-09-20 International Business Machines Corporation Efficiently calculating a branch target address
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
JP3851235B2 (ja) * 2002-06-28 2006-11-29 富士通株式会社 分岐予測装置および分岐予測方法
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7392370B2 (en) 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7293164B2 (en) * 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7487334B2 (en) * 2005-02-03 2009-02-03 International Business Machines Corporation Branch encoding before instruction cache write
US7461243B2 (en) * 2005-12-22 2008-12-02 Sun Microsystems, Inc. Deferred branch history update scheme
US20080005619A1 (en) * 2006-06-29 2008-01-03 Tamarah Arons Validation of software execution paths
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
JP2008158806A (ja) * 2006-12-22 2008-07-10 Matsushita Electric Ind Co Ltd 複数プロセッサエレメントを備えるプロセッサ用プログラム及びそのプログラムの生成方法及び生成装置
US20120311308A1 (en) * 2011-06-01 2012-12-06 Polychronis Xekalakis Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches
CN103984525B (zh) * 2013-02-08 2017-10-20 上海芯豪微电子有限公司 指令处理系统及方法
US9438412B2 (en) * 2014-12-23 2016-09-06 Palo Alto Research Center Incorporated Computer-implemented system and method for multi-party data function computing using discriminative dimensionality-reducing mappings
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
US9654483B1 (en) * 2014-12-23 2017-05-16 Amazon Technologies, Inc. Network communication rate limiter
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
CN112905242B (zh) * 2021-03-23 2022-12-06 浙江大华技术股份有限公司 分支路径跳转方法、装置、存储介质及电子装置
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions
US12067399B2 (en) 2022-02-01 2024-08-20 Apple Inc. Conditional instructions prediction
CN117891513A (zh) * 2023-12-29 2024-04-16 北京微核芯科技有限公司 基于微指令高速缓存的分支指令的执行方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6393042A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp デ−タ処理装置
JPS63221427A (ja) * 1987-03-11 1988-09-14 Nec Corp 分岐予測を行う情報処理装置
JPS6418841A (en) * 1987-07-14 1989-01-23 Nec Corp Information processor for prefetching instruction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4332010A (en) * 1980-03-17 1982-05-25 International Business Machines Corporation Cache synonym detection and handling mechanism
US4500958A (en) * 1982-04-21 1985-02-19 Digital Equipment Corporation Memory controller with data rotation arrangement
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4860199A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Hashing indexer for branch cache
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6393042A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp デ−タ処理装置
JPS63221427A (ja) * 1987-03-11 1988-09-14 Nec Corp 分岐予測を行う情報処理装置
JPS6418841A (en) * 1987-07-14 1989-01-23 Nec Corp Information processor for prefetching instruction

Also Published As

Publication number Publication date
ATE186132T1 (de) 1999-11-15
EP0381444B1 (en) 1999-10-27
DE69033331T2 (de) 2000-04-13
DE69033331D1 (de) 1999-12-02
US5142634A (en) 1992-08-25
EP0381444A3 (en) 1992-08-26
EP0381444A2 (en) 1990-08-08
AU5393790A (en) 1991-12-19
AU631419B2 (en) 1992-11-26

Similar Documents

Publication Publication Date Title
JPH02260033A (ja) ブランチ予測
US5125083A (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US5805877A (en) Data processor with branch target address cache and method of operation
US7159103B2 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US4760519A (en) Data processing apparatus and method employing collision detection and prediction
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US7877580B2 (en) Branch lookahead prefetch for microprocessors
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US5377336A (en) Improved method to prefetch load instruction data
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5606676A (en) Branch prediction and resolution apparatus for a superscalar computer processor
JP2810211B2 (ja) データプロセッサの命令処理システム
US5349651A (en) System for translation of virtual to physical addresses by operating memory management processor for calculating location of physical address in memory concurrently with cache comparing virtual addresses for translation
US5420990A (en) Mechanism for enforcing the correct order of instruction execution
US20110320787A1 (en) Indirect Branch Hint
JPH03116235A (ja) 分岐処理方法及び分岐処理装置
JPH02234248A (ja) 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法
KR20010050791A (ko) 분기 명령과 연관된 컴퓨팅 시스템 레이턴시를 감소시키기위한 시스템 및 방법
JPH0429093B2 (ja)
US20060179265A1 (en) Systems and methods for executing x-form instructions
US6742112B1 (en) Lookahead register value tracking
JPH07120284B2 (ja) データ処理装置
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching