JP2596712B2 - 近接した分岐命令を含む命令の実行を管理するシステム及び方法 - Google Patents

近接した分岐命令を含む命令の実行を管理するシステム及び方法

Info

Publication number
JP2596712B2
JP2596712B2 JP6117056A JP11705694A JP2596712B2 JP 2596712 B2 JP2596712 B2 JP 2596712B2 JP 6117056 A JP6117056 A JP 6117056A JP 11705694 A JP11705694 A JP 11705694A JP 2596712 B2 JP2596712 B2 JP 2596712B2
Authority
JP
Japan
Prior art keywords
instruction
branch
buffer
target
processor
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
JP6117056A
Other languages
English (en)
Other versions
JPH0773104A (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 JPH0773104A publication Critical patent/JPH0773104A/ja
Application granted granted Critical
Publication of JP2596712B2 publication Critical patent/JP2596712B2/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

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】
【従来の技術】コンピュータ・アーキテクチャは一般に
プログラム実行の順次モデルを基本とし、プログラム内
の各命令はメモリからフェッチされて完全に実行され、
次の命令が同様に処理される以前に全ての結果がメモリ
に戻される。このモデルでは、実行される次の命令は、
通常、実行された命令の直後の命令に相当し、その実行
された命令に対し次に高いアドレスを有するメモリ内の
位置に記憶される。
【0003】次に続く位置と異なる位置は分岐命令によ
り指定され、これは典型的なプログラムではしばしば発
生する。次に実行される命令が分岐目標(ターゲット)
の場合、すなわち分岐命令内に指定される場合、分岐が
発生すると言われる。分岐が常に発生する場合、これは
無条件分岐と称される。それに対し条件分岐は、分岐命
令に遭遇する時に、先行する命令によりセットされるマ
シンの状態に依存して発生する。分岐が発生しない場
合、次の順次命令がフェッチされ実行される。分岐命令
は現行とは異なる実行プログラム内の同一パスへの制御
の条件付き転送を可能とする。
【0004】この順次モデルの単純な実施では、分岐命
令に関連する遅延は重要ではない。なぜなら、次の命令
が次の順次命令であるか、或いは分岐目標の命令である
かに関わらず、それをアクセスするために同じ方法が使
用されるからである。先行命令がまだ実行されている間
に1つの命令がフェッチされるオーバラップの実施で
は、連続する命令が実行される限り遅延は生じない。分
岐に遭遇すると、現在実行が完了されようとしている命
令に依存して、異なる目標命令が支持されて、フェッチ
された命令が捨てられなければならない可能性がある。
これは遅延をもたらす。最近の実施では、1つの命令が
フェッチされる間に、複数の命令が実行される。分岐遅
延内の同数のマシン・サイクルは、プログラムの実行に
対し要求される合計マシン・サイクルの大きな割合を占
める。
【0005】縮小命令セット・コンピュータ(RIS
C)では、マシン命令の大部分が単一サイクルだけの実
行を有する。これはキャッシュの重要性を増す。キャッ
シュは近い将来使用される可能性の最も高いデータまた
は命令を保持する小サイズ・メモリである。キャッシュ
は従来の主メモリに比較して、はるかに速いアクセス時
間を有し、キャッシュが要求される命令ストリームを有
効に保持する限り、高レートの命令実行の維持を支援す
る。命令ストリームのキャッシュ(I−キャッシュ)を
有するマシン内において分岐命令に遭遇する時、目標命
令がキャッシュ内において調達できない可能性がある。
要求される命令ストリームが主メモリからキャッシュに
ロードされる間、プロセッサはアイドル状態でいなけれ
ばならないために遅延が発生する。
【0006】IBM RISC System/6000(IBMの登録商
標)などのマシン構成の高性能性に寄与する重要な要因
は、別の分岐処理ユニットによる分岐の処理である。例
えば、Grohoski G.F.による"Machine Organization o
f the IBM RISC System/6000Processor" IBM Journal o
f Research and Development、vol.34、no.1、pp.37
-581(1990年1月)で述べられる機構は命令ストリ
ームを先取りし、分岐命令に実際に遭遇する以前に分岐
命令を検出し、分岐目標から命令をフェッチするために
使用される。分岐が条件付きの場合、順次ストリーム及
び目標ストリームの両方からの命令が別のバッファに保
持され、分岐条件の解析が遅れた場合にも、キャッシュ
・アクセスなしに適切なパスが実行される。
【0007】分岐条件が遅れて解析される時、順次スト
リームを含むバッファから目標ストリームを含むバッフ
ァへの切替えにより、遅延が生じる。この遅延は条件分
岐が実際にどちらのパスを実行するかを推測することに
より低減される。分岐の直後に実行される最初の命令が
別の分岐でない限り、推測が正しければ障害は発生しな
い。予測技術については、例えば米国特許第49910
80号などの文献に述べられている。
【0008】米国特許第4691277号で述べられる
ように、システム性能を向上するために分岐目標テーブ
ルすなわちBTTが使用される。BTTは分岐の目標で
ある命令を保持する。分岐が発生する時、常にテーブル
がチェックされ、"分岐先"または目標の命令がBTT内
に含まれるかどうかが確認される。肯定の場合、命令が
システム・メモリの代わりにBTTから実行ユニットに
供給される。BTTは命令キャッシュの代わりに使用さ
れる。このタイプのシステムは分岐に遭遇する時、あら
ゆる分岐目標命令をBTT内に配置する。これは命令キ
ャッシュの使用を排除するが、それによる結果的に長所
をも排除する。
【0009】分岐ユニットが命令キャッシュから適切な
命令ストリームをフェッチするまで、分岐の近接がマシ
ンを待機させる幾つかの状況が存在する。例えば、実行
される条件分岐が再度分岐に相当する目標を有する場
合、事前処理及び分岐予測が最初の分岐の目標命令スト
リームのプリフェッチを支援する。しかし、第2の分岐
の目標ストリームは間に合って使用可能にはならない。
これは "命令プリフェッチ・ミス" と呼ばれる。未解析
の条件分岐による遅延を低減するために分岐予測技術が
実施される場合、分岐の近接による命令プリフェッチ・
ミスが分岐遅延の主な要因となる。更に、単一サイクル
内で実行される命令の数が増加すると、この分岐遅延は
一層データ処理システムの全体性能を制限する。
【0010】
【発明が解決しようとする課題】本発明の目的は、デー
タ処理システムの全体システム性能を改良することであ
る。
【0011】本発明の別の目的は、プロセッサにより命
令が実行されるレートを改良することである。
【0012】本発明の更に別の目的は、命令キャッシュ
再ロードの間のプロセッサ・アイドル時間を最小化する
ことである。
【0013】
【課題を解決するための手段】本発明では、命令プリフ
ェッチ・ミスが発生する時、命令キャッシュ(I−キャ
ッシュ)から要求される可能性のある命令のグループを
記憶するために、分岐予測バッファ(BAB)と呼ばれ
る小バッファが使用される。好適な実施例では、このバ
ッファは32エントリ長であるが、集積回路設計におけ
るサイズ制限内の任意のサイズであって良い。プリフェ
ッチ・ミスが発生する時、目標アドレスに対応する命令
が使用可能かどうかを確認するために、BABがチェッ
クされる。これらが使用可能な場合、これらの命令が適
切なバッファにコピーされる。すなわち、分岐が既に解
析されている場合には順次バッファに、また分岐がまだ
解析されていない場合には目標バッファにコピーされ
る。目標アドレスに対応する命令が使用不能な場合、こ
れらの命令はI−キャッシュからフェッチされ、順次ま
たは目標バッファ及び選択的にBABに配置される。
【0014】BABのサイズを制限し、そのアクセス時
間を低減するために、BABは好適な実施例では32エ
ントリを有する直接マップ化バッファとして構成され、
各エントリは4つの隣接命令を記憶する。第1の命令の
アドレスもまた各エントリに記憶され、順次バッファに
コピーする以前に、所望の目標アドレスと比較される。
各エントリには有効ビットが組込まれ、現アドレス空間
に対しエントリが有効な場合に限り、論理1となる。
【0015】BABは目標レジスタ・ビットをハッシュ
することによりインデックスされる。有効命令アドレス
のビット30乃至31は常に論理0であるので、単純な
機構ではBABをインデックスするためにアドレスのビ
ット25乃至29を使用する。BABへの早期アクセス
が所望される場合、バッファはプリフェッチ・ミスを生
じた分岐の目標ではなく、その分岐のアドレスをハッシ
ュすることによりインデックスされる。
【0016】本発明の主要な特徴は、BABが選択的分
岐目標アドレスだけを保持する点である。以前に走査さ
れていない及び遅延なくプリフェッチされなかった分岐
目標アドレスだけが、BABに記憶される。これはBT
Tなどで知られる従来技術よりも、より小さなバッファ
・サイズを可能とし、より迅速なアクセス時間を達成す
る。
【0017】
【実施例】分岐予測バッファ(BAB)10は、実質的
には図1に示される構成のランダム・アクセス・メモリ
(RAM)である。これは1ワード/エントリ当たり1
61ビットを有する32エントリ・テーブルである。テ
ーブル内の各エントリは5ビットのデコーダを使用して
アクセスされる。各エントリ内の161ビットは有効ビ
ット12を含み、これが論理1の場合は対応するエント
リが有効であることを示し、論理0の場合には対応する
エントリが有効でないことを示す。残りの160ビット
は、それぞれが14、16、18、20及び22で示さ
れる5つの32ビット・ワードを含み、第1のワードは
アドレスであり、残りの4ワードは主メモリ内の前記ア
ドレスで始まる次の4つの隣接マシン命令のコピーであ
る。
【0018】図2はBAB10と残りの命令フェッチ機
構との関係を示し、単純化された形式で示されている。
詳細な形式については、本発明における従来技術として
参照されるGrohoski G.F.による"Machine Organizati
on of the IBM RISC System/6000 Processor" IBM Jour
nal of Research and Development、vol.34、no.1、p
p.37-58 (1990年1月)を参照されたい。最大4
命令を含む順次バッファ24及び最大4命令を含む目標
バッファ26が示される。目標バッファの内容を順次バ
ッファに転送するパス28、及びアドレスされるBAB
エントリの内容を順次バッファまたは目標バッファに転
送するパス30及び32が示される。更にI−キャッシ
ュ34が示され、これは順次バッファ、目標バッファ及
びBABへそれぞれ至るパス36、38及び40を有す
る。また命令ディスパッチ論理42と呼ばれる論理ブロ
ックが示され、これは順次バッファ24内の命令のイン
ターロック分析を実行し、分岐を探して順次バッファを
走査し、分岐を実行するための分岐予測、アドレス計算
及び分岐解析を実行し、命令を44にディスパッチし、
命令が固定小数点及び浮動小数点機能ユニットに対し準
備される。命令ディスパッチ論理はまた、命令をプリフ
ェッチするために、目標アドレス46をI−キャッシュ
34及びBAB10の両方に提供する。命令ディスパッ
チ論理は更にロードBAB信号49を生成する。この信
号はBABに目標命令ストリームがロードされるべきこ
とを示し、これについては図7を参照して詳細に述べら
れる。
【0019】命令ディスパッチ論理42の動作につい
て、図3乃至図6を参照しながら説明する。最初の分岐
を探して、順次バッファが50で走査される。これは非
分岐命令が命令ディスパッチ論理42により発行される
時にも実行される。順次バッファ内の次の命令が分岐で
ないと52で判断される場合、分岐に遭遇する以前に
は、少なくとも1命令が命令ディスパッチ論理により遅
延なしに発行されることが保証される。54で非分岐命
令が発行可能かどうかが判断される。肯定の場合、命令
が55で発行され、処理は50に戻り継続される。否定
の場合、命令発行が次のサイクルまで保留され(ブロッ
ク56)、次に処理は50で再開する。分岐命令が52
で見い出される場合は、処理は58に移行する。
【0020】ブロック52を参照して、順次バッファ内
の次の命令が分岐の場合、分岐が解析されたかどうか
(すなわちシステムが分岐が発生するか否かを知ってい
るかどうか)の判断が58で実行される。分岐が解析さ
れているか、無条件(これは無条件であるその性質その
ものから解析される)の場合、60で分岐が発生するか
否かが判断される。分岐が発生しない場合、62で分岐
が発行され、処理は50に戻り継続される。この特定の
過程(すなわち分岐が発生しない)における分岐の発行
または実行は、適切なバッファから分岐命令を除去し、
状況によってはレジスタを更新することを意味する。分
岐が60で発生する場合、64で分岐が以前に命令プリ
フェッチ論理により走査されたかどうかが判断される。
命令が以前のサイクルで走査された分岐の場合、目標命
令が目標バッファ内で使用可能であるはずである。この
場合、66で分岐が発行され、目標バッファが順次バッ
ファに転送される。処理は次に50に移行する。64で
分岐が以前に走査されていないと判断される場合、この
分岐の目標は目標バッファ26内で使用可能でない。こ
の時、命令がI−キャッシュから遅延を伴わずにプリフ
ェッチできないことを示す命令プリフェッチ・ミス信号
(図2の48)が68でアサートされる。なぜなら、こ
れはクリティカル・パスの実行中に発生するからであ
る。処理は次に図5の110に移行し、後述のように継
続される。
【0021】ブロック58に戻り、分岐がまだ解析され
ていない場合、分岐予測が70で実行され、分岐が発生
するか否かが推測または予測される。従来技術の所で述
べられたように、分岐予測は命令ストリームをプリフェ
ッチすることによりシステム性能を改良する。72で分
岐が発生すると予測されると、処理は図6に移行し、後
述されるように、分岐命令が以前に命令ディスパッチ論
理により走査されたかどうかが判断される。72で分岐
が発生しないと判断されると、74で目標命令がフェッ
チされたかどうかがチェックされる。肯定の場合、プリ
フェッチされた目標命令に対し実行されることは何も残
っておらず、次の順次命令を78で問い合わす。74で
目標命令がフェッチされていないと判断される場合、こ
れが76でBAB(目標命令がBABに含まれている場
合)またはI−キャッシュ(目標命令がBABに含まれ
ていない場合)から目標バッファにフェッチされる。目
標バッファは分岐予測が誤りで、必要とされる目標命令
が順次バッファ内に存在しない場合に必要とされる目標
命令を保持するために使用される。これは推測が誤りの
場合に、低速なI−キャッシュをアクセスする代わり
に、目標命令を実行ユニットに即時供給することにより
1サイクルを節約する。目標命令を目標バッファにフェ
ッチした後、順次バッファ内の次の命令が78でチェッ
クされる。79でそれが分岐命令と判断される場合、処
理は80で1サイクル遅延される。分岐命令でない場合
は、81で非分岐命令が発行可能かどうかがチェックさ
れる。命令が発行可能な場合、それが83で発行され、
処理は78に移行する。81で命令が発行できないと判
断される場合、処理は80で1サイクル遅延される。
【0022】ブロック80の遅延の後、分岐命令または
まだ発行されていない非分岐命令のいずれかに対応し
て、ディスパッチ論理が83で、ブロック52で検出さ
れたプリフェッチ分岐命令が解析されたかどうかを確認
する(順次命令が順次バッファから発行または実行され
ることを理解することにより、分岐が発生するか否かの
解析が可能となる)。分岐命令がまだ解析されていない
場合、78で順次バッファの走査が継続される。しかし
ながら、分岐が82で解析されている場合は、処理は図
4に移行する。
【0023】図4は、分岐命令が発生しないものと予測
され、分岐が遅れて解析される場合の命令プリフェッチ
論理を示す。120で分岐が実際に発生するかどうかが
判断される。分岐が発生しない場合(すなわち分岐予測
が正しかった場合)、目標バッファが122で廃棄され
る(なぜなら分岐が発生しないために、目標バッファ内
の目標命令が必要とされない)。処理は図3のブロック
50に戻り再開する。
【0024】分岐が120で発生する場合(すなわち分
岐予測が正しくない場合)、目標バッファの内容が12
1で順次バッファに転送される。1サイクルの遅延が1
28で発生し(なぜなら好適な実施例では1ストリーム
だけが1度に発行されるからである)、次に処理は図3
の処理50に戻り再開する。
【0025】図5は、分岐が発生する分岐命令が存在す
ると判断され、その命令が以前に走査されていない場合
の命令プリフェッチ論理の動作を示す。命令が以前に走
査されたかどうかの判別は、後述のようにBABの選択
的更新を許可する。110でBABヒットが存在するか
どうか(すなわち目標命令ストリームがBAB内に存在
するかどうか)がチェックされる。これは分岐の目標ア
ドレスをI−キャッシュ及びBABの両方に並列に提供
することにより実行される。BABヒットが存在する場
合、関連するBAB内容が順次バッファにコピーされ、
112で最後のBAB値に続く次の順次ラインがI−キ
ャッシュからフェッチされる。処理は114で次のサイ
クルまで遅延され、50に移行する。BABヒットの発
生時に112でBABから次の命令をロードするこの機
能は、116でI−キャッシュから順次バッファをロー
ドする間に要求されるアイドル実行サイクルを除去す
る。
【0026】またBAB内でヒットが存在する場合、I
−キャッシュに提供されるフェッチ・アドレスが増分さ
れ、BABから獲得される命令に続く適切な命令が獲得
されなければならない。BABヒットが発生する時、B
ABからアクセスされる4つの命令が存在するので(好
適な実施例では各命令は4バイト長である)、I−キャ
ッシュへのフェッチ・アドレスは、BABエントリ内の
最後の命令に続く次の命令を指示するために16増分さ
れる。
【0027】110でBABヒットが存在しないと判断
されると、I−キャッシュが目標命令ストリームのため
にアクセスされなければならない。116では目標命令
ストリームがI−キャッシュから読出され、順次バッフ
ァに配置される。以前に走査されていない目標命令スト
リームがBAB内に存在しない場合は、次にBABのフ
ィルタリング/選択的更新が発生する。実行ユニットが
アイドル状態であると判断されると(こうしたアイドル
状態は好適な実施例では2サイクル後に発生する)、1
18で目標命令ストリームがBABにコピーされる。目
標命令ストリームは、順次バッファ及びBABの両方に
実質的に同時にロードまたはコピーされる。アイドル状
態の実行ユニットは、この命令ストリームがこの命令コ
ード・パスの続く実行において要求される可能性がある
ことを示し、即時使用可能な場合に性能を改良すると思
われる値によりBABを選択的に更新する。この指示は
アイドル・サイクルが前の分岐に近接する続く分岐命令
により引起こされ、第2の分岐命令の目標命令がまだフ
ェッチされていない事実に起因する。次に処理は50に
移行する。
【0028】図3を参照し、72で分岐が発生すると予
測される場合、処理は図6で示されるように継続する。
図6は未解析の分岐が発生すると予測される時の命令プ
リフェッチ論理の動作を示す。84で、図3のステップ
64と同様に、また同様の理由により、分岐命令が以前
に走査されたかどうかをチェックする。命令が以前に走
査された場合、目標及び順次バッファが86でスワップ
される。目標命令が順次バッファにフェッチされた以後
に分岐が解析され、その分岐が発生するものと不正に予
測された場合には、分岐の直後に続く命令がプリフェッ
チされなければならない点に注意を要する。これによる
障害は、これらの命令がI−キャッシュ/BABからの
新たな命令により重ね書きされる時に、これらを目標バ
ッファにスワップすることにより低減される。84に戻
り、命令が以前に走査されていない場合、プリフェッチ
・ミス信号が88でアサートされる。90で分岐目標ア
ドレスがBAB内に配置されている(すなわちBABヒ
ット)かどうかがチェックされる。BABヒットが存在
する場合、92で順次バッファが目標バッファにコピー
される。これは分岐予測論理が102でチェックされ誤
りであるとわかった時のために、順次バッファの内容の
一時記憶を提供する。BABは次に92で順次バッファ
にコピーされる。これは再度、I−キャッシュをアクセ
スする必要なしに、BABが命令ストリームを即時順次
バッファに提供することにより、性能を改良することを
示す。90でBABヒットが存在しないと判断される
と、目標命令ストリームのためにI−キャッシュがアク
セスされ、これが94で順次バッファに配置される。9
4ではまた、順次バッファの内容が目標バッファに配置
される。
【0029】図6の86、92及び94の動作の後、命
令プリフェッチ論理は96で次のサイクルまで待機す
る。98では分岐命令が解析されたかどうかをチェック
する。解析されていない場合、100で順次バッファか
らの次の命令がチェックされる。101でそれが分岐命
令と判断されると、処理は96で1サイクル遅延され
る。それが分岐命令ではない場合には、103で非分岐
命令が発行可能かどうかがチェックされる。命令が発行
可能な場合、105でそれが発行され、処理は100に
移行する。103で命令が発行可能でないと判断される
場合、処理は96で1サイクル遅延される。
【0030】分岐命令が98で解析されている場合、1
02で分岐が発生するかどうかがチェックされる。分岐
が発生しない場合(すなわち分岐予測が不正の場合)、
104で目標バッファの内容が順次バッファに転送され
る。これは86で目標バッファとスワップされた順次バ
ッファの内容を復元するために要求される。72で分岐
が発生するものと誤って予測された事実により、余分な
ステップが引起こされ、102において実際には発生し
ないと判断される。ストリーム変更動作により104で
1サイクルの遅延が発生し、処理は次に50に移行す
る。102で分岐が発生すると判断されると(すなわち
分岐予測が正しかった場合)、106で目標バッファが
廃棄される。なぜなら、目標バッファは使用されない順
次命令を含むからである。次に108でBABのフィル
タリング/選択的更新が実行される。ここでBABは、
BABミス及び実行ユニット内にアイドル・サイクルが
存在する場合に限り、目標命令ストリームにより更新さ
れる。これについては後述される。この目標命令ストリ
ームは潜在的にBABにロードされる値であり、従来の
一時レジスタ(図示せず)に保持される。別の実施例で
は、BABが目標命令ストリームを保持するために、追
加の一時位置を含むように拡張される。ステップ108
の後、処理は50に移行する。
【0031】図7は、命令ディスパッチ論理42(図
2)によりBAB10に提供される分岐目標アドレス4
6を使用し、BAB10が更新/アクセスされる様子を
示す。分岐目標アドレス46のビット25乃至29が、
BAB10内の32個のエントリの1つをアクセスする
ために、94でデコードされる。ロードBAB信号がア
サートされると(これの生成については後述)、I−キ
ャッシュ(図2の34)から目標アドレスと共に4命令
が入来し、アドレスされるエントリに書込まれる。BA
Bへの命令のロードを許可するためにロードBAB信号
を使用することにより、続いて実行されると予想される
最小数の命令だけが実際にBABへロードされる。これ
によりBABは小サイズ且つ高速に維持される。
【0032】BAB10をアクセスするために、有効ビ
ットがセットされており、目標アドレスが96及び98
で決定されるエントリに関連する目標アドレス・フィー
ルドの内容に一致する場合、アドレスされる入力が読出
され、順次または目標バッファの内の適切なバッファに
送られる。
【0033】BABをアドレスするために別の機構もま
た使用される。目標アドレスを一致フィールドとして使
用する代わりに(図1及び図7の14を参照)、分岐を
引起こす分岐命令のアドレスが使用される。このアプロ
ーチでは、分岐目標アドレスが計算されるのを待機する
ことなく、BABがアクセスされる。この場合、分岐目
標アドレス及び分岐命令のアドレスの両方がBABに記
憶される。しかしながら、この代替アドレスを使用する
ことは(すなわち結果アドレスではなく起因アドレスを
使用する)、制御機構を複雑化する。なぜなら、分岐命
令が続く実行の異なる位置に分岐する可能性があるため
に(すなわち異なる目標アドレスを生成する)、適切な
目標命令がフェッチされたかどうかのチェックが必要と
なる。このアドレス確認は、選択されたBABエントリ
に記憶される分岐目標アドレスを、命令により生成され
る分岐目標アドレスと比較することにより達成される。
【0034】更に、BABがアドレス一致を有するが、
対応する命令が不正の可能性が存在するために、命令の
確認が要求される。これは複数のプロセッサまたはプロ
グラムが同時に実行される多重処理環境において発生
し、それらのそれぞれの活動化/非活動化に際し、メモ
リがスワップ・イン/スワップ・アウトされる。これは
キャッシュ同期または等価の命令が実行される時に、単
にBABエントリを無効と記すことにより容易に扱われ
る。この命令またはそれに等価なものが多重処理オペレ
ーティング・システム内に存在し、基礎を成すハードウ
ェアに対し、メモリのスワップ・イン/スワップ・アウ
ト処理によりキャッシュが再同期されなければならない
ことを命令する。
【0035】新たなエントリがBABに書込まれる必要
があり、BABがフルの場合、既存のエントリが置換さ
れる必要が生じる。これはLRU法(最低使用頻度エン
トリを廃棄する)、区分化LRU法(特定の区分内のL
RUであり、32エントリの全てに対し、必ずしもLR
Uエントリをピックしない)などの既知の技術を使用し
て達成される。区分化LRUの実施例は次のようであ
る。各エントリに対し4つの潜在的位置が存在する場合
(すなわち合同クラスのサイズが4である)、これは各
々が2つのエントリを有する2つの区分に区分化され
る。各合同クラスに関連して、所望のLRU区分を指示
するビットが存在する(例えば論理0ビット値は区分0
を指示し、論理1ビット値は区分1を指示する)。各区
分に関連して、その区分内のLRUエントリを指示する
ビットが存在する。
【0036】図8はサンプル命令シーケンス140を示
し、これは相対命令アドレス0で開始する(142で示
される)。デコードされる命令シーケンスが140で示
される。示される例では、命令は4バイト長であり、第
1の命令S1は命令アドレス0を有し、第2の命令S2
は命令アドレス4を有する。命令アドレス8はこの命令
シーケンスでは第3の命令を含み、これは分岐命令B1
である。この分岐命令は目標命令Xを有する目標アドレ
ス20を有する。目標命令Xの直後の命令アドレス24
には別の分岐命令B2が配置される。この第2の分岐命
令B2の目標アドレスは40であり、ここには第2の目
標命令T1が存在する。更に順次命令T2及びT3がこ
のT1命令に続き、それぞれ命令アドレス44及び48
に配置される。
【0037】図9はBABを有さないシステムによりデ
コードされ実行される場合の、図8の命令シーケンスの
パイプライン・タイミング図を示す。命令シーケンスの
読出し及び実行には3つのステージが存在する。第1の
フェーズは命令フェッチ・ステージ144であり、図9
では'IF'と記されている。ここでは実行される次の命
令はI−キャッシュから読出される。第2のステージは
デコード・ステージ146であり、図9では'D'と記さ
れる。ここでは整数命令がデコードされ、分岐が処理さ
れ、目標アドレスが生成される。最後に、第3のステー
ジは実行サイクル148であり、図9では'E'と記され
る。実行ステージは整数命令を実行する。図9の形式を
更に説明するために、様々なサイクルが150、15
2、154、...及び166で示される。
【0038】第1サイクル150の間、命令S1、S2
及びB1がフェッチされる。好適な実施例では、1度に
4つの命令がフェッチされる。しかしながら、分岐命令
B1に続く4番目の命令は本説明または発明では重要で
はなく、図における無関係な記述を最小化するために示
されていない。第2サイクル152の間、命令がデコー
ドされる。ここでB1がS2より先にデコードされる点
に注意を要する。なぜなら、更に分岐処理及び目標アド
レス生成が必要だからである。B1の結果の目標アドレ
スが次にIF144によりフェッチされ、一方、S2が
第3サイクル154の間にD146によりデコードされ
る。ここで、この第3サイクル154の間に、S1がE
148により実行される点に注意を要する。
【0039】上述の第2サイクル152の場合同様に、
第4サイクル156は命令X及びB2をD146により
デコードする。更に第4サイクル156において、S2
命令がステージE148により実行される。
【0040】第5サイクル158の間、第4サイクル1
56の間に決定されたB2の分岐目標アドレスが40で
あることがわかる(図8参照)。命令T1及びT2がス
テージIF144によりアドレス位置40からフェッチ
される。またこの第5サイクルの間に、第1の分岐B1
からの目標命令がステージE158による実行のために
使用可能となる。これまでに、サイクル3乃至5からパ
イプラインはフルとなり、アイドル実行ステージは存在
しない。しかしながら、サイクル6では、この実行ステ
ージがアイドル状態となる(すなわちE148により命
令が実行されない)。第6サイクル160の間の実行ユ
ニットのこのアイドリングは、前の分岐命令の目標アド
レスから近い距離にある命令シーケンス内で発生する第
2の分岐命令B2により引起こされる。目標命令アドレ
スと続く分岐との間のこの隣接により、通常有効な3ス
テージすなわちフェッチ/デコード/実行が遅延され
る。なぜなら、第4サイクル156において第2の分岐
命令の目標が計算され、第5サイクル158においてフ
ェッチされ、第6サイクル160においてデコードされ
るからである。従って、これは第7サイクル162まで
実行ユニットにとって使用可能ではなく、1サイクルの
遅延が発生する。第8及び第9サイクル164及び16
6は完全化のために示され、T2及びT3に対する通常
のデコード及び実行処理が行われる。
【0041】要するに、B2の目標アドレスの決定が遅
延される。これはB2の目標アドレスすなわちT1(目
標アドレス40)が十分に早くフェッチされないことに
よる。これはプロセッサ実行ステージE148における
アイドル・サイクルを生じる。
【0042】本発明は前述の分岐予測バッファ(BA
B)を使用することによりこの問題を解決する。更に、
次に示す信号が生成され、BABへのアクセス(例えば
読出し及び書込み)を制御するために使用される。第1
に、分岐が発生すると判断される時、プリフェッチ・ミ
ス信号がデコード・ステージD146により生成され
る。第2に、実行アイドル信号が生成され、これは実行
ステージE148により生成される(また図9に示され
る例ではサイクル6の間に活動化される)。このアイド
ル・サイクルは2サイクル以前に生成されたプリフェッ
チ・ミス信号に起因する。従って、BABに新たなエン
トリをロードするために使用されるロードBAB信号は
次のように示される。 ロードBAB[i]:=実行アイドル[i]&プリフェッ
チ・ミス[i-2] ここで添字iは特定のクロック・サイクルを示す(例え
ば図9の150乃至166)。図9において、ロードB
AB信号は、BABに目標命令をロードするために、サ
イクル6の間に活動状態となる。ここでロードBABは
サイクル4の間には活動状態でない点に注意を要する。
なぜなら、Eステージ148がビジーであり、命令X及
びB2のBABへのロードを不要に妨げるからである。
【0043】BABに目標命令をロードするためのロー
ドBAB信号の使用は、大きな性能改良を提供する。B
ABは以前に実行された分岐命令の目標命令である高い
確率を有する値によってのみロードされる。BABのロ
ードは上述の制御信号を使用してフィルタされるので、
BABに以前にロードされた他の値が不要にフラッシュ
されることはない。その結果、BABに要求されるサイ
ズは従来のBTTの場合よりも小さくなる。
【0044】図10は図9に類似のパイプライン・タイ
ミング図を示す。しかしながら、図10は上述の図8の
命令シーケンスの処理で述べられたBAB効果を示す。
図8の命令シーケンスの第1回目では、B1及びB2の
どちらの目標もBAB内に存在しないと仮定すると、図
9の振舞いと同一のサイクルが適用される(すなわち第
6サイクル160の間にEステージ148がアイドル状
態となる)。しかし2回目には、B2の目標(命令T
1)が、生成された前回のロードBAB信号の結果(及
びBABにT1がロードされること)により、BAB内
に存在するものと仮定する。第14サイクル168で
は、BAB内にB2の目標(命令T1)を見い出したこ
とに応答して、BABヒット信号が生成される。BAB
エントリが2命令の深さを有し、2つの有効な命令がそ
こに存在する場合には、T3のアドレスが生成され、第
15サイクル170の間にT3がI−キャッシュからフ
ェッチされる(しかしながら、好適な実施例では、BA
Bは4命令の深さを有する。従って、T3がT2と同
様、既にBAB内に存在する。なぜなら、これはT1か
ら4命令以内に存在するからである。2命令長BABに
よるI−キャッシュからのT3の続くフェッチは、4命
令長BABでは要求されない。2命令長BABは、単
に、BABの異なる深さサイズがどのように調整される
かを示す例として示される)。第16サイクル172の
間のEステージ148はアイドル状態ではない。これは
B2の目標(命令T1)が、第5サイクル158(図
9)で実行されたように、低速アクセスのI−キャッシ
ュから読出される代わりに、第15サイクル170の間
にはBABから読出されるためである。
【0045】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0046】(1)命令プリフェッチ・ミスの発生時
に、実行される可能性のある命令を保持するためのシス
テムであって、前記命令を記憶する分岐バッファと、分
岐が発生する時に、前記分岐バッファに少なくとも1つ
の前記命令を選択的にロードする手段と、前記分岐バッ
ファが前記命令プリフェッチ・ミスに対応する目標命令
を含むかどうかを判断する手段と、前記目標命令を獲得
するために前記分岐バッファをアクセスする手段と、を
含むシステム。 (2)前記目標命令を命令バッファに転送する手段を含
む、前記(1)に記載のシステム。 (3)前記転送手段が、前記目標命令が無条件分岐であ
る場合に前記目標命令を順次バッファに転送する順次手
段と、前記目標命令がまだ解析されていない分岐命令の
場合に、前記目標命令を目標バッファに転送する目的手
段とを含む、前記(2)に記載のシステム。 (4)データ処理システムのシステム性能を改良するシ
ステムであって、命令を実行するプロセッサと、前記プ
ロセッサに結合されるキャッシュと、前記キャッシュ及
び前記プロセッサに結合され、命令プリフェッチ・ミス
が発生する場合に、前記プロセッサにより実行される少
なくとも1つのプロセッサ命令を有するバッファと、処
理される分岐命令に応答して、前記バッファに前記少な
くとも1つのプロセッサ命令を選択的にロードする手段
と、を含むシステム。 (5)データ処理システムのシステム性能を改良するシ
ステムであって、命令を実行するプロセッサと、前記プ
ロセッサに結合される分岐ユニットと、前記分岐ユニッ
トに結合される順次バッファと、前記分岐ユニットに結
合される目標バッファと、前記分岐ユニットに結合され
る分岐予測バッファと、前記順次バッファ、前記目標バ
ッファ、及び前記分岐予測バッファに結合される命令キ
ャッシュと、処理される分岐命令に応答して、前記分岐
予測バッファに前記少なくとも1つのプロセッサ命令を
ロードする手段と、を含むシステム。 (6)前記少なくとも1つのプロセッサ命令が前記命令
キャッシュ内に含まれる、前記(5)に記載のシステ
ム。 (7)前記目標バッファのロードと同時に、前記分岐予
測バッファに前記少なくとも1つのプロセッサ命令をロ
ードする同時手段を含む、前記(5)に記載のシステ
ム。 (8)前記少なくとも1つのプロセッサ命令がまだ解析
されていない条件分岐の場合、前記目標バッファがロー
ドされる、前記(7)に記載のシステム。 (9)前記分岐予測バッファが前記順次バッファのロー
ドと同時に前記少なくとも1つのプロセッサ命令により
ロードされる、前記(5)に記載のシステム。 (10)前記少なくとも1つのプロセッサ命令が無条件
分岐の場合、前記順次バッファがロードされる、前記
(9)に記載のシステム。 (11)未解析の分岐が発生するか否かを予測する手段
を含む、前記(9)に記載のシステム。 (12)前記少なくとも1つのプロセッサ命令が発生し
ないと予測される未解析の条件分岐の場合、前記目標バ
ッファがロードされる、前記(11)に記載のシステ
ム。 (13)未解析の分岐が発生するか否かを予測する手段
を含む、前記(7)に記載のシステム。 (14)前記少なくとも1つのプロセッサ命令が発生す
ると予測される未解析の条件分岐の場合、前記順次バッ
ファがロードされる、前記(13)に記載のシステム。 (15)プロセッサにより命令シーケンスを実行するデ
ータ処理システムのシステム性能を改良する方法であっ
て、プロセッサによりバッファから命令を読出すステッ
プと、前記命令が分岐命令かどうかを判断するステップ
と、前記分岐命令が前記データ処理システムにより以前
に走査されたかどうかを判断し、否定の場合、前記分岐
命令の少なくとも1つの目標命令を分岐予測バッファ内
に記憶するステップと、前記少なくとも1つの目標命令
を前記プロセッサに提供するために、前記分岐予測バッ
ファをアクセスするステップと、を含む方法。 (16)プロセッサにより命令シーケンスを実行するデ
ータ処理システムのシステム性能を改良するシステムで
あって、プロセッサによりバッファから命令を読出す手
段と、前記命令が分岐命令かどうかを判断する手段と、
前記分岐命令が前記データ処理システムにより以前に走
査されたかどうかを判断し、否定の場合、前記分岐命令
の少なくとも1つの目標命令を分岐予測バッファ内に記
憶する手段と、前記少なくとも1つの目標命令を前記プ
ロセッサに提供するために、前記分岐予測バッファをア
クセスする手段と、を含むシステム。 (17)少なくとも1つの分岐命令を含むプロセッサ命
令を有するデータ処理システムにおいて、前記少なくと
も1つの分岐命令の少なくとも1つの目標命令を記憶す
る装置であって、分岐バッファと、前記データ処理シス
テムによる前記少なくとも1つの分岐命令のプリフェッ
チがアイドル・サイクルを発生する場合、前記分岐バッ
ファに前記少なくとも1つの目標命令を選択的にロード
する手段と、を含む装置。 (18)前記少なくとも1つの分岐命令の続く少なくと
も1実行において、前記少なくとも1つの目標命令を獲
得するために、前記分岐バッファをアクセスする手段を
含む、前記(17)に記載の装置。
【0047】
【発明の効果】上述の説明から理解されるように、迅速
にアクセスされる小さなBABを保持することにより、
実行アイドル・サイクルが更に低減されるか、または除
去される。迅速なアクセスは、命令プリフェッチ・ミス
の検出の結果決定される予測分岐命令をBABに保持す
ることにより達成される。これは目標命令の選択的フィ
ルタリングが実行されない従来のBTT設計により要求
されるよりも、小さなバッファを可能とする。
【0048】本発明は特定の実施例について述べられて
きたが、当業者には理解されるように、本発明の精神及
び範囲を逸脱することなく前述の及び他の変更が可能で
ある。
【図面の簡単な説明】
【図1】分岐予測バッファ(BAB)の全体構成を示す
図である。
【図2】BABと命令プリフェッチ・バッファ及び命令
キャッシュとの関係を示すブロック図である。
【図3】命令ディスパッチ論理の制御フローを示す図で
ある。
【図4】命令ディスパッチ論理の制御フローを示す図で
ある。
【図5】命令ディスパッチ論理の制御フローを示す図で
ある。
【図6】命令ディスパッチ論理の制御フローを示す図で
ある。
【図7】命令ディスパッチ論理により提供されるアドレ
スによりBABがアクセスされる様子を示す図である。
【図8】処理されるサンプル命令シーケンスを示す図で
ある。
【図9】パイプライン・タイミング図である。
【図10】パイプライン・タイミング図である。
【符号の説明】
10 分岐予測バッファ(BAB) 12 有効ビット 24 順次バッファ 26 目標バッファ 34 I−キャッシュ 42 命令ディスパッチ論理 46 分岐目標アドレス 49 ロードBAB信号
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラヴィンドラ・クマー・ネイアー アメリカ合衆国10510、ニューヨーク州 ブライアークリフ・マナー、スクレイ ド・ロード 52 (56)参考文献 特開 平4−177532(JP,A) 特開 平4−317130(JP,A) 特開 平2−217923(JP,A) 特開 昭61−100837(JP,A) 特開 平4−188226(JP,A)

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】命令プリフェッチ機構を介してプリフェッ
    チされた複数の命令の逐次的な評価中に命令プリフェッ
    チ・ミスが発生した場合に、このプリフェッチ・ミスに
    対応する目標命令を含む命令ストリームを適時にプリフ
    ェッチするように管理するためのシステムであって、 複数の命令を処理するための実行ユニットと、 選択された複数の命令を記憶するための分岐バッファ
    と、 命令プリフェッチ・ミスの発生を検知するための第1の
    検知手段と、 前記実行ユニットのアイドル状態を検知するための第2
    の検知手段と、 前記第1及び第2の両検知手段に応答して目標命令を前
    記分岐バッファ内に選択的にロードするための手段と、 前記第1検知手段に応答し、前記分岐バッファが前記命
    令プリフェッチ・ミスに対応する目標命令を含むかどう
    かを判断するための判定手段と、 前記判定手段に応答して前記分岐バッファ内の目標命令
    に選択的にアクセスするための手段と、 を含むシステム。
  2. 【請求項2】前記目標命令を前記分岐バッファへのロー
    ドと共に前記実行ユニットによりアクセス可能なバッフ
    ァにも転送する手段を含む請求項1に記載のシステム。
  3. 【請求項3】前記転送手段は、前記目標命令が無条件分
    岐である場合に前記目標命令を順次バッファに転送する
    一方、前記目標命令がまだ解析されていない分岐命令の
    場合に前記目標命令を目標バッファに転送するための手
    段を含む請求項2に記載のシステム。
  4. 【請求項4】命令プリフェッチ機構を介してプリフェッ
    チされた複数の命令の逐次的な評価中に命令プリフェッ
    チ・ミスが発生した場合に、このプリフェッチ・ミスに
    対応する目標命令を含む命令ストリームを適時にプリフ
    ェッチしてデータ処理システムのシステム性能を改良す
    るシステムであって、 命令を実行するためのプロセッサと、 前記プロセッサに接続されているキャッシュと、 命令プリフェッチ・ミスの発生を検知するための検知手
    段と、 前記プロセッサのアイドル状態を検知するための検知手
    段と、 前記キャッシュ及び前記プロセッサに接続され、命令プ
    リフェッチ・ミスが検知された場合に前記プロセッサに
    より実行されるべき少なくとも1つのプロセッサ命令を
    記憶するためのバッファと、 アイドル状態の前記プロセッサの検知及び処理中の分岐
    タイプ命令に対するプリフェッチ・ミスの検知に応答し
    て、前記少なくとも1つのプロセッサ命令を前記バッフ
    ァに選択的にロードするための手段と、 を含むシステム。
  5. 【請求項5】命令プリフェッチ機構を介してプリフェッ
    チされた複数の命令の逐次的な評価中に命令プリフェッ
    チ・ミスが発生した場合に、このプリフェッチ・ミスに
    対応する目標命令を含む命令ストリームを適時にプリフ
    ェッチしてデータ処理システムのシステム性能を改良す
    るシステムであって、 命令を実行するためのプロセッサと、 前記プロセッサに接続されている分岐ユニットと、 前記分岐ユニットに接続されている順次バッファと、 前記分岐ユニットに接続されている目標バッファと、 前記分岐ユニットに接続されている分岐予測バッファ
    と、 前記順次バッファ、前記目標バッファ、及び前記分岐予
    測バッファに接続されている命令キャッシュと、 命令プリフェッチ・ミスの発生を検知するための検知手
    段と、 前記プロセッサのアイドル状態を検知するための検知手
    段と、 アイドル状態の前記プロセッサの検知及び処理中の分岐
    タイプ命令に対するプリフェッチ・ミスの検知に応答し
    て、前記少なくとも1つのプロセッサ命令を前記分岐予
    測バッファに選択的にロードするための手段と、 を含むシステム。
  6. 【請求項6】前記少なくとも1つのプロセッサ命令が前
    記命令キャッシュ内に含まれている請求項5に記載のシ
    ステム。
  7. 【請求項7】前記分岐予測バッファの前記選択的ロード
    と実質的に同時に前記目標バッファを前記選択的ロード
    手段により前記少なくとも1つのプロセッサ命令でロー
    ドする手段を含む請求項5に記載のシステム。
  8. 【請求項8】前記少なくとも1つのプロセッサ命令がま
    だ解析されていない条件分岐の場合に、前記目標バッフ
    ァがロードされる請求項7に記載のシステム。
  9. 【請求項9】前記分岐予測バッファ及び前記順次バッフ
    ァが実質的に同時に前記選択的ロード手段を介して前記
    少なくとも1つのプロセッサ命令によりロードされる請
    求項5に記載のシステム。
  10. 【請求項10】命令プリフェッチ機構を介してプリフェ
    ッチされた複数の命令の逐次的な評価中に命令プリフェ
    ッチ・ミスが発生した場合に、このプリフェッチ・ミス
    に対応する目標命令を含む命令ストリームを適時にプリ
    フェッチすることによりプロセッサにより命令シーケン
    スを実行するデータ処理システムのシステム性能を改良
    する方法であって、 プロセッサにより命令を実行するステップと、 命令が分岐命令かどうかを判断するステップと、 命令プリフェッチ・ミス発生の可能性のある分岐命令の
    実行後における前記プロセッサのアイドル状態を検知す
    るステップと、 命令プリフェッチ・ミス発生及びアイドル状態の検知に
    応答して分岐予測バッファに分岐命令の目標命令を選択
    的に記憶するステップと、 命令プリフェッチ・ミス発生時に目標命令を得るために
    選択的に前記分岐予測バッファをアクセスするステップ
    と、 を含む方法。
JP6117056A 1993-07-01 1994-05-30 近接した分岐命令を含む命令の実行を管理するシステム及び方法 Expired - Lifetime JP2596712B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8667793A 1993-07-01 1993-07-01
US086677 1993-07-01

Publications (2)

Publication Number Publication Date
JPH0773104A JPH0773104A (ja) 1995-03-17
JP2596712B2 true JP2596712B2 (ja) 1997-04-02

Family

ID=22200145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6117056A Expired - Lifetime JP2596712B2 (ja) 1993-07-01 1994-05-30 近接した分岐命令を含む命令の実行を管理するシステム及び方法

Country Status (2)

Country Link
US (1) US5794027A (ja)
JP (1) JP2596712B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286914A (ja) * 1995-04-07 1996-11-01 Nec Corp メモリ制御装置
US6256727B1 (en) 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
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
US6453389B1 (en) * 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
JP3683439B2 (ja) 1999-08-24 2005-08-17 富士通株式会社 分岐予測を抑止する情報処理装置および方法
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
JP2005078234A (ja) * 2003-08-29 2005-03-24 Renesas Technology Corp 情報処理装置
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
JP2008186233A (ja) * 2007-01-30 2008-08-14 Toshiba Corp 命令キャッシュプリフェッチ制御方法及びその装置
CN112905237A (zh) * 2019-12-04 2021-06-04 北京百度网讯科技有限公司 指令预取方法、装置、设备和介质
TWI768547B (zh) * 2020-11-18 2022-06-21 瑞昱半導體股份有限公司 管線式電腦系統與指令處理方法

Family Cites Families (39)

* 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
US4298927A (en) * 1978-10-23 1981-11-03 International Business Machines Corporation Computer instruction prefetch circuit
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
US5146570A (en) * 1984-10-31 1992-09-08 International Business Machines Corporation System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
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
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JP2722523B2 (ja) * 1988-09-21 1998-03-04 日本電気株式会社 命令先取り装置
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
JPH02217923A (ja) * 1989-02-17 1990-08-30 Mitsubishi Electric Corp データ処理装置
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
EP0394624B1 (en) * 1989-04-24 1997-06-18 International Business Machines Corporation Multiple sequence processor system
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
US5233702A (en) * 1989-08-07 1993-08-03 International Business Machines Corporation Cache miss facility with stored sequences for data fetching
US5170476A (en) * 1990-01-22 1992-12-08 Motorola, Inc. Data processor having a deferred cache load
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
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
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
JPH04177532A (ja) * 1990-11-09 1992-06-24 Sharp Corp マイクロプロセッサ
JPH04188226A (ja) * 1990-11-21 1992-07-06 Toshiba Corp 命令先読み制御装置
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
JPH04317130A (ja) * 1991-04-16 1992-11-09 Mitsubishi Electric Corp 分岐命令処理装置
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
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP0547240B1 (en) * 1991-07-08 2000-01-12 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
JP2773471B2 (ja) * 1991-07-24 1998-07-09 日本電気株式会社 情報処理装置
DE4391002T1 (de) * 1992-03-06 1995-02-23 Rambus Inc Vor-heranholen in einen Cache-Speicher zum minimieren der Hauptspeicherzugriffszeit und der Cache-Speichergröße in einen Computersystem
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法

Also Published As

Publication number Publication date
US5794027A (en) 1998-08-11
JPH0773104A (ja) 1995-03-17

Similar Documents

Publication Publication Date Title
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US6339822B1 (en) Using padded instructions in a block-oriented cache
US6185675B1 (en) Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US7958317B2 (en) Cache directed sequential prefetch
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
EP1244961B1 (en) Store to load forwarding predictor with untraining
JPH03147022A (ja) 分岐命令処理装置および処理方法
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
JP2003514299A5 (ja)
JP2002525742A (ja) 記憶からロードへの転送のための機構
JP2003514299A (ja) インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US5930820A (en) Data cache and method using a stack memory for storing stack data separate from cache line storage
JPH06242951A (ja) キャッシュメモリシステム
JPH09330221A (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
JP3732234B2 (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
EP4127917B1 (en) Fetch stage handling of indirect jumps in a processor pipeline
US6973561B1 (en) Processor pipeline stall based on data register status
EP0912927B1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions