JP3182740B2 - 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 - Google Patents

単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。

Info

Publication number
JP3182740B2
JP3182740B2 JP11990699A JP11990699A JP3182740B2 JP 3182740 B2 JP3182740 B2 JP 3182740B2 JP 11990699 A JP11990699 A JP 11990699A JP 11990699 A JP11990699 A JP 11990699A JP 3182740 B2 JP3182740 B2 JP 3182740B2
Authority
JP
Japan
Prior art keywords
instructions
cache
branch
instruction
auxiliary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP11990699A
Other languages
English (en)
Other versions
JP2000029701A (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 JP2000029701A publication Critical patent/JP2000029701A/ja
Application granted granted Critical
Publication of JP3182740B2 publication Critical patent/JP3182740B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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】スーパースカラ設計の傾向は、これらの技
法をスケーリングすることすなわち、より幅広いディス
パッチ/発行、より大きいウィンドウ、より多くの物理
レジスタ、より多くの機能ユニット、より深い投機予測
である。この傾向を維持するためには、プロセッサのす
べての部分のバランスをとることが重要である。ボトル
ネックが1つでもあれば、積極的な技法の利益が減少す
る。
【0004】命令取出の性能は、多数の要因に依存す
る。命令キャッシュのヒット率と分岐予測精度は、取出
性能における重要な問題として以前から認識され、十分
に研究された分野である。
【0005】分岐とジャンプがあるので、所与のサイク
ルに取り出される命令は、連続したキャッシュ位置にな
い可能性がある。したがって、非連続の基本ブロックを
取り出し、位置合せし、パイプラインに渡すのに使用可
能な適当な経路および論理が存在しなければならない。
すなわち、命令がキャッシュに存在するだけでは十分で
はなく、命令に並列にアクセスできなければならない。
【0006】現代のマイクロプロセッサは、通常は、分
岐履歴テーブル(Branch History Table)と分岐目標ア
ドレス・キャッシュを使用して、過去の分岐命令を効率
的に取り出す能力を改善している。分岐履歴テーブルお
よび他の予測機構を用いると、プロセッサが、分岐の結
果が既知になる前に分岐命令の先の命令を取り出せるよ
うになる。分岐目標アドレス・キャッシュを用いると、
プロセッサが、分岐の目標アドレスが計算される前に分
岐命令の先の命令を投機的に取り出せるようになる。こ
れらの技法の両方で、どの命令を取り出すかを投機的に
予測し、通常は浪費される「デッド」サイクルを除去す
るために、実行時履歴が使用される。これらの技法を用
いる場合であっても、現在のマイクロプロセッサは、単
一のクロック・サイクルの間には連続した命令しか取り
出すことができない。
【0007】スーパースカラ・プロセッサがより積極的
になり、1サイクルあたりにより多くの命令を実行しよ
うとするにつれて、1サイクルあたりにより多くの命令
を取り出す能力も必要になる。頻繁な分岐命令は、プロ
セッサの有効取出帯域幅を大きく制限する可能性があ
る。統計的には、4命令のうちの1つが分岐命令であ
り、これらの分岐のうちの半分以上が実際に分岐する。
たとえば1サイクルあたり8つの連続命令などの幅広い
取出帯域幅を有するプロセッサは、半分の場合に、取り
出した命令のうちの半分を捨てることになる可能性があ
る。
【0008】高性能スーパースカラ・プロセッサの編成
は、命令取出機構と命令実行機構に自然に分割される。
取出機構と実行機構は、たとえば待ち行列や予約ステー
ションなど、命令発行バッファによって分離される。概
念上、命令取出機構は、命令を取り出し、復号し、バッ
ファに置く「製作者」として働く。命令実行エンジン
は、バッファから命令を除去し、データ依存性と資源制
約の下で実行する「消費者」である。制御依存性(分岐
およびジャンプ)が、この製作者と消費者の間のフィー
ドバック機構を提供する。
【0009】
【発明が解決しようとする課題】以前の設計では、操作
の対象となるプログラムが静的な形で格納される通常の
命令キャッシュが使用される。すべてのサイクルに、非
連続な位置からの命令を命令キャッシュから取り出し、
予測された動的シーケンスに組み立てなければならな
い。このアプローチに関連して、以下の問題が存在す
る。
【0010】非連続な命令ブロックのすべてへのポイン
タを、取出の開始前に生成しなければならない。これ
は、命令キャッシュの前の追加のパイプライン・ステー
ジに変換される、なんらかの形の分岐目標テーブル(分
岐目標バッファ、分岐アドレス・キャッシュなど)を介
する1レベルのインダイレクションを意味する。
【0011】命令キャッシュは、複数の非連続なキャッ
シュ・ラインへの同時アクセスをサポートしなければな
らない。これは、キャッシュがマルチポート式であるこ
とを必要とする。マルチポート化がインターリーブを介
して行われる場合、バンク衝突が生じる。
【0012】非連続な命令をキャッシュから取り出した
後に、動的シーケンスに組み立てなければならない。命
令がデコーダにとって連続的に見えるようにするため
に、命令をシフトし、位置合せしなければならない。こ
れは、命令キャッシュの後の追加のパイプライン・ステ
ージに変換される可能性が高い。
【0013】トレース・キャッシュ・アプローチでは、
デコーダのために準備ができている動的シーケンス自体
をキャッシュ記憶することによって、これらの問題を回
避している。予測された動的シーケンスがトレース・キ
ャッシュ内に存在する場合、命令キャッシュの静的表現
から動的シーケンスをその場で再作成する必要はない。
具体的に言うと、非連続命令を取り出すための、命令キ
ャッシュの前後の追加ステージが不要になる。ステージ
は存在するが、取り出しユニットのクリティカル・パス
上ではなく、トレース・キャッシュの書込側に存在す
る。このアプローチのコストは、冗長な命令記憶域であ
る。同一の命令が、プライマリ・キャッシュとトレース
・キャッシュの両方に常駐しなければならず、トレース
・キャッシュのラインの間にも冗長性が存在する可能性
がある。したがって、トレース・キャッシュ・アプロー
チを使用すると、複数の命令が、最も確度の高い経路に
基づいてグループ化される。これらの命令は、トレース
・キャッシュ内に一緒に格納される。このシステムで
は、命令セグメントのパックとキャッシュ記憶のために
複雑な機構が必要になる。
【0014】したがって、スーパースカラ・プロセッサ
の総合スループットを改善するための方法およびシステ
ムが必要である。具体的に言うと、そのようなプロセッ
サで非連続命令を効率的に取り出すためのシステムおよ
び方法が必要である。本発明は、そのような必要に対処
する。
【0015】
【課題を解決するための手段】データ処理システム内で
命令の非連続ブロックを取得するための方法およびシス
テムを開示する。第1の態様では、データ処理システム
内で命令の非連続ブロックを取り出すためのシステムを
開示する。このシステムには、第1の複数の命令を提供
するための命令キャッシュ手段と、第1の複数の命令を
受け取り、第1の複数の命令に関する分岐履歴情報を提
供するための分岐論理手段とが含まれる。このシステム
には、さらに、分岐履歴情報に基づいて、第2の複数の
命令を受け取るための補助キャッシュ手段が含まれる。
補助キャッシュ手段は、第1の複数の命令内に分岐があ
り、その分岐が第2の複数の命令への分岐である場合
に、第2の複数の命令のうちの少なくとも1つをオーバ
ーレイする。
【0016】第2の態様では、命令の非連続ブロックを
取得するための方法に、第1の複数の命令を第1キャッ
シュに格納するステップと、第2キャッシュ内の第2の
複数の命令の取出と並列に第1の複数の命令を取り出す
ステップとが含まれる。本発明では、第2の複数の命令
の数が、第1の複数の命令の数より多い。この第2の態
様には、データ処理システムの分岐履歴情報に基づい
て、第1の複数の命令のうちの少なくとも1つを用いて
第2の複数の命令の一部を置換するステップが含まれ
る。
【0017】上で述べた本発明を用いると、プロセッサ
が、分岐履歴情報と補助キャッシュとを使用して、単一
サイクル内に命令の複数の非連続グループを取り出せる
ようになる。さらに、この技法を用いると、複数のレベ
ルの入れ子になった分岐予測論理を単一サイクル内で評
価する必要なしに、非連続取出を実行できるようにな
る。
【0018】
【発明の実施の形態】本発明は、全般的にはスーパース
カラ・プロセッサに関し、具体的には、そのようなプロ
セッサで非連続命令を取り出すためのシステムおよび方
法に関する。以下の説明は、当技術分野で通常の技術を
有する者が、本発明を作成、使用することを可能にする
ために提示され、特許出願書およびその必要条件に関連
して提供されるものである。好ましい実施例に対するさ
まざまな変更は、当業者には簡単に明白になり、本明細
書に記載の包括的な原理を、他の実施例に適用すること
ができる。したがって、本発明は、下に示す実施例に制
限されるものではなく、本明細書に記載の原理および特
徴と矛盾しない最も広い範囲に一致する。
【0019】図1は、スーパースカラ式のプロセッサ1
0のブロック図である。図からわかるように、スーパー
スカラ・プロセッサ10には、通常は、バス・インター
フェイス・ユニット(BIU)12に接続されたシステ
ム・バス11が含まれる。BIU12は、プロセッサ1
0とシステム・バス11の間の情報の転送を制御する。
BIU12は、プロセッサ10の命令キャッシュ14お
よびデータ・キャッシュ16に接続される。命令キャッ
シュ14は、命令をシーケンサ・ユニット18に出力す
る。命令キャッシュ14からの命令に応答して、シーケ
ンサ・ユニット18は、プロセッサ10の他の実行回路
に選択的に命令を出力する。
【0020】ディスパッチ・ユニット46および完了ユ
ニット48という実行ユニットを含むシーケンサ・ユニ
ット18の他に、好ましい実施例では、プロセッサ10
の実行回路に、複数の実行ユニットすなわち、分岐ユニ
ット20、固定小数点ユニットA(FXUA)22、固
定小数点ユニットB(FXUB)24、複合固定小数点
ユニット(CFXU)26、ロード/ストア・ユニット
(LSU)28および浮動小数点ユニット(FPU)3
0が含まれる。FXUA22、FXUB24、CFXU
26およびLSU28は、汎用アーキテクチャ・レジス
タ(GPR)32および固定小数点リネーム・バッファ
34からソース・オペランド情報を入力する。さらに、
FXUA22およびFXUB24は、キャリ・ビット
(CA)レジスタ42から「キャリ・ビット」を入力す
る。FXUA22、FXUB24、CFXU26および
LSU28は、固定小数点リネーム・バッファ34内で
選択された項目での記憶のために、動作の結果(デステ
ィネーション・オペランド情報)を出力する。また、C
FXU26は、専用レジスタ(SPR)40との間でソ
ース・オペランド情報およびデスティネーション・オペ
ランド情報を入出力する。
【0021】FPU30は、浮動小数点アーキテクチャ
・レジスタ(FPR)36および浮動小数点リネーム・
バッファ38からソース・オペランド情報を入力する。
FPU30は、浮動小数点リネーム・バッファ38内で
選択された項目への記憶のために、その動作の結果(デ
スティネーション・オペランド情報)を出力する。
【0022】処理 プロセッサ10は、通常は、相対的に独立の処理を制御
する多数の状態機械を用いて実施される。これは、複数
の並列処理を伴う複雑な並列アルゴリズムとみなすこと
ができる。
【0023】命令取出 これは、命令キャッシュから命令の連続的なストリーム
を提供し、取出予測機構として分岐目標アドレス・キャ
ッシュ(BTAC)を使用する処理である。
【0024】分岐予測 これは、分岐を識別し、予測し、適当な命令が取り出さ
れることを検証し、情報を更新し、投機分岐に関する情
報を分岐待ち行列に置く処理である。
【0025】分岐解決 これは、予測が実際の分岐結果と一致したかどうかを検
査し、分岐誤予測が発生した場合に訂正を行う処理であ
る。
【0026】分岐完了 これは、完了した分岐に関する情報を分岐履歴テーブル
(BHT)に書き込み、分岐待ち行列から項目を除去す
る処理である。
【0027】本発明は、全般的には取出サイクルと非連
続命令を取り出す能力に関する。図2に、命令のグルー
プを取り出すための通常の技法のためのハードウェア機
構100を示す。この実施例では、1時に8つの命令が
取り出されている。さらに、本発明を、4バイト長の命
令に関連して説明する。しかし、当業者は、1時に任意
の数の命令を取り出すことができ、命令長は任意の長さ
とすることができ、それらの数と長さが本発明の趣旨お
よび範囲に含まれることを容易に理解するであろう。
【0028】図2を参照すると、分岐履歴テーブル(B
HT)104、命令キャッシュ106、分岐目標アドレ
ス・キャッシュ(BTAC)108、命令キャッシュ用
ディレクトリ(INST Dir)110および+32
カウンタ111に供給される取出アドレス信号102が
図示されている。上で識別された機構の動作、特に命令
キャッシュ106に関連するものの完全な理解を提供す
るために、通常の命令キャッシュ項目を下で説明する。
【0029】図3は、命令フェッチャが必要とする命令
の命令キャッシュおよびBTAC項目200(この項目
には、この説明には重要でない他の情報が含まれる可能
性がある)の単純な編成を示す図である。図3には、6
4Kバイト直接マッピング式キャッシュと指示された命
令アドレスを前提とする、コード・シーケンスのサンプ
ル・アドレス・タグ項目202、サクセッサ(successo
r)・インデックス・フィールド204および分岐ブロ
ック・インデックス・フィールド206を含む取出情報
201が図示されている。この例では、キャッシュ項目
に4つの命令208、210、212および214が保
持される。この項目には、命令取出情報も格納される。
取出情報には、命令フェッチャが使用する2つの追加フ
ィールド(図示せず)も含まれる。
【0030】サクセッサ・インデックス・フィールド2
04は、次に取り出されると予測されたキャッシュ・ブ
ロックと、この次ブロック内で最初に実行されると予測
された命令の両方が含まれる。サクセッサ・インデック
ス・フィールド204は、完全な命令アドレスを指定す
るのではなく、キャッシュ内の命令を選択するのに十分
なサイズである。たとえば、64Kバイト直接マッピン
グ式のキャッシュは、すべての命令が32ビット長であ
る場合に、14ビット(キャッシュ・ブロックのアドレ
ッシングに12ビットと、ブロック・サイズが4ワード
の場合にブロック内の命令のアドレッシングに2ビッ
ト)のサクセッサ・インデックスを必要とする。
【0031】好ましい実施例では、分岐ブロック・イン
デックス・フィールド206が、対応する命令ブロック
内の分岐点の位置を示す。分岐点の先の命令は、実行さ
れないと予測される。
【0032】図2に戻って、BHT104は、BHT更
新信号も受け取り、読取信号を出力する。BHT104
からの読取信号は、分岐論理116に供給される。命令
キャッシュ106は、L2キャッシュなどの外部供給源
から書込信号を受け取る。命令キャッシュ106は、8
つの命令(命令グループ0)を分岐論理116に出力す
る。アドレス0信号は、分岐論理116に直接に供給さ
れる。分岐論理116は、マルチプレクサ120にオー
バーライド・アドレス信号を供給する。マルチプレクサ
120は、+32カウンタ111からの信号112と、
BTAC108の出力も受け取る。アドレス1信号は、
BTAC108から分岐論理116に供給される。命令
ディレクトリ110は、分岐論理116にヒット信号を
供給する。分岐論理116は、分岐結果信号も受け取
り、分岐待ち行列126に分岐情報を供給し、BTAC
アドレス128を出力し、有効な命令124を供給す
る。このタイプの機構は、1サイクルあたり8つの連続
命令を取り出すことができるが、グループ内の実際に分
岐すると予測された最初の分岐までの命令だけが使用さ
れる。これをさらに詳細に説明するために、添付図面と
共に以下の説明を参照されたい。
【0033】前に説明したように、命令のグループの取
出に関連する処理は複数存在する。本発明は、分岐予測
アルゴリズムの改良と、それに関連する、図2の通常の
取出機構に対する変更に関する。
【0034】図2の通常の機構に関する非連続命令の取
出に関連する問題をさらに示すために、図4を参照す
る。
【0035】図4は、図2の通常の機構のための分岐予
測アルゴリズムの流れ図である。図2と図4を参照する
と、まず、ステップ302を介して、命令キャッシュ内
に有効な命令が見つかるかどうかが判定される。命令キ
ャッシュ内で有効な命令が見つからない場合、ステップ
304を介して、取り出された命令のすべてを無効化
し、ミス・ハンドラを開始する。しかし、命令キャッシ
ュ内で有効な命令が見つかる場合、ステップ306を介
して、分岐を識別し、目標アドレスを計算し、分岐論理
116およびBHT104に基づいて分岐が行われるか
どうかを予測する。その後、ステップ308を介して、
命令グループ0(命令の最初のグループ)に実行される
と予測された分岐があるかどうかを判定する。実行され
ると予測された分岐がある場合、ステップ310を介し
て、後続のすべての命令を無効化する。その後、ステッ
プ312を介して、BTAC108からのアドレス1
(命令の第2グループのアドレス)が、命令ディレクト
リの目標0と等しいかどうかを判定する。そうである場
合には、ステップ314を介して、分岐待ち行列126
にその分岐アドレスを格納し、すべての分岐の予測情報
を供給する。その一方で、アドレス1が目標0と等しく
ない場合には、ステップ316を介して、次のサイクル
に取り出される命令を無効化し、オーバーライド・アド
レスを目標0と等しい値にする。その後、ステップ31
8を介して、BTACアドレスを更新して目標0と等し
い値にし、ステップ314を介して、分岐アドレスと予
測情報を分岐待ち行列に格納する。その一方で、ステッ
プ308で、実行されると予測された分岐がグループ0
に存在しない場合、アドレス1がアドレス0+32に等
しいかどうかを判定する。そうである場合には、ステッ
プ314に進む。その一方で、そうでない場合には、ス
テップ322を介して、次のサイクルに取り出される命
令グループのすべてを無効化し、オーバーライド・アド
レスを目標0+32と等しい値にする。その後、ステッ
プ324を介して、BTACアドレスを更新して無効に
し、ステップ314に進む。
【0036】図4のこのアルゴリズムでは、単一のサイ
クルで非連続命令を取り出すことができない。この予測
アルゴリズムでは、分岐命令に遭遇した時に、その分岐
までの命令だけが使用可能になることが常に要求され
る。前に述べたように、単一サイクルで非連続命令を取
り出すための機構すなわち、トレース・キャッシュなど
が存在するが、これによってシステムが複雑になり、コ
ストが高くなる。
【0037】本発明は、補助キャッシュを設け、単一サ
イクルで非連続命令を取り出すために補助キャッシュを
使用するオーバーレイ技法を提供することによって、こ
の問題を克服する。
【0038】この技法には、次の3つの主なハードウェ
ア機構が必要である。 (1)標準命令キャッシュ(または他のメモリ・ソー
ス) (2)分岐目標アドレス・キャッシュ (3)補助キャッシュ
【0039】標準命令キャッシュおよび分岐目標アドレ
ス・キャッシュは、ほとんどのマイクロプロセッサで一
般的に使用されており、この技法のために変更なしで使
用することができる。補助キャッシュは、1つまたは複
数の命令とそれに関連するアドレスに関する複数の項目
を含む新規のハードウェア機構である。補助キャッシュ
は、主命令キャッシュと比較して、非常に連想性が高
く、比較的小さくなる可能性がある。
【0040】本発明は、全般的に次の形で動作する。 1.第1命令グループの分岐命令が、分岐履歴または他
の情報に基づいて、実際に分岐する可能性が高いと考え
られ、補助キャッシュから命令が供給されなかった場合
には、取出インデックスを使用して、分岐の目標アドレ
スと、そのアドレスにある1つまたは複数の命令を補助
キャッシュに追加する。また、適当な順次アドレスを、
必要に応じて(たとえば分岐目標+16バイト)BTA
Cに供給する。 2.そうではなく、第2命令グループの分岐命令が、実
際に分岐する可能性が 高いと考えられる場合には、取出インデックスを使用し
て、分岐の目標アドレスをBTACに追加する。 3.そうではなく、どちらの命令グループにも実際に分
岐する可能性の高い分岐命令がない場合には、取出イン
デックスを使用してBTACをクリアし、適当な順次ア
ドレスを省略時値とする。
【0041】本発明の特徴および動作をさらに具体的に
説明するために、添付図面と共に以下の説明を参照され
たい。
【0042】図5は、本発明に従って単一サイクルで非
連続命令を取り出すための、プロセッサ内の機構400
のブロック図である。機構400の要素は、現在ハード
ウェア機構100に存在する要素の多くに類似してい
る。これらの類似の要素には、類似の符号を付す。前に
述べたように、異なる主要な要素は、補助キャッシュ4
15と補助ディレクトリ417である。
【0043】さらに、図からわかるように、命令グルー
プ0および命令グループ1があり、BHT104’およ
び分岐論理116’から導出された分岐履歴情報に基づ
いて、命令キャッシュ106’からの命令グループ1内
で補助キャッシュ415からの命令のオーバーレイを可
能にする4つのマルチプレクサ425がある。同様に、
補助ディレクトリは、分岐履歴情報に基づいて、+16
カウンタ421のアドレス1信号にそのアドレスをオー
バーレイする。さらに、FTAC414も、図2のBT
AC108によって供給されるアドレス1信号ではな
く、アドレス2信号を供給する。したがって、前に述べ
たように、補助キャッシュ415の追加と補助キャッシ
ュ415および補助ディレクトリ417の使用を介し
て、非連続命令の取出を可能にするための情報の累積が
可能になる。この機能をさらに詳細に説明するために、
図6を参照されたい。
【0044】図6は、図5の非連続命令取出機構のため
の分岐予測アルゴリズムの流れ図である。図5および図
6を参照すると、まず、ステップ502を介して、命令
キャッシュ106’に有効な命令が格納されているかど
うかを判定する。命令キャッシュ106’で有効な命令
が見つからなかった場合、ステップ504を介して、す
べての命令を無効化し、ミス・ハンドラを開始する。そ
の一方で、命令キャッシュ106’に有効な命令がある
場合には、ステップ506を介して、補助キャッシュ4
15内で有効な命令が見つかったかどうかを判定する。
補助キャッシュ415内で有効な命令が見つかった場合
には、ステップ508を介して、補助キャッシュ415
からの命令を、命令キャッシュ106’からの命令グル
ープにオーバーレイする。その一方で、補助キャッシュ
で有効な命令が見つからなかった場合には、ステップ5
10を介して、命令キャッシュからのすべての命令を保
存する。
【0045】ステップ508またはステップ510の後
に、ステップ512を介して、次の分岐を識別し、目標
アドレスを計算し、通常の形で動作する分岐論理11
6’およびBHT104’に基づいて、それらが実際に
分岐するか否かを予測する。その後、ステップ514を
介して、命令グループ0に実際に分岐すると予測された
分岐があるかどうかを判定する。命令グループ0に実際
に分岐すると予測された分岐がある場合、ステップ51
6を介して、後続命令を無効化する。
【0046】次に、ステップ518を介して、アドレス
1が分岐の目標アドレス0と等しいかどうかを判定す
る。そうである場合には、ステップ520を介して、グ
ループ1内または命令の次のグループ内に実際に分岐す
ると予測される命令があるかどうかを判定する。そうで
ある場合には、ステップ522を介して、命令グループ
1内の後続命令を無効化する。その後、ステップ524
を介して、アドレス2が分岐の目標1と等しいかどうか
を判定する。そうである場合には、ステップ526を介
して、分岐待ち行列に分岐アドレスとすべての分岐に関
する予測情報を格納する。そうでない場合には、ステッ
プ528を介して、次のサイクルのグループを無効化
し、オーバーライド・アドレスに目標1と等しい値をセ
ットする。その後、ステップ530を介してFTACア
ドレスを目標1と等しい値に更新し、ステップ526に
進む。
【0047】ステップ518を介してアドレス1が目標
0と等しくないと判定される場合、ステップ521を介
して、グループ1および次サイクル・グループのすべて
の命令を無効化し、オーバーライド・アドレスに目標0
と等しい値をセットして、補助キャッシュ内の次のグル
ープを保管する準備をする。その後、ステップ523を
介して、補助アドレスを目標0に等しい値に更新し、F
TACアドレスを目標0+16に等しい値に更新する。
【0048】その一方で、ステップ520を介してグル
ープ1に実際に分岐すると予測された命令がないと判定
された場合には、ステップ532を介して、アドレス2
がアドレス1+16と等しいかどうかを判定する。そう
である場合には、ステップ526に進む。そうでない場
合には、ステップ534を介して、次サイクル・グルー
プのすべてを無効化し、オーバーライド・アドレスにア
ドレス1+16と等しい値をセットする。その後、ステ
ップ536を介して、FTACアドレスをアドレス1+
16に等しい値に更新し、ステップ526に進む。
【0049】ステップ514に戻って、グループ0に実
際に分岐すると予測された分岐がない場合には、アドレ
ス1がアドレス0+16と等しいかどうかを判定する。
アドレス1がアドレス0+16と等しい場合には、ステ
ップ520に進み、その判断チェーンに基づくステップ
を実行する。その一方で、アドレス1がアドレス0+1
6と等しくない場合には、ステップ540を介して、グ
ループ1および次のサイクル・グループのすべての命令
を無効化し、オーバーライド・アドレスにアドレス0+
16に等しい値をセットする。その後、ステップ542
を介して、補助アドレスを無効に等しい値に更新し、F
TACアドレスを無効に等しい値に更新する。その後、
ステップ526に進む。したがって、この分岐予測処理
を介して、システムは、補助キャッシュのオーバーレイ
命令によって非連続命令の効率的な取出が可能になる形
で分岐履歴情報を累積することができる。具体的な例に
関して動作をより明瞭に説明するために、図7を参照さ
れたい。
【0050】図7は、図6の分岐予測アルゴリズムを使
用する時の命令の流れを示す例600である。図7に示
された例600には、プログラム・セグメント604に
ついて、本発明に従って連続するサイクルに実行される
取出のシーケンス602が示されている。すべてのアド
レスが、16進形式で示されていることに留意された
い。例600のアスタリスク(*)は、命令ストリーム
から無効化された、取り出された命令を示す。
【0051】図からわかるように、このプログラム・セ
グメントには、複数の基本ブロック606、608、6
10および612が含まれる。基本ブロック606、6
08、610および612のそれぞれは、ロード命令か
ら始まり、分岐命令で終わる。これらの基本ブロックを
本発明と共に使用することによって、単一サイクルで非
連続命令を取得できるようなる。
【0052】図5のハードウェア機構と共に図6の分岐
予測アルゴリズムを使用して分岐履歴情報を累積するこ
とによって、図7の非連続命令を単一サイクルで取得で
きる。
【0053】単一サイクルで命令を取得するための方法
を示すために、図5、図6および図7を参照されたい。
前に示したように、サイクル000に、8つの命令が供
給される。補助キャッシュ415には当初は命令が含ま
れないと仮定され、したがって、この時点では、ステッ
プ502で命令キャッシュ内で有効な命令が見つから
ず、その後、ステップ506で補助キャッシュ内に有効
な命令が見つかるかどうかが判定され、有効な命令は見
つからない。この場合、命令キャッシュからのすべての
命令が保存されるはずである。その時点で、ステップ5
12を介して、分岐が識別され、目標アドレスが計算さ
れ、実際に分岐するかどうかが予測される。最初の命令
セットの分岐の目標は0x100であることがわかって
いる。次に、実際に分岐されると予測された分岐がグル
ープ0にあるかどうかが判定され、その回答は肯定であ
る。その命令は、アドレス0x008の第3の命令であ
る。この分岐予測処理を介して、アドレス0x100に
ある命令が補助キャッシュに供給され、そのアドレスが
補助ディレクトリに格納される。また、この分岐予測処
理を介して、アドレス0x110が、FTAC414に
格納される(ステップ530)。
【0054】その後、次の基本ブロック608をサイク
ル003で使用して、目標アドレス0x100にある命
令をロードする。基本ブロック608の最後の命令は、
アドレス0x200への分岐である。その後、前で述べ
たように、アドレス0x100が取り出され、それに関
する同様の情報が、補助キャッシュ、補助ディレクトリ
およびFTACに累積される。したがって、情報は、サ
イクル008からわかるように、2つの非連続命令(0
x000と0x100)が単一サイクルで取り出される
まで、サイクル003からサイクル007にわたって累
積される。
【0055】この分岐予測処理を、基本ブロック610
および612を介してもう一度繰り返し、サイクル02
0からサイクル024の間に非連続命令を取り出す。し
たがって、この例からわかるように、分岐履歴情報を十
分な形で累積した後に、非連続命令を単一サイクルで取
得することができる。非連続命令の大多数を単一サイク
ルで取り出せるように、特に命令が再帰する情況で、こ
の処理を繰り返すことができる。これは、本発明による
分岐予測処理を使用しつつ、分岐履歴テーブルと共に働
く補助キャッシュおよび雑分岐論理の使用を介して達成
される。
【0056】トレース・キャッシュや複数レベルの分岐
プレディクタ(predictor)などの他の複数の技法が、
プロセッサが単一サイクルで非連続命令を取り出すこと
を可能にするために提案されてきた。本発明による、本
明細書に記載の補助キャッシュおよび命令オーバーレイ
技法は、他の技法より単純でありながら同等に効率的で
ある。
【0057】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0058】(1)第1の複数の命令を供給するための
命令キャッシュ手段と、上記第1の複数の命令を受け取
り、上記第1の複数の命令に関する分岐履歴情報を提供
するための分岐論理手段と、上記分岐履歴情報に基づい
て第2の複数の命令を受け取るための補助キャッシュ手
段とを含み、上記補助キャッシュ手段が、上記第1の複
数の命令内に分岐があり、上記分岐が上記第2の複数の
命令への分岐である場合に、上記第2の複数の命令のう
ちの少なくとも1つをオーバーレイする、データ処理シ
ステム内で命令の非連続ブロックを取り出すためのシス
テム。 (2)上記補助キャッシュ手段が、補助キャッシュおよ
び補助ディレクトリを含む、上記(1)に記載のシステ
ム。 (3)上記第1の複数の命令が、2ブロックの命令を含
む、上記(1)に記載のシステム。 (4)上記第2の複数の命令が、1ブロックの命令を含
む、上記(1)に記載のシステム。 (5)さらに、上記分岐論理手段に結合された分岐目標
アドレス・キャッシュを含む、上記(1)に記載のシス
テム。 (6)(a)第1キャッシュに第1の複数の命令を格納
するステップと、(b)第2キャッシュ内にあり、上記
第1の複数の命令の個数より多数の第2の複数の命令の
取出と並列に、上記第1の複数の命令を取り出すステッ
プと、(c)データ処理システムの分岐履歴情報に基づ
いて、上記第2の複数の命令の一部を上記第1の複数の
命令のうちの少なくとも1つによって置換するステップ
とを含む、上記データ処理システム内で命令の非連続ブ
ロックを取り出すための方法。 (7)上記第1キャッシュが、補助キャッシュを含み、
上記第2キャッシュが、命令キャッシュを含む、上記
(6)に記載の方法。 (8)上記補助キャッシュが、補助ディレクトリを含
む、上記(7)に記載の方法。 (9)上記第2の複数の命令が、2ブロックの命令を含
む、上記(6)に記載の方法。 (10)上記第1の複数の命令が、1ブロックの命令を
含む、上記(6)に記載の方法。 (11)第1の複数の命令を第1キャッシュに格納する
ための手段と、第2キャッシュ内にあり、上記第1の複
数の命令の個数より多数の第2の複数の命令の取出と並
列に、上記第1の複数の命令を取り出すための手段と、
データ処理システムの分岐履歴情報に基づいて、上記第
2の複数の命令の一部を上記第1の複数の命令のうちの
少なくとも1つを用いて置換するための手段とを含む、
上記データ処理システム内で命令の非連続ブロックを取
得するためのシステム。 (12)上記第1キャッシュが、補助キャッシュを含
み、上記第2キャッシュが、命令キャッシュを含む、上
記(11)に記載のシステム。 (13)上記補助キャッシュが、補助ディレクトリを含
む、上記(12)に記載のシステム。 (14)上記第2の複数の命令が、2ブロックの命令を
含む、上記(11)に記載のシステム。 (15)上記第1の複数の命令が、1ブロックの命令を
含む、上記(11)に記載のシステム。
【図面の簡単な説明】
【図1】スーパースカラ・プロセッサのブロック図であ
る。
【図2】非連続命令を取り出すための、プロセッサ内の
通常の機構のブロック図である。
【図3】命令キャッシュとBTAC項目のブロック図で
ある。
【図4】図2および図3の通常の機構のための分岐予測
アルゴリズムの流れ図である。
【図5】本発明に従って単一サイクルで非連続命令を取
り出すための、プロセッサ内の機構のブロック図であ
る。
【図6】図4の非連続命令取出機構のための分岐予測ア
ルゴリズムの流れ図である。
【図7】図6の分岐予測アルゴリズムを使用する時の命
令の流れを示す表である。
【符号の説明】
104’ BHT 106’ 命令キャッシュ 110’ 命令キャッシュ用ディレクトリ(INST
Dir) 111’ +32カウンタ 116’ 分岐論理 126’ 分岐待ち行列 400 機構 414 FTAC 415 補助キャッシュ 417 補助ディレクトリ 421 +16カウンタ 425 マルチプレクサ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 12/08 511 G06F 12/08 511C 515 515Z (56)参考文献 特開 平7−73104(JP,A) 特開 平6−214785(JP,A) 特開 平4−317130(JP,A) 米国特許5889986(US,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 G06F 9/38

Claims (15)

    (57)【特許請求の範囲】
  1. 【請求項1】第1の複数の命令を供給するための命令キ
    ャッシュ手段と、 上記第1の複数の命令を受け取り、上記第1の複数の命
    令に関する分岐履歴情報を提供するための分岐論理手段
    と、 上記分岐履歴情報に基づいて第2の複数の命令を受け取
    るための補助キャッシュ手段とを含み、上記補助キャッ
    シュ手段が、上記第1の複数の命令内に分岐があり、上
    記分岐が上記第2の複数の命令への分岐である場合に、
    上記第2の複数の命令のうちの少なくとも1つをオーバ
    ーレイする、データ処理システム内で命令の非連続ブロ
    ックを取り出すためのシステム。
  2. 【請求項2】上記補助キャッシュ手段が、補助キャッシ
    ュおよび補助ディレクトリを含む、請求項1に記載のシ
    ステム。
  3. 【請求項3】上記第1の複数の命令が、2ブロックの命
    令を含む、請求項1に記載のシステム。
  4. 【請求項4】上記第2の複数の命令が、1ブロックの命
    令を含む、請求項1に記載のシステム。
  5. 【請求項5】さらに、上記分岐論理手段に結合された分
    岐目標アドレス・キャッシュを含む、請求項1に記載の
    システム。
  6. 【請求項6】(a)第1キャッシュに第1の複数の命令
    を格納するステップと、 (b)第2キャッシュ内にあり、上記第1の複数の命令
    の個数より多数の第2の複数の命令の取出と並列に、上
    記第1の複数の命令を取り出すステップと、 (c)データ処理システムの分岐履歴情報に基づいて、
    上記第2の複数の命令の一部を上記第1の複数の命令の
    うちの少なくとも1つによって置換するステップとを含
    む、上記データ処理システム内で命令の非連続ブロック
    を取り出すための方法。
  7. 【請求項7】上記第1キャッシュが、補助キャッシュを
    含み、上記第2キャッシュが、命令キャッシュを含む、
    請求項6に記載の方法。
  8. 【請求項8】上記補助キャッシュが、補助ディレクトリ
    を含む、請求項7に記載の方法。
  9. 【請求項9】上記第2の複数の命令が、2ブロックの命
    令を含む、請求項6に記載の方法。
  10. 【請求項10】上記第1の複数の命令が、1ブロックの
    命令を含む、請求項6に記載の方法。
  11. 【請求項11】第1の複数の命令を第1キャッシュに格
    納するための手段と、第2キャッシュ内にあり、上記第
    1の複数の命令の個数より多数の第2の複数の命令の取
    出と並列に、上記第1の複数の命令を取り出すための手
    段と、データ処理システムの分岐履歴情報に基づいて、
    上記第2の複数の命令の一部を上記第1の複数の命令の
    うちの少なくとも1つを用いて置換するための手段とを
    含む、上記データ処理システム内で命令の非連続ブロッ
    クを取得するためのシステム。
  12. 【請求項12】上記第1キャッシュが、補助キャッシュ
    を含み、上記第2キャッシュが、命令キャッシュを含
    む、請求項11に記載のシステム。
  13. 【請求項13】上記補助キャッシュが、補助ディレクト
    リを含む、請求項12に記載のシステム。
  14. 【請求項14】上記第2の複数の命令が、2ブロックの
    命令を含む、請求項11に記載のシステム。
  15. 【請求項15】上記第1の複数の命令が、1ブロックの
    命令を含む、請求項11に記載のシステム。
JP11990699A 1998-05-12 1999-04-27 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 Expired - Fee Related JP3182740B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/076593 1998-05-12
US09/076,593 US6256727B1 (en) 1998-05-12 1998-05-12 Method and system for fetching noncontiguous instructions in a single clock cycle

Publications (2)

Publication Number Publication Date
JP2000029701A JP2000029701A (ja) 2000-01-28
JP3182740B2 true JP3182740B2 (ja) 2001-07-03

Family

ID=22133020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11990699A Expired - Fee Related JP3182740B2 (ja) 1998-05-12 1999-04-27 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。

Country Status (5)

Country Link
US (1) US6256727B1 (ja)
EP (1) EP0957428B1 (ja)
JP (1) JP3182740B2 (ja)
KR (1) KR100431168B1 (ja)
DE (1) DE69929936T2 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609177B1 (en) * 1999-11-12 2003-08-19 Maxtor Corporation Method and apparatus for extending cache history
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6647462B1 (en) * 2000-06-29 2003-11-11 Motorola, Inc. Apparatus and a method for providing decoded information
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US8295484B2 (en) * 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US7610449B2 (en) * 2006-10-04 2009-10-27 International Business Machines Corporation Apparatus and method for saving power in a trace cache
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US20080250206A1 (en) * 2006-10-05 2008-10-09 Davis Gordon T Structure for using branch prediction heuristics for determination of trace formation readiness
US7934081B2 (en) * 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
US20080250207A1 (en) * 2006-11-14 2008-10-09 Davis Gordon T Design structure for cache maintenance
US20080114964A1 (en) * 2006-11-14 2008-05-15 Davis Gordon T Apparatus and Method for Cache Maintenance
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US20080235500A1 (en) * 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
US20080120468A1 (en) * 2006-11-21 2008-05-22 Davis Gordon T Instruction Cache Trace Formation
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation Branch target address cache
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9678755B2 (en) 2010-10-12 2017-06-13 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency
EP3306466B1 (en) 2010-10-12 2020-05-13 INTEL Corporation An instruction sequence buffer to store branches having reliably predictable instruction sequences
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US10331891B2 (en) * 2012-02-06 2019-06-25 Microsoft Technology Licensing, Llc Branch target computation in secure start-up using an integrity datum and an adjustment datum
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9934041B2 (en) * 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
US10241796B2 (en) * 2017-02-13 2019-03-26 Yong-Kyu Jung Compiler-assisted lookahead (CAL) memory system apparatus for microprocessors

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
JPS54100082A (en) 1977-12-24 1979-08-07 Yaichi Watanabe Amphibious bicycle
US4313158A (en) 1978-12-11 1982-01-26 Honeywell Information Systems Inc. Cache apparatus for enabling overlap of instruction fetch operations
JPS5927935B2 (ja) 1980-02-29 1984-07-09 株式会社日立製作所 情報処理装置
US4755935A (en) 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
JPS63189943A (ja) 1987-02-02 1988-08-05 Mitsubishi Electric Corp 分岐予測制御方式
WO1991004536A1 (en) 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
DE69130588T2 (de) 1990-05-29 1999-05-27 Nat Semiconductor Corp Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
JP2596712B2 (ja) 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5689680A (en) * 1993-07-15 1997-11-18 Unisys Corp. Cache memory system and method for accessing a coincident cache with a bit-sliced architecture
US5574883A (en) 1993-11-30 1996-11-12 Unisys Corporation Single chip processing unit providing immediate availability of frequently used microcode instruction words
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5889986A (en) 1997-01-28 1999-03-30 Samsung Electronics Co., Ltd. Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5918062A (en) * 1997-10-23 1999-06-29 Advanced Micro Devices, Inc. Microprocessor including an efficient implemention of an accumulate instruction

Also Published As

Publication number Publication date
KR19990087940A (ko) 1999-12-27
EP0957428B1 (en) 2006-02-22
EP0957428A2 (en) 1999-11-17
EP0957428A3 (en) 2000-03-08
KR100431168B1 (ko) 2004-05-12
JP2000029701A (ja) 2000-01-28
US6256727B1 (en) 2001-07-03
DE69929936D1 (de) 2006-04-27
DE69929936T2 (de) 2006-08-24

Similar Documents

Publication Publication Date Title
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US6298423B1 (en) High performance load/store functional unit and data cache
US5136697A (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US6141747A (en) System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
KR100586058B1 (ko) 재명명 태그들을 교환함으로써 이동이 이루어지는 레지스터 재명명
US6339822B1 (en) Using padded instructions in a block-oriented cache
US5606676A (en) Branch prediction and resolution apparatus for a superscalar computer processor
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US7783870B2 (en) Branch target address cache
US6275927B2 (en) Compressing variable-length instruction prefix bytes
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
JPH07334361A (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
US20070033385A1 (en) Call return stack way prediction repair
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US7831815B2 (en) Data processing apparatus and method for identifying sequences of instructions
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US20060184739A1 (en) Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch
US6240503B1 (en) Cumulative lookahead to eliminate chained dependencies
US5946468A (en) Reorder buffer having an improved future file for storing speculative instruction execution results
US6253309B1 (en) Forcing regularity into a CISC instruction set by padding instructions

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080427

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees