JPH0785223B2 - デジタル・コンピュータ及び分岐命令実行方法 - Google Patents

デジタル・コンピュータ及び分岐命令実行方法

Info

Publication number
JPH0785223B2
JPH0785223B2 JP4092541A JP9254192A JPH0785223B2 JP H0785223 B2 JPH0785223 B2 JP H0785223B2 JP 4092541 A JP4092541 A JP 4092541A JP 9254192 A JP9254192 A JP 9254192A JP H0785223 B2 JPH0785223 B2 JP H0785223B2
Authority
JP
Japan
Prior art keywords
instruction
branch
execution
signal
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP4092541A
Other languages
English (en)
Other versions
JPH05143336A (ja
Inventor
バーソロミュー・ブランナー
トーマス・レオ・ジェレマイア
スタマティム・ヴァシリアディス
フィリップ・ジーン・ウィリアムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05143336A publication Critical patent/JPH05143336A/ja
Publication of JPH0785223B2 publication Critical patent/JPH0785223B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデジタル・コンピュータ
のオペレーションに関し、特にパイプライン方式の命令
処理を使用するデジタル・コンピュータにおける分岐命
令処理に関する。
【0002】
【従来の技術】分岐命令はパイプライン方式の命令処理
のスピード及び効率を減じる。この有害な影響は、単一
命令ストリームにつき多重パイプライン処理を行うプロ
セッサの性能に、非常に大きな影響を及ぼす。こうした
プロセッサはいわゆる“スケーラブル複合命令セットマ
シン”(SCISM)を含む。SCISMアーキテクチ
ャを有するマシンは米国特許出願第519382号にお
いて詳細に説明されている。
【0003】従来、分岐予測案が分岐命令の実行による
性能劣化を緩和するために提案されてきた。こうしたも
のの中において、2つの案が注目に値する。第1は、命
令キャッシュ内の分岐命令にその結果に関する予測情報
をタグ付けすることにより、分岐結果のダイナミックな
予測をする。例えば、1981年3月の第8回コンピュ
ータ・アーキテクチャ・シンポジウム会報におけるJ.E.
Smithによる“A Studyof Branch PredictionStrategie
s”が参考になる。命令ストリームに予備情報分の容量
を提供するSCISMアーキテクチャは、特にこの案に
適合する。この点に関し、“複合(Compounding) ビッ
ト”或いは“Cビット”と称されるビットが、SCIS
M命令ストリームの各ハーフワードごとに提供される。
これらのビットの1つが、後続の命令と並列に(複合的
に)実行される命令に続くときは、第1の命令の第1の
ハーフワード内のCビットがセットされる。命令が2分
の1ワードよりも長い場合は、複合は余分のハーフワー
ドに対し未使用ビットを提供する。複合案において未使
用の1つ或いは複数のCビットは、交互に使用可能であ
る。分岐命令にとって、こうした1つの利用は分岐命令
の結果の予測である。
【0004】第2の分岐予測戦略は、実行される分岐命
令の結果の履歴を含む分岐目的バッファ(BTB)を使
用する方法である。分岐命令が最初に実行されると、そ
の結果はBTB内に記憶される。2度目に分岐命令が実
行されると、その予測結果はBTB内に記憶される結果
となる。このようなメカニズムは1984年1月発行の
IEEE COMPUTERにおけるJ.K.F.LEE等による“分岐目的バ
ッファ設計における分岐予測戦略”(Branch Predictio
n Strategies in Branch Target BufferDesign)で詳細
に述べられている。
【0005】ダイナミック予測及び分岐目的バッファ・
メカニズムの両者とも、分岐命令を含む命令ストリーム
を実行するパイプラインをスピードアップするが、各々
に含まれる技術は、SCISMアーキテクチャにおける
アプリケーションに実際には適合されなかった。更に、
多重パイプライン・アーキテクチャにおいて使用される
並列性の利点が、分岐命令の処理において未だ実現され
ていない。
【0006】
【発明が解決しようとする課題】本発明は発明者の臨界
的所見に基づくものであり、実行ユニット・オペレーシ
ョンを必要としない分岐命令が実行命令ストリームから
抽出され、実行ストリームの実行と同期して分岐条件の
テストために保持される。。
【0007】従って、本発明の重要な目的は、多重実行
パイプラインを有するデジタル・コンピュータの並列性
を増進することである。
【0008】
【課題を解決するための手段】この目的及び他の重要な
目的及び利点が、命令ソース、命令ストリームを実行す
るための実行パイプライン、及び条件コード決定メカニ
ズムを含むデジタル・コンピュータにおいて達成され
る。この条件コード決定メカニズムは命令パイプライン
に接続され、実行命令の結果を示す条件信号を提供す
る。本詳細説明において、本発明は分岐命令条件を処理
するための組合わせであり、以下に示す組み合わせを含
む。すなわち、命令ソース、及びパイプライン式実行の
ための命令シーケンスを提供する実行パイプラインに結
合される命令発行メカニズムと、分岐条件プロセッサと
の組合わせであり、後者は命令シーケンスから分岐命令
を除去し、また条件指示信号に応答して、実行パイプラ
インによる命令の実行と実質的に並列に、除去した分岐
命令を実行する。
【0009】
【実施例】図1は、マイクロプログラミングを使用し、
マシン・レベルの命令の実行を単独或いは対で実施及び
制御するSCISMアーキテクチャを示す。特に、マシ
ン・レベル命令ストリームは複合プリプロセッサ10に
提供される。命令ストリームは、典型的にはソース・プ
ログラムからコンパイルされた個々の命令のシーケンス
である。このストリームはSCISMコンピュータのC
PUに提供されて実行される。従来、マシン・レベル命
令はキャッシュ(複合命令キャッシュ)12を通じてC
PUにステージされる。キャッシュへの入力以前に、命
令ストリームは複合プリプロセッサ10により検査さ
れ、隣接する命令が同時に実行可能かどうかが決定され
る。複合プリプロセッサ10は、米国特許出願第522
291号で詳細に述べられており、またこの出願におい
ては、図1のキャッシュ12として機能する複合命令キ
ャッシュ構造についても説明されている。
【0010】複合プリプロセッサ10のオペレーション
は複合情報を生成し、この情報は12でキャッシュされ
るコンパイル済み命令ストリームの近傍の命令が、同時
に実行可能かを示す。こうして、各命令に対し、複合プ
リプロセッサ10は、命令及び近傍の命令が並列に実行
可能かを示す複合情報を生成する。
【0011】複合プリプロセッサ10による処理に続
き、分析された命令及び複合情報は複合命令キャッシュ
12に記憶される。複合情報を記憶するための余分の空
間の用意は別として、キャッシュ12は従来通りにオペ
レートされる。特に、キャッシュ12の入力は、典型的
には、このキャッシュへ入力される隣接する命令(“ラ
イン”)のグループであり、これらは実行プログラムに
より要求されると迅速に獲得される。
【0012】キャッシュ12に命令と共に複合情報を提
供する際に、SCISMアーキテクチャは、コンピュー
タよりもより完全な並列処理の利点を達成する。コンピ
ュータは、命令が即刻に実行されるためにキャッシュか
ら読み出される(“issued”)時点で、並列実行の決定
を行う。これに関連して、キャッシュ12内の命令は、
例えばループ或いは分岐などにおいて複数回使用され
る。命令がキャッシュ内に存在する限りは、再度実行の
ために獲得されても、もはや再分析される必要はない。
なぜなら、キャッシュ内に命令と共に記憶されるこの命
令のための複合情報が再使用可能だからである。
【0013】複合プリプロセッサ10は参照される特許
出願の中で述べられるタイプであるものと仮定し、各命
令に対し、少なくともCビットを生成する。これらのC
ビットは、どの対の命令が並列に処理されるかを識別す
るために使用される。命令及びCビットは複合命令キャ
ッシュ12に供給され記憶される。命令フェッチ及び発
行ユニット14は、必要な際に命令及びCビットを複合
命令キャッシュ12からフェッチし、複数の実行ユニッ
ト34、36の中の適切な1つ或いは複数により、これ
らが実行されるように配置する。
【0014】キャッシュ12からフェッチされる情報
は、命令テキスト及び関連する複合情報を含む。各フェ
ッチは参照番号13aで示されるカッドワード(quadwo
rd)形式(すなわち4ワード・ライン)を取り、0、
1、‥‥7と番号付けされた8個のハーフワードを含
む。命令テキストの各カッドワードに関連して、複合プ
リプロセッサ10により生成される複合情報を構成する
1x8配列のCビットがある。このビットは“Cベクト
ル”として参照される。
【0015】図2は複合プリプロセッサ10のオペレー
ション結果を更に詳しく示す。図1の構成がIBM社の
System/370タイプのデジタル・コンピュータ
に含まれるものと仮定すると、命令ストリームは1ハー
フワードから3ハーフワードの範囲で変化可能な命令を
含むことができる。オペレーションの効率化のために、
プロセッサ10はキャッシュ内に記憶される各ハーフワ
ードに対し、Cビットを生成する。命令の第1のハーフ
ワードに対するCビットは、続く命令がこの命令と並列
に実行されるかを示すように規定される。命令の第1の
ハーフワードに関連してCビットがセットされると、こ
れはこの命令が続く命令と“複合”されたことを示し、
これらの2つの命令が並列に実行されることを示す。セ
ットされない場合は、これらの命令は単独に実行され
る。
【0016】命令及び関連する複合情報は、命令フェッ
チ及び発行ユニット14によりキャッシュ12からフェ
ッチされる。ユニット14は分岐処理ユニット15を含
む。命令フェッチのための制御情報が信号FETCHの
形式で与えられ、これにより命令テキストのカッドワー
ドがキャッシュ12から獲得されて、命令フェッチ及び
発行ユニット14に提供されるべきことを示すように規
定される。この信号がフェッチを指示するように規定さ
れると、次の命令のフェッチ・アドレスがこれに伴い、
これはその命令の実行のために命令フェッチ及び発行ユ
ニット14により処理される。この点に関し、このフェ
ッチ・アドレスは、フェッチ及び発行ユニット14内の
命令に続く、命令シーケンス部分における次の命令のア
ドレスである。フェッチ・アドレスはまた、実行される
分岐命令により指示される命令シーケンスにおけるアド
レスも取得する。何れの場合も、FETCH信号及びフ
ェッチ・アドレスがキャッシュ管理メカニズム16に提
供される。キャッシュ管理メカニズム16は、命令がキ
ャッシュ内に存在する場合はフェッチ・アドレスをキャ
ッシュ・アドレスにマップし、また命令がキャッシュ内
に存在しない場合は、このアドレスをミス指示と共に実
メモリ管理メカニズムに提供する。
【0017】以降の説明では、SCISMアーキテクチ
ャは、マシン・レベル命令のシーケンスにおいて、プリ
プロセッサ10及びキャッシュ12を経由し、命令フェ
ッチ及び発行ユニット14を通じて提供される対の命令
の同時実行を支援する。これに関連して、左右の部分を
含む複合命令レジスタが発行された命令を受け取り、こ
れらを単独或いは並列実行のために配置する。次に実行
される予定の命令は、命令フェッチ及び発行ユニット1
4により左側の複合命令レジスタ(CIRL)20に入
力され、このレジスタはレジスタ部分22をCビット、
すなわち命令の複合を示すビットの記憶のために含む。
Cビットにより、CIRL20内の命令が直後に続く命
令と共に実行されるように規定されると、その命令がフ
ェッチ及び発行ユニットにより右側の複合命令レジスタ
(CIRR)21に配置される。一方、Cビットが、C
IRL20内の命令が続く命令と複合されないことを示
す場合は、CIRR21の内容は無視される。
【0018】マイクロコード生成器24は複合命令レジ
スタの内容をマイクロコードに変換し、このマイクロコ
ードはアドレス生成命令レジスタ(AIR)25、実行
命令レジスタ(EIR)26、及びプット・アウェイ
(put-away)命令レジスタ(PIR)27で構成される
実行パイプラインを通じてステージされる。命令フェッ
チ及び発行ユニット14、複合命令レジスタ20及び2
1、マイクロコード生成器24、及び低パイプライン・
ステージ25−27は、パイプライン・クロック発生器
28により提供されるパイプライン・クロックにより同
期される命令実行パイプラインを形成する。
【0019】マシン・レベル命令を実行するためのSC
ISMアーキテクチャにおいて使用されるオペレーショ
ン・シーケンスは、5つのパイプライン・ステージに分
割され、パイプライン・クロックの各サイクルにおいて
パイプラインに後続の命令を供給する。第1のステージ
は命令のフェッチ(IF)であり、命令がキャッシュ1
2から、或いはフェッチ及び発行ユニット14に在中す
る命令バッファからフェッチされるときに発生する。I
Fサイクルの終わりでは、命令が複合命令レジスタにロ
ードされる準備が整い、ここで命令は命令実行を開始す
るためにデコードされる。命令のCビットが次に続く命
令が現命令と並列に実行されるべきことを示す場合は、
両者の命令はIFサイクルの終了時に使用可能となり、
第1の命令及びCビットはCIRL20にロードされ、
また続く命令はCIRR21にロードされる。命令デコ
ード(ID)サイクルは、それぞれCIRL20及びC
IRR21を論理デコードすることにより制御される。
パイプラインの続くステージを制御するために必要な第
1のマイクロワードの生成は、このサイクルにおいて発
生し、これは命令オペコードをマイクロワード・アドレ
スとして使用し、マイクロワード生成器24に含まれる
制御記憶をアクセスすることにより行われる。アドレス
生成(AG)サイクルは、記憶装置から要求されるオペ
ランドの有効アドレスを計算するために使用される。実
行(EX)サイクルは、1つ或いはそれ以上のユニット
においてオペレーションを実行するために使用される。
プット・アウェイ(PA)サイクルは、EXサイクルか
らの結果を汎用目的レジスタ(GPR)37に記憶する
ために使用される。
【0020】米国特許出願第653006号では、マイ
クロコード生成器24が主制御記憶装置(MCS)及び
第2制御記憶装置(SCS)により構成され、組合わせ
マイクロ命令を形成することを教示している。IDサイ
クル中に、CIRL20の内容がMCSをアドレスする
ために使用される。レジスタ・フィールド22内のCビ
ットが、CIRR21がCIRL20内に含まれる命令
と複合される命令を含むことを示す場合は、CIRR内
の命令のオペコードがCビットによりゲートされ、SC
Sをアドレスする。マイクロコード生成器24によるマ
イクロ命令出力は、2命令の実行を並列に制御するため
に必要な全てのフィールドを含む。マイクロ命令のフィ
ールドのいくつかは第1の命令の実行用に確保され、他
のいくつかのフィールドは第2の命令の実行用に確保さ
れる。単一の命令がマイクロコード生成器24に提供さ
れる場合は、この命令はCIRL20に存在し、マイク
ロ命令シーケンスが生成され、ここでは第2の命令の実
行用フィールドはデフォルト値にセットされる。一方、
第1の命令用のフィールドはこの命令を実行するために
適切にセットされる。命令がCIRL20及びCIRR
21に含まれる場合は、SCSの出力はMCSの出力と
組合わされる。これはSCSからの情報出力を第2フィ
ールドに入力することにより行われる。
【0021】マイクロコード生成器24によるマイクロ
命令シーケンス出力は、最終である3つのパイプライン
・ステージ25−27に供給される。パイプラインにお
いては、従来の水平マイクロコード実行がパイプライン
の各ステージにおける制御信号の生成により保証され
る。これは実行ユニット34、或いは実行ユニット34
及び36をオペレートして、オペランドを有する従来の
命令を実行する。その結果は実行ユニット及びGPR3
7の間で転送される。更に、マイクロ命令シーケンスの
終了を示すEND OPビットを含むパイプライン・シ
ーケンス制御信号が命令フェッチ及び発行ユニットに戻
され、複合命令レジスタに供給される命令のシーケンス
を維持する。
【0022】本発明のオペレーションにおいては、2つ
の追加の制御信号(“token” とも称される)、BC及
びBRが以下で述べるオペレーションの制御のために、
実行パイプライン25−27から分岐プロセッサ15に
戻される。
【0023】命令実行の結果は、単一の命令が実行され
る場合は実行ユニット34から、また命令対の場合は実
行ユニット34及び36から分岐条件生成器39に提供
される。分岐条件生成器は従来通りにオペレートして、
分岐命令の実行の結果生じる条件コード(CC)及び他
の分岐条件を生成する。これらの条件信号は分岐条件生
成器39からパス41を介して分岐プロセッサ15に転
送され、以降で述べるように使用される。
【0024】分岐命令の影響 パイプライン式命令処理の技術は広範に知られており、
コンピュータ設計に取り入れられることにより、パイプ
ライン方式に通づる条件が適合し且つ支援される場合
は、種々の性能の向上を達成する。この利点は図1に示
すSCISMアーキテクチャにおいて、2つの命令が並
列に実行されるべき場合に、対のパイプラインをオペレ
ートするパイプライン構造が提供されることにより調合
される。しかしながら、不運にも、プログラムの動作の
特徴は、パイプライン処理のための条件が一致しないこ
とが時折あり、パイプライン方式が使用された際の実際
に得られるスピードアップを低下させる。
【0025】主な抑制的な特徴としては、プログラム中
に見い出される分岐命令の比較的高い頻度が挙げられ
る。任意のプログラムにおいて実行される全ての命令の
最大25%或いはそれ以上の命令は、分岐命令で構成さ
れる。分岐命令は未使用サイクルをパイプラインに導入
することによりパイプライン・オペレーションを中断す
る。これは以前の或いは同時発生の実行結果に基づき、
新たな(目的)命令ストリームをフェッチするか、或い
は現命令ストリームを順次継続するかを決定する際に発
生する。決定を行い適切なストリームをフェッチする際
の遅延は、更に未使用なサイクルを導入し、パイプライ
ンにより達成される性能を更に低下させる。
【0026】分岐命令の性能低下の影響は、図1に示さ
れるSCISMアーキテクチャにおいては更に著しいも
のとなる。単一命令ストリームからの多重命令の並列的
実行は、実行マシンにとって、分岐命令による反作用を
特に受け易いものとする。なぜなら、分岐命令は多重パ
イプラインを遅くさせるだけでなく、SCISMアーキ
テクチャは分岐間において、どの瞬間においてもより高
い割合で命令を浪費するので、パイプラインに入力され
る分岐命令の可能性は他の場合よりも大きなものとな
る。
【0027】更に詳しくは、パイプライン内における分
岐命令の存在は、分岐命令に続く命令のアドレスを不確
実なものとする。理想的には、命令が連続的なシーケン
スで実行されることが好適であり、この場合は次の命令
のアドレスは、現命令のアドレスにその命令長を加算す
ることにより単純に求まる。これは“順次アドレッシン
グ”と称される。分岐命令に続く次の命令のアドレス
は、“順次アドレッシング”と称される可能性がある一
方、分岐命令の実行によりプログラム実行が“非順次命
令アドレス”に移行する可能性もある。分岐命令の後に
順次アドレス或いは分岐目的アドレスのどちらが続くか
に関しては、テスト結果に依存する。これは分岐命令に
おいては明白ではない。テスト条件が一致すると、命令
ストリームは分岐目的命令に分岐する。分岐条件が一致
しない場合は、分岐命令に続く次のアドレスは順次アド
レスとなる。
【0028】パイプライン式命令実行においては、分岐
テストに固有の不確実性に関し、分岐テストが完了する
まで、何れの命令の発行も阻止することに直面し、この
テストにおいて初めて正確なアドレスが決定され、対応
する命令がフェッチされる。しかし、これにより各分岐
命令に続き、パイプラインにおける遅延が生ずる。しか
し一方では、分岐結果を予測することが可能であり、分
岐命令の直後に予測される命令をフェッチしパイプライ
ン内に配置することが可能である。
【0029】分岐命令の予測結果が分岐が発生しないこ
とを示す場合は、単に分岐命令のアドレスをその長さ相
当分だけ加算し、次に続く命令を発行することにより、
命令フェッチが通常に行われる。命令フェッチ及び発行
ユニット内に命令バッファを設け、更新されたアドレス
によりこのバッファの順次内容を有効化する。このバッ
ファにはストリーム内における分岐命令に続く命令シー
ケンスが含まれる。一方、分岐目的アドレスが結果とし
て予測される場合は、バッファはクリアされ、予測され
る分岐目的アドレスより始まる命令シーケンスがキャッ
シュより“プリフェッチ”され、命令フェッチ及び発行
ユニットの命令バッファ内に配置されねばならない。
【0030】分岐命令の実行の後、分岐テスト結果によ
り不正な予測が行われたことが示される場合は、命令バ
ッファの内容はクリアされ、正当な命令シーケンスの
“再フェッチ”がバッファに取り込まれねばならない。
【0031】上述の背景で述べたビット予測及び分岐目
的バッファ・メカニズムは、ダイナミックに分岐命令の
結果を予測するための2つの主要メカニズムである。
【0032】第1のメカニズムでは、いずれの分岐命令
も、キャッシュ内において、命令の結果を予測するため
に使用される1つ或いはそれ以上のビットに伴われる。
この点に関し、この情報は分岐命令の最終結果を示すよ
うに規定される。
【0033】第2のメカニズムでは、表(“分岐目的バ
ッファ”)が命令キャッシュとは別に維持される。命令
キャッシュ内には最近実行された分岐命令の履歴が維持
される。好適には、キャッシュ内の分岐命令のアドレス
は分岐目的バッファをアドレスするために使用される。
分岐目的バッファは各キャッシュされる分岐命令に対
し、その最後の結果の記録及び分岐目的アドレスを有す
る。実行されてはいないがキャッシュされる分岐に対し
ては、それが最初に命令の発行によりキャッシュから取
り込まれる時点で、同一或いは類似のプログラムにおけ
る分岐命令の統計的プロファイルに基づき、所定の結果
がその命令に対して獲得される。これらのメカニズム及
びそれを実行するための方法等は、前に参照したSmith
及びLee等による文献で詳細に説明されている。
【0034】命令が1つ或いはそれ以上の未使用複合ビ
ットを含むSCISMアーキテクチャにおいて、この未
使用ビットは分岐命令の結果を予測するために有利に使
用される可能性がある。こうして、2つ或いはそれ以上
のハーフワードを含む分岐命令にとって、複合プリプロ
セッサにより生成される余分のビット(単数または複
数)は命令及びキャッシュと共に記憶され、命令の結果
を予測するために使用される。好適には、命令が複合さ
れるかどうかを決定するために複合プリプロセッサによ
り実行される規則は、単一ハーフワードの分岐命令を複
合せず、それによりサービス用の単一のCビットを分岐
結果の予測において解放する。
【0035】図3の表は、System/370デジタル・コンピ
ュータ製品の拡張システム・アーキテクチャ(ESA)
バージョン用の分岐命令リストである。これらの命令、
フォーマット、機能、及びテストは全て、C.J.Kacmarに
よるIBM 370 ASSEMBLYLANGUAGE WITH ASSIST、Prentis
Hall、1988 の特に第6章などを参照することにより理
解される。また、図3の表は代表的な命令トレースに関
する、全ての命令に関するSystem/370分岐命令の頻度、
分岐命令だけに関する頻度、実施される分岐及び未実施
の分岐の頻度、及びハーフワード内の長さを示す。例え
ば、BC命令は代表的トレース命令の17.23%を構
成し、トレースにおける全ての分岐命令の68.6%を
構成する。
【0036】分岐命令発行処理 本発明は、命令を単独に或いは並列に実行するための多
重並列パイプラインを含むコンピュータの中央処理装置
(CPU)における分岐命令の処理に関する。発明者は
こうしたCPUの並列性は、パイプラインから次に示す
分岐命令を除去することにより拡張できるという重要な
見解を示すものである。すなわち、この分岐命令は実行
ユニット・オペレーションを要求しないが、前の命令の
実行により作成されるテスト条件だけを要求するもので
ある。これらの命令に対する条件テストは、他の命令の
実行に正確に同期して達成される。これは実行パイプラ
インにおけるCPUの指示信号を拡張して行われる。全
ての他の分岐命令はパイプラインに入力され、そこでこ
れらのロケーションは同様の指示信号によりトラックさ
れる。多重パイプラインの提供により、複数の分岐命令
の条件を、同じパイプライン・サイクル内でテストでき
る可能性が生じる。これにより、多重パイプライン・ア
ーキテクチャに固有の並列性を拡張することが可能とな
り、並列命令実行を支援する。
【0037】本発明は図1の環境において表される命令
フェッチ及び発行ユニットの分岐処理ユニット15で実
施される。これは図4で実行パイプライン部分と共に更
に詳細に表される。レジスタ、ポインタ、及びステート
・マシンを含む、これらユニットの全ての記憶要素は、
パイプライン・クロックに応じてその出力を変化する。
【0038】図4では、命令フェッチ及び発行ユニット
14はパイプライン式実行回路に対し、処理すべき命令
ストリームを提供する。ストリームの中断は、分岐命令
の結果の予測、及び予測されるストリームの命令バッフ
ァ(IB)へのプリフェッチにより減少される。プリフ
ェッチされた命令は、分岐命令の真の結果が決定される
まで、実行のために実行パイプラインに供給される。こ
の点に関し、分岐方向が誤って予測された場合は、プリ
フェッチされたストリームの実行はキャンセルできる。
予測ミス或いは不正な分岐目的アドレスの場合は、正し
い命令が実行パイプラインのデコード・ステージにフェ
ッチされ、続く命令がIBにフェッチされる。
【0039】図4の参照番号14で示される命令フェッ
チ及び発行ユニットは、アライン(位置合わせ)・ユニ
ット50、命令バッファ52、命令バッファ出力アライ
ナ55、及び複合命令レジスタに命令を配置するために
マルチプレクス及びフォーマットするマルチプレクサ/
フォーマッタ・ユニット60により構成される。
【0040】命令フェッチ及び発行ユニット14はキャ
ッシュ管理ユニット16に命令フェッチを発行し、FE
TCH信号及びフェッチ・アドレスを提供する。各フェ
ッチ・アドレスは4つの連続するワード(“カッドワー
ド”)及びそれらに関連するCビットをアドレスする。
カッドワード及び関連するCビットはアライン・ユニッ
ト50に提供され、ここでテキストは回転され、左境界
にフェッチされる第1ハーフワードを位置合わせする。
このアライナ出力は直接CIRフォーマッタ60に送ら
れ、CIRレジスタ20及び21の内の可能な宛先に送
られる。次に、同じテキストが現IBロード・ポインタ
53値に基づき、右に回転される。これによりテキスト
位置合わせ機能が完了し、フェッチからの第1ハーフワ
ードが、最初に使用可能なIBレジスタ52ロケーショ
ンにゲートされる。残りのハーフワードは残りの使用可
能なロケーションに入力される。既知のように、IBMSys
tem/370命令セットにおいては、命令フォーマットは命
令オペコードの最初の2ビットにより、ハーフワードに
おける命令長を提供する。従って、最初の命令が参照ポ
イントに位置合わせされると、その長さコードが続く命
令の開始ロケーションを与える。
【0041】命令バッファ52のレジスタは図4には示
されていないが、命令バッファは従来設計に従い、ロー
ド・ポインタ53の制御下でロードされるものと仮定す
る。ロード・ポインタはサイクル式カウンタであり、次
に使用可能なレジスタを指示するために、命令がIBレ
ジスタにロードされる度にインクリメントされる。
【0042】IBレジスタ52のアンロードは、アンロ
ーダ57の制御により、命令バッファ出力アライナ55
を介して行われる。出力アライナ55は、出力ポインタ
57により指示されるIB命令テキストを境界の左方へ
回転する。境界から始まり、命令テキストの5ハーフワ
ードが対応するCビットと共にCIRマルチプレクサ/
フォーマッタ60に送られフォーマットされ、最終的宛
先は複合命令レジスタ20及び21となる。
【0043】CIRマルチプレクサ/フォーマッタ60
は5ハーフワードの命令テキストを受け取り、位置決め
のために最大2つまでの命令を、複合命令レジスタ20
及び21に生成する。命令テキストに加え、マルチプレ
クサ/フォーマッタは各ハーフワードに対しCビットも
受け取る。このユニットのフォーマット部は、次に制御
Cビットと共に第1の命令の長さを調査する。命令の制
御Cビットが、命令は次に続く命令と複合されているこ
とを示すと、続く命令がCIRR21にロードされる。
好適には命令の“制御”Cビットは、命令の第1のハー
フワードに関連するCビットである。
【0044】CIRマルチプレクサ/フォーマッタ60
はアライン・ユニット50或いは出力アライナ55の何
れかをソースとし、これは命令バッファが空かそうでな
いかに依存する。空の場合は、フェッチされるカッドワ
ードの最初の5ハーフワードは、アライン・ユニット5
0から直接マルチプレクサ/フォーマッタに転送され、
残りのハーフワードはIBに供給される。これは命令の
最初のフェッチ期間或いはパイプラインをクリアする再
フェッチ期間内における、パイプラインの充填による遅
延を回避する。
【0045】好適には、IB52は1.5カッドワード
長であり、プリフェッチされた命令テキストを含む。こ
のテキストは順次記憶ロケーションからのものではない
であろう。なぜなら、分岐プロセッサは実施されると予
測される分岐のための命令の目的ストリームをプリフェ
ッチするからである。これらの分岐目的ストリームはI
Bの論理実行ポイントにロードされ、そこにこれまで存
在していた順次命令ストリームをオーバライトする。2
つのポインタ、すなわちロード・ポインタ53及びアン
ロード・ポインタ57がIB52と関連する。
【0046】ロード・ポインタ53は循環カウンタであ
り、その値は新たなテキストがIB52にロードされる
度にインクリメントされる。IB52の分岐目的ロード
のために、ロード・ポインタ値は、目的フェッチを開始
した分岐命令に続く命令テキストのハーフワードを指示
するようにセットされる。ロード・ポインタ53の計数
はIBLPTR信号により実施される。
【0047】アンロード・ポインタ57は常時IB55
の命令境界を指示し、複合命令レジスタにロードされる
命令テキスト長だけ進められる。このポインタ値の前進
は複合命令レジスタにロードされるテキスト長を計算
し、それを現値に加算することにより達成される。アン
ロード・ポインタの現在値はIBULPTR信号により
与えられる。
【0048】オペレーションの際、命令シーケンスの連
続するハーフワード部分はマルチプレクサ/フォーマッ
タ60に供給され、これらは調査され複合命令レジスタ
にロードされる。但し、ここで2つの例外が存在する。
マルチプレクサ/フォーマッタがBC或いはBCR命令
に遭遇すると、それにより次の命令の境界にインクリメ
ントされる。その際、BC或いはBCR命令を複合命令
レジスタへの入力として有効化しない。これはデコーダ
64及び65のデコーダ対により達成される。デコーダ
64はマルチプレクサ/フォーマッタの現左方境界上の
命令のオペコードを受け取り、デコーダ65はその直後
の命令のオペコードを受け取る。どちらかのデコーダが
BC或いはBCR命令を検出すると、その出力を活動化
する。出力はマルチプレクサ/フォーマッタ・ユニット
にフィードバックされ、複合命令レジスタへのデコード
された分岐命令のロードを阻止する。他の全ての分岐命
令は複合命令レジスタへロードされる。このように、未
使用サイクルを導入すること無く、BC及びBCR命令
が命令パイプラインから除去される。しかし、命令スト
リームにおけるBC或いはBCR命令の存在は、2つの
ラッチ66及び67の何れかの出力により告げられる。
ラッチ66はデコーダ64の出力を受け取り、一方ラッ
チ67はデコーダ65の出力を受け取る。ラッチ66及
び67はパイプライン・クロックによりクロックされ、
この信号の1周期間だけセット状態を維持する。同じパ
イプライン・クロック・サイクルにより命令テキストが
複合命令レジスタに入力される。従って、ラッチ66及
び67の内容はパイプラインの命令デコード(ID)ス
テージに対応する。
【0049】複合命令レジスタ20及び21に入力され
る分岐命令は、命令デコード・サイクル期間に70及び
72でデコードされる。パイプラインのアドレス生成
(AGEN)ステージにおいて、4つのラッチ73、74、
75及び76が提供され、それぞれはラッチ66、デコ
ーダ70、デコーダ72及びラッチ67から出力を受け
取る。最後に対のラッチ79及び80がパイプラインの
実行ステージにおいて提供され、アドレス生成ステージ
においてラッチ74及び75の内容を受け取る。
【0050】ラッチ・シーケンス66、73は、パイプ
ラインのID及びAGENステージを通じ、パイプライ
ンの“左”側におけるBC或いはBCR命令の存在を示
すトークン(token) を進める。これはCIRL20を
通じて制御されるパイプライン部分に相当する。“BC
L”トークンと称されるトークンが、これらの2つのパ
イプライン・ステージを通じ、パイプラインのオペレー
ションに同期して進められる。同様に、ラッチ67及び
76はパイプラインの右側の“BCR”トークンをBC
及びBCR命令に対応して進める。これらは除去される
ために、CIRR21を通じてパイプラインに供給され
る。一般的に、BCR及びBCLトークンは“BC”ト
ークンと称され、BC或いはBCR命令のデコードを表
す。
【0051】CIRL20を通じてパイプラインに入力
される全ての分岐命令に対し、トークンはパイプライン
のAGEN及びEXステージを通じ、ラッチ74及び7
9により進められる。こうしたトークンはBRLトーク
ンと称される。同様に、BRRトークンは、CIRR2
1を通じてパイプラインに入力される分岐命令に対応
し、パイプラインの右側のAGEN及びEXステージを
通じて転送される。一般に、BRR及びBRLトークン
は“BR”トークンと称され、BC及びBCR命令以外
の分岐命令のデコードを表す。
【0052】実行ユニット34及び36は従来式にパイ
プラインにより制御され、パイプライン内の命令により
要求される計算及び論理オペレーションを実行する。命
令の実行結果は条件コード・ユニット83に供給され、
これは命令実行結果に従い、条件コード(CC)をセッ
トする。分岐条件(BC)ユニット85は、実行ユニッ
ト34及び36の出力に応じて、分岐条件信号を提供す
る。
【0053】パイプライン・オペレーションはANDゲ
ート88により命令発行と同期される。ゲート88はM
CSの出力であるEND_OPビットを受け取り、これ
はパイプライン条件センサ87の出力と結合される。セ
ンサ87はパイプライン・オペレーションの中断を要求
する条件を検出するために、実行パイプラインのAGE
N及びEXステージをモニタする。阻止条件が存在しな
い限り、現在アクセスされるマイクロ命令のEND_O
Pビットがセットされていれば、ゲート88は信号NE
XTを活動化する。END_OPビットはCIRの現内
容に対応するマイクロ命令シーケンスの終了を示す。N
EXTが活動化されると、マルチプレクサ/フォーマッ
タは次の命令或いは命令対を複合命令レジスタに入力す
ることを許可され、デコーダ64、65、70及び72
が活動許可される。
【0054】分岐条件処理 本説明では、分岐条件処理は、現命令ストリームにおけ
る分岐命令の検出、分岐が実行されるかどうかの予測、
分岐が実施されるものと予測される分岐に対する命令テ
キストのプリフェッチ、分岐命令に固有の分岐テストの
実行、及び必要に応じて実行される訂正命令の“再フェ
ッチ”(refetch) の発行により構成される。
【0055】第1ステップは、実行パイプラインの第1
ステージへのロード以前に、全ての命令テキストを検索
して行われる。この検出はIB52の入力において、プ
リフェッチ或いは再フェッチされるカッドワードの最初
の5ハーフワードに対して実行され、またIB52の出
力では他の全ての命令テキストに対して実行される。各
分岐命令が検出されると、命令シーケンス内におけるそ
のテキスト及びロケーションが分岐処理ユニット15に
提供される。分岐命令のデコードに基づき、分岐処理ユ
ニットは分岐命令が実行されるかどうかを予測し、その
予測に従い必要なフェッチ或いはプリフェッチを開始す
る。分岐命令ロケーション情報は、キャッシュ内におけ
る分岐命令のアドレスを生成するために使用される。分
岐目的アドレス(BTA)が生成され、次に、分岐命令
テキスト、そのアドレス、及びプリフェッチ(PF)標
識が分岐キューに入力される。分岐キューはFIFOキ
ューとして動作する。PF標識は分岐目的アドレスにお
けるプリフェッチが実行されたかどうかを示すように規
定される。この点に関し、PF標識は、分岐が実行され
る(PF=1)、或いは実行されない(PF=0)と予
測されたことを表すトークンである。実行される場合
は、もちろん、プリフェッチが発生しており、非実行の
場合は、順次フェッチが継続する。
【0056】分岐命令は、実行パイプラインにおけるB
C及びBRトークンに応じて、BQからデキューされ
る。最大2命令が同時にデキュー可能である。デキュー
された命令は、分岐テスト・ユニットでテストされる。
このユニットは実行ユニット・オペレーションに応じて
生成されるCC及び分岐条件を使用し、分岐が実行され
るかどうかを決定する。その結果はデキューされた命令
のPF標識と比較され、再フェッチを行うかどうかを決
定する。再フェッチが要求されると、正しい再フェッチ
・アドレスが生成され、キャッシュ12により使用され
る。ここで実行パイプラインは再フェッチの際にクリア
されるように構成される点を強調しておく。これは従来
技術の範中に帰属する。
【0057】分岐処理ユニットはデコード及び境界検出
ユニット92を含み、このユニットは命令テキスト及び
命令ロケーション情報を、命令フェッチ及び発行ユニッ
ト14のアライン・ユニット50もしくはIB52の一
方から受け取る。ソースは順次(S)信号或いはプリフ
ェッチ(PF)信号に応じ、マルチプレクサ(MUX)9
0を通じて選択される。PF信号はプリフェッチが行わ
れるときは活動状態であり、この場合、IB52の内容
はプリフェッチされる命令によりオーバライトされる。
これにより5ハーフワードの命令テキストと関連するC
ビットが、アラインメント・ユニット50から提供され
る。それに続き、PF信号は非活動化し、S信号がIB
52からアライン・ユニット55により現在選択されて
いる5ハーフワードを選択し、マルチプレクスして複合
命令レジスタ内にフォーマットする。アラインメント・
ユニット50の出力はプリフェッチ・サイクル期間中は
検索される。なぜなら、キャッシュ・インタフェース・
テキストが命令境界上の最初に提供されるからである。
命令デコードを実行するためには、命令境界を知る必要
があるため、この検索は何れの検出においても要求され
る。順次フェッチ期間中は、命令テキストはIB52か
ら獲得される。IB52では分岐命令はアライン・ユニ
ット50の場合と同様な方法により検出される。分岐命
令が検出されると、これは制御信号(BR DEC) に
より分岐命令レジスタ(BIR)98にゲートされる。
分岐命令を検索するにおいて、デコード/境界検出回路
92は、命令処理ユニットに転送される各命令を検査す
る。ここで改めて、各命令は自身の命令長の指示を有す
ることを思い出してみたい。検査する各命令に対し、デ
コード/境界検出ユニット92は分析すべき次の命令の
命令長に相当する更新値を生成する。この値はレジスタ
93に保持される。ユニット92による分岐命令の検出
は、信号(BR DEC) により示され、この信号は命
令を分岐命令レジスタ98にゲートする。レジスタ98
における分岐命令のアドレスは分岐命令アドレス生成
(BIAG)ユニット99により提供され、このユニッ
トは最後のプリフェッチ或いは再フェッチ・アドレスか
ら、93に保持されるストリームの更新値分だけ連続的
に更新する。
【0058】予測デコード回路96は分岐命令のデコー
ドに応じて、信号(PREDICT) を発する。この信号は、
分岐命令が実行される時には、予測される結果を示すよ
うに規定される。この場合は、分岐目的アドレス(BT
A)がプリフェッチのために提供されねばならない。ま
た、実行されない場合には、次の順次アドレスが提供さ
れねばならない。PREDICT 信号は予測アドレスを生成す
るアドレス予測回路94に供給される。予測アドレスは
マルチプレクサ(MUX)95を介して、命令フェッチ
・アドレス・レジスタ(IFAR)97に供給される。
このレジスタは命令フェッチのために、キャッシュ管理
メカニズムによって使用される。分岐結果が実行或いは
非実行と予測されるかに関しては、アドレス予測回路9
4はまた分岐目的アドレス(BTA)を生成し、これは
分岐命令アドレス(BIA)及びPFトークンと共に、
分岐命令テキストがBIR98から得られる時点で有効
となる。
【0059】命令ストリームにおいて識別され、分岐処
理ユニット15によりデコードされた分岐命令は、FI
FO分岐キュー(BQ)102に待機される。分岐命令
が98に登録される度に、BTA、BIA及びPFトー
クンと共に、命令テキストは分岐キュー102に入力さ
れる。
【0060】分岐キュー入力は実行パイプラインにおい
て伝搬されるBC及びBR信号に応じてデキューされ
る。図4で示すように、BQ102は2出力102a及
び102bを有し、これらは最大2つの分岐命令までが
同時にデキューされることを許可する。
【0061】デキューされた命令は分岐テスト・ユニッ
ト103に供給される。このユニットはCC及び分岐条
件信号を実行ユニットから受け取る。分岐テスト・ユニ
ットはこれらの条件を使用して、デキューされた命令に
対する適切な結果を決定し、その決定結果を予測結果と
比較し、必要に応じて、分岐結果が不正に予測されたこ
とを示すREFETCH信号を生成する。
【0062】パイプライン・クロック周期の間、REFETC
H 信号が活動状態の場合に、分岐キュー102は、不正
に予測された分岐命令と共に記憶される分岐命令アドレ
ス及び分岐目的アドレス情報を再フェッチ・アドレス回
路105に提供する。再フェッチ・アドレス回路105
は、不正に予測された分岐命令と共に記憶されるアドレ
ス情報を使用し、正しい命令フェッチ・アドレスを生成
する。REFETCH 信号が活動状態の場合、マルチプレクサ
95は再フェッチ・アドレス・ユニット105の出力を
選択し、命令フェッチ・アドレス・レジスタ97におい
て訂正アドレスのレジストレーションが行われる。
【0063】分岐処理ユニット内の命令フェッチ・シー
ケンサ106は、命令発行ユニット内のロード及びアン
ロード・ポインタ53及び57の出力、予測デコード・
ユニット96からのPREDICT信号、及び分岐テスト・ユ
ニットからのREFETCH信号を受け取る。シーケンサ10
6はPREDICT信号の状態に応答し、FETCH或いはPRE
FETCH信号をセットする。FETCH信号は、もちろん
命令フェッチ及び発行ユニットに対し、順次フェッチが
進行中であることを指示し、その結果、ユニット内の全
てのポインタ及びアライナの順次インクリメンテーショ
ンが行われる。PREFETCH信号が活動状態の場合は、命令
フェッチ及び発行ユニット内のポインタ及びアライナ
は、命令フェッチ・アドレス・レジスタ97で使用可能
なプリフェッチ・アドレスより開始される。REFETCH 信
号が活動状態の場合は、分岐命令の不正な予測が行われ
たことを示し、シーケンサ106は命令フェッチ及び発
行ユニット内のレジスタ、アライナ、及びポインタの現
内容と命令パイプラインの内容を無効とする信号(INVA
LID)(図4では図示せず)を生成する。
【0064】順次フェッチの間、シーケンサ106は、
IB52が命令テキストを受容する領域を有する限り、
FETCH信号を活動状態に維持する。しかし、ロード
・ポインタ53がアンロード・ポインタ57の値と等し
い値まで進むと、IB52は充填状態と見なされ、FE
TCH信号は非活動状態となる。
【0065】OR回路107はREFETCH、FETCH及びPREF
ETCH信号をキャッシュ・フェッチ(CFETCH)信号とし
て、キャッシュにゲートする。CFETCH信号が活動化され
ると、命令フェッチ・アドレス・レジスタ97の内容は
有効化され、キャッシュ管理はキャッシュからレジスタ
97のアドレスよりフェッチを開始する。
【0066】分岐処理ユニットの第1の実施例 図5は分岐処理ユニット15の第1の実施例を示し、こ
こでは分岐予測が複合プリプロセッサ10(図1)によ
り生成されるCビットを通じて行われる。この実施例で
は、分岐命令は、少なくともその制御Cビットと共に、
分岐命令レジスタ98に記憶される。分岐目的アドレス
は無条件に生成され、デコードされる分岐命令のCビッ
トは、分岐目的アドレスがキャッシュに送られるかどう
かを決定するために使用される。分岐が実行されるもの
と予測されると、分岐目的アドレスがキャッシュに送ら
れ、プリフェッチが開始される。プリフェッチされた命
令テキストは前述のように命令境界上に分割され、正に
デコードされた分岐命令に続いて命令バッファ内に配置
される。分岐命令に順次続く命令のアドレスは、分岐が
不正に予測された場合は、BQに保管される。
【0067】分岐が非実施であると予測されると、分岐
目的アドレスが無条件に生成されるが、BQ内にのみ保
管される。分岐処理ユニットは、次のサイクルにおいて
IB内でロケーションが有効になれば、IB内の最後に
有効な命令テキストに続く命令テキストのアドレスを送
り、順次フェッチを開始する。換言すれば、分岐処理ユ
ニットは、実行されると予測される分岐に遭遇しない限
り、命令バッファを順次命令で充填しようとする。この
ようにして、分岐処理ユニット15は予測される分岐パ
スに基づき、実行ユニット及び自身により処理される単
一の命令ストリームを作成する。
【0068】本実施例及び次に示す実施例を理解するに
当たり、命令バッファ52はポインタの制御によりロー
ド及びアンロードされることを強調しておく。こうし
て、命令バッファが1度に複数の分岐命令を含む間に、
これはシリアルにアンロードされ、何れの時にも単一の
命令だけがBIR98及び分岐処理ユニットに提供され
て処理及び待機される。こうして、図5では、BIR9
8に現在、存在する分岐命令がデコーダ204に供給さ
れ、これが命令のオペコードを検査し、そのフォーマッ
トを決定する。例えば、命令がRRタイプの場合は、オ
ペランドに2つのレジスタ指定を含み、その1つは分岐
目的アドレスである。一方、レジスタがRXタイプの場
合は、D(XB)により与えられるアドレスを含む。デ
コードされた命令タイプは3対1の加算器202を制御
し、この加算器は命令のレジスタ・フィールドによりア
ドレス指定されるGPRのCOPY200から入力を受け取る。命
令がRRタイプの場合は、GPR COPY200からの1つのオ
ペランド出力が暗黙のゼロに加算される。命令がRXタ
イプの場合は、命令のX及びBフィールドに示されるGP
R COPYオペランドは、命令のDフィールド内の変位に加
算される。加算器202はデコーダ204の出力により
同様に制御されて、RSタイプの命令の関連フィールド
を正確に加算し、分岐目的アドレスを生成する。
【0069】分岐処理ユニットはまた、プリフェッチ・
アドレス・レジスタ(PFAR)206及び分岐命令ア
ドレス・レジスタ(BIAR)209を含む。命令シー
ケンスが最初に命令フェッチ及び発行ユニットにロード
されるか、或いはプリフェッチもしくは再フェッチ・オ
ペレーションが取られると、PFAR206及びBIA
R209の内容はフェッチされる命令のアドレスに初期
化される。その後、カッドワードが順次フェッチされる
度に、PFAR206の内容は207でハーフワード単
位でフェッチの長さ分だけ更新される。こうして、PF
ARは常にキャッシュから現在フェッチされたカッドワ
ードの開始アドレスを指示する。BIAR209は21
0において、レジスタUPD93の内容分だけ更新され
る。これは分岐命令間の長さに相当する。従って、BI
AR209は常に現在アンロードされた分岐命令のアド
レスを指示する。
【0070】分岐キューは第1の実施例において102
aにより表される。図5では、分岐キュー102aは4
つのレジスタ220−223で構成され、これらはロー
ド及びアンロード・ポインタ234及び232の制御に
より、それぞれロード及びアンロードされる。分岐命令
が204でデコードされる度に、そのオペコードがロー
ド・ポインタ234から出力されるロード制御(LD CNT
RL)信号により指示されるレジスタのOPフィールドに
配置される。分岐命令のオペコードは分岐キュー102
aの指示されるレジスタにロードされ、その命令アドレ
ス及び分岐目的アドレスは、それぞれそのレジスタのB
IA及びTGTフィールドにロードされる。BIAフィ
ールド値はインクリメンタ210の出力から得られ、一
方、TGTフィールド値は加算器202の出力から得ら
れる。また、Cビットが現在アンロードされる分岐命令
のオペコードと共にロードされ、分岐結果を予測するた
めに使用される。レジスタのロードに続き、ロード・ポ
インタが次のレジスタにインクリメントされる。
【0071】分岐キュー・レジスタ220を参照する
と、これは4つのフィールド、C、OP、BIA、及びTGTを
有し、それぞれ待機される分岐命令の、予測Cビット、
オペコード、命令アドレス、分岐目的アドレスを示す。
このレジスタのC及びOPフィールドの出力は、マルチ
プレクサ(OPMUX) 228に供給され、他のキュー・レ
ジスタ221、222及び223の対応するフィールド
についても同様である。更に、Cフィールドの内容は2
22で反転され、この反転信号は2対1のマルチプレク
サ224をオペレートするために使用される。ここでC
ビットは、実施される分岐を予測するためにセットさ
れ、非実施の分岐を予測するためにリセットされるもの
と仮定すると、Cビットの値の反転により、マルチプレ
クサ224は予測とは反対の結果ためのアドレスを選択
する。この結果は再フェッチ・マルチプレクサ(RFA
MUX)226を通じて使用可能となる。残りの各レジ
スタ221、222及び223に関しても、同様にRF
AMUX226に結合され、それぞれのレジスタにおけ
る分岐命令の非予測シーケンスを提供する。
【0072】BCL或いはBCRトークンが実行パイプ
ラインのAGENステージに到来すると、関連する分岐
トークンがラッチ73或いは76からそれぞれ得られ
る。同様に、BRL及びBRRトークンはパイプライン
の実行ステージにおいて、それぞれラッチ79及び80
より得られる。BCL、BCR、BRL及びBRRトー
クンは、アンロード・ポインタ232をインクリメント
するために使用される。アンロード・ポインタ232は
OPMUX228及びRFAMUX226をセットし、
次の1つ或いは2つの分岐キュー・レジスタを選択し、
その内容を分岐テスト回路103aに提供する。
【0073】分岐テスト回路103aは102aからデ
キューされる分岐命令のオペコードにより指示される分
岐テストを実施する。このテストは、仕組まれた分岐テ
ストを実行し、その結果をこの分岐命令のCビットのセ
ットにより指示される予測結果と比較する。実際の結果
が予測結果と一致すると、入力が分岐キュー102aか
ら除去され、命令が完了する。予測が実際の分岐判断と
一致しない場合は、分岐テスト・ユニット103aはR
EFETCH信号を活動化する。REFETCH信号が
セットされると、現在アンロードされる分岐キュー・レ
ジスタ内の選択された命令アドレスがRFMUX226
を通じて提供される。これはREFETCHアドレスと
呼ばれる。REFETCHアドレスが順次アドレスの場
合は、アンロード・ポインタ232により指示されるレ
ジスタのBIAフィールド値がRFAMUX226によ
り出力される。この場合、分岐オペコードにおける分岐
命令長コード(ILC)がBIAと共に、インクリメン
タ235に提供される。235はこれら2つの値を加算
し、REFETCHアドレスとして命令ストリーム内の
テストされた分岐命令に続く命令のアドレスを提供す
る。REFETCH信号の活動化により、命令アドレス
・マルチプレクサ(IAMUX)215がセットされ、
インクリメンタ235の出力を選択し、この値をPFA
R206及びBIAR209と同様に、命令フェッチ・
レジスタ(図4の参照番号97)に提供する。REFE
TCHアドレスが順次アドレス以外の場合は、分岐目的
アドレスが選択され、分岐ILC値がゼロにセットさ
れ、インクリメンタ235は単にREFETCHアドレ
スとして分岐目的アドレスをパスする。REFETCH
信号が非活動状態の場合は、IAMUX215はBIR
98内のデコードされる分岐命令のCビットにより規定
される。分岐が非実施と予測されると、PFAR206
の内容が前回のフェッチ長によりインクリメントされ、
IFAR97、PFAR206及びBIAR209に提
供される。そうでない場合は、加算器202の出力がI
AMUX215により選択される。
【0074】ここでREFETCH信号の活動化は分岐
結果の予測ミスを示す点に注意を要する。従って、この
信号は、予測ミスされた分岐命令に対応するCビットの
キャッシュされたバージョンを規定するために使用され
る。この命令アドレスは現在アンロードされる分岐キュ
ー・レジスタのBIAフィールド内で得られる。
【0075】BC及びBCR命令に対して分岐テスト・
ユニット103aにより実施される分岐テストは、単に
命令内のマスク・フィールドに対して、条件コード(C
C)をテストして行われる。従って、分岐キュー・レジ
スタのOPフィールドは、これらの命令に対応するオペ
コード及びマスク・フィールドを記憶するのに十分広く
なければならない。更に、これらの命令には実行サイク
ルは必要なく、少なくとも実行パイプラインで見受けら
れるように実行に時間を要さない。他の全ての分岐命令
はGPR値を変更するのに実行サイクルを必要とする。
EX命令は汎用目的レジスタを読み出し、フェッチされ
る命令テキストを変更する。これは概念的には実行サイ
クルを要する。分岐処理ユニット15は、この命令(B
RL或いはBRRトークンを生成するBR命令としてデ
コードされる)の実行サイクルに続いて、分岐テストを
実施する。その後は、上述したBC及びBCR命令の場
合と同様にオペレートする。
【0076】好適には、BC及びBCR命令は他の命令
と複合されない。なぜなら、これらは実行サイクルを要
せず、それ以外に可能な複合を阻止するからである。既
述したように、命令フェッチ及び発行ユニットはこれら
の命令をデコードするが、IB内でこれらに遭遇すると
これらをスキップし、次のBC/BCR以外の命令をロ
ードする。他の分岐命令は(一定の制約条件の下で)複
合され、実行パイプラインに入力される。こうして、分
岐ユニットにとって、単一サイクルにおいて2つの分岐
テストを実施することが可能となる。
【0077】次に、BCT命令がAR命令に続き、これ
らが複合される場合について考察する。ここでBC命令
がBCT命令に続き、AR命令の実行により生じる条件
コードをテストするものと仮定する。この場合、AR命
令はBCT命令がCIRR21に存在するとき、CIR
L20の出力で検出されよう。これらのレジスタへの入
力が行われると、BCが検出され、64でデコードさ
れ、AR及びBCTのそれぞれ20及び21へのラッチ
に続くパイプライン・クロックの周期の間に66にラッ
チされる。BCTが21にラッチされると、それは72
で検出され、BRトークンがBRR75に入力される。
続くサイクルでは、BCトークンが73にラッチされ、
BRRトークンは80にラッチされる。従って、両方の
トークンはパイプラインにおいて、分岐キューをアンロ
ードするために同時に使用可能となる。これにより、両
方の分岐テストが同時に実施されることになり、その結
果は正しい順序で提供される。すなわち、BCTが誤っ
て予測されると、分岐キュー内のBCT命令に対応する
正しい入力を使用することにより、命令ストリームが再
フェッチされる。BCT予測が正しく、BC予測が誤り
の場合は、分岐キュー内のBC入力から抽出される正し
いアドレスが命令ストリームを再フェッチするために使
用される。これら両方の分岐が正しく予測されると、両
方の入力は同一のサイクルにおいて分岐キューから効果
的に除去される。
【0078】分岐処理ユニットの第2の実施例 図6−図9は、分岐処理ユニット15の第2の実施例を
示す。第2の実施例では、分岐目的バッファ(BTB)
が最近実施された分岐命令の分岐結果の履歴を記録する
ために使用される。
【0079】図6では、System/370タイプに
おける12種類の分岐命令が示されている。分岐処理ユ
ニットの第2の実施例では、BIR98において分岐命
令を検出することにより、図6に示される命令を処理す
る。次に分岐の方向が予測され、(分岐が実施されると
予測される場合は)分岐目的がプリフェッチされ、命令
テキスト及び関連するアドレス及び予測情報が分岐キュ
ーに入力される。分岐命令は、(分岐が実施されると予
測される場合は)分岐予測及び目的アドレスのテストが
適切なシーケンスで達成されるまで、このキュー内に保
持される。分岐方向或いは目的アドレスが予測ミスされ
た場合は、訂正処理が次に行われる。これらの訂正処理
には、命令バッファ、分岐キュー及び実行パイプライン
の現内容の無効化、真の目的命令ストリームのフェッ
チ、及び必要に応じたBTB入力の作成或いは変更が含
まれる。
【0080】BIR98の現内容は分岐デコード回路に
よりデコードされる。デコード回路において、分岐命令
は図6に従い分類される。図6では、分岐命令は3つに
類別され、それぞれは異なる予測方法を有する。第1分
類の命令はプリフェッチを生じないが分岐キューに入力
され、分岐テストにおいて他の分岐命令の処理と同様に
アンロードされる。第2分類の命令は実行されることが
知られており、キャッシュに対してプリフェッチを発生
する。これらの命令に対し、BTBアクセスと並列に分
岐目的アドレスが生成される。この命令に対するBTB
入力が見い出されない場合は、分岐目的アドレスが生成
され、分岐目的プリフェッチのためのフェッチ・アドレ
スとして使用される。有効なBTB入力がこの分岐命令
に対し見い出される場合は、これが代用される。どちら
の場合も、BIAR308及びPFAR305の値はプ
リフェッチ・アドレスにセットされ、新たな命令ストリ
ームを示す。第3分類の命令は無条件分岐か、或いは条
件付き分岐である。どちらの場合も、有効なBTB入力
が、BTBで指示される記憶ロケーションから、分岐目
的のプリフェッチを開始する。有効なBTB入力が存在
しない場合は、この時点ではプリフェッチ或いは目的ア
ドレスの生成は発生しない。3つのどの分類からの命令
に対しても、分岐デコードに続き分岐キュー入力が生成
される。
【0081】図7は前述の分岐デコード・オペレーショ
ンに応じて作用する、予測メカニズムのブロック図を示
す。BIR98内の分岐命令は、図6の3つの分類に対
応してリストされる条件に従い、300でデコードされ
る。分岐命令が第2分類に属する場合、そのプリフェッ
チ・アドレスが生成され、デコーダ300は分類を示す
プリフェッチ・レジスタ(PFR)信号を生成する。分
岐命令が第3分類に属する場合は、デコーダ300は第
3分類を示すプリフェッチ分岐目的バッファ(PBF)
信号を生成する。これらのどちらの信号もプリフェッチ
を要求し、OR回路302はこれらの信号を結合し、ど
ちらかが活動状態の場合には、PREFETCH信号を
活動化する。
【0082】図7のアドレス予測メカニズムはまた、プ
リフェッチ・アドレス生成回路305及び306を含
む。これらは図5のPFAR回路と同様に作用し、キャ
ッシュ12内にシーケンス上の次のカッドワードのため
のアドレスを生成する。エレメント308及び309を
含む分岐命令アドレス生成器は、図5で説明したBIA
R回路と同様に作用し、BIR98内の現分岐命令のア
ドレスを生成する。汎用目的レジスタ(GPR)310
のコピーが、BIR98内の分岐命令の関連フィールド
によりアドレスされる。当業者には理解されるように、
分岐命令がレジスタ参照により分岐目的アドレスを生成
するタイプの場合、このアドレスは310によりデコー
ド・オペレーション中に出力される。
【0083】BTB312はアドレス可能ロケーション
に複数の入力を含む。各入力は分岐命令アドレスの再上
位部(BIAh)、有効ビット、及び分岐目的アドレス
(BTA)により構成される。分岐テストの誤りは目的
命令ストリームのフェッチを発生し、その結果REFE
TCHが発生し、BTBに入力が生じる。一般的には、
実行される分岐に遭遇すると、BTBに入力が介在しな
いために分岐は目的プリフェッチを生じない。その代わ
りに、分岐テストが目的プリフェッチの必要性を検出
し、フェッチを要求し、BTB入力を生成する。このよ
うにして、実行される分岐はBTBをソースとする目的
プリフェッチを生じ、次回それは実行される。反対に、
BTB内の入力は分岐テストの誤りの結果無効となり、
この場合は次の順次命令がフェッチされる。これは分岐
が実施されることを示すBTB入力が、分岐命令のテス
ト中に不正であると判明したとき発生する。BTB31
2の入力は、分岐アドレスの最下位ビット部BIAlに
よりアドレスされる。前述のように、分類2或いは3の
分岐命令は300においてデコードされるものとする。
どちらの場合も、OR回路302の出力はPREFET
CH信号を活動化し、BTB312の読み出しを可能と
する。再フェッチは行われず、マルチプレクサ313は
インクリメンタ309により現分岐命令アドレス出力を
選択するように規定される。BIAlがマルチプレクサ
313を介してBTB312アドレス・ポートに供給さ
れ、一方、BIAhは比較器314に供給される。BT
B312の現アドレスに入力が存在すると、入力のBI
Aの最上位部が比較器314に供給される。これらの最
上位部が等しいと、比較器314の出力は活動化され、
BTB312にデコードされた分岐命令に対応する入力
が存在することを示し、この入力のBTAフィールドが
目的アドレスとして使用されることを示す。
【0084】IAMUX(命令アドレス・マルチプレク
サ)317はPREFETCH及びREFETCH信号
により制御される。REFETCH信号が非活動状態の
場合、マルチプレクサ317はPREFETCH信号の
状態によりその入力を選択する。PREFETCH信号
が活動状態であれば、これはデコーダ300が目的プリ
フェッチ分類1或いは2の分岐命令を検出したことを示
し、BDAGEN 310の出力が選択される。PREFET
CH信号が非活動状態の場合は、デコードされた分岐信
号は第1の予測分類に属することを示し、従って、PFAR
INC306回路の出力が選択される。
【0085】次のフェッチのためのプリフェッチ・アド
レスは、プリフェッチ・マルチプレクサ(PFMUX)
318より命令フェッチ・アドレス・レジスタ(IFA
R)97に供給される。PFMUX318は、IAMU
X317の出力或いは現在アドレスされるBTB入力の
BTAフィールドの一方から命令フェッチ・アドレスを
選択する。PFMUX318はREFETCH信号及び
比較器314の出力により制御される。REFETCH
信号が非活動状態の場合、比較器314の出力はIAM
UX317の出力及び現在アドレスされるBTB入力の
BTAフィールドの内から選択する。
【0086】再フェッチが生じない条件の下では、IF
AR97に入力される次のフェッチ・アドレスはIAM
UX317及びPFMUX318を通じて選択される。
デコーダ300が図6の第2或いは第3分類に含まれる
命令を検出すると、PREFETCH信号が活動状態と
なり、GPR310の出力を選択する。デコードされる
分岐命令が図6の第2分類に属し、この命令の前回の実
行に関する履歴がBTB312に入力されていない場
合、比較器314の出力が非活動状態となり、GPRの
内容をIFAR97へ入力する結果となる。PREFE
TCH信号が活動状態でデコードされる分岐命令に対応
するBTB入力が存在する場合は、現在アドレスされる
BTB入力のBTAフィールドの内容がIFAR97へ
入力される。また、現分岐命令が分類1の命令であり、
REFETCH信号が非活動状態の場合は、PREFE
TCH信号もまた非活動状態となり、この命令に対応す
る入力がBTB内で見い出されることはない。従って、
順次アドレスが306、317、318を介してIFA
R97に登録される。
【0087】PFAR305及びBIAR308の両者
は、OR回路321の出力に応じてPFMUX318か
ら初期化される。OR回路321はREFETCH及び
PREFETCH信号を、PFAR及びBIARのロー
ド制御入力に伝える。これらの信号のどちらかが活動状
態であれば、レジスタ内容はPFMUXにより出力され
る値に変更される。
【0088】分岐キューのロードは図7及び図8を参照
することにより理解される。ここで分岐命令が丁度BI
R98に提供され、300でデコードされ、プリフェッ
チ命令アドレスがIFAR97に入力されたものと仮定
する。同時にIFAR97がロードされ、BQはBIR
98から命令テキストを、またインクリメンタ309の
出力から分岐命令アドレスを、マルチプレクサ320の
出力から分岐目的アドレスを、更にORゲート302か
らPREFETCH信号を受け取る。マルチプレクサ3
20は、310内の現在アドレスされるGPR、或いは
BTB312内の現在アドレスされる入力のBTAフィ
ールドの一方から入力を受け取る。ここでデコードされ
る命令に対応するBTB入力であると仮定すると、比較
器314の出力が活動化され、マルチプレクサ320に
BTA値を選択させる。入力が存在しないものと仮定す
ると、BD AGEN 310の出力がマルチプレクサ3
20を通じてBTAフィールドBQへ提供される。プリ
フェッチに相当するPFETCH信号が分岐キューに転
送され、分岐が実行或いは非実行のどちらと予測された
かを記録する。分岐命令が無条件順次フェッチ(図6の
分類1)とデコードされると、PREFETCH信号が
非活動状態となる。
【0089】図8は分岐キューの第2の実施例を示す。
分岐キューはレジスタ配列330、331、332及び
び333で構成される。各レジスタ配列は、分岐命令テ
キスト、分岐命令アドレス、分岐目的アドレス、及びP
FETCH予測信号のそれぞれの部分を含む。レジスタ
配列は分岐キュー・ロード・ポインタ (BQ LD PTR)の
制御によりロードされる。ロード・ポインタは従来式で
あり、現配列のロードの後、次のレジスタ配列を指示す
るようにインクリメントされ、次に使用可能なレジスタ
配列が分岐キュー・アンロード・ポインタ(BQ UNLOAD
PTR) により指示されると休止する。分岐キュー配列の
内容は、図7の予測回路から受信される。分岐命令テキ
ストはBIR98から受信され、分岐命令アドレスはイ
ンクリメンタ309から、分岐目的アドレスはマルチプ
レクサ320から、またPREFETCHビットはOR
ゲート302から受信される。
【0090】分岐キューは4つのマルチプレクサを通じ
てアンロードされ、これらのそれぞれは4対2のマルチ
プレクサであり、4入力から1或いは2出力を提供す
る。第1のマルチプレクサ(BQ BI MUX)340
は、分岐テストへ移行するための分岐命令テキストを選
択する。マルチプレクサ342(BQ NSEQ MUX) は分岐
テストへ移行するための分岐命令アドレス情報を、マル
チプレクサ343(BQBTA MUX) は分岐テストのための
分岐目的アドレス情報を、またマルチプレクサ344
(BQ PFETCH MUX) は分岐テストのためのPREFET
CHビットを選択する。マルチプレクサ340、34
2、343及び344はロック・ステップ(lock ste
p) でオペレートし、各々は他と同じ入力対出力構成を
提供する。このように、1つのレジスタ配列の内容或い
は2つの隣接するレジスタ配列の内容が、分岐テストの
ために提供される。
【0091】4つの分岐キュー・レジスタ配列のロード
及びアンロードは、5つのポインタの制御により行われ
る。ローディング・ポインタは BQ_LD_PTRである。2つ
のアンロード・ポインタ (BQ_AG_ULPTR1及び2)はア
ドレス生成アンロード用に提供され、2つのアンロード
・ポインタ (BQ_BT_ULPTR1及び2)は分岐テスト・ア
ンロード用に提供される。アドレス生成及び分岐テスト
処理はそれぞれ2つのポインタを要する。なぜなら、あ
る任意のサイクルにおいて、2つの分岐命令が処理され
る可能性があるからである。ロード・ポインタは、分岐
キュー入力がエンキュー(enqueued)されるとインクリ
メントされる。アンロード・ポインタは、分岐キュー入
力がデキュー(dequeued)されるとインクリメントされ
る。
【0092】図8の参照番号350で示される分岐キュ
ー・ロード・ポインタは、次にロードされる分岐入力を
表す。ロード・ポインタは全ての点で従来方式であり、
特定のアプリケーションのニーズにより実行される。一
般的に、このポインタは再フェッチ或いはプリフェッチ
によりゼロに初期化され、各分岐キュー入力のロードに
よりインクリメントされる。
【0093】各分岐デコード・オペレーションが開始さ
れると、分岐キュー入力がエンキューされるために使用
可能となる場合に限り、このオペレーションの終了が許
可される。それ以外は、オペレーションはキュー空間が
使用可能となるまで延期される。
【0094】ローディング処理と並列に、分岐キューは
また、分岐テストのためにアンロードされ、入力のデキ
ューを生ずる。
【0095】分岐キュー・アンロード・ポインタは図8
の352で生成される。アンロード・ポインタは、実行
パイプラインにおいて進められ、BCR、BCL、BR
R及びBRLトークンに応答してインクリメントされ
る。第1及び第2の両方の実施例において、複合規則は
2つのBRタイプの命令の並列実行を阻止し、BR命令
とBC命令、及びBC命令とBC命令の並列実行を許可
する。このように、パイプライン・クロックの任意の周
期において、単一のBRトークンが、或いは単一のBC
トークンが、或いはBR及びBCトークンが、或いは2
つのBCトークンが活動状態となることが可能である。
アンロード・ポインタは次に示すように進められる。す
なわち、1つのトークン、例えばBCR、BCL、BR
R或いはBRLが活動状態となると、アンロード・ポイ
ンタは1カウントだけ進められ、分岐キュー内の最も古
い入力が各マルチプレクサ340、342、343及び
344の第1のポートを通じてアンロードされる。同一
のパイプライン・クロック周期内で2つの分岐トークン
が活動状態であれば、分岐アンロード・ポインタは2カ
ウント進められ、最も古い分岐キュー入力はマルチプレ
クサの第1のポートを通じて、また次に古い分岐キュー
入力はマルチプレクサの第2のポートを通じてアンロー
ドされる。
【0096】ポインタ対は図9のアンロード・ポインタ
表示352により示されるように、パイプライン・クロ
ックの1周期によりオフセットされる。この点に関し、
現パイプライン・クロック周期内において、1つのトー
クンが活動状態の時、BQ_AGN_ULPTR1が進められ、次の
分岐キュー・レジスタ配列を指示する。この直後のパイ
プライン・クロック周期において、BQ_BT_ULPTR1が進め
られ、同じBQレジスタ配列を指示する。
【0097】これに関連して、BQアンロード・ポイン
タが“指示する”(point) と述べるときには、“指示
された”(pointed to)レジスタ部分を、このポインタ
により制御されるマルチプレクサ出力に接続するよう
に、マルチプレクサを構成することを意味する。
【0098】図9を参照すると、第2の実施例におい
て、2相アンロード・ポインタが必要な理由が理解され
る。第2の実施例では、最も最近のGPRのコピーを使
用して分岐目的アドレスの計算を行うことを許可するた
めに、次にデキューされる分岐命令の命令テキストが、
それぞれのBQ_AGN_UNPTRによりゲートされる。こうし
て、この命令の分岐目的アドレスの最後の計算以来、G
PRの内容が更新されたとすると、BTBに記憶される
この命令の分岐目的アドレスは無効となり、有効なアド
レスがもはや遅延を伴わずにパイプラインに提供され
る。図9において、分岐目的アドレス生成回路354
は、GPRsのコピー、及び分岐目的アドレスを計算す
るための3対1の加算器を含む。後者はSystem/370分岐
命令形式に基づくよく知られる方法による。354で計
算される分岐目的命令はレジスタ355に保持される。
同時に2つの分岐命令がデキューされると、第2の分岐
目的命令計算回路356が、分岐キューに存在する2番
目に古い命令の分岐目的アドレスを生成し、こうして生
成されたアドレスはレジスタ357に保持される。
【0099】マルチプレクサ340の構造、及びAGE
N及びBTアンロード・ポインタによるその制御が、図
9に表されている。マルチプレクサ340は、BQ_BT_UN
PTR_1により制御される第1のゲート359、及びゲー
ト359に関連し、BQ_AGEN_UNPTR_1により制御される
第2のゲート360を含む。ここで単一の分岐トークン
が、パイプライン・クロックの現サイクルにおいて活動
状態であると仮定する。このトークンはBQ_AGEN_UNPTR_
1を、ゲート360をアンロックする値に進める。これ
により命令テキストは、BQ102からAGEN1ポー
トを通じて、分岐目的アドレス生成回路354にゲート
される。ここでアドレスが計算され、レジスタ355に
保持される。ここで計算される分岐目的アドレスは、パ
イプライン・クロックの立ち上がりエッジで保持される
ものと仮定する。同じエッジがBQ_BT_UNPTR_1をBQ_AGEN
_UNPTR_1と同じ値にインクリメントし、それによりゲー
ト359を活動化し、BT1ポートを通じ分岐テスト回
路103に分岐キュー内の最も古い命令の命令テキスト
を提供する。2つの分岐トークンがパイプライン・クロ
ックの同一サイクルにおいて活動状態であれば、上述し
た2つのステップの処理が、分岐キュー内の次に古い命
令に対しても実行され、ゲート361及び362を介
し、AGEN2及びBT2ポートを通じて次段に転送さ
れる。
【0100】アドレス・レジスタ355の出力が最初に
使用可能となると、BQ_BT_UNPTR_1がマルチプレクサ3
40、342、343及び344に対し、それぞれ分岐
命令テキスト、分岐命令アドレス、分岐目的アドレス、
及びポインタが指示する分岐キュー・レジスタ配列のP
FETCHビットをアンロードさせる。これにより分岐
キュー内に記憶されるBTAが比較器363に提供さ
れ、比較器は分岐キュー内のBTA値を、今計算された
値と比較する。これらの値が不一致の場合、比較器の出
力は活動化され、分岐が行われる場合に今計算されたB
TAが使用されるべきことを示す。比較器364も同様
に、分岐目的アドレス・レジスタ357の値を、分岐キ
ューに存在する次に古い分岐目的アドレスと比較する。
【0101】分岐キュー内の最も古い分岐命令がデキュ
ーされると、そのアドレスはマルチプレクサ342を通
じて加算器345に供給される。加算器345はまた、
最も古い分岐命令の命令テキストから命令長コードを受
け取り、分岐が実施されない場合に使用される次の順次
アドレスを生成する。加算器346も同様に、分岐キュ
ー内の次に古い分岐命令が最も古い命令と共にデキュー
されると、それに対応する次の順次アドレスを計算す
る。
【0102】分岐テスト 図10、図11及び以降の説明は、第2の実施例に基づ
く分岐テストに関する。しかしながら、当業者はここで
述べられる概念は、第1の実施例においても、簡単な変
更により応用可能であることが理解されよう。
【0103】図10において、分岐テスト回路103は
最も古い分岐命令の分岐条件をテストする第1の分岐テ
スト機構(BT1)103aを含む。もしも、2つのレ
ジスタ配列が同時に分岐からアンロードされると、第2
の分岐テスト機構(BT2)103bが2番目に古いデ
キュー命令の分岐条件をテストする。各場合とも、分岐
テストは、分岐命令テキスト、PFETCHビット及び
分岐目的アドレス比較の結果と共に、条件コード(C
C)及び実行ユニットからの分岐テスト結果の提供を要
求する。各分岐テスト機構は2つの信号を提供する。第
1の信号(BTFAIL)は、予測された分岐結果が実際の結
果と一致するかどうかを示し、第2の信号(TAKEN)
は、実行ユニットの状態に基づき、分岐が実施されるか
どうかを示す。例えば、BT_FAIL_1 信号が活動状態であ
れば、分岐の予測結果は不正であり、TAKEN_1 信号は分
岐テストの実際の結果が実施か或いは非実施かを示す。
好適には、分岐が実施される場合は、TAKEN信号は
活動状態であり、分岐が実施されない場合は、この信号
は非活動状態である。2つのデキュー分岐命令の内の次
に古い命令のための分岐テスト機構103bは、BT_FAI
L_2及びTAKEN_2信号を提供し、これらの信号は分岐テス
ト機構103aにより出力される信号と同様にして規定
される。
【0104】“first-to-fail” (最初の予測ミス検
出)回路368は分岐テスト・ユニット103の出力を
受け、BT FAIL 信号を検査する。どちらかの信号が活動
状態であると、回路368はREFETCH信号を活動
化する。更に、回路368は2つの分岐命令の内のどち
らが最初に不正に予測されたかを決定する。この点に関
し、単一の分岐命令だけがデキューされ、回路368が
BT FAIL を検出すると、その命令が“first-to-fail”
と見なされる。2つの分岐命令がデキューされ、BT_FAI
L_1 が活動状態であれば、デキュー命令対の最も古い分
岐命令が予測ミスされたものと見なされ、一方、BT_FAI
L_1が非活動状態であり、BT_FAIL_2が活動状態の場合
は、2番目の命令が最初に予測ミスされたものと見なさ
れる。
【0105】“first-to-fail” 回路368は、現テス
トの結果、最初に予測ミスされたと見なされる分岐命令
に従い、BT_IA_SEL信号を規定する。BT_FAIL_1が活動状
態であり、TAKEN_1が活動状態であれば、BT_IA_
SEL信号は分岐目的アドレス・レジスタ355の内容を
選択するように規定され、TAKEN_1が非活動状態
であれば、加算器345の出力が選択される。また、2
つの分岐命令がテストされ、その結果BT_FAIL_
2だけが活動状態であり、その時TAKEN_2が活動
状態であれば、BT_IA_SEL 信号はレジスタ357の内容
を選択するように規定され、TAKEN_2が非活動状
態であれば、加算器346の出力が選択される。このよ
うに、分岐テスト命令アドレス・マルチプレクサ(BT_I
A_MUX)362はBT_IA_SEL 信号により規定され、最初
に予測ミスされた分岐命令に対し、分岐が実施されない
ものと予測された場合には分岐目的アドレスを、また分
岐が実施されると予測された場合には順次アドレスを、
それぞれ選択する。
【0106】ここで図7の予測機構において、REFE
TCH信号を活動化する効果について考察する。REF
ETCH信号が活動化されると、IAMUX317はマ
ルチプレクサ362の出力を選択するように規定され
る。活動状態のREFETCH信号はPFMUX318
にIAMUX317の出力を選択させ、その結果、前述
のBT_IA_MUX362により選択される再フェッチ・アドレス
が入力される。このアドレスはレジスタ97に保持され
る。更に、ORゲート321が再フェッチの活動化に応
じ、PFAR305及びBIAR308の内容を、PF
MUX318の出力として得られる再フェッチ・アドレ
ス値に置換する。
【0107】図11は、図10の参照番号103a及び
103bで示される機構において要求されるBT_FA
IL及びTAKEN信号を生成する、分岐テスト機構の
構造を表す論理ブロック図である。分岐テスト機構は命
令デコーダ400を含み、これは分岐命令テキストのオ
ペコードを、分岐命令の5クラスの内の1つに分析す
る。デコーダのオペレーションは、分岐命令がIBM Syst
em/370命令セットから得られるものと仮定する。この場
合、デコーダのBC、BCT、BXH及びBXLE出力
は、この命令セットにおける命令のニューモニックであ
る。デコーダは、他の全ての分岐命令は無条件に実行さ
れるものと仮定する。BC命令がデコードされると、命
令テキストのマスク部分がAND/OR(AO)回路4
02に提供され、402はこのマスクを条件コード(C
C)と比較する。マスクと条件コードが一致すると仮定
すると、回路402の出力が活動化され、命令がBCの
場合は、ANDゲート403の出力が活動化され、これ
によって分岐が実施されることを示す。命令がBCTと
デコードされる場合は、実行ユニットにより生成される
R=0分岐条件の反転がANDゲート404に活動化さ
れる。ANDゲート405はBXH命令を活動化し、実
行ユニットからのR>0分岐条件をテストする。一方、
ANDゲート406はBXLE命令条件を、R>0分岐
条件の反転に対してテストする。全ての無条件に実行さ
れる分岐は、デコーダ400によりUNCOND_TAKEN信号を
活動化する。ANDゲート403−406の何れかの出
力が活動状態であるか、或いは無条件に実施される分岐
が検出されると、ORゲート409の出力が活動化され
る。このゲートの出力の活動化は、指示される分岐がテ
ストされる分岐命令のために実施されねばならないこと
を示す。この出力は分岐テスト機構のTAKEN信号と
して提供される。排他的ORゲート410はORゲート
の出力を、テストされる分岐命令のためのPFETCH
信号と比較する。TAKENとPFETCH信号が不一
致の場合は、XORゲート410の出力が活動化され、
分岐に関する誤った結果が予測されたことを示し、再フ
ェッチが要求される。ANDゲート412は、分岐目的
アドレスがプリフェッチされた場合に(PFETCH信
号の活動化により示される)、プリフェッチ以後の条件
の変化により、分岐目的アドレスが変更されたかどうか
をテストする。この場合、関係する比較器の出力によ
り、ANDゲート412の出力において、分岐目的アド
レスの不一致が活動化される。ORゲート413は排他
的OR及びANDゲート410及び412の出力をゲー
トし、これらのどちらかが活動状態であれば、BT_F
AIL信号を生成する。この信号は信号線415上にこ
の機構のBT_FAIL信号として提供され、一方、信
号線416上のTAKEN信号はこの機構のTAKEN
信号として提供される。
【0108】BTBの更新 分岐目的を得るために再フェッチが要求されると、再フ
ェッチを生ずる分岐命令のためのBTB312への入力
が必要になる。この点に関し、その命令のための入力
は、フェッチされる分岐目的アドレス及び分岐命令アド
レスの最上位部を含む必要がある。この入力は分岐命令
アドレスの最下位部に相当するアドレスに記憶されねば
ならない。再フェッチが行われる時、オペレーションを
引き起こす分岐命令のアドレスは、図8のマルチプレク
サ342の第1或いは第2の出力を通じて使用可能とな
る。first-to-fail 分岐命令の命令テキストは、図7の
マルチプレクサ425により選択される。これはREF
ETCH信号により活動化され、制御回路427により
出力される選択信号に応じて選択する。回路427はBT
_FAIL_1 及び2信号とTAKEN_1及び2信号を組み
合わせ、マルチプレクサ342から前述のごとくfirst-
to-fail と判断される分岐命令を選択する。これに関
し、BT_FAIL_1及びTAKEN_1信号が同時オンであれば、2
つのデキューされる分岐命令の内の最も古い命令が再フ
ェッチを発生したことになり、そのアドレスがマルチプ
レクサ342の第1の出力から選択される。BT_FA
IL_1がオフで、BT_FAIL_2及びTAKEN
_2が同時オンであれば、マルチプレクサ342の第2
の出力からの命令アドレスが選択される。マルチプレク
サ425により選択される命令アドレスはBTB312
に提供され、このアドレスの最上位部はBIAh値用の
ポートに提供され、最下位部はマルチプレクサ313を
通じてBTB312のアドレス・ポートに提供される。
マルチプレクサ313はREFETCH信号が活動状態
である間は、この出力を選択する。分岐目的再フェッチ
の間に、アドレスされる入力のBTAフィールドがBI
ARの内容から提供され、現在アドレスされるBTロケ
ーションのBTAフィールドに配置される。BTB31
2は、実施される分岐のためのREFETCH信号の活
動化により、書き込み可能となる。
【0109】ポインタ・オペレーション 図13はパイプライン・クロックの11周期間のタイミ
ング図を示し、本発明による1つ或いは2つのキューに
入力される分岐命令の分岐条件のテストの様子を表す。
図13を説明するに際し、図11及び図12が参照され
る。図11は分岐テスト・ユニットの第1及び第2の部
分の両者において使用される分岐テスト機構を表す。し
かしながら、ユニットを正常に動作させるために、実施
される分岐テストの数に関してのみ表されている。ここ
で図11に関する前述の説明は、共通要素を完全に網羅
しているものと仮定すると、図11のデコード回路41
9が次に参照され、これは第2の分岐テスト機構内にの
み存在する。デコード回路419の入力はLAMT信号
である。これは2ビットの信号であり、‘01’或いは
‘10’とセットされる。前者は1つの分岐命令がデキ
ューされていることを示し、後者は2つの分岐命令がデ
キューされていることを示す。1分岐命令がデキューさ
れているものとすると、分岐テスト・ユニットの第2の
部分の動作は抑制される。一方、2分岐命令がデキュー
されると、分岐テスト・ユニットの第2の部分の動作は
活動化される。デコード回路419はLAMT=10の
時にその出力を活動化し、第2の部分を活動化する。こ
れによりゲート403−406が活動化される。付加的
なANDゲート420が第2の部分に提供され、デコー
ド・ユニット419の出力に応じて、命令のUNCON
D_TAKEN出力をゲートする。
【0110】図12は分岐命令が分岐キューに対して入
出力される様子を更に詳しく表したブロック図である。
BIR98における分岐命令のデコードは、デコーダ3
00の出力により示される。ANDゲート499はデコ
ーダ出力をREFETCH信号の反転と組み合わせる。
再フェッチ処理が生じない状態で分岐命令がBIR98
内で検出されると、ANDゲートの出力は分岐デコード
が有効であることを示す信号(BR_DEC_VALID)を活動化
する。この信号は分岐キュー・ロード・ポインタ回路3
50に提供される。同信号はまた、BIR98内の命令
テキストと共に、セレクト回路(SEL)500にも提
供される。分岐キュー・ロード・ポインタ回路350は
2ビットのレジスタとして構成され、ロードすべき次の
BQ入力を示す2進値(BQ_LPTR) を保持する。ゼロに
初期化されると、このポインタの値は各BQ入力のロー
ドと共にインクリメントする。ポインタ値はゼロを通じ
て循環し、唯一フリーBQレジスタ配列の可用性により
制限される。BQレジスタ配列の可用性は、対応するB
Q有効ビットの欠如により検出される。図12で示され
るように、各レジスタ配列は図8で示されるフィールド
に加え、有効ビット・フィールドVを有する。各入力が
エンキューされる時に、このフィールドのビットはセッ
トされ、また入力がデキューされる時には、このビット
はリセットされる。分岐キュー・ロード・ポインタ回路
350もまた、有効ビット・フィールド330a、33
1a、332a及び333aの状態をレジスタ配列から
受け取る必要がある。分岐命令がデコードされる時、ロ
ード・ポインタは最後に充填されたレジスタ配列から次
の配列へとインクリメントされる。BIRの内容を受け
取るレジスタ配列は、分岐キュー・ロード・ポインタの
2ビット出力信号(BQ_LPTR)により指示される。すな
わち、この信号がエンコードされて、命令テキストを受
け取るレジスタ配列を指示する。この選択はセレクト回
路500において従来通りに行われる。選択されるレジ
スタ配列のVフィールドは、ANDゲート499の出力
によりセレクト回路500を介して規定される。こうし
て命令テキストが次の分岐キュー・レジスタ配列に入力
され、有効ビットがセットされる。
【0111】有効ビット・フィールド330a、331
a、332a及び333aは、それぞれのセレクト回路
530、531、532及び533により制御される。
これらの回路の各々は2対1のマルチプレクサであり、
その状態は制御回路536により規定される。各々の回
路のデフォルト状態は、セレクト回路500からのVビ
ット出力に対応する。しかしながら、REFETCH信
号が活動化されているか、或いは2つの分岐キュー・ア
ンロード・ポインタBQ_BT_ULPT_1または2の一方により
指示され、レジスタ配列の内容が分岐テストのためにア
ンロードされていると、セレクタ入力はパイプライン・
クロックの1周期の間にハード的に結線される“ゼロ”
に接続される。これは再フェッチ・オペレーションの開
始の際に、分岐キュー入力を無効化し、またテストのた
めの分岐キュー入力のデキュー作用を、BIR98内の
デコードされた分岐命令のエンキュー作用と同期させ
る。
【0112】分岐キュー・ロード・ポインタ回路350
は、再フェッチ或いはプリフェッチ・オペレーションの
発生に際し、ゼロに初期化される。BQ_LPTRをイ
ンクリメントするロジックは表1に示す従来のブール形
式で与えられる。BIR98から命令がデコードされる
と、エンキューが達成され、前に分岐キューのところで
述べたように、完全な入力を形成する。分岐キュー・ロ
ード回路350はキューが充足されるまで、順次、使用
可能なBQ入力をロードする。ここで、この動作と並列
に、キューもまた分岐テストのためにアンロードされる
ことを述べておく。すなわち、入力のデキュー作用が行
われる。これにより、キューにおける位置が再ロードの
ために解放される(Vビットのリセットにより示され
る)。4つの分岐キュー・アンロード・ポインタ信号が
分岐キュー・アンロード・ポインタ352により生成さ
れる。各ポインタは2ビット信号で構成され、これらの
セットにより対応する番号の分岐キュー・レジスタ配列
が指定される。これらのポインタの内の2つ、BQ_AG_UL
PTR_1及び2は、図9に示すBQからBIマルチプレクサ
340のAGEN1及び2ポートを通じ、命令テキスト
をアンロードするために使用される。他の2つのアンロ
ード・ポインタ、BQ_BT_ULPTR_1及び2は、BIマルチプ
レクサ340のBT1及びBT2ポートを通じ、命令テ
キストをアンロードするために使用される。アンロード
・ポインタ352により出力される信号LAMTは、そ
れぞれアドレス生成及び分岐テストのためにデキューさ
れる分岐キュー入力の数を示す。この信号は2ビット値
であり、‘01’或いは‘10’とセットされる。前者
は1命令がデキューされることを示し、後者は2命令が
デキューされることを示す。信号LAMTは、アンロー
ド・ポインタ回路352の内部で生成される信号AMT
のラッチ信号を表す。この信号はパイプライン・クロッ
クの1周期分だけ遅延させるためにラッチされるもので
ある。
【0113】
【表1】
【0114】アンロード・ポインタ回路352は実行パ
イプラインにおける分岐トークンに応じて、アンロード
・ポインタ信号をインクリメントする。BCトークンは
ポインタのインクリメントのためにパイプラインのアド
レス生成ステージから提供され、BCL_AG及びBC
R_AGと表される。他の全ての分岐トークンはパイプ
ラインの実行ステージにおいて提供され、BRL_EX
及びBRR_EXと表される。アンロード・ポインタ回
路352はまた、REFETCH信号及びPIPELI
NE_CLOCK信号を受け取る。
【0115】BQ_BT_ULPTR_1ポインタは分
岐キュー内の最も古い命令を指示し、BQ_BT_UL
PTR_2信号は常に次に古い分岐キューの命令を示
す。各BQ_AG_ULPTRは対応するBQ_BT_
ULPTRに先行する1パイプライン・クロック周期で
更新されて命令テキストをアクセスし、従って、現在に
最も近い分岐目的アドレスが計算される。
【0116】BQアンロード・ポインタBQ_AG_U
LPTR_1及びBQ_BaQULPTR_1は2ビッ
トのレジスタとして構成される。ポインタBQ_AG_
ULPTR_2及びBQ_BT_ULPTR_2は対応
するレジスタ・ポインタからデコードされる。全てのポ
インタは2進値を保持し、この値はBIマルチプレクサ
340の適切なAGEN及びBT出力にゲートされる分
岐キュー入力を示す。AGアンロード・ポインタは絶え
ず分岐目的アドレス生成機構に分岐命令テキストを提供
する。2つの分岐目的アドレスの計算結果は対応するA
GEN_ARレジスタ355及び357に、パイプライ
ン・クロックの終了時にラッチされる。続くパイプライ
ン・クロック周期において、BQ_AG_ULPTR値
はデキューされる分岐命令の数だけインクリメントされ
る。
【0117】2つのBTアンロード・ポインタはAGア
ンロード・ポインタの後段に存在する1入力のポインタ
である。BTポインタはAGENポインタを更新するこ
とにより生成される結果を使用して、分岐方向のテスト
を達成する。AGENポインタと同様、BTポインタ
は、分岐トークンの制御により、各分岐テストの完了と
共に進められる。
【0118】分岐キュー・アンロード・ポインタ有限ス
テート・マシンの内部ロジックを表2及び表3に示す。
これはよく知られるブール形式である。ブール値AG_
INCR_AMT(0:1)はPIPELINE_CL
OCKによりラッチされて、LAMTとなる。
【0119】
【表2】
【0120】
【表3】
【0121】図12で示すように、AGENアンロード
・ポインタ及びAMT信号はBIマルチプレクサに供給
されて、AGEN出力を制御する。こうして、現パイプ
ライン・クロック周期の間に、AGENアンロード・ポ
インタにより指示されるレジスタ配列が、マルチプレク
サ340のAGEN1出力を通じて提供される。AMT
=10の場合、AGENアンロード・ポインタ2により
指示されるレジスタ内の命令テキストが、マルチプレク
サ340のAGEN2出力を通じて供給される。マルチ
プレクサ340のBT出力は同様にして、BTアンロー
ド・ポインタ1及び2及びLAMT信号の値により制御
される。
【0122】制御ロジック536は、Vビット、及びB
Tアンロード・ポインタ1により指示されるレジスタ配
列をリセットすることにより、BTアンロード・ポイン
タの更新及びLAMT信号に応じる。LAMT=0の場
合、BTアンロード・ポインタ2により指示されるレジ
スタ配列のVビットもまたリセットされる。
【0123】分岐処理ユニットのオペレーション 図13は11パイプライン・クロック周期の間の分岐処
理ユニット14の動作のタイミング図を示す。クロック
周期1では、フェッチが発生するものと仮定し、3つの
連続する分岐命令を命令フェッチ及び発行ユニットにフ
ェッチする。最初の分岐命令、Br a、は直ちに分岐
処理ユニットに供給され、BIR98 内にラッチされ
る。同時にCIRマルチプレクサがこの命令をCIRL
20に供給する。続く周期、すなわちサイクル周期2で
は、この分岐命令は実行パイプライン内のデコード回路
70及び分岐処理ユニット内のデコード回路300によ
りデコードされる。分岐デコードは“BD”で示されて
いる。ここで分岐命令は単一サイクルのマイクロ命令シ
ーケンスを生成するものと仮定すると、このサイクルに
おけるMCSの出力時にEND_OPビットが使用可能
となり、サイクル周期3において、AGENラッチ74
にBRLトークンが入力される(これはBR_AGで示
される)。最初の分岐命令に続いて、2番目の分岐命
令、Br b、 がサイクル周期2においてCIRL及び
BIR内に登録され、サイクル周期3において70及び
300でデコードされる。サイクル周期3においては、
3番目の分岐命令BC instrがCIRL20及びBIR
98に登録され、サイクル周期4において70及び30
0でデコードされる。
【0124】サイクル周期4では、分岐命令、Br
a、のBRLトークンが、 図13のBR_EXのライ
ンにより示されるように、パイプラインの実行ステージ
に進められる。これによりDEQUE_AG_ULPT
R信号が活動化される。更に、実行パイプラインの実行
ステージに1つのBRトークンしか存在せず、アドレス
生成ステージにはBCトークンが存在しないために、A
G_INCR_AMT信号が‘01’にセットされる。
サイクル周期5では、AGENアンロード・ポインタは
両者共に1だけインクリメントされ、一方で、DEQU
E_BT_ULPTR信号が活動化される。LAMTは
‘01’にセットされるため、第1の分岐キュー・レジ
スタ配列の内容だけが、マルチプレクサ340のBT1
を通じて分岐テスト回路に提供される。
【0125】パイプライン・クロックの周期5では、分
岐命令、BR b、のBR トークンが実行パイプライン
の実行ステージに達し、一方、BC命令のBCトークン
はパイプラインのアドレス生成ステージに達する。この
時点においては、DEQUE_AG_ULPTR信号は
まだ活動状態であり、AG_INCR_AMT信号は
‘10’にセットされる。これにより分岐キューからの
分岐命令 Br b及びBC命令のデキューが、クロック
周期4の間に、BIマルチプレクサ340のAGEN1
及びAGEN2出力を通じて発生する。クロック周期5
では、AGENアンロード・ポインタは両者共にデジタ
ル値(10)によりインクリメントされ、一方、DEQ
UE_BT_ULPTR信号はセット状態を維持する。
その結果、キュー位置‘00’及び‘01’の分岐命令
情報が、サイクル周期6において、分岐テストのために
デキューされる。サイクル周期7では、BTアンロード
・ポインタはそれぞれデジタル値‘10’により更新さ
れる。
【0126】ここで図13のEND_OPの活動化は、
分岐命令がキュー内に留まるパイプライン・クロック周
期の長さを決定することを述べておく。分岐命令が2マ
イクロ命令シーケンスでデコードされると、END_O
Pビットはその分岐命令がデコードされる1周期後に発
生する。同時に、命令のトークンが1クロック周期分遅
延され、キューにおける時間を2クロック周期引き延ば
す。
【0127】図13は更に、BC命令のデコードの結果
生ずる2つの分岐命令、Br d及びBr eのフェッチ
を示す。このフェッチはクロック周期5で発生し、分岐
命令Br dはクロック周期6でデコードされ、クロッ
ク周期7においてはキュー上で待機し、クロック周期8
でアドレス生成のためにデキューされ、クロック周期9
で分岐テストのためにデキューされる。分岐命令Br
eは分岐命令Brdから1クロック周期だけ遅延され、
同様のシーケンスを示す。
【0128】
【発明の効果】以上説明したように、本発明によれば、
多重実行パイプラインを有するデジタル・コンピュータ
における並列性を増進することができる。
【図面の簡単な説明】
【図1】多重パイプライン、スケーラブル複合命令セッ
トマシン(SCISM)のブロック図である。
【図2】複合情報に複合命令を提供するための2つのア
レンジメントを示す複合命令フォーマット図である。
【図3】モデル命令トレースにおけるブランチ命令の統
計を示す図である。
【図4】図1のSCISMアーキテクチャにおける命令
フェッチ及び発行ユニット及び分岐処理ユニットの一般
的ブロック図である。
【図5】分岐処理ユニットの第1の実施例の更に詳細な
ブロック図である。
【図6】分岐命令セットの3つの予測分類を示す表であ
る。
【図7】本発明による分岐処理ユニットの第2の実施例
を表すブロック図である。
【図8】本発明による分岐処理ユニットの第2の実施例
を表すブロック図である。
【図9】本発明による分岐処理ユニットの第2の実施例
を表すブロック図である。
【図10】本発明による分岐処理ユニットの第2の実施
例を表すブロック図である。
【図11】本発明による分岐処理ユニットの第2の実施
例を表すブロック図である。
【図12】本発明による分岐処理ユニットの第2の実施
例を表すブロック図である。
【図13】本発明のオペレーションのタイミング図であ
る。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トーマス・レオ・ジェレマイア アメリカ合衆国ニューヨーク州、エンドウ ェル、リッキー・ドライブ 2926番地 (72)発明者 スタマティム・ヴァシリアディス アメリカ合衆国ニューヨーク州、ヴェスタ ル、ヴェスタル・ドライブ 717番地 (72)発明者 フィリップ・ジーン・ウィリアムズ アメリカ合衆国ニューヨーク州、ヴェスタ ル、トレイシー・クリーク・ロード、ボッ クス75 (番地なし) (56)参考文献 特開 昭62−221036(JP,A)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】実行される命令を提供する命令ソース、命
    令ストリームを実行する実行パイプライン、前記実行パ
    イプラインに接続され命令の実行結果を示す条件信号を
    提供する条件決定手段、及び分岐命令処理をする結合装
    置を含むデジタル・コンピュータにおいて、 前記結合装置は、 前記命令ソース及び前記実行パイプラインに接続され、
    実行される命令ストリームを提供する命令発行手段と、 前記命令ストリームの現行の命令シーケンスの全ての命
    令テキストを検索し、前記命令シーケンスから全ての分
    岐命令を検出し、前記テキストと前記検出された分岐命
    令の各々のロケーションを決定し、該命令シーケンスが
    前記実行パイプラインに読み出される前に該命令シーケ
    ンスから前記実行パイプラインに実行を要求しない前記
    検出された分岐命令を移動し、分岐ヒストリ・キャッシ
    ュに分岐するアドレスとして分岐命令ロケーションを使
    用することによって分岐が得られるかどうかをデコード
    して予測し、前記予測によって必要な取り出し又は事前
    取り出しを初期化し、前記実行パイプラインで実行され
    る前記命令シーケンスの他の命令と実質的に並列化され
    複数の前記移動された分岐命令を同時に実行する分岐命
    令処理手段と、 を具備する、 デジタル・コンピュータ。
  2. 【請求項2】前記デジタル・コンピュータは、更に、前
    記命令の各々に対する複合情報を生成する複合手段を含
    み、前記複合情報は命令が他の命令と並列に実行される
    かどうかを示し、前記複合手段は前記分岐命令の各々に
    対する前記複合情報を規定して、前記分岐命令の実行の
    結果生ずる予測命令シーケンスを指示し、 前記結合装置は、前記分岐命令処理手段に含まれ、前記
    命令ソースに接続される予測手段を含み、該予測手段
    は、その分岐命令の実行により目的シーケンスに分岐す
    る命令シーケンスが発生するかを示す複合情報に応じ
    て、命令の目的シーケンスを前記命令発行手段にフェッ
    チする、 請求項1記載のデジタル・コンピュータ。
  3. 【請求項3】前記命令ソースは命令識別信号に応じて命
    令を提供し、 前記分岐命令処理手段は、 前記命令発行手段に接続され、命令ストリーム内の前記
    各分岐命令に対し、該分岐命令の実行予測結果を示す予
    測信号を生成する手段と、 前記予測手段及び前記命令発行手段に接続され、前記分
    岐命令及び予測信号を待機する手段と、 予測信号及び命令ストリームに応じ、予測結果として実
    行される命令を識別する識別信号を生成する手段と、 前記待機手段及び前記予測手段に接続され、前記待機さ
    れる分岐命令の1つを実行し、該分岐命令の実行により
    生成される結果が、分岐命令と共に待機される予測信号
    により示される結果が不正であることを示す場合に、識
    別信号を変更するテスト手段と、 を具備する、 請求項1記載のデジタル・コンピュータ。
  4. 【請求項4】フェッチ・アドレス信号に応じ該フェッチ
    ・アドレス信号により識別される命令を提供する命令ソ
    ース、命令ストリームを実行する実行パイプライン、該
    実行パイプラインに接続され命令の実行結果を示す条件
    信号を提供する条件手段、及び前記命令ソース及び前記
    実行パイプラインに接続され、フェッチ・アドレス信号
    シーケンスを前記命令ソースに提供し、該フェッチ・ア
    ドレス信号シーケンスに応じ前記実行パイプラインに前
    記命令ソースにより提供される前記命令ストリームの命
    令シーケンスを結合する命令シーケンス手段を含むデジ
    タル・コンピュータにおいて、前記実行パイプラインに
    よる命令実行と並列に分岐命令を実行する方法であっ
    て、 (a)命令シーケンスにおける前記分岐命令の全てを検
    出するステップと、 (b)前記実行パイプラインで実行要求のない前記検出
    された分岐命令を移動するステップと、 (c)前記移動された分岐命令の各々に対する予測結果
    を示す予測信号を生成するステップと、 (d)前記分岐命令の1つに対する予測信号に応じ、予
    測信号の条件によって示される予測結果に相当する予測
    シーケンスにフェッチ・アドレス信号を規定するステッ
    プと、 (e)実行パイプラインにおける他の命令の実行に同期
    して、命令シーケンス手段における複数の前記移動され
    た分岐命令を同時に実行し、条件信号に応じて実際の結
    果を決定するステップと、 (f)複数の各分岐命令の実際の結果を、その分岐命令
    の予測信号によって示される予測結果と比較するステッ
    プと、 (g)複数の各分岐命令の内の1つに対する予測結果が
    正しくない場合には、そのアドレス信号をその分岐命令
    の正しい結果に相当する再フェッチ・シーケンスに規定
    するステップと、 正しい場合は、 (h)フェッチ・アドレスのシーケンスを継続し、ステ
    ップ(a)乃至(g)を実施するステップとを含む前記
    方法。
  5. 【請求項5】前記ステップ(c)において更に、 前記分岐命令に対する命令アドレスを生成し、 前記分岐命令に対する分岐目標アドレスを生成し、 前記分岐命令、前記分岐命令アドレス、前記分岐目標ア
    ドレス、及び前記分岐命令に対する前記予測信号を待機
    させ、 前記ステップ(d)において更に、実行に先立って、複
    数の分岐命令を解放することを含む請求項4記載の方
    法。
  6. 【請求項6】前記ステップ(e)以前に、命令シーケン
    ス内の前記分岐命令の各々に対するトークンを生成し、
    生成されるトークンを実行パイプラインに伝搬し、 前記ステップ(e)が所定のパイプライン・ステージに
    伝搬するトークンに応じて実行されることを特徴とする
    請求項4記載の方法。
  7. 【請求項7】フェッチ・アドレス信号に応じ、該フェッ
    チ・アドレス信号により識別される命令を提供する命令
    ソース、命令ストリームを実行する実行パイプライン、
    該実行パイプラインに接続され命令の実行結果を示す条
    件信号を提供する条件手段、及び前記命令ソース及び前
    記実行パイプラインに接続され、フェッチ・アドレス信
    号シーケンスを前記命令ソースに提供し、該フェッチ・
    アドレス信号シーケンスに応じ、前記実行パイプライン
    に前記命令ソースにより提供される命令シーケンスを結
    合する命令シーケンス手段を含むデジタル・コンピュー
    タにおいて、前記実行パイプラインによる命令実行と並
    列に分岐命令を実行する方法であって、 (a)前記分岐命令の各々をデコードすることによって
    命令シーケンスにおける全ての前記分岐命令を検出し、
    前記デコードされた分岐命令の各々に対して予測信号を
    発し、前記デコードされた分岐命令に対して予測結果を
    示すステップと、 (b)実行パイプラインで実行要求のない、前記命令の
    直前の命令の実行によって生成された条件を単にテスト
    する前記検出された分岐命令を前記命令シーケンスから
    移動するステップと、 (c)前記移動された分岐命令に対する予測信号に応
    じ、予測信号により示される予測結果に相当する予測シ
    ーケンスにフェッチ・アドレス信号を規定するステップ
    と、 (d)実行パイプラインにおける前記命令シーケンスの
    他の命令の実行に同期して、分岐命令による条件信号の
    テストにより少なくとも2つ以上の前記移動された分岐
    命令を同時に実行し、その分岐命令の実際の結果を決定
    するステップと、 (e)分岐命令の実際の結果を、その分岐命令の予測信
    号により示される予測結果と比較するステップと、 (f)予測結果が正しくない場合には、そのアドレス信
    号をその分岐命令の正しい結果に相当する再フェッチ・
    シーケンスに規定するステップと、 正しい場合は、 (g)フェッチ・アドレスのシーケンスを継続し、ステ
    ップ(a)乃至(f)を実施するステップと、 を含む前記方法。
  8. 【請求項8】前記ステップ(c)において更に、 前記分岐命令に対する命令アドレスを生成し、 前記分岐命令に対する分岐目標アドレスを生成し、 前記分岐命令、前記分岐命令アドレス、前記分岐目標ア
    ドレス、及び前記分岐命令に対する前記予測信号を待機
    させ、 前記ステップ(d)において、更に、実行に先立って、
    複数の分岐命令を解放することを含む請求項7記載の方
    法。
  9. 【請求項9】前記ステップ(d)以前に、命令シーケン
    ス内の前記各分岐命令に対するトークンを生成し、生成
    されたトークンを実行パイプラインに伝搬し、 前記ステップ(d)が前記実行パイプライン内で予め決
    められたパイプライン・ステージに伝搬するトークンに
    応じて実行される請求項7記載の方法。
JP4092541A 1991-04-18 1992-04-13 デジタル・コンピュータ及び分岐命令実行方法 Expired - Lifetime JPH0785223B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US687309 1991-04-18
US07/687,309 US5287467A (en) 1991-04-18 1991-04-18 Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit

Publications (2)

Publication Number Publication Date
JPH05143336A JPH05143336A (ja) 1993-06-11
JPH0785223B2 true JPH0785223B2 (ja) 1995-09-13

Family

ID=24759941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4092541A Expired - Lifetime JPH0785223B2 (ja) 1991-04-18 1992-04-13 デジタル・コンピュータ及び分岐命令実行方法

Country Status (4)

Country Link
US (2) US5287467A (ja)
EP (1) EP0509245B1 (ja)
JP (1) JPH0785223B2 (ja)
DE (1) DE69229198T2 (ja)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0498067A2 (en) * 1991-02-08 1992-08-12 International Business Machines Corporation Microcode generation for a scalable compound instruction set machine
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
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
EP0636256B1 (en) * 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) * 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
JPH0659972A (ja) * 1992-08-05 1994-03-04 Oki Electric Ind Co Ltd メモリ制御装置
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5784604A (en) * 1992-10-09 1998-07-21 International Business Machines Corporation Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
US5463746A (en) * 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
JPH06242951A (ja) * 1992-12-22 1994-09-02 Toshiba Corp キャッシュメモリシステム
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
EP1107111A3 (en) * 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
US5696958A (en) * 1993-01-11 1997-12-09 Silicon Graphics, Inc. Method and apparatus for reducing delays following the execution of a branch instruction in an instruction pipeline
JP3182591B2 (ja) * 1993-01-20 2001-07-03 株式会社日立製作所 マイクロプロセッサ
US5490265A (en) * 1993-04-14 1996-02-06 Intel Corporation Late cancel method and apparatus for a high performance microprocessor system
JPH0764788A (ja) * 1993-06-14 1995-03-10 Mitsubishi Electric Corp マイクロコンピュータ
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 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH07114473A (ja) * 1993-10-19 1995-05-02 Fujitsu Ltd コンパイラの命令列最適化方法
EP1186995B1 (en) * 1993-11-05 2003-09-03 Intergraph Corporation Instruction memory with associative cross-bar switch
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US5680565A (en) * 1993-12-30 1997-10-21 Intel Corporation Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
US5687338A (en) * 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
US5542109A (en) * 1994-08-31 1996-07-30 Exponential Technology, Inc. Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5682533A (en) * 1994-09-27 1997-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Updating software within a telecommunications switch without interrupting existing communication and neither moving nor converting data
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5860096A (en) * 1994-10-17 1999-01-12 Hewlett-Packard Company Multi-level instruction cache for a computer
JP3569014B2 (ja) * 1994-11-25 2004-09-22 富士通株式会社 マルチコンテキストをサポートするプロセッサおよび処理方法
US5761475A (en) * 1994-12-15 1998-06-02 Sun Microsystems, Inc. Computer processor having a register file with reduced read and/or write port bandwidth
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
WO1996025705A1 (en) * 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
EP0741356A1 (en) * 1995-05-05 1996-11-06 Rockwell International Corporation Cache architecture and method of operation
US5704053A (en) * 1995-05-18 1997-12-30 Hewlett-Packard Company Efficient explicit data prefetching analysis and code generation in a low-level optimizer for inserting prefetch instructions into loops of applications
US5649178A (en) * 1995-06-07 1997-07-15 International Business Machines, Corporation Apparatus and method for storing and initializing branch prediction with selective information transfer
US6604190B1 (en) * 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
US5802340A (en) * 1995-08-22 1998-09-01 International Business Machines Corporation Method and system of executing speculative store instructions in a parallel processing computer system
US5826071A (en) * 1995-08-31 1998-10-20 Advanced Micro Devices, Inc. Parallel mask decoder and method for generating said mask
JP3717212B2 (ja) 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
US5611063A (en) * 1996-02-06 1997-03-11 International Business Machines Corporation Method for executing speculative load instructions in high-performance processors
US6055621A (en) * 1996-02-12 2000-04-25 International Business Machines Corporation Touch history table
US5829031A (en) * 1996-02-23 1998-10-27 Advanced Micro Devices, Inc. Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5761515A (en) * 1996-03-14 1998-06-02 International Business Machines Corporation Branch on cache hit/miss for compiler-assisted miss delay tolerance
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US5923896A (en) * 1996-03-15 1999-07-13 Adaptec, Inc. Method for sequencing execution of I/O command blocks in a chain structure by setting hold-off flags and configuring a counter in each I/O command block
US5768621A (en) * 1996-03-15 1998-06-16 Adaptec, Inc. Chain manager for use in executing a chain of I/O command blocks
US5797034A (en) * 1996-03-15 1998-08-18 Adaptec, Inc. Method for specifying execution of only one of a pair of I/O command blocks in a chain structure
US5850567A (en) * 1996-03-15 1998-12-15 Adaptec, Inc. Method for specifying concurrent execution of a string of I/O command blocks in a chain structure
US5758187A (en) * 1996-03-15 1998-05-26 Adaptec, Inc. Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure
US5892969A (en) * 1996-03-15 1999-04-06 Adaptec, Inc. Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US5983355A (en) * 1996-05-20 1999-11-09 National Semiconductor Corporation Power conservation method and apparatus activated by detecting specific fixed interrupt signals indicative of system inactivity and excluding prefetched signals
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
KR100445054B1 (ko) * 1996-06-29 2004-11-02 주식회사 하이닉스반도체 마이크로프로세서의브랜치처리를위한방법
US5893930A (en) * 1996-07-12 1999-04-13 International Business Machines Corporation Predictive translation of a data address utilizing sets of associative entries stored consecutively in a translation lookaside buffer
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
WO1998020415A1 (en) * 1996-11-04 1998-05-14 Philips Electronics N.V. Processing device, reads instructions in memory
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
EP0855645A3 (en) * 1996-12-31 2000-05-24 Texas Instruments Incorporated System and method for speculative execution of instructions with data prefetch
US6216219B1 (en) * 1996-12-31 2001-04-10 Texas Instruments Incorporated Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US5822790A (en) * 1997-02-07 1998-10-13 Sun Microsystems, Inc. Voting data prefetch engine
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US5822576A (en) * 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
US5987599A (en) * 1997-03-28 1999-11-16 Intel Corporation Target instructions prefetch cache
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6490658B1 (en) * 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6164840A (en) * 1997-06-24 2000-12-26 Sun Microsystems, Inc. Ensuring consistency of an instruction cache with a store cache check and an execution blocking flush instruction in an instruction queue
US6058472A (en) * 1997-06-25 2000-05-02 Sun Microsystems, Inc. Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine
US6047351A (en) * 1997-12-12 2000-04-04 Scenix Semiconductor, Inc. Jitter free instruction execution
US5954814A (en) * 1997-12-19 1999-09-21 Intel Corporation System for using a branch prediction unit to achieve serialization by forcing a branch misprediction to flush a pipeline
US6012138A (en) * 1997-12-19 2000-01-04 Lsi Logic Corporation Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US6044456A (en) * 1998-01-05 2000-03-28 Intel Corporation Electronic system and method for maintaining synchronization of multiple front-end pipelines
US6035390A (en) * 1998-01-12 2000-03-07 International Business Machines Corporation Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
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
US6266764B1 (en) * 1998-03-17 2001-07-24 Matsushita Electric Industrial Co., Ltd. Program controller for switching between first program and second program
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6405307B1 (en) * 1998-06-02 2002-06-11 Intel Corporation Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline
US6260116B1 (en) * 1998-07-01 2001-07-10 International Business Machines Corporation System and method for prefetching data
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
WO2000029942A1 (en) * 1998-11-16 2000-05-25 Telefonaktiebolaget Lm Ericsson Concurrent processing for event-based systems
SE9901146D0 (sv) 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9803901D0 (sv) * 1998-11-16 1998-11-16 Ericsson Telefon Ab L M a device for a service network
SE9901145D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9902373D0 (sv) * 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
US6442681B1 (en) * 1998-12-28 2002-08-27 Bull Hn Information Systems Inc. Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions
US6311260B1 (en) 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6275918B1 (en) * 1999-03-16 2001-08-14 International Business Machines Corporation Obtaining load target operand pre-fetch address from history table information upon incremented number of access indicator threshold
US6523109B1 (en) * 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
WO2001042927A1 (fr) * 1999-12-09 2001-06-14 Fujitsu Limited Dispositif d'acces memoire et methode utilisant une table d'historique des traductions d'adresses
US6742112B1 (en) * 1999-12-29 2004-05-25 Intel Corporation Lookahead register value tracking
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US6871273B1 (en) * 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6718460B1 (en) * 2000-09-05 2004-04-06 Sun Microsystems, Inc. Mechanism for error handling in a computer system
SE0003398D0 (sv) * 2000-09-22 2000-09-22 Ericsson Telefon Ab L M Optimization of a pipelined processor system
US6662273B1 (en) 2000-09-29 2003-12-09 Intel Corporation Least critical used replacement with critical cache
US6782469B1 (en) 2000-09-29 2004-08-24 Intel Corporation Runtime critical load/data ordering
US6760816B1 (en) * 2000-09-29 2004-07-06 Intel Corporation Critical loads guided data prefetching
US6678796B1 (en) * 2000-10-03 2004-01-13 Sun Microsystems, Inc. System and method for scheduling memory instructions to provide adequate prefetch latency
US6918111B1 (en) * 2000-10-03 2005-07-12 Sun Microsystems, Inc. System and method for scheduling instructions to maximize outstanding prefetches and loads
US20020083309A1 (en) * 2000-12-21 2002-06-27 Sun Microsystems, Inc. Hardware spill/fill engine for register windows
US6907520B2 (en) * 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US8171266B2 (en) * 2001-08-02 2012-05-01 Hewlett-Packard Development Company, L.P. Look-ahead load pre-fetch in a processor
US7191430B2 (en) * 2001-09-24 2007-03-13 Hewlett-Packard Development Company, L.P. Providing instruction execution hints to a processor using break instructions
US20030084433A1 (en) * 2001-10-31 2003-05-01 Chi-Keung Luk Profile-guided stride prefetching
US7447877B2 (en) * 2002-06-13 2008-11-04 Intel Corporation Method and apparatus for converting memory instructions to prefetch operations during a thread switch window
US20040003019A1 (en) * 2002-06-28 2004-01-01 Sun Microsystems, Inc., A Delaware Corporation Process management for real time systems management controller
US20040103414A1 (en) * 2002-11-27 2004-05-27 Vomlehn David M. Method and apparatus for interprocess communications
US7000233B2 (en) 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7502725B2 (en) * 2004-04-29 2009-03-10 International Business Machines Corporation Method, system and computer program product for register management in a simulation environment
US20060047913A1 (en) * 2004-08-26 2006-03-02 International Business Machines Corporation Data prediction for address generation interlock resolution
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
WO2006026510A2 (en) 2004-08-30 2006-03-09 Texas Instruments Incorporated Methods and apparatus for branch prediction and processing of microprocessor instructions and the like
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US20060253677A1 (en) * 2005-05-04 2006-11-09 Arm Limited Data access prediction
US7552283B2 (en) * 2006-01-20 2009-06-23 Qualcomm Incorporated Efficient memory hierarchy management
US7617387B2 (en) * 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
US7788473B1 (en) * 2006-12-26 2010-08-31 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using the storage destination of a load operation
JP5100176B2 (ja) * 2007-03-29 2012-12-19 株式会社東芝 マルチプロセッサシステム
US7664932B2 (en) 2007-04-13 2010-02-16 Microsoft Corporation Scalable and configurable execution pipeline of handlers having policy information for selectively acting on payload
US8456450B2 (en) * 2007-06-28 2013-06-04 Apple Inc. Systems and methods for impedance stabilization
US20090055628A1 (en) * 2007-08-21 2009-02-26 International Business Machine Corporation Methods and computer program products for reducing load-hit-store delays by assigning memory fetch units to candidate variables
US8433855B2 (en) * 2008-02-15 2013-04-30 International Business Machines Corporation Serializing translation lookaside buffer access around address translation parameter modification
US20100049947A1 (en) * 2008-08-22 2010-02-25 Faraday Technology Corp. Processor and early-load method thereof
KR101579589B1 (ko) * 2009-02-12 2015-12-22 삼성전자 주식회사 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법
CN102163144A (zh) * 2011-05-05 2011-08-24 浙江大学 嵌入式处理器的硬件数据预取方法
JP5861354B2 (ja) * 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9146739B2 (en) * 2012-06-14 2015-09-29 International Business Machines Corporation Branch prediction preloading
CN103514105A (zh) * 2012-06-15 2014-01-15 上海芯豪微电子有限公司 信息处理系统、信息处理方法及存储系统
US9304932B2 (en) 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
US9442725B2 (en) * 2013-08-21 2016-09-13 Airwatch Llc Branch trace compression
US11093401B2 (en) * 2014-03-11 2021-08-17 Ampere Computing Llc Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
US10289553B2 (en) * 2016-10-27 2019-05-14 International Business Machines Corporation Accelerator sharing
US10503507B2 (en) 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
US10817299B2 (en) * 2018-09-07 2020-10-27 Arm Limited Handling multiple control flow instructions
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11157285B2 (en) * 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor
US12008370B2 (en) * 2021-05-06 2024-06-11 Purdue Research Foundation Method for preventing security attacks during speculative execution
US11886883B2 (en) * 2021-08-26 2024-01-30 International Business Machines Corporation Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction
US11809874B2 (en) * 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3764988A (en) * 1971-03-01 1973-10-09 Hitachi Ltd Instruction processing device using advanced control system
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4604691A (en) * 1982-09-07 1986-08-05 Nippon Electric Co., Ltd. Data processing system having branch instruction prefetching performance
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
JPH0789319B2 (ja) * 1985-04-22 1995-09-27 株式会社日立製作所 デ−タ処理装置における先行制御装置
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
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
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5101344A (en) * 1988-01-28 1992-03-31 Motorola, Inc. Data processor having split level control store
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5210838A (en) * 1990-05-15 1993-05-11 Sun Microsystems, Inc. Method and apparatus for predicting the effective addresses of future memory load operations in a microprocessor

Also Published As

Publication number Publication date
EP0509245A3 (en) 1993-12-08
JPH05143336A (ja) 1993-06-11
DE69229198T2 (de) 1999-12-09
DE69229198D1 (de) 1999-06-24
EP0509245A2 (en) 1992-10-21
US5287467A (en) 1994-02-15
EP0509245B1 (en) 1999-05-19
US5377336A (en) 1994-12-27

Similar Documents

Publication Publication Date Title
JPH0785223B2 (ja) デジタル・コンピュータ及び分岐命令実行方法
US5442756A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US6647489B1 (en) Compare branch instruction pairing within a single integer pipeline
US6609194B1 (en) Apparatus for performing branch target address calculation based on branch type
US6009506A (en) Computer architecture capable of concurrent issuance and execution of general purpose multiple instructions
JP3599409B2 (ja) 分岐予測装置
US6009511A (en) Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US4777594A (en) Data processing apparatus and method employing instruction flow prediction
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
EP0939364A2 (en) Paired instruction processor branch recovery mechanism
EP0605872A1 (en) Method and system for supporting speculative execution of instructions
WO2000017746A1 (en) Mechanism for store to load forwarding
JPH0334024A (ja) 分岐予測の方法とそのための装置
EP2084602B1 (en) A system and method for using a working global history register
EP0653703A1 (en) Temporary pipeline register file for a superpipelined superscalar processor
EP3166015A1 (en) Fetch ahead branch target buffer
US4739470A (en) Data processing system
EP0094535B1 (en) Pipe-line data processing system
EP2461246B1 (en) Early conditional selection of an operand
JP2009524167A5 (ja)
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions