JPH08249181A - ブランチ予測式データ処理装置および動作方法 - Google Patents

ブランチ予測式データ処理装置および動作方法

Info

Publication number
JPH08249181A
JPH08249181A JP7009011A JP901195A JPH08249181A JP H08249181 A JPH08249181 A JP H08249181A JP 7009011 A JP7009011 A JP 7009011A JP 901195 A JP901195 A JP 901195A JP H08249181 A JPH08249181 A JP H08249181A
Authority
JP
Japan
Prior art keywords
branch
instruction
address
unit
sets
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.)
Granted
Application number
JP7009011A
Other languages
English (en)
Other versions
JP2744890B2 (ja
Inventor
P Black Brian
ブライアン・ピー・ブラック
Denman Marvin
マーヴィン・デンマン
A Kearny Mark
マーク・エイ・ケアニー
Peterson Senjon
センヨン・ピーター・ソン
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
Motorola Solutions Inc
Original Assignee
International Business Machines Corp
Motorola Inc
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, Motorola Inc filed Critical International Business Machines Corp
Publication of JPH08249181A publication Critical patent/JPH08249181A/ja
Application granted granted Critical
Publication of JP2744890B2 publication Critical patent/JP2744890B2/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, 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)

Abstract

(57)【要約】 【目的】 改良されたブランチ予測ユニットを有するデ
ータ処理装置を開示する。 【構成】 データ処理装置は、複数の最新実行ブランチ
命令のターゲット・アドレスを格納するためのブランチ
・ターゲット・アドレス・キャッシュを有する。通常、
それぞれの取出しアドレスが、前記キャッシュの内容と
比較される。ヒットが発生すると、データ処理装置はキ
ャッシュ・ターゲット・アドレスにブランチする。ま
た、データ処理装置は、前記キャッシュがブランチ命令
ではなかった命令を「ヒット」したと判定された場合
に、前記キャッシュに格納されたデータを無効にするタ
スク指名ユニットも有し、これによりコンテキスト切替
え後にそのブランチ・ターゲット・アドレス・キャッシ
ュ・データを自動的に無効にする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にはディジタル
計算システムに関し、より具体的にはブランチ予測機能
を備えたデータ処理装置に関する。
【0002】
【従来の技術】本発明は、その主題が、"Data Processo
r with Branch Target Address Cacheand Method of Op
eration"という名称のBlack他による米国特許出願第0
8/188987号に関連する。
【0003】ブランチ予測は、データ処理装置のパフォ
ーマンスを改善するのに使用する技法の1つである。ブ
ランチ命令が依存するオペランドが入手不能の場合、デ
ータ処理装置は、ブランチ命令の結果を予測するか、オ
ペランドが入手できるまでブランチ命令を停止しなけれ
ばならない。データ処理装置が停止するか、またはブラ
ンチ命令の実行を遅延させると、データ処理装置は、次
にどの命令が必要なのかを判定できなくなる。このよう
な遅延は、データ処理装置のパフォーマンスに大幅な影
響を及ぼす。
【0004】ブランチ予測技法を使用するデータ処理装
置は、ブランチ命令を受け取るたびに「推測」を行い、
その推測に基づいて動作し、さらにその命令を実行する
ことで推測が正しかったかどうかを判定する。このよう
なデータ処理装置は、最終的にブランチを行って新しい
命令アドレスに「ジャンプ」するかどうか、またはブラ
ンチが「失敗」して次の順次命令に移行するかどうかを
推測する。ブランチ命令を予測するデータ処理装置は、
ブランチ命令を完全に実行する場合より速く正確な推測
を行うことができるので、パフォーマンスが向上する。
したがって、このようなデータ処理装置では、間違った
推測を訂正するだけでよい。
【0005】ブランチ・ターゲット・アドレス・キャッ
シュ(BTAC)は、ブランチ予測を行うための装置で
ある。BTACは、データ処理装置の最近のブランチ先
であるアドレスを格納している。このような「ブランチ
・ターゲット」には、それを生成するブランチ命令のア
ドレスによって索引が付けられる。データ処理装置は、
次に実行しなければならない命令のアドレスを決定する
と、そのBTACを探索する。アドレスがBTAC内の
有効項目に対応する場合、データ処理装置は、もう一度
ブランチを行うものと想定し、自動的に対応するキャッ
シュ・ターゲット・アドレスにブランチする。アドレス
がBTAC内のどの有効項目にも対応していない場合、
データ処理装置は、何らかの方法によって次の命令のア
ドレスを決定する。
【0006】多くのデータ処理装置が使用するアドレス
指定方式は、BTACの動作を複雑にしている。一般
に、データ処理装置は、内部で命令に索引を付けるため
に第一のアドレス指定方式として仮想アドレスを使用
し、外部でメモリに索引を付けるために第二のアドレス
指定方式として実アドレスを使用する。このようなデー
タ処理装置は、1つまたは複数の専用アレイの内容を使
用して第一のアドレス指定方式から第二のアドレス指定
方式にアドレスを変換する。たとえば、様々なアプリケ
ーション・プログラムまたはサブルーチンの実行を開始
する場合、データ処理装置はこれらのアレイの内容を変
更する。すなわち、コンテキスト切替えを行う。このた
め、他の処置が行われない場合、変換アレイは、コンテ
キスト切替え後にBATC内に非ブランチ命令を誤って
ブランチ命令にマッピングすることがある。このマッピ
ングの結果、データ処理装置は対応するキャッシュ・タ
ーゲット・アドレスにある命令を誤って取り出してしま
う。このようなシナリオは、「ファントム・ブランチ」
と呼ばれている。
【0007】
【発明が解決しようとする課題】ファントム・ブランチ
問題を解決するための既知の方法としては、データ処理
装置の命令セット・アーキテクチャにコンテキスト切替
え命令を組み込む方法がある。このような命令により、
データ処理装置は、BTAC内にキャッシュされた項目
を無効にする。残念ながら、この解決策は、命令セット
・アーキテクチャで使用できる命令コードの数を減らす
ことになり、プログラムとコンパイラとの調整が必要に
なり、データ処理装置のオペレーティング・システムの
長さを増してしまう。
【0008】
【課題を解決するための手段】本発明により、既知のデ
ータ処理装置の欠点をほぼ解消する、ブランチ予測ユニ
ットを有するデータ処理装置が開示される。
【0009】ブランチ予測を備えたデータ処理装置は、
キャッシュ・アレイと、互いに接続されたタスク指名回
路とを有する。キャッシュ・アレイは複数のセットを格
納する。それぞれのセットは、取出しアドレスと、タグ
と、有効ビットとを含む。キャッシュ・アドレスは、対
応するタグが入力アドレスと論理的に等価であれば、セ
ットの1つの取出しアドレスを出力する。また、キャッ
シュ・アレイは、タグが入力アドレスと論理的に等価で
あるときに制御信号をアサートする。タスク指名回路
は、制御信号と、出力された取出しアドレスによって索
引が付けられた命令とを受け取る。キャッシュ・アレイ
が制御信号をアサートし、受け取った命令がブランチ命
令ではない場合、タスク指名回路は選択されたセットの
有効ビットを第一の論理状態に設定する。
【0010】データ処理装置を操作する方法は、第一の
期間中にキャッシュ・アレイ内の命令の入力アドレスを
受け取るステップと、キャッシュ・アレイから取出しア
ドレスを出力するステップと、制御信号をアサートする
ステップとを含む。この方法は、第二の期間中にタスク
指名回路内の命令を受け取るステップと、キャッシュ・
アレイが制御信号をアサートし、命令がブランチ命令で
はない場合に、キャッシュ・アレイ内の有効ビットを第
一の論理状態に設定するステップとをさらに含む。出力
された取出しアドレスは、キャッシュ・アレイ内に格納
されている複数のセットから選択されたセットの一部に
なる。各セットは、取出しアドレスと、有効ビットと、
タグとを含む。設定された有効ビットは、出力された取
出しアドレスの格納済みセットに対応する。また、出力
された取出しアドレスに対応するタグは、入力アドレス
のサブセットと論理的に等価である。格納済みタグの1
つが入力アドレスのサブセットと一致すると、キャッシ
ュ・アレイは制御信号をアサートする。
【0011】
【実施例】図1は、本発明に従って構築されたデータ処
理装置10のブロック図である。データ処理装置10
は、それぞれのブランチ命令が実行されるか実行されな
いかを予測することでそのパフォーマンスを改善するデ
ータ処理装置である。データ処理装置10は次に、予測
されたアドレスにある命令を取り出し、その命令の実行
を開始する。その後、データ処理装置10は、そのブラ
ンチが行われるべきだったか行われるべきではなかった
かを解決し、初期の段階で間違った予測を行った場合に
は訂正措置を実行する。開示された発明によると、デー
タ処理装置10は、ブランチ・ターゲット・アドレス・
キャッシュ(BTAC)の出力と復号した命令とを比較
することにより、コンテキスト切替えが行われたかどう
かを自動的に判定する。BTACが非ブランチ命令とし
て後で復号される命令のターゲット・アドレスを生成す
る場合、データ処理装置10は、コンテキスト切替えが
行われたものと想定する。この場合、データ処理装置1
0は、他の命令が誤って前のプログラムのブランチ命令
にマッピングされないように、BTACの内容を自動的
に無効にする。開示された本発明は、自動的なもので、
特殊な命令を必要とせず、データ処理装置のオペレーテ
ィング・システムの長さを増すこともない。さらに、開
示された方法は、自己修正ソフトウェア・コードのコン
テキストにファントム・ブランチが発生するのを防止す
るために使用できるという利点がある。このような場
合、格納操作では、以前にブランチ命令を格納したメモ
リ・アドレスに非ブランチ命令を書き込むことができ
る。
【0012】引き続き図1を参照して説明すると、バス
・インタフェース・ユニット(以下BIUという)12
は、データ処理装置10とデータ処理システム(図示せ
ず)の残りの部分との間のデータの流れを制御する。B
IU12は、命令キャッシュ14とデータ・キャッシュ
16に接続されている。命令キャッシュ14は、シーケ
ンサ・ユニット18に命令ストリームを供給する。シー
ケンサ・ユニット18については、図3に関連して以下
に詳述する。シーケンサ・ユニット18は、適切な実行
ユニットに個々の命令を転送する。データ処理装置10
は、ブランチ・ユニット20、固定小数点実行ユニット
A 22、固定小数点実行ユニットB24、複合固定小
数点実行ユニット26、ロード/ストア実行ユニット2
8、および浮動小数点実行ユニット30を有する。固定
小数点実行ユニットA 22、固定小数点実行ユニット
B 24、複合固定小数点実行ユニット26、およびロ
ード/ストア実行ユニット28は、その結果を読み取っ
て、汎用レジスタ・ファイル32(GPRというラベル
が付けられているので、以下GPRファイルという)お
よび第一の名前変更バッファ34に書き込む。浮動小数
点実行ユニット30およびロード/ストア実行ユニット
28は、その結果を読み取って、浮動小数点レジスタ・
ファイル36(FPRというラベルが付けられているの
で、以下FPRファイルという)および第二の名前変更
バッファ38に書き込む。
【0013】開示されたブランチ予測方法を使用しない
データ処理装置10の操作は、当技術分野では既知であ
る。一般に、ブランチ・ユニット20は、所与のデータ
・レジスタの内容と命令そのものを考慮して、どのシー
ケンスのプログラム式命令が適切かを判定する。ブラン
チ・ユニット20がブランチ命令を予測するのに使用す
る2つのレジスタは、カウンタ・レジスタ37と条件レ
ジスタ39である。ブランチ・ユニット20について
は、図4および図5に関連して以下に説明する。命令キ
ャッシュ14は、このシーケンスのプログラム式命令を
シーケンサ18に提供する。命令キャッシュ14に必要
な命令が格納されていない場合、命令キャッシュ14
は、データ処理装置10の外部にあるメイン・メモリ・
システム(図示せず)からその命令を取り出す。(以下
に述べるように、シーケンサ・ユニット18は、ブラン
チ・ユニット20が特定のブランチ命令を最終的に解決
する前にブランチ命令ごとに数回の予測を行う。)
【0014】シーケンサ・ユニット18は、このシーケ
ンスのプログラム式命令の個々の命令を様々な実行ユニ
ット20、22、24、26、28、および30に発行
する。それぞれの実行ユニットは、特定クラスの命令の
うちの1つまたは複数の命令を実行する。各実行ユニッ
トの特定クラスの命令は、実行ユニットの名前によって
示される。たとえば、固定小数点実行ユニットAおよび
Bは、固定小数点表記で表されたオペランドに対して加
算、減算、AND、OR、XORなどの単純な数学演算
を実行する。複合固定小数点実行ユニット26は、固定
小数点表記で表されたオペランドに対して乗算、除算な
どのより複雑な数学演算を実行する。浮動小数点実行ユ
ニット30は、浮動小数点表記で表されたオペランドに
対して乗算、除算などの数学演算を実行する。
【0015】固定小数点実行ユニットAおよびBと、複
合固定小数点実行ユニット26は、その演算結果を第一
の名前変更バッファ34内の指定の項目に返す。第一の
名前変更バッファ34は、その結果を生成した命令より
前のすべての命令がそのGPRファイル項目の更新を完
了したときに、第一の名前変更バッファ34からの項目
によってGPRファイル32の項目を定期的に更新す
る。シーケンサ・ユニット18はこの更新を調整する。
第一の名前変更バッファ34とGPRファイル32はど
ちらも、固定小数点実行ユニットAおよびBと、複合固
定小数点ユニット26にオペランドを提供することがで
きる。
【0016】浮動小数点実行ユニット30は、その演算
結果を第二の名前変更バッファ38内の指定の項目に返
す。第二の名前変更バッファ38は、その結果を生成し
た命令より前のすべての命令がそのFPRファイル項目
の更新を完了したときに、第二の名前変更バッファ38
内の項目によってFPRファイル36の項目を定期的に
更新する。シーケンサ・ユニット18はこの更新も調整
する。第二の名前変更バッファ38とFPRファイル3
6はどちらも、浮動小数点実行ユニット30にオペラン
ドを提供する。
【0017】ロード/ストア実行ユニット28は、GP
Rファイル32、第一の名前変更バッファ34、FPR
ファイル36、または第二の名前変更バッファ38に格
納されたデータを読み取り、選択したデータをデータ・
キャッシュ16に書き込む。このデータは、開示された
発明に関連しないデータ処理装置10の動作特性に応じ
て、外部メモリ・システム(図示せず)に書き込むこと
もできる。上記とは反対に、ロード/ストア実行ユニッ
ト28は、データ・キャッシュ16に格納されたデータ
を読み取り、読み取ったデータを第一の名前変更バッフ
ァ34または第二の名前変更バッファ38に書き込む。
データ・キャッシュ16に必要なデータが格納されてい
ない場合は、このキャッシュがBIU12を介してデー
タ処理装置10の外部にあるメイン・メモリ・システム
からそのデータを取り出す。
【0018】開示されたブランチ予測方法を備えたデー
タ処理装置10の操作について、図2ないし図5に関連
して以下に説明する。一般に、データ処理装置10は、
縮小命令セット・コンピュータ(RISC)である。デ
ータ処理装置10は、それぞれの命令を一連のより小さ
いステップに分解することで高性能を達成するが、それ
ぞれのステップは他の命令のステップと時間的に重なり
合うこともある。このパフォーマンス対策は、「パイプ
ライン方式」と呼ばれている。
【0019】図2は、図1に示すデータ処理装置10に
よって実行される命令のタイミング図である。図2は、
所与のブランチ命令機能のタイミングを記述する注釈も
含んでいる。図示の実施例では、それぞれの命令が、取
出し、復号、タスク指名、実行、完了の5つの個別ステ
ップに分割されている。
【0020】取出し段階では、命令キャッシュ14が、
前のクロック・サイクルでシーケンサ・ユニット18ま
たはブランチ・ユニット20によって識別されたメモリ
・アドレスから始まる1つまたは複数の命令を取り出
す。このメモリ・アドレスは、取出しアドレスと呼ばれ
ている。シーケンサ・ユニット18は、取出しパイプラ
イン段階で第一のブランチ予測を行う。また、シーケン
サ・ユニット18は、BTACを使用して、複数の最新
ブランチ命令用として複数対の取出しアドレスと、それ
に対応するターゲット・アドレスを格納する。その入力
取出しアドレスが特定のターゲット・アドレスの取出し
アドレスに対応する場合、シーケンサ・ユニット18は
BTACに格納されている特定のターゲット・アドレス
にある命令を取り出す。
【0021】復号段階では、後続の段階で使用するため
に、シーケンサ・ユニット18によって命令が複数の制
御信号に復号される。シーケンサ・ユニット18は、復
号パイプライン段階で第二のブランチ予測を行う。ま
た、シーケンサ・ユニット18は、1つまたは複数の単
純なブランチ命令用として取出しアドレスを生成するこ
ともできる。シーケンサ・ユニット18は、最近検出し
た各ブランチ命令の履歴状態をブランチ履歴テーブル
(BHT)に入れて管理する。各ブランチ命令の状態に
よって、ブランチ命令が実行されるか実行されないかを
シーケンサ・ユニット18が予測できるかどうかが決ま
る。
【0022】タスク指名段階では、許されないデータま
たは資源依存関係が存在しないと判定し、命令の結果用
に名前変更バッファの項目を予約した後で、シーケンサ
・ユニット18がそれぞれの命令を適切な実行ユニット
に経路指定する。このタスク指名段階では、タスク指名
される命令にオペランド情報を提供することも担当す
る。シーケンサ・ユニット18は、タスク指名パイプラ
イン段階で第三のブランチ予測を行う。また、シーケン
サ・ユニット18は、カウンタ・レジスタ37の値に依
存する1つまたは複数のブランチ命令用として取出しア
ドレスを生成することもできる。このタスク指名段階の
間に、ファントム・ブランチ命令が発生したかどうかを
シーケンサ・ユニット18が判定する。ファントム・ブ
ランチ命令が発生した場合は、シーケンサ・ユニット1
8がそのBTACの内容を無効にする。
【0023】実行段階では、それぞれの特定の実行ユニ
ットがそのプログラム式命令を実行する。結果がある場
合は、それぞれ整数結果および浮動小数点結果用の名前
変更バッファ34または38のいずれかに結果が返され
る。カウンタ・レジスタ37および条件レジスタ39の
内容は、すべてのブランチの最終解決のためにこの実行
段階で使用できる。したがって、実行段階でブランチ・
ユニット20が生成する取出しアドレスは予測ではな
い。
【0024】完了段階では、特定の命令より前のすべて
の命令が汎用レジスタ・ファイルを更新した後で、シー
ケンサ・ユニット18が名前変更バッファに格納された
特定の命令の結果によって汎用レジスタ・ファイルを更
新する。完了段階では、特定の命令より前のすべての命
令がアーキテクチャ状態を更新した後で、マシン内の他
のアーキテクチャ状態もすべて更新する。
【0025】一般に、それぞれの命令段階は、マシン1
のクロック・サイクル分の時間を要する。しかし、複合
固定小数点命令などの一部の命令は、実行するのに1ク
ロック・サイクル以上の時間を要する。したがって、前
の命令が実行に要した時間に幅があるため、特定の命令
の実行段階と完了段階との間に遅延が生じる場合もあ
る。
【0026】図3は、図1に示すシーケンサ・ユニット
18のブロック図である。マルチプレクサ40は、各ク
ロック・サイクルごとに複数のソースから新しい取出し
アドレスを選択する。アドレス・セレクタ42は、以下
に説明する優先順位方式に応じてマルチプレクサ40の
出力として複数のソースから1つを選択する。この取出
しアドレスは、データ処理装置10が実行すべき次の命
令または命令グループの位置を識別する仮想アドレスで
ある。取出しアドレスは、命令取出しアドレス・レジス
タ(IFARというラベルが付けられているので、以下
IFARという)44によってラッチされ、命令キャッ
シュ14に転送される。図示の実施例では、シーケンサ
・ユニット18とブランチ・ユニット20が、5つのパ
イプライン段階のそれぞれの間に取出しアドレスを生成
する。この場合、(最高)4つの取出しアドレスのそれ
ぞれが特定のブランチ命令によって生成され、パイプラ
インの様々な段階で例外アドレスが返されることに留意
されたい。これに対して、2つ以上のブランチ命令の間
隔が密である場合、シーケンサ・ユニット18とブラン
チ・ユニット20は、2つの異なる取出しアドレスを同
時にマルチプレクサ40に転送することもある。後者の
場合、アドレス・セレクタは、遅い方のパイプライン段
階で生成された取出しアドレスを選択する。
【0027】シーケンサ・ユニット18は、データ処理
装置10の5つのパイプライン段階に似た5つの部分に
便宜的に分割することができる。(シーケンサ・ユニッ
ト18の実行部分は、図1に示す6つの実行ユニットに
よって実現される。)
【0028】取出し段階では、IFAR44内の仮想ア
ドレスが、順次アドレス計算回路46、BTAC48、
BHT50、および復号バッファ52に転送される。I
FAR44からの取出しアドレスは、復号バッファ52
で命令のアドレスを追跡するために復号バッファ52に
よってラッチされる。
【0029】順次アドレス計算回路46は、取出しアド
レスを生成し、それを"SEQUENTIAL ADD
RESS"としてマルチプレクサ40に転送する。順次
アドレス計算回路46は、現マシン・サイクルで取り出
した複数の命令をIFAR44の内容に追加することに
より、順次取り出しアドレスを生成する。
【0030】BTAC48は、"BTAC ADDRE
SS"として取出しアドレスを生成することもあり、そ
のような場合には、そのアドレスをマルチプレクサ40
に転送する。BTAC48は、完全連想内容アドレス可
能記憶装置(fully associative content addressable
memory:CAM)アレイである。BTAC48は複数の
30ビット・ターゲット・アドレスを格納する。各ター
ゲット・アドレスは、29ビット・アドレス・タグと、
有効ビットとに関連付けられている。BTAC48は、
現取出しアドレスの最上位の29ビットと格納されてい
るそれぞれのタグとを比較する。取出しアドレスのビッ
トが格納済み有効タグと一致すると、BTAC48は、
対応する格納済みターゲット・アドレスをマルチプレク
サ40に出力する。この場合、BTAC48は、制御信
号HIT/MISSもアサートする。また、BTAC4
8は、後でパイプラインで使用するために、予測された
ターゲット・アドレスとHIT/MISS信号を復号バ
ッファ52に転送する。
【0031】ブランチ・ユニット20は、それぞれの実
行段階中にBTAC48への項目の追加、削除、および
更新を行う。ブランチ・ユニット20が項目の追加を示
している(ブランチを行う)場合、BTAC48の探索
が行われる。その項目がすでにBTAC48内にある場
合、そのアドレス情報が更新される。ブランチ・ターゲ
ット情報用にレジスタを使用するブランチがBTAC4
8内に間違った情報を置き込んでいる可能性があるの
で、この操作は有益である。その項目がBTAC48内
にない場合、ブランチ・ユニット20はそれをBTAC
48に追加し、別の項目を置換する。ブランチ・ユニッ
ト20が項目の削除を示している(ブランチを行わな
い)場合、BTAC48の探索が行われ、一致する項目
(ある場合)が無効になる。BTAC48は、上記の実
行段階操作と前述の取出し段階操作を容易にするため、
2つの読取りポートと1つの書込みポートを有する。図
4および図5は、ブランチ・ユニット20がBTAC4
8とBHT50を更新する方法を示している。
【0032】BHT50は、最近検出した512通りの
ブランチ命令について2ビットのブランチ履歴状態を管
理する、直接マッピング式ランダム・アクセス・メモリ
(RAM)アレイである。それぞれの項目には、4通り
の状態を符号化するための2つのビットが格納されてい
る。BHT50には、IFAR44からの取出しアドレ
ス・ビットのサブセットによって索引が付けられる。現
取出しアドレスのマッピング先である項目の最新値は、
BHT50から読み取られ、復号バッファ52でラッチ
される。ブランチ・ユニット20は、以下に説明する通
り、実行段階でBHT50の各項目を更新する。BHT
50は、上記の実行段階操作と前述の取出し段階操作を
容易にするため、1つの読取りポートと1つの書込みポ
ートを有する。
【0033】データ処理装置10は、条件レジスタ39
の1つまたは複数のビットの値に基づくブランチ命令を
予測するために動的ブランチ予測方法を使用する。Po
werPCアーキテクチャでは、他の命令が、ブランチ
命令実行の前兆として条件レジスタ39の全ビットを変
更する場合もある。動的ブランチ予測方法によると、同
じブランチ命令が以前に発生したか発生しなかったかに
よって、ブランチ命令が実行されたり実行されなかった
りする可能性が強い。このため、各ブランチ命令の履歴
を管理することで、ブランチ命令が実行されるか実行さ
れないかを予測することが可能になる。特定のブランチ
命令の復号段階中に、そのブランチが行われるものとし
て予測されるか行われないものとして予測されるかは、
その特定のブランチ命令の状態によって決まる。図示の
実施例のブランチ状態モデルは、STRONG−NOT
−TAKEN、WEAK−NOT−TAKEN、WEA
K−TAKEN、STRONG−TAKENの4状態モ
デルである。シーケンサ・ユニット18は、命令のブラ
ンチ状態がSTRONG−NOT−TAKENまたはW
EAK−NOT−TAKENに対応する場合、ブランチ
は行われないと予測する。また、シーケンサ・ユニット
18は、命令のブランチ状態がSTRONG−TAKE
NまたはWEAK−TAKENに対応する場合、ブラン
チは行われると予測する。ブランチ・ユニット20はB
HT50の各項目の状態を更新する。また、ブランチ・
ユニット20は、BHT項目の現状態と実行中のブラン
チの方向に関する情報を使用して、実行中のブランチ命
令に対応するBHT項目の次の状態を計算する。シーケ
ンサ・ユニット18がブランチ命令を誤って予測する
と、ブランチ・ユニット20は、BHT50内の対応す
る項目を任意のSTRONG状態から同じWEAK状態
へ、または任意のWEAK状態から反対のWEAK状態
へ更新する。これに対して、シーケンサ・ユニット18
がブランチ命令を正しく予測すると、ブランチ・ユニッ
ト20は、BHT50内の対応する項目を任意のWEA
K状態から同じSTRONG状態へ、または任意のST
RONG状態から同じSTRONG状態へ更新する。
【0034】復号段階では、復号バッファ52が復号予
測ユニット54に命令、アドレス、および制御情報を提
供する。復号バッファ52は、命令復号器56に命令を
提供する。タスク指名バッファ58は、復号バッファ5
2からの命令、アドレス、および制御情報と、命令復号
器56からの命令復号情報をラッチする。復号予測ユニ
ット54は、マルチプレクサ40に"DECODE A
DDRESS"として復号段階取出しアドレスを提供す
る。また、復号予測ユニット54は、無条件ブランチ命
令を予測し、条件レジスタ39内の1つまたは複数のビ
ットに基づいてブランチ命令を予測する。復号予測ユニ
ット54による無条件ブランチ命令の予測は、その命令
の存在を復号し、ブランチ命令に応じて適切な取出しア
ドレスを決定することによって行う。条件レジスタ39
内の1つまたは複数のビットに基づく復号予測ユニット
54によるブランチ命令の予測は、BHT50の内容を
復号することによって行う。前述の通り、復号されたブ
ランチ命令の取出しアドレスに対応するBHT50内の
項目によって、ブランチ命令が実行されるか実行されな
いかが決まる。ブランチ命令自体は、ターゲット・アド
レスを判定する。
【0035】タスク指名段階では、タスク指名バッファ
58がタスク指名ユニット60に命令および制御情報を
供給する。タスク指名ユニット60は、これらの命令に
関する資源割振りと競合検査を行い、可能ならば、適切
な実行ユニットに命令と制御情報を送る。タスク指名ユ
ニット60は、完了ユニット62にも制御情報を送る。
【0036】タスク指名ユニット60は、"DISPA
TCH ADDRESS"として取出しアドレスをマル
チプレクサ40に提供する。タスク指名ユニット60
は、カウンタ・レジスタ37の初期値に基づいてブラン
チ命令を予測する。実行段階ではブランチ・ユニット2
0がカウンタ・レジスタ37の値を使用して各ブランチ
命令を解決することに留意されたい。PowerPCア
ーキテクチャでは、カウンタ・レジスタ37にループの
反復回数を表す値を便宜的にロードすることができ、ル
ープ出口条件を提供するために1回の反復ごとにカウン
タ・レジスタ37を減らすことができる。タスク指名ユ
ニット60は、タスク指名段階中にカウンタ・レジスタ
37の値を考慮して、特定のブランチ命令の命令コード
に応じてブランチを行うか行わないかを予測する(カウ
ンタ・レジスタが0であればブランチするなど)。カウ
ンタ・レジスタ37と条件レジスタ39との組合せを使
用するブランチは、タスク指名段階で予測される。タス
ク指名ユニット60によるこのようなブランチ命令の予
測は、条件レジスタ39によって指定される条件が満た
されているものと想定し、タスク指名段階中にカウンタ
・レジスタ37の値を使用することにより行う。
【0037】タスク指名ユニット60は、シーケンサ・
ユニット18がファントム・ブランチを検出したと判定
した場合、BTAC48に対してBTAC FLUSH
制御信号をアサートする。特定の命令がBTAC48に
予測ターゲットを置いた(BTAC48がHIT/MI
SSをアサートした)ことが制御情報によって示されて
いるが、その特定の命令がブランチ命令ではない場合、
タスク指名ユニット60はBTAC FLUSHをアサ
ートする。BTAC FLUSHをアサートすると、B
TAC48内のすべての項目が無効になる。次に、タス
ク指名ユニット60は、順次アドレス計算回路46によ
る出力として、DISPATCH ADDRESSを介
してマルチプレクサ40に同じ順次アドレスを出力す
る。BTAC項目は前のコンテキストからのものである
可能性があり、そのため、もはや有益ではなくなってい
るので、タスク指名ユニット60はBTAC48を無効
にする。「ファントム・ブランチ」が発生するたびに、
シーケンサ・ユニット18は、ファントム・パスに沿っ
て命令を取り出し、複数サイクルを浪費する。BTAC
のフラッシュは、この現象と、近い将来に発生する他の
多くの「ファントム・ブランチ」を防止するものであ
る。
【0038】ブランチ命令の実行段階の開始時に、ブラ
ンチ・ユニット20は、取出しアドレスの基礎となるブ
ランチ条件の実際の値を把握している。通常、この条件
は、カウンタ・レジスタ37の値と条件レジスタ39内
の1ビットを組み合わせたものである。この時点では、
すべてのブランチに対する最終解決が可能である。ブラ
ンチ・ユニット20は、その計算結果である「EXEC
UTION ADDRESS」を反映して、マルチプレ
クサ40に取出しアドレスを供給する。各種の実行ユニ
ットが実行段階中に完了ユニット62に対して様々な制
御情報を供給する。
【0039】完了段階では、完了ユニット62がアーキ
テクチャ・マシン状態を更新する。何らかの実行ユニッ
トからの割込みが発生した場合、完了ユニット62は、
「INTERRUPT ADDRESS」として取出し
アドレスを提供する。割込み条件を有する命令がいつで
も完了できる状態になると、完了ユニット62はINT
ERRUPT ADDRESSを出力する。通常、ソフ
トウェアによって割込みが処理された後、割込み条件の
原因となった命令の次の命令から実行を再開するため
に、割込みからの復帰が実行される。また、完了ユニッ
ト62は、そのユニットそのものと全実行ユニットのア
ーキテクチャ状態を更新するための制御信号も提供す
る。ブランチ命令の場合、このステップでアーキテクチ
ャ・プログラム・カウンタとカウンタ・レジスタ37が
更新される。
【0040】アドレス・セレクタ42は、最高6つのア
ドレスのうちのどのアドレスをマルチプレクサ40から
IFAR44に出力させるかを判定する。マルチプレク
サ40は、BTAC48からHIT/MISS制御信号
を、復号予測ユニット54からDECODE CORR
ECTION制御信号を、タスク指名ユニット60から
DISPATCH CORRECTION制御信号を、
ブランチ・ユニット20からEXECUTION CO
RRECTION制御信号を、完了ユニット62からI
NTERRUPT制御信号を、それぞれ受け取る。各制
御信号のソースは、前のパイプライン段階中に生成され
た取出しアドレスとは異なる取出しアドレス、すなわち
訂正済み取出しアドレスを生成する場合に、その制御信
号をアサートする。一般に、パイプラインの各段階は、
ブランチを解決するか、または前の段階(複数も可)よ
り統計的に正確なブランチ方向の予測を行う。このた
め、パイプラインの後続段階は、訂正については前の段
階より優先される。取出し段階の場合、BTAC48の
出力は順次アドレス計算回路46の出力より優先され
る。その後、取出しアドレスを訂正するたびに、これに
対応するブランチ命令以降のパイプライン内のすべての
命令が無効になる。たとえば、ブランチ・ユニット20
が前の取出しアドレスを訂正した場合、復号段階の取出
しアドレス(直後のブランチ命令のもの)は無関係にな
る。この場合、復号段階の取出しアドレスの基礎となる
のは、取り出されないはずのブランチ命令である。
【0041】図4は、図1に示すブランチ・ユニット2
0がBTAC48を更新する方法を示す流れ図66であ
る。PowerPCアーキテクチャによると、ブランチ
・ユニット20は、無条件ブランチ、条件レジスタ39
に基づく条件付きブランチ、カウンタ・レジスタ37に
基づく条件付きブランチ、カウンタ・レジスタ37およ
び条件レジスタ39に基づく条件付きブランチという4
通りのクラスのブランチ命令を実行する。無条件ブラン
チ命令は、復号段階中にその命令の復号に基づいて予測
(解決)される。条件レジスタ39に基づく条件付きブ
ランチ命令は、BHT50からの履歴ビットを使用し
て、復号段階中に予測される。カウンタ・レジスタ37
に基づく条件付きブランチ命令と、カウンタ・レジスタ
37および条件レジスタ39の組合せに基づく条件付き
ブランチ命令は、タスク指名段階中に予測される。上記
の後者の命令では、減分されたカウンタ・レジスタ37
の値を使用し、条件レジスタ39のすべての条件が満た
されているものと想定する。
【0042】引き続き図4を参照して説明すると、ブラ
ンチ・ユニット20は、それが実行する各ブランチ命令
ごとに新しい取出しアドレスを計算する(ステップ6
8)。ブランチ・ユニット20は、ブランチ命令の命令
コードと、カウンタ・レジスタ37および条件レジスタ
39の内容に応じて、そのユニットが同じ命令パスに沿
って続行する(ブランチを行わない)かどうか、または
そのユニットが新しい命令ストリームにジャンプする
(ブランチを行う)かどうかを解決する。ブランチ・ユ
ニット20は、ブランチ命令のアドレス指定形式に従っ
て、実行するブランチの取出しアドレスを計算する。
【0043】ブランチ・ユニット20は、無条件ブラン
チ、カウンタ・レジスタ37が0の場合のブランチ、カ
ウンタ・レジスタ37が0でない場合のブランチ、条件
レジスタ39が真の場合のブランチ、条件レジスタ39
が偽の場合のブランチ、条件レジスタ39が真でカウン
タ・レジスタ37が0の場合のブランチ、条件レジスタ
39が偽でカウンタ・レジスタ37が0の場合のブラン
チ、条件レジスタ39が真でカウンタ・レジスタ37が
0でない場合のブランチ、または条件レジスタ39が偽
でカウンタ・レジスタ37が0でない場合のブランチと
いうそれぞれのブランチ命令の命令コードの定義された
先行条件に応じて、それぞれのブランチを行うかどうか
を予測する。
【0044】ブランチ・ユニット20は、新しい取出し
アドレス用として、順次アドレス、絶対ターゲット・ア
ドレス、オフセット・ターゲット・アドレス、カウンタ
・レジスタ37の内容、およびリンク・レジスタ(図示
せず)の内容の5通りのアドレスのうちの1つを出力す
る。ブランチ・ユニット20による順次アドレスの計算
は、ブランチ命令の取出しアドレスに命令ワードのサイ
ズ(バイト、ハーフワードなど)を加算することで行
う。ブランチ・ユニット20による絶対ターゲット・ア
ドレスの計算は、6つの0、ブランチ命令内の埋込みオ
ペランド、および2つの0を(最上位ビットから最下位
ビットへ)連結することで行う。ブランチ・ユニット2
0によるオフセット・ターゲット・アドレスの計算は、
埋込みオペランドとブランチの取出しアドレスを加算す
ることで行う。ブランチが行われないものとして解決さ
れた場合、ブランチ・ユニット20は順次アドレスを選
択する。また、ブランチが行われるものとして解決され
た場合は、ブランチ・ユニット20は、絶対ターゲット
・アドレス、オフセット・ターゲット・アドレス、カウ
ンタ・レジスタ37の内容、またはリンク・レジスタの
内容のいずれか1つを選択する。4通りの可能な値のう
ちの特定の値を選択する場合、ブランチ・ユニット20
は、ブランチ命令のアドレス指定形式に応じて選択す
る。
【0045】次に、ブランチ・ユニット20は、そのユ
ニットが次にブランチ命令を実行するときに同じブラン
チ命令を予測する方法を決定する(ステップ70)。ス
テップ70については、図5に関連してさらに詳細に説
明する。次に、ブランチ・ユニット20は、ブランチ命
令に対応する取出しアドレスとターゲット・アドレスの
対をBTAC48から削除する(ステップ72)か、あ
るいはブランチ命令に対応する取出しアドレスとターゲ
ット・アドレスの対をBTAC48に追加する(ステッ
プ74)。
【0046】図5は、図4に示すステップ70の流れ図
である。ブランチ・ユニット20はまず、それが実行中
のブランチ命令が無条件ブランチ命令かどうかを判定す
る(ステップ76)。ブランチ・ユニット20が実行中
のブランチ命令が無条件ブランチ命令であれば、ブラン
チ・ユニット20は、次にその命令を実行するときにブ
ランチ命令を実行すると予測する(実際に認識する)。
この場合、ブランチ・ユニット20は、ブランチ命令の
取出しアドレスと、ステップ68でそのユニットが計算
したターゲット・アドレスをBTAC48に追加する。
ブランチ・ユニット20が実行中のブランチ命令が無条
件ブランチ命令でなければ、ブランチ・ユニット20は
引き続き、そのユニットがどのタイプのブランチ命令を
実行したかを判定する。
【0047】ブランチ・ユニット20は次に、それが実
行中のブランチ命令が条件付きブランチ命令かどうかを
判定する(ステップ78)。前述の通り、条件付きブラ
ンチ命令は、条件レジスタ39内の1つまたは複数のビ
ットによって決まる。また、条件付きブランチ命令は、
条件付きブランチ命令の取出しアドレスに対応してBH
T50に格納されている値に応じて、実行されるものま
たは実行されないものとして予測される。ブランチ・ユ
ニット20が実行中のブランチ命令が条件付きブランチ
命令であれば、ブランチ・ユニット20はBHT50用
として新しいブランチ状態を計算する(ステップ8
0)。また、ブランチ・ユニット20は、この新しいブ
ランチ状態をBHT50に書き込む(ステップ80)。
次に、ブランチ・ユニット20は、新しいブランチ状態
がSTRONG−TAKENまたはWEAK−TAKE
Nかどうかを判定する(ステップ82)。いずれの場合
も、条件付きブランチ命令は、次にデータ処理装置10
がこの条件付きブランチ命令を実行するときに行われる
ものとして予測される。このため、ブランチ・ユニット
20は、ブランチ命令の取出しアドレスと、ステップ6
8で計算したターゲット・アドレスをBTAC48に追
加する。STRONG−NOT−TAKENまたはWE
AK−NOT−TAKENに対応するブランチ状態を有
する条件付きブランチ命令は、次にデータ処理装置10
がこの条件付きブランチ命令を実行するときに行われな
いものとして予測される。このため、ブランチ・ユニッ
ト20は、ブランチ命令の取出しアドレスと、ステップ
68で計算したターゲット・アドレスをBTAC48か
ら削除する。
【0048】ブランチ・ユニット20が実行中のブラン
チ命令が無条件ブランチ命令でも条件付きブランチ命令
でもない場合、その命令はカウンタ・レジスタ37の値
に基づくものでなければならない。前述の通り、ブラン
チ・ユニット20は、カウンタ・レジスタ37の値が0
かまたは0でない場合にブランチする可能性のあるブラ
ンチ命令を実行する。したがって、ブランチ・ユニット
20は、カウンタ・ベースのブランチ命令が、カウンタ
・レジスタ37の値が0であるという条件でブランチす
るかどうかを判定する(ステップ84)。
【0049】カウンタ・レジスタ・ベースのブランチ命
令が、カウンタ・レジスタ37の値が0であるという条
件でブランチする場合、ブランチ・ユニット20は、カ
ウンタ・レジスタ37の現在値が1であるかどうかを判
定する(ステップ86)。カウンタ・レジスタ37の値
が1であれば、ブランチ・ユニット20は、ブランチ命
令の取出しアドレスと、ステップ68で計算したターゲ
ット・アドレスをBTAC48に追加する。また、カウ
ンタ・レジスタ37の現在値が1でなければ、ブランチ
・ユニット20は、ブランチ命令の取出しアドレスと、
ステップ68で計算したターゲット・アドレスをBTA
C48から削除する。PowerPCアーキテクチャで
は、各ブランチ命令の実行段階の開始時に、ブランチ・
ユニット20がカウンタ・レジスタ37の値を減らす。
その後、ブランチ・ユニット20は、ブランチ解決の一
部として、カウンタ・レジスタ37の値を検査する。し
たがって、カウンタ・レジスタ37の現在の値が1であ
れば、次のブランチ命令によって、カウンタ・レジスタ
37の値が0になる。ブランチ・ユニット20は、それ
が実行中のブランチ命令が次に実行するブランチ命令に
もなると想定する。このため、カウンタ・レジスタ37
の値が0であることというブランチ実行要件は、カウン
タの現在値が1の場合に論理的に真になる。同様に、カ
ウンタ・レジスタ37の値が0であることというブラン
チ実行要件は、カウンタの現在値が1ではない場合に論
理的に偽になる。(あるいは、ブランチ・ユニット20
は、次にブランチ命令を検出したときにそのブランチ命
令を実行するか実行しないかを予測する場合、カウンタ
・レジスタ37の値が0(または1)ではないと想定す
ることもできる。統計的には、カウンタ・レジスタ37
の値が特定の数値である確率より特定の数値ではない確
率の方が高い。)
【0050】カウンタ・レジスタ・ベースのブランチ命
令が、カウンタ・レジスタ37の値が0ではないという
条件でブランチする場合、ブランチ・ユニット20は、
カウンタ・レジスタ37の現在値が1であるかどうかを
判定する(ステップ88)。カウンタ・レジスタ37の
現在値が1でない場合、ブランチ・ユニット20は、ブ
ランチ命令の取出しアドレスと、ステップ68で計算し
たターゲット・アドレスをBTAC48に追加する。カ
ウンタ・レジスタ37の値が1であれば、ブランチ・ユ
ニット20は、ブランチ命令の取出しアドレスと、ステ
ップ68で計算したターゲット・アドレスをBTAC4
8から削除する。PowerPCアーキテクチャでは、
各ブランチ命令の実行段階の開始時に、ブランチ・ユニ
ット20がカウンタ・レジスタ37の値を減らす。その
後、ブランチ・ユニット20は、ブランチ解決の一部と
して、カウンタ・レジスタ37の値を検査する。したが
って、カウンタ・レジスタ37の現在の値が1であれ
ば、次のブランチ命令によって、カウンタ・レジスタ3
7の値が0になる。ブランチ・ユニット20は、それが
実行中のブランチ命令が次に実行するブランチ命令にも
なると想定する。このため、カウンタ・レジスタ37の
値が0でないことというブランチ実行要件は、カウンタ
の現在値が1の場合に論理的に偽になる。同様に、カウ
ンタ・レジスタ37の値が0でないことというブランチ
実行要件は、カウンタの現在値が1ではない場合に論理
的に真になる。
【0051】ブランチ・ユニット20が次にブランチ命
令を実行するときにそのブランチ命令が実行されるか実
行されないかの予測は、ブランチ命令の現在の解決だけ
に依存するわけではないことに留意されたい。たとえ
ば、条件付きブランチ命令は、その命令の事前履歴のた
め、または何らかの始動状態のため、STRONG−T
AKENに等しいブランチ状態を持つ場合もある。この
ようなブランチ命令は、命令のパイプライン・サイクル
の復号段階中に実行されるものとして予測されるはずで
ある。しかし、この命令の基礎となる条件によって、ブ
ランチ・ユニット20が命令の実行段階中にブランチを
行わなくなる可能性がある。この場合、ブランチ・ユニ
ットは、実行段階の取出しアドレスによって復号段階の
取出しアドレスを訂正するものと思われる。また、ブラ
ンチ・ユニット20は、ブランチ命令のブランチ状態も
WEAK−TAKENに変更するはずである(ステップ
80)。ブランチ・ユニット20は、このWEAK−T
AKENブランチ状態に基づいて、次に命令を実行する
ときにこの条件付きブランチ命令を実行すべきであると
予測するだろう。このため、ブランチ・ユニット20
は、この条件付きブランチ命令の取出しアドレスとター
ゲット・アドレスの対をBTAC48に追加する。
【0052】具体的な実施例に関連して本発明を説明し
てきたが、当業者は、他の変更態様および改良態様を思
いつくだろう。たとえば、開示された発明は、複雑命令
セット・コンピュータ、すなわち、CISCマシンとし
て従来分類されているデータ処理装置に取り入れること
もできる。あるいは、BTAC FLUSHのタイミン
グを他のパイプライン段階で生成することもできる。ま
た、所与の実施例で所与の機能ユニットを省略したり、
所与の機能ユニットをデータ処理装置10の他の領域に
再配置することもできる。このため、本発明は、特許請
求の範囲で定義する本発明の精神および範囲から逸脱し
ないこのような変更態様をすべて包含することに留意さ
れたい。
【0053】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0054】(1)複数のセットを格納するキャッシュ
・アレイであって、複数のセットのそれぞれが取出しア
ドレスと、タグと、有効ビットとを含み、複数のセット
から選択された1つのセットのタグが入力アドレスのサ
ブセットと論理的に等価である場合にキャッシュ・アレ
イが複数のセットから選択された1つのセットの取出し
アドレスを出力し、複数のセットから選択された1つの
セットの取出しアドレスが第一の取出しアドレスであ
り、複数のセットから選択された1つのセットのタグが
入力アドレスのサブセットと論理的に等価である場合に
キャッシュ・アレイが制御信号をアサートするキャッシ
ュ・アレイと、キャッシュ・アレイに連結され、制御信
号と、受け取ったアドレスによって索引が付けられた命
令とを受け取り、キャッシュ・アレイが制御信号をアサ
ートし、受け取ったアドレスによって索引が付けられた
命令がブランチ命令ではない場合に、複数のセットから
選択された1つのセットの有効ビットを第一の論理状態
に設定するタスク指名回路とを含む、ブランチ予測式デ
ータ処理装置。 (2)入力アドレスに応じて、第二の取出しアドレスを
生成する順次アドレス計算回路と、順次アドレス計算回
路とキャッシュ・アレイとに連結され、制御信号のアサ
ートに応じて第一の取出しアドレスを出力し、制御信号
の非アサートに応じて第二の取出しアドレスを出力する
マルチプレクサとをさらに含むことを特徴とする、上記
(1)に記載のデータ処理装置。 (3)キャッシュ・アレイが制御信号をアサートし、受
け取ったアドレスによって索引が付けられた命令がブラ
ンチ命令ではない場合に、複数のセットの各有効ビット
を第一の論理状態に設定するための回路が、タスク指名
回路にさらに含まれることを特徴とする、上記(2)に
記載のデータ処理装置。 (4)キャッシュ・アレイが制御信号をアサートし、受
け取ったアドレスによって索引が付けられた命令がブラ
ンチ命令ではない場合に、複数のセットの各有効ビット
を第一の論理状態に設定するための回路が、タスク指名
回路にさらに含まれることを特徴とする、上記(1)に
記載のデータ処理装置。 (5)キャッシュ・アレイが連想記憶装置であることを
特徴とする、上記(1)、(3)または(4)に記載の
データ処理装置。 (6)第一の期間中に、命令の入力アドレスをキャッシ
ュ・メモリで受け取るステップと、複数のセットから選
択された1つのセットのタグが入力アドレスのサブセッ
トと論理的に等価である場合に、複数のセットから選択
された1つのセットの取出しアドレスを出力するステッ
プであって、複数のセットから選択された1つのセット
の取出しアドレスが第一の取出しアドレスであり、複数
のセットのそれぞれが取出しアドレスと、タグと、有効
ビットとを含むステップと、複数のセットから選択され
た1つのセットのタグが入力アドレスのサブセットと論
理的に等価である場合に、制御信号をアサートするステ
ップと、第二の期間中に、タスク指名回路で命令を受け
取るステップと、キャッシュ・アレイが制御信号をアサ
ートし、命令がブランチ命令ではない場合に、複数のセ
ットから選択された1つのセットの有効ビットをタスク
指名回路により第一の論理状態に設定するステップとを
含む、データ処理装置の動作方法。 (7)第一の期間中に、入力アドレスに応じて、順次ア
ドレス計算回路で第二の取出しアドレスを生成するステ
ップと、キャッシュ・アレイと順次アドレス計算回路と
に連結されたマルチプレクサにより、制御信号のアサー
トに応じて第一の取出しアドレスを、または制御信号の
非アサートに応じて第二の取出しアドレスを選択するス
テップとをさらに含むことを特徴とする、上記(6)に
記載の方法。 (8)キャッシュ・アレイが制御信号をアサートし、命
令がブランチ命令ではない場合に、複数のセットの各有
効ビットを第一の論理状態に設定するステップが、設定
ステップにさらに含まれることを特徴とする、上記
(7)に記載の方法。 (9)キャッシュ・アレイが制御信号をアサートし、命
令がブランチ命令ではない場合に、複数のセットの各有
効ビットを第一の論理状態に設定するステップが、設定
ステップにさらに含まれることを特徴とする、上記
(6)に記載の方法。 (10)連想記憶装置で入力アドレスを受け取るステッ
プが、入力アドレスを受け取るステップにさらに含まれ
ることを特徴とする、上記(6)、(8)または(9)
に記載の方法。
【図面の簡単な説明】
【図1】本発明に従って構築されたデータ処理装置のブ
ロック図である。
【図2】図1に示すデータ処理装置によって実行される
命令のタイミング図である。
【図3】図1に示すシーケンサ・ユニットのブロック図
である。
【図4】図1に示すブランチ・ユニットがブランチ・タ
ーゲット・アドレス・キャッシュを更新する方法を示す
流れ図である。
【図5】図4に示す1つのステップの流れ図である。
【符号の説明】
10 データ処理装置 12 バス・インタフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 ブランチ・ユニット 22 固定小数点実行ユニットA 24 固定小数点実行ユニットB 26 複合固定小数点実行ユニット 28 ロード/ストア実行ユニット 30 浮動小数点実行ユニット 32 GPRファイル 34 第一の名前変更バッファ 36 FPRファイル 37 カウンタ・レジスタ 38 第二の名前変更バッファ 39 条件レジスタ
───────────────────────────────────────────────────── フロントページの続き (71)出願人 594083818 モトローラ・インコーポレイテッド アメリカ合衆国60196、イリノイ州シャー ムバーク、イースト・アルゴンクイン・ロ ード1303、サ−ド・フロワー (72)発明者 ブライアン・ピー・ブラック アメリカ合衆国78759 テキサス州オース チン シェパード・マウンテン・コーブ 6000 (72)発明者 マーヴィン・デンマン アメリカ合衆国78727 テキサス州オース チン ルスタウン・ドライブ 4804 (72)発明者 マーク・エイ・ケアニー アメリカ合衆国78746 テキサス州オース チン ブレディー・レーン 408 (72)発明者 センヨン・ピーター・ソン アメリカ合衆国78759 テキサス州オース チン バケロ・コーブ 8405

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】複数のセットを格納するキャッシュ・アレ
    イであって、複数のセットのそれぞれが取出しアドレス
    と、タグと、有効ビットとを含み、複数のセットから選
    択された1つのセットのタグが入力アドレスのサブセッ
    トと論理的に等価である場合にキャッシュ・アレイが複
    数のセットから選択された1つのセットの取出しアドレ
    スを出力し、複数のセットから選択された1つのセット
    の取出しアドレスが第一の取出しアドレスであり、複数
    のセットから選択された1つのセットのタグが入力アド
    レスのサブセットと論理的に等価である場合にキャッシ
    ュ・アレイが制御信号をアサートするキャッシュ・アレ
    イと、 キャッシュ・アレイに連結され、制御信号と、受け取っ
    たアドレスによって索引が付けられた命令とを受け取
    り、キャッシュ・アレイが制御信号をアサートし、受け
    取ったアドレスによって索引が付けられた命令がブラン
    チ命令ではない場合に、複数のセットから選択された1
    つのセットの有効ビットを第一の論理状態に設定するタ
    スク指名回路とを含む、ブランチ予測式データ処理装
    置。
  2. 【請求項2】入力アドレスに応じて、第二の取出しアド
    レスを生成する順次アドレス計算回路と、 順次アドレス計算回路とキャッシュ・アレイとに連結さ
    れ、制御信号のアサートに応じて第一の取出しアドレス
    を出力し、制御信号の非アサートに応じて第二の取出し
    アドレスを出力するマルチプレクサとをさらに含むこと
    を特徴とする、請求項1に記載のデータ処理装置。
  3. 【請求項3】キャッシュ・アレイが制御信号をアサート
    し、受け取ったアドレスによって索引が付けられた命令
    がブランチ命令ではない場合に、複数のセットの各有効
    ビットを第一の論理状態に設定するための回路が、タス
    ク指名回路にさらに含まれることを特徴とする、請求項
    2に記載のデータ処理装置。
  4. 【請求項4】キャッシュ・アレイが制御信号をアサート
    し、受け取ったアドレスによって索引が付けられた命令
    がブランチ命令ではない場合に、複数のセットの各有効
    ビットを第一の論理状態に設定するための回路が、タス
    ク指名回路にさらに含まれることを特徴とする、請求項
    1に記載のデータ処理装置。
  5. 【請求項5】キャッシュ・アレイが連想記憶装置である
    ことを特徴とする、請求項1、3または4に記載のデー
    タ処理装置。
  6. 【請求項6】第一の期間中に、命令の入力アドレスをキ
    ャッシュ・メモリで受け取るステップと、 複数のセットから選択された1つのセットのタグが入力
    アドレスのサブセットと論理的に等価である場合に、複
    数のセットから選択された1つのセットの取出しアドレ
    スを出力するステップであって、複数のセットから選択
    された1つのセットの取出しアドレスが第一の取出しア
    ドレスであり、複数のセットのそれぞれが取出しアドレ
    スと、タグと、有効ビットとを含むステップと、 複数のセットから選択された1つのセットのタグが入力
    アドレスのサブセットと論理的に等価である場合に、制
    御信号をアサートするステップと、 第二の期間中に、タスク指名回路で命令を受け取るステ
    ップと、 キャッシュ・アレイが制御信号をアサートし、命令がブ
    ランチ命令ではない場合に、複数のセットから選択され
    た1つのセットの有効ビットをタスク指名回路により第
    一の論理状態に設定するステップとを含む、データ処理
    装置の動作方法。
  7. 【請求項7】第一の期間中に、入力アドレスに応じて、
    順次アドレス計算回路で第二の取出しアドレスを生成す
    るステップと、 キャッシュ・アレイと順次アドレス計算回路とに連結さ
    れたマルチプレクサにより、制御信号のアサートに応じ
    て第一の取出しアドレスを、または制御信号の非アサー
    トに応じて第二の取出しアドレスを選択するステップと
    をさらに含むことを特徴とする、請求項6に記載の方
    法。
  8. 【請求項8】キャッシュ・アレイが制御信号をアサート
    し、命令がブランチ命令ではない場合に、複数のセット
    の各有効ビットを第一の論理状態に設定するステップ
    が、設定ステップにさらに含まれることを特徴とする、
    請求項7に記載の方法。
  9. 【請求項9】キャッシュ・アレイが制御信号をアサート
    し、命令がブランチ命令ではない場合に、複数のセット
    の各有効ビットを第一の論理状態に設定するステップ
    が、設定ステップにさらに含まれることを特徴とする、
    請求項6に記載の方法。
  10. 【請求項10】連想記憶装置で入力アドレスを受け取る
    ステップが、入力アドレスを受け取るステップにさらに
    含まれることを特徴とする、請求項6、8または9に記
    載の方法。
JP7009011A 1994-02-04 1995-01-24 ブランチ予測式データ処理装置および動作方法 Expired - Lifetime JP2744890B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19229294A 1994-02-04 1994-02-04
US192292 1994-02-04

Publications (2)

Publication Number Publication Date
JPH08249181A true JPH08249181A (ja) 1996-09-27
JP2744890B2 JP2744890B2 (ja) 1998-04-28

Family

ID=22709074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7009011A Expired - Lifetime JP2744890B2 (ja) 1994-02-04 1995-01-24 ブランチ予測式データ処理装置および動作方法

Country Status (3)

Country Link
US (1) US5761723A (ja)
JP (1) JP2744890B2 (ja)
TW (1) TW253946B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812838A (en) * 1997-03-13 1998-09-22 International Business Machines Corporation Branch history table
US6834338B1 (en) * 2000-02-18 2004-12-21 Texas Instruments Incorporated Microprocessor with branch-decrement instruction that provides a target and conditionally modifies a test register if the register meets a condition
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
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
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
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
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
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
JP3843048B2 (ja) * 2002-06-28 2006-11-08 富士通株式会社 分岐予測機構を有する情報処理装置
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
TWI249131B (en) * 2003-01-14 2006-02-11 Ip First Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
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
US7360023B2 (en) * 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US8719837B2 (en) * 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62159230A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPS62159233A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0128945B1 (en) * 1982-12-09 1991-01-30 Sequoia Systems, Inc. Memory backup system
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
WO1993017384A1 (en) * 1992-02-27 1993-09-02 Wang Laboratories, Inc. Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5423048A (en) * 1992-08-27 1995-06-06 Northern Telecom Limited Branch target tagging

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62159230A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPS62159233A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置

Also Published As

Publication number Publication date
US5761723A (en) 1998-06-02
JP2744890B2 (ja) 1998-04-28
TW253946B (en) 1995-08-11

Similar Documents

Publication Publication Date Title
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US5805877A (en) Data processor with branch target address cache and method of operation
US5530825A (en) Data processor with branch target address cache and method of operation
US7159103B2 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US5687349A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
EP0381444B1 (en) Branch prediction
US4477872A (en) Decode history table for conditional branch instructions
US6502185B1 (en) Pipeline elements which verify predecode information
US6122727A (en) Symmetrical instructions queue for high clock frequency scheduling
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
CA1325288C (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
KR20010075258A (ko) 간접 분기 목적지 산출 방법
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2006520964A5 (ja)
US6289444B1 (en) Method and apparatus for subroutine call-return prediction
EP1121635B1 (en) Mechanism for load block on store address generation and universal dependency vector
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache
EP0550289A2 (en) A mechanism to detect stores into the instruction stream
US6978361B2 (en) Effectively infinite branch prediction table mechanism