JP3156773B2 - 命令処理装置 - Google Patents
命令処理装置Info
- Publication number
- JP3156773B2 JP3156773B2 JP13452798A JP13452798A JP3156773B2 JP 3156773 B2 JP3156773 B2 JP 3156773B2 JP 13452798 A JP13452798 A JP 13452798A JP 13452798 A JP13452798 A JP 13452798A JP 3156773 B2 JP3156773 B2 JP 3156773B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- prediction
- address
- fetch
- 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
Links
Landscapes
- Advance Control (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、分岐予測回路を備
える命令処理装置(プロセッサ)に関し、特に、パイプ
ライン方式で命令を実行する命令処理装置における分岐
命令による分岐の発生とその方向を予測する分岐予測回
路に関する。
える命令処理装置(プロセッサ)に関し、特に、パイプ
ライン方式で命令を実行する命令処理装置における分岐
命令による分岐の発生とその方向を予測する分岐予測回
路に関する。
【0002】
【従来の技術】現在、マイクロプロセッサにおいて広く
実施されている分岐予測では、分岐ターゲットバッファ
に登録された分岐命令をフェッチしたときに次のフェッ
チアドレスを予測するものが一般的である。
実施されている分岐予測では、分岐ターゲットバッファ
に登録された分岐命令をフェッチしたときに次のフェッ
チアドレスを予測するものが一般的である。
【0003】このような分岐予測においては、予測が失
敗した場合、正常実行を始めるまでのペナルティ時間が
大きく、性能に大きく影響を及ぼしている。特に、今後
マイクロプロセッサがそのクロックサイクルを上げるた
めに、パイプライン段数を増やす方向で設計された場
合、分岐予測失敗のペナルティ時間もそれに応じて大き
くなり、プロセッサの性能低下につながることが予測さ
れる。
敗した場合、正常実行を始めるまでのペナルティ時間が
大きく、性能に大きく影響を及ぼしている。特に、今後
マイクロプロセッサがそのクロックサイクルを上げるた
めに、パイプライン段数を増やす方向で設計された場
合、分岐予測失敗のペナルティ時間もそれに応じて大き
くなり、プロセッサの性能低下につながることが予測さ
れる。
【0004】これに対して、特開平6−161750号
公報においては、上記問題の解決のため、各命令のDC
ステージで条件コードの変更の可能性の有無を検出し、
結果を以降のステージに伝播するタグ、演算命令のEX
ステージでの結果フラグを保持するバッファを用意し、
分岐命令に対するターゲット命令フェッチタイミングで
タグの状態を参照、早期分岐判定を行なう方法を提供し
ている。
公報においては、上記問題の解決のため、各命令のDC
ステージで条件コードの変更の可能性の有無を検出し、
結果を以降のステージに伝播するタグ、演算命令のEX
ステージでの結果フラグを保持するバッファを用意し、
分岐命令に対するターゲット命令フェッチタイミングで
タグの状態を参照、早期分岐判定を行なう方法を提供し
ている。
【0005】しかし、一般的に、分岐命令とその分岐条
件を生成する命令はプログラム中で大きく離れているわ
けではないことを鑑みると、現在のパイプライン長の長
い、かつ1クロックに複数の命令を実行するプロセッサ
では、実際に演算結果のフラグを参照して分岐予測をす
ることは極めて困難であり、プロセッサの性能向上に寄
与するとは考え難い。また、条件コードCCの変更可能
性をハードウェアで検出する機構を備えるため、ハード
ウェア量が大きく、かつ機構が複雑となる。また、条件
コードCCを用いる方法では、一般的に命令レベルの並
列化の阻害要因となるため、現在では余り行われていな
い。
件を生成する命令はプログラム中で大きく離れているわ
けではないことを鑑みると、現在のパイプライン長の長
い、かつ1クロックに複数の命令を実行するプロセッサ
では、実際に演算結果のフラグを参照して分岐予測をす
ることは極めて困難であり、プロセッサの性能向上に寄
与するとは考え難い。また、条件コードCCの変更可能
性をハードウェアで検出する機構を備えるため、ハード
ウェア量が大きく、かつ機構が複雑となる。また、条件
コードCCを用いる方法では、一般的に命令レベルの並
列化の阻害要因となるため、現在では余り行われていな
い。
【0006】さらに、特開平8−110857号公報に
おいては、上記ペナルティの削減のために、分岐確率フ
ラグを参照して分岐ターゲットバッファBTBへの登録
・更新を決定し、分岐確率の低いものについて分岐ター
ゲットバッファBTBへの登録を抑止するための手段を
提供している。ただし、この公報においては予測精度の
向上によってペナルティ時間の発生そのものを抑えよう
としているため、ペナルティ時間そのものの短縮は望め
ない。
おいては、上記ペナルティの削減のために、分岐確率フ
ラグを参照して分岐ターゲットバッファBTBへの登録
・更新を決定し、分岐確率の低いものについて分岐ター
ゲットバッファBTBへの登録を抑止するための手段を
提供している。ただし、この公報においては予測精度の
向上によってペナルティ時間の発生そのものを抑えよう
としているため、ペナルティ時間そのものの短縮は望め
ない。
【0007】
【発明が解決しようとする課題】上述したように従来の
分岐予測においては、以下に述べるような問題点があっ
た。
分岐予測においては、以下に述べるような問題点があっ
た。
【0008】第1に、分岐予測が失敗するとプログラム
実行とは関係ない無駄な時間が発生し、プロセッサの性
能に大きな影響を与えるという問題がある。その理由
は、予測が外れた場合に、その外れた分岐命令以降にフ
ェッチした命令が全て無効なものであるため、この命令
の実行時間がペナルティとして見えてしまうためであ
る。特に、今後プロセッサのパイプライン段数が増える
に従って、ペナルティ時間そのものも大きくなる。
実行とは関係ない無駄な時間が発生し、プロセッサの性
能に大きな影響を与えるという問題がある。その理由
は、予測が外れた場合に、その外れた分岐命令以降にフ
ェッチした命令が全て無効なものであるため、この命令
の実行時間がペナルティとして見えてしまうためであ
る。特に、今後プロセッサのパイプライン段数が増える
に従って、ペナルティ時間そのものも大きくなる。
【0009】第2に、従来の技術では、分岐予測の精度
向上には限度があり、かつペナルティ発生の回数そのも
のの減少にも限度があると考えられる。その理由は、一
般的にループ等を構成する分岐命令に対する予測はヒッ
トする確率が極めて高いけれども、メモリ内容の参照結
果による分岐のように、予測が極めて困難な分岐命令が
プログラム中に存在するためである。
向上には限度があり、かつペナルティ発生の回数そのも
のの減少にも限度があると考えられる。その理由は、一
般的にループ等を構成する分岐命令に対する予測はヒッ
トする確率が極めて高いけれども、メモリ内容の参照結
果による分岐のように、予測が極めて困難な分岐命令が
プログラム中に存在するためである。
【0010】本発明の目的は、従来よりも早く分岐予測
失敗の処理が行なえ、これにより、分岐予測失敗時のペ
ナルティを減少させることができる命令処理装置を提供
することにある。
失敗の処理が行なえ、これにより、分岐予測失敗時のペ
ナルティを減少させることができる命令処理装置を提供
することにある。
【0011】
【課題を解決するための手段】上記目的を達成する本発
明は、パイプライン処理を行なう命令処理装置におい
て、分岐予測を第1の分岐命令のフェッチ時でなく、第
1の分岐命令の分岐判定条件を生成する第2の命令のフ
ェッチ時に行なう分岐予測手段と、前記第1の分岐命令
の分岐判定条件を生成する前記第2の命令の実行結果に
基づいて、前記第1の分岐命令に対応する分岐予測の成
功又は失敗を判定する判定手段とを備えることを特徴と
する。
明は、パイプライン処理を行なう命令処理装置におい
て、分岐予測を第1の分岐命令のフェッチ時でなく、第
1の分岐命令の分岐判定条件を生成する第2の命令のフ
ェッチ時に行なう分岐予測手段と、前記第1の分岐命令
の分岐判定条件を生成する前記第2の命令の実行結果に
基づいて、前記第1の分岐命令に対応する分岐予測の成
功又は失敗を判定する判定手段とを備えることを特徴と
する。
【0012】請求項2の本発明の命令処理装置は、前記
分岐予測手段が、前記第2の命令に含まれる付加情報に
基づいて、前記第2の命令に関する情報を格納する情報
格納手段を備えることを特徴とする。
分岐予測手段が、前記第2の命令に含まれる付加情報に
基づいて、前記第2の命令に関する情報を格納する情報
格納手段を備えることを特徴とする。
【0013】請求項3の本発明の命令処理装置は、前記
第2の命令に含まれる付加情報が、前記第1の分岐命令
の分岐判定条件を生成する命令であること、前記第2の
命令と前記第1の分岐命令とアドレス差、前記第2の命
令の結果を分岐判定条件として参照する前記第1の分岐
命令の判定基準からなることを特徴とする。
第2の命令に含まれる付加情報が、前記第1の分岐命令
の分岐判定条件を生成する命令であること、前記第2の
命令と前記第1の分岐命令とアドレス差、前記第2の命
令の結果を分岐判定条件として参照する前記第1の分岐
命令の判定基準からなることを特徴とする。
【0014】請求項4の本発明の命令処理装置は、前記
分岐予測手段が、前記第2の命令のフェッチ時に、前記
情報格納手段から前記第2の命令に関する情報を読み出
し、前記第1の分岐命令に対応する分岐予測先の情報を
予測情報として生成する生成手段を備えることを特徴と
する。
分岐予測手段が、前記第2の命令のフェッチ時に、前記
情報格納手段から前記第2の命令に関する情報を読み出
し、前記第1の分岐命令に対応する分岐予測先の情報を
予測情報として生成する生成手段を備えることを特徴と
する。
【0015】請求項5の本発明の命令処理装置は、前記
分岐予測手段が、前記判定手段によって前記第1の分岐
命令に対応する分岐予測の失敗が判定された時に、前記
第1の分岐命令のフェッチが終了しているかどうかを調
べるフェッチ判定手段と、フェッチが終了していない場
合に、前記第1の分岐命令の実行が終了するまで前記予
測情報を待避する待避手段とを備えることを特徴とす
る。
分岐予測手段が、前記判定手段によって前記第1の分岐
命令に対応する分岐予測の失敗が判定された時に、前記
第1の分岐命令のフェッチが終了しているかどうかを調
べるフェッチ判定手段と、フェッチが終了していない場
合に、前記第1の分岐命令の実行が終了するまで前記予
測情報を待避する待避手段とを備えることを特徴とす
る。
【0016】請求項6の本発明の命令処理装置は、前記
分岐予測手段は、前記判定手段から前記第1の分岐命令
に対応する分岐予測の失敗が報告された時に、前記第1
の分岐命令が既にフェッチされていれば、分岐予測を中
止して真のアドレスからのフェッチを開始し、前記第1
の分岐命令がフェッチされていない時は、前記第1の分
岐命令がフェッチされるまで待機し、フェッチされた後
に真のアドレスからのフェッチを開始することを特徴と
する。
分岐予測手段は、前記判定手段から前記第1の分岐命令
に対応する分岐予測の失敗が報告された時に、前記第1
の分岐命令が既にフェッチされていれば、分岐予測を中
止して真のアドレスからのフェッチを開始し、前記第1
の分岐命令がフェッチされていない時は、前記第1の分
岐命令がフェッチされるまで待機し、フェッチされた後
に真のアドレスからのフェッチを開始することを特徴と
する。
【0017】請求項7の本発明の命令処理装置は、前記
分岐予測手段は、前記第1の分岐命令に対応する分岐予
測の失敗判定から前記第1の分岐命令実行までの間であ
ることを示すフラグと、前記フラグが分岐予測の失敗判
定から前記第1の分岐命令実行までの間にフェッチされ
た命令に対するパイプラインフラッシュ処理を抑止する
手段とを備えることを特徴とする。
分岐予測手段は、前記第1の分岐命令に対応する分岐予
測の失敗判定から前記第1の分岐命令実行までの間であ
ることを示すフラグと、前記フラグが分岐予測の失敗判
定から前記第1の分岐命令実行までの間にフェッチされ
た命令に対するパイプラインフラッシュ処理を抑止する
手段とを備えることを特徴とする。
【0018】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。図1は、本発明の実
施の形態による分岐予測回路を適用したパイプライン処
理を行なうスーパースカラプロセッサの構成を示す図で
ある。
て図面を参照して詳細に説明する。図1は、本発明の実
施の形態による分岐予測回路を適用したパイプライン処
理を行なうスーパースカラプロセッサの構成を示す図で
ある。
【0019】図1において、本実施の形態によるプロセ
ッサP0は、命令をフェッチする命令フェッチ回路1
0、フェッチした命令をデコードし、発行する命令を選
択する命令デコード・発行制御回路20、発行した命令
を実際に実行する命令実行回路30、実行した命令に対
して後処理を行なう命令実行後処理回路40、命令をフ
ェッチするアドレスを格納する命令フェッチアドレス格
納レジスタ50及び分岐予測回路60を備える。
ッサP0は、命令をフェッチする命令フェッチ回路1
0、フェッチした命令をデコードし、発行する命令を選
択する命令デコード・発行制御回路20、発行した命令
を実際に実行する命令実行回路30、実行した命令に対
して後処理を行なう命令実行後処理回路40、命令をフ
ェッチするアドレスを格納する命令フェッチアドレス格
納レジスタ50及び分岐予測回路60を備える。
【0020】分岐予測回路60には、予測する分岐命令
が参照する分岐条件を生成する命令の情報を格納する分
岐情報格納メモリ61、分岐予測アドレスを生成し、登
録された命令の結果を参照する分岐命令が実行されるま
で分岐予測アドレスを待避する予測アドレスバッファ6
21を有する予測アドレス生成手段62が備えられてい
る。
が参照する分岐条件を生成する命令の情報を格納する分
岐情報格納メモリ61、分岐予測アドレスを生成し、登
録された命令の結果を参照する分岐命令が実行されるま
で分岐予測アドレスを待避する予測アドレスバッファ6
21を有する予測アドレス生成手段62が備えられてい
る。
【0021】本実施の形態によるプロセッサP0は、一
般的なプロセッサにて行われている分岐予測動作のよう
に、分岐命令のフェッチ時に予測動作を行なうのと異な
り、分岐命令が参照する分岐条件を生成する命令のフェ
ッチ時に予測を行なうことを特徴としている。
般的なプロセッサにて行われている分岐予測動作のよう
に、分岐命令のフェッチ時に予測動作を行なうのと異な
り、分岐命令が参照する分岐条件を生成する命令のフェ
ッチ時に予測を行なうことを特徴としている。
【0022】次いで、上記のように構成される本実施の
形態による動作について図1及び図2を参照して説明す
る。
形態による動作について図1及び図2を参照して説明す
る。
【0023】上記のように本実施の形態では、分岐予測
を予測対象分岐命令のフェッチ時でなくその分岐命令が
参照する分岐条件を生成する命令のフェッチ時に行な
う。例として、図2のようなプログラムを示す。図2の
プログラムにおいて、分岐命令B3は、比較命令I1の
結果を参照し、その内容によって分岐するかどうかを決
定する命令である。
を予測対象分岐命令のフェッチ時でなくその分岐命令が
参照する分岐条件を生成する命令のフェッチ時に行な
う。例として、図2のようなプログラムを示す。図2の
プログラムにおいて、分岐命令B3は、比較命令I1の
結果を参照し、その内容によって分岐するかどうかを決
定する命令である。
【0024】まず、分岐予測情報を分岐予測回路60に
登録するために、プログラム中における、「分岐命令の
分岐判定条件を生成する命令であること」をコンパイラ
によって抽出し、静的にプログラム中の「分岐命令の分
岐判定条件を生成する命令であること」を命令語中にヒ
ントOP1として埋め込んでおく。また、その命令と、
実際にその命令の結果を分岐判定条件として参照する分
岐命令とのアドレス差OP3をコンパイラにより計算
し、命令語中に埋め込んでおく。加えて、実際にその命
令の結果を分岐判定条件として参照する分岐命令の判定
条件OP2についても、命令語中に埋め込んでおく。す
なわち、命令語の構成は、図3に示すような内容とな
る。
登録するために、プログラム中における、「分岐命令の
分岐判定条件を生成する命令であること」をコンパイラ
によって抽出し、静的にプログラム中の「分岐命令の分
岐判定条件を生成する命令であること」を命令語中にヒ
ントOP1として埋め込んでおく。また、その命令と、
実際にその命令の結果を分岐判定条件として参照する分
岐命令とのアドレス差OP3をコンパイラにより計算
し、命令語中に埋め込んでおく。加えて、実際にその命
令の結果を分岐判定条件として参照する分岐命令の判定
条件OP2についても、命令語中に埋め込んでおく。す
なわち、命令語の構成は、図3に示すような内容とな
る。
【0025】上記分岐予測情報の登録について説明す
る。図2において、分岐命令B3は、Taken分岐す
るものとする。まず、図2における命令I1が、命令実
行回路30において実行される。命令には、前述のヒン
トOP1と判定条件OP2、そして「分岐予測回路60
にデータが登録されていたかどうか」を示すタグデータ
BP0が付加している。これらのヒントOP1と判定条
件OP2及びタグデータBP0を参照した結果、実行す
る命令I1が「分岐命令の判定条件を生成する命令であ
り」、「分岐予測回路60にこの命令に関する情報が登
録されていない」ならば、命令実行回路30は、分岐予
測回路60に対してこの命令I1に関する登録要求を行
なう。
る。図2において、分岐命令B3は、Taken分岐す
るものとする。まず、図2における命令I1が、命令実
行回路30において実行される。命令には、前述のヒン
トOP1と判定条件OP2、そして「分岐予測回路60
にデータが登録されていたかどうか」を示すタグデータ
BP0が付加している。これらのヒントOP1と判定条
件OP2及びタグデータBP0を参照した結果、実行す
る命令I1が「分岐命令の判定条件を生成する命令であ
り」、「分岐予測回路60にこの命令に関する情報が登
録されていない」ならば、命令実行回路30は、分岐予
測回路60に対してこの命令I1に関する登録要求を行
なう。
【0026】図2において、命令I1は、「分岐命令の
分岐条件を生成する比較命令」であるが、初回の実行で
は分岐予測回路60にその情報が登録されていないの
で、分岐予測回路60に対して登録要求信号と比較命令
I1のアドレス(100)、分岐命令B3の判定条件O
P2(NE)、比較命令I1と分岐命令B3のアドレス
差OP3(16)を送出する。なお、この例では、分岐
命令B3自身のサイズを8とする。
分岐条件を生成する比較命令」であるが、初回の実行で
は分岐予測回路60にその情報が登録されていないの
で、分岐予測回路60に対して登録要求信号と比較命令
I1のアドレス(100)、分岐命令B3の判定条件O
P2(NE)、比較命令I1と分岐命令B3のアドレス
差OP3(16)を送出する。なお、この例では、分岐
命令B3自身のサイズを8とする。
【0027】分岐予測回路60は、その登録要求を受け
取ると命令I1に対して登録動作を行なう。分岐予測回
路60内の予測情報格納メモリ61は、アドレスをキー
として働く連想記憶として構成され、その内容はTak
en先アドレス、分岐履歴、分岐命令のアドレス、及び
有効ビットから構成される。
取ると命令I1に対して登録動作を行なう。分岐予測回
路60内の予測情報格納メモリ61は、アドレスをキー
として働く連想記憶として構成され、その内容はTak
en先アドレス、分岐履歴、分岐命令のアドレス、及び
有効ビットから構成される。
【0028】登録時は、命令I1のアドレス(100)
をキーとして、Taken先アドレス(200)、アド
レス差(16)と命令I1のアドレス(100)から計
算した分岐命令B3のアドレス(116)を登録し、対
応する有効ビットを「1」とする。また、命令実行回路
30において、分岐命令B3の分岐方向を、命令I1の
実行結果と命令I1に含まれた判定条件から生成し、分
岐予測回路60へ命令I1のアドレスをキーとして登録
する。加えて、分岐履歴Hに今回の分岐方向(Take
n)を登録する。Taken先アドレスは、分岐命令B
3が命令実行回路30によって実行されたときに、命令
実行回路30分岐予測回路60に送られ、予測情報格納
メモリ61の対応するエントリに登録される。
をキーとして、Taken先アドレス(200)、アド
レス差(16)と命令I1のアドレス(100)から計
算した分岐命令B3のアドレス(116)を登録し、対
応する有効ビットを「1」とする。また、命令実行回路
30において、分岐命令B3の分岐方向を、命令I1の
実行結果と命令I1に含まれた判定条件から生成し、分
岐予測回路60へ命令I1のアドレスをキーとして登録
する。加えて、分岐履歴Hに今回の分岐方向(Take
n)を登録する。Taken先アドレスは、分岐命令B
3が命令実行回路30によって実行されたときに、命令
実行回路30分岐予測回路60に送られ、予測情報格納
メモリ61の対応するエントリに登録される。
【0029】次に、分岐予測動作について説明する。プ
ログラムの実行が進み、命令フェッチ回路10が再び命
令I1をフェッチした時、分岐予測回路60は、自身に
登録された命令I1に関する情報、すなわち有効ビット
と分岐命令B3のアドレス、Taken側分岐アドレ
ス、そして分岐履歴H(Taken)を読み出す。
ログラムの実行が進み、命令フェッチ回路10が再び命
令I1をフェッチした時、分岐予測回路60は、自身に
登録された命令I1に関する情報、すなわち有効ビット
と分岐命令B3のアドレス、Taken側分岐アドレ
ス、そして分岐履歴H(Taken)を読み出す。
【0030】予測時には、分岐履歴及び有効ビットから
予測方向を決定し、予測アドレスをTaken側アドレ
スとNotTaken側アドレスから選択する。なお、
NotTaken側アドレスは、分岐命令B3の次の命
令のアドレスであり、分岐命令B3のアドレス(11
6)+分岐命令B3自身のサイズ(8)=124という
計算で求められる。
予測方向を決定し、予測アドレスをTaken側アドレ
スとNotTaken側アドレスから選択する。なお、
NotTaken側アドレスは、分岐命令B3の次の命
令のアドレスであり、分岐命令B3のアドレス(11
6)+分岐命令B3自身のサイズ(8)=124という
計算で求められる。
【0031】ただし、予測アドレスは、実際に分岐命令
B3をフェッチした次のサイクルまでは必要ないため、
フェッチアドレスが分岐命令B3のアドレスとなるまで
予測アドレスバッファ621に待避しておき、フェッチ
アドレスが分岐命令B3のアドレスとなったときに始め
て予測アドレスバッファから取り出して、次のサイクル
のフェッチアドレスとして用いる。今回の予測において
は、命令B3がNotTaken側に予測したとする。
すなわち、分岐命令B3がフェッチされると、それ以前
に割り込み発生や分岐予測失敗が発生しない限り、次サ
イクルのフェッチはアドレス(124)から続行され
る。
B3をフェッチした次のサイクルまでは必要ないため、
フェッチアドレスが分岐命令B3のアドレスとなるまで
予測アドレスバッファ621に待避しておき、フェッチ
アドレスが分岐命令B3のアドレスとなったときに始め
て予測アドレスバッファから取り出して、次のサイクル
のフェッチアドレスとして用いる。今回の予測において
は、命令B3がNotTaken側に予測したとする。
すなわち、分岐命令B3がフェッチされると、それ以前
に割り込み発生や分岐予測失敗が発生しない限り、次サ
イクルのフェッチはアドレス(124)から続行され
る。
【0032】分岐予測失敗時の動作について説明する。
さらにプログラムの実行が進み、命令I1が実際に命令
実行回路30にて実行されるとき、その命令I1に付加
された予測方向と、実行結果と判定条件から生成される
実際の分岐方向が異なっていれば、分岐予測が失敗した
ことが分かる。このとき、命令実行回路30はパイプラ
インのフラッシュの準備を行なう。実際に分岐命令B3
が命令実行回路30で実行され、命令実行後処理回路4
0にて処理されたときに始めてパイプラインフラッシュ
処理を行なう。
さらにプログラムの実行が進み、命令I1が実際に命令
実行回路30にて実行されるとき、その命令I1に付加
された予測方向と、実行結果と判定条件から生成される
実際の分岐方向が異なっていれば、分岐予測が失敗した
ことが分かる。このとき、命令実行回路30はパイプラ
インのフラッシュの準備を行なう。実際に分岐命令B3
が命令実行回路30で実行され、命令実行後処理回路4
0にて処理されたときに始めてパイプラインフラッシュ
処理を行なう。
【0033】一方、分岐予測回路60は分岐予測失敗の
報告を命令実行回路30から受け取ると、現在行なって
いる分岐予測動作を中止し、真の分岐予測アドレス(こ
の場合、分岐命令B3のTaken側アドレスに存在す
る命令I5のアドレス140)からの再フェッチを開始
する。
報告を命令実行回路30から受け取ると、現在行なって
いる分岐予測動作を中止し、真の分岐予測アドレス(こ
の場合、分岐命令B3のTaken側アドレスに存在す
る命令I5のアドレス140)からの再フェッチを開始
する。
【0034】加えて、分岐予測回路60内に「分岐予測
失敗検出」から「パイプラインフラッシュ」までの間で
あることを示すフラグF0を用意する。このフラグF0
が「分岐予測失敗検出」から「パイプラインフラッシ
ュ」までの間であることを示している間に、命令フェッ
チ回路10によってフェッチされた命令群ANは、「パ
イプラインフラッシュによってクリアされない命令」と
して扱われる。パイプラインフラッシュが発生すると、
命令群ANから「パイプラインフラッシュによってクリ
アされない命令」という属性だけが消去され、命令群A
Nそのものが消えることはない。
失敗検出」から「パイプラインフラッシュ」までの間で
あることを示すフラグF0を用意する。このフラグF0
が「分岐予測失敗検出」から「パイプラインフラッシ
ュ」までの間であることを示している間に、命令フェッ
チ回路10によってフェッチされた命令群ANは、「パ
イプラインフラッシュによってクリアされない命令」と
して扱われる。パイプラインフラッシュが発生すると、
命令群ANから「パイプラインフラッシュによってクリ
アされない命令」という属性だけが消去され、命令群A
Nそのものが消えることはない。
【0035】命令I1をフェッチした時に予測したアド
レスは、その命令I1が生成した値を参照する分岐命令
B3がフェッチされるまでの間、分岐アドレスバッファ
621に登録され、分岐命令B3を実際にフェッチする
時に分岐アドレスバッファ621を参照し、次のフェッ
チアドレスを得る。
レスは、その命令I1が生成した値を参照する分岐命令
B3がフェッチされるまでの間、分岐アドレスバッファ
621に登録され、分岐命令B3を実際にフェッチする
時に分岐アドレスバッファ621を参照し、次のフェッ
チアドレスを得る。
【0036】また、分岐予測回路60は、分岐命令に関
してではなく、分岐命令の分岐条件を生成する命令に関
する情報を登録し、分岐予測は分岐命令ではなく、その
分岐条件を生成する命令のフェッチ時に行なう。この情
報には、例えば分岐命令の分岐条件を生成する命令の実
行結果のデータが正、負、零の何れかであるか等の情報
があり、分岐命令の引数を生成する命令のフェッチ時
に、フェッチしている分岐命令の引数を生成する命令に
関して登録されている前述の情報を分岐予測回路60か
ら読み出すことができる。また、「分岐予測回路60に
この命令に関する情報が登録されていたか」を示すタグ
BP0も命令と上記情報と同時に命令デコード・発行制
御回路20に送る。
してではなく、分岐命令の分岐条件を生成する命令に関
する情報を登録し、分岐予測は分岐命令ではなく、その
分岐条件を生成する命令のフェッチ時に行なう。この情
報には、例えば分岐命令の分岐条件を生成する命令の実
行結果のデータが正、負、零の何れかであるか等の情報
があり、分岐命令の引数を生成する命令のフェッチ時
に、フェッチしている分岐命令の引数を生成する命令に
関して登録されている前述の情報を分岐予測回路60か
ら読み出すことができる。また、「分岐予測回路60に
この命令に関する情報が登録されていたか」を示すタグ
BP0も命令と上記情報と同時に命令デコード・発行制
御回路20に送る。
【0037】分岐予測回路60から読み出された上記情
報は、命令データに付加された形で命令デコード・発行
制御回路20に送られる。また、命令実行時にも、その
命令がフェッチされたときに分岐予測回路60から読み
出された情報を付加して命令実行回路30に送る。
報は、命令データに付加された形で命令デコード・発行
制御回路20に送られる。また、命令実行時にも、その
命令がフェッチされたときに分岐予測回路60から読み
出された情報を付加して命令実行回路30に送る。
【0038】命令実行回路30では、命令の実行結果
が、付加された情報OP1、OP2、BP0と合致して
いるかどうかを確認する。合致していなければ、この命
令の結果を参照する分岐命令の予測は正しくないため、
分岐予測失敗の判定を行なう。すなわち、分岐予測対象
の分岐命令を実行する前に、分岐予測の失敗判定が可能
となるため、分岐予測ペナルティを減少させることがで
きる。
が、付加された情報OP1、OP2、BP0と合致して
いるかどうかを確認する。合致していなければ、この命
令の結果を参照する分岐命令の予測は正しくないため、
分岐予測失敗の判定を行なう。すなわち、分岐予測対象
の分岐命令を実行する前に、分岐予測の失敗判定が可能
となるため、分岐予測ペナルティを減少させることがで
きる。
【0039】この命令が命令フェッチ回路10において
フェッチされ、命令デコード・発行制御回路20におい
てデコードされて発行されたとき、命令と共にこのヒン
トOP1、OP2、BPを付加して命令実行回路30に
送り実行する。
フェッチされ、命令デコード・発行制御回路20におい
てデコードされて発行されたとき、命令と共にこのヒン
トOP1、OP2、BPを付加して命令実行回路30に
送り実行する。
【0040】命令実行回路30では、上記ヒントOP1
とタグOP2、BPを参照し、この命令が「分岐命令の
判定条件を生成する命令である」か「分岐予測回路60
にこの命令に関する情報が登録されていたか」を調べ
る。この両方の条件が成り立っていたならば、分岐予測
回路60から読み出した前記の情報が付加されているの
で、その情報と命令の実行結果に関して照合を行ない、
その結果を参照する分岐命令に関する予測の成功・失敗
の判定を行なう。
とタグOP2、BPを参照し、この命令が「分岐命令の
判定条件を生成する命令である」か「分岐予測回路60
にこの命令に関する情報が登録されていたか」を調べ
る。この両方の条件が成り立っていたならば、分岐予測
回路60から読み出した前記の情報が付加されているの
で、その情報と命令の実行結果に関して照合を行ない、
その結果を参照する分岐命令に関する予測の成功・失敗
の判定を行なう。
【0041】ここで、本発明と対応する従来の構成のプ
ロセッサを図4に示す。図4中、分岐予測回路分岐予測
回路100は、予測対象が分岐命令そのものであるとい
うことの他は、本発明と同様の分岐予測回路である。そ
の他の構成要素は通常のプロセッサと同様のものであ
る。
ロセッサを図4に示す。図4中、分岐予測回路分岐予測
回路100は、予測対象が分岐命令そのものであるとい
うことの他は、本発明と同様の分岐予測回路である。そ
の他の構成要素は通常のプロセッサと同様のものであ
る。
【0042】図2に示す示すプログラムを、本実施の形
態による構成と図4の従来の構成のプロセッサで実行し
た場合の実行クロックの違いを図5に示す。図5は、そ
れぞれの実行状況のタイムチャートである。図5に示す
ように、分岐予測失敗が既に命令I1を実行した時点で
判明するため、このプログラムでは真の分岐アドレスフ
ェッチを行なう時間が2サイクル早くなっている。これ
は比較命令I1とその結果を参照する分岐命令B3との
距離が遠ければ遠いほど、そのペナルティ隠蔽には望ま
しい。
態による構成と図4の従来の構成のプロセッサで実行し
た場合の実行クロックの違いを図5に示す。図5は、そ
れぞれの実行状況のタイムチャートである。図5に示す
ように、分岐予測失敗が既に命令I1を実行した時点で
判明するため、このプログラムでは真の分岐アドレスフ
ェッチを行なう時間が2サイクル早くなっている。これ
は比較命令I1とその結果を参照する分岐命令B3との
距離が遠ければ遠いほど、そのペナルティ隠蔽には望ま
しい。
【0043】
【実施例】次に、本発明の実施例について図画を参照し
て説明する。
て説明する。
【0044】図6は本発明の一実施例による分岐予測回
路60の構成を示す図である。この実施例において、プ
ロセッサP0は、32ビットのアドレス空間を持つ。
路60の構成を示す図である。この実施例において、プ
ロセッサP0は、32ビットのアドレス空間を持つ。
【0045】本実施例において、分岐予測回路60は、
2ウエイセットアソシアティブ構成の連想記憶として構
成する。ここでは、分岐予測回路60は分岐予測情報5
1ビットを128エントリ格納するメモリMM0、MM
1を有する。また、タグアドレス25ビットを128エ
ントリ分格納するメモリAA0、AA1を有する。
2ウエイセットアソシアティブ構成の連想記憶として構
成する。ここでは、分岐予測回路60は分岐予測情報5
1ビットを128エントリ格納するメモリMM0、MM
1を有する。また、タグアドレス25ビットを128エ
ントリ分格納するメモリAA0、AA1を有する。
【0046】メモリMM0,MM1は、2ウエイセット
アソシアティブメモリのウエイ0、ウエイ1にそれぞれ
対応する。また、メモリAA0、AA1についても、2
ウエイセットアソシアティブメモリのウエイ0、ウエイ
1にそれぞれ対応する。加えて、LRU情報1ビットを
128エントリ分格納するメモリL0を備える。
アソシアティブメモリのウエイ0、ウエイ1にそれぞれ
対応する。また、メモリAA0、AA1についても、2
ウエイセットアソシアティブメモリのウエイ0、ウエイ
1にそれぞれ対応する。加えて、LRU情報1ビットを
128エントリ分格納するメモリL0を備える。
【0047】また、分岐アドレス生成手段62を備え
る。分岐アドレス生成手段62には、4つの分岐アドレ
スバッファ621、分岐アドレスバッファ621への登
録ポインタを生成するカウンタ622、分岐予測失敗時
の真の分岐アドレスを登録するレジスタ623、そし
て、分岐予測失敗判定から分岐命令実行までの間である
ことを示すフラグF0を備える。
る。分岐アドレス生成手段62には、4つの分岐アドレ
スバッファ621、分岐アドレスバッファ621への登
録ポインタを生成するカウンタ622、分岐予測失敗時
の真の分岐アドレスを登録するレジスタ623、そし
て、分岐予測失敗判定から分岐命令実行までの間である
ことを示すフラグF0を備える。
【0048】メモリMM0の具体的な内容を表に示す。
メモリMM1に関してもメモリMM0と同じ内容であ
る。図7にその具体的内容を示す。図7において、Vは
登録された情報の有効性を示すVビットである。Aは登
録した命令の種別を示すものである。Dは登録した命令
から実際の分岐命令までのアドレス差であり、0から2
55バイトの間を表現可能である。これは命令語中の要
素OP3に対応する。Tは分岐Taken側のアドレス
であり32ビットである。Hは分岐の履歴を格納するヒ
ストリテーブルである。Hはこの実施例においては1ビ
ットであり、過去1回の分岐方向を格納できる。
メモリMM1に関してもメモリMM0と同じ内容であ
る。図7にその具体的内容を示す。図7において、Vは
登録された情報の有効性を示すVビットである。Aは登
録した命令の種別を示すものである。Dは登録した命令
から実際の分岐命令までのアドレス差であり、0から2
55バイトの間を表現可能である。これは命令語中の要
素OP3に対応する。Tは分岐Taken側のアドレス
であり32ビットである。Hは分岐の履歴を格納するヒ
ストリテーブルである。Hはこの実施例においては1ビ
ットであり、過去1回の分岐方向を格納できる。
【0049】本実施例においては、分岐予測回路60に
登録された命令Zに対応する分岐命令Z2がもっとも最
近実行されたときの分岐方向がTaken側だった場
合、要素Hに「1」が書き込まれる。逆に、分岐命令Z
2がもっとも最近実行されたときの分岐方回がNotT
aken側だった場合には、要素Hに「0」が書き込ま
れる。
登録された命令Zに対応する分岐命令Z2がもっとも最
近実行されたときの分岐方向がTaken側だった場
合、要素Hに「1」が書き込まれる。逆に、分岐命令Z
2がもっとも最近実行されたときの分岐方回がNotT
aken側だった場合には、要素Hに「0」が書き込ま
れる。
【0050】メモリL0は、2ウエイセットアソシアテ
ィブ構成である分岐予測機構に関して、最後にアクセス
したウエイをエントリ毎に格納するメモリである。本実
施例においては、メモリL0の大きさは1ビット×12
8エントリである。
ィブ構成である分岐予測機構に関して、最後にアクセス
したウエイをエントリ毎に格納するメモリである。本実
施例においては、メモリL0の大きさは1ビット×12
8エントリである。
【0051】メモリAA0、AA1は登録する命令のア
ドレス32ビットのうち上位25ビットをタグアドレス
として格納する。メモリAA0、AA1はそれぞれ25
ビット×128エントリの大きさを持つ。
ドレス32ビットのうち上位25ビットをタグアドレス
として格納する。メモリAA0、AA1はそれぞれ25
ビット×128エントリの大きさを持つ。
【0052】命令フェッチアドレス格納レジスタ50か
ら得られたアドレスXをフェッチするとき、同時に分岐
予測回路60はフェッチアドレスXを参照し、メモリM
M0、MM1からアドレスXの下位7ビットで示される
アドレスのデータをそれぞれ読み出す。このメモリMM
0、MM1から読み出されたデータのうちそれぞれのV
を参照することによって読み出したデータの有効性を調
べる。また、メモリAA0、AA1からアドレスXの下
位7ビットで示されるアドレスに格納されたタグアドレ
ス25ビットをそれぞれ読み出し、アドレスXの上位2
5ビットと比較する。
ら得られたアドレスXをフェッチするとき、同時に分岐
予測回路60はフェッチアドレスXを参照し、メモリM
M0、MM1からアドレスXの下位7ビットで示される
アドレスのデータをそれぞれ読み出す。このメモリMM
0、MM1から読み出されたデータのうちそれぞれのV
を参照することによって読み出したデータの有効性を調
べる。また、メモリAA0、AA1からアドレスXの下
位7ビットで示されるアドレスに格納されたタグアドレ
ス25ビットをそれぞれ読み出し、アドレスXの上位2
5ビットと比較する。
【0053】例えば、メモリMM0に格納されたデータ
のうち要素Vが「1」であり、かつメモリAA0から読
み出されたデータとアドレスXの上位25ビットが一致
したならば、メモリMM0に格納されたデータは、アド
レスXに存在する命令に対応するものである(ウエイ0
にヒットした)ことが分かる。また、メモリMM1に格
納されたデータのうち要素Vが「1」であり、かつメモ
リAA1から読み出されたデータとアドレスXの上位2
5ビットが一致したならば、メモリMM1に格納された
データは、アドレスXに存在する命令に対応するもので
あること(ウエイ1にヒットした)が分かる。なお、ウ
エイ0、ウエイ1に同時にヒットした状態を故障として
検出する。
のうち要素Vが「1」であり、かつメモリAA0から読
み出されたデータとアドレスXの上位25ビットが一致
したならば、メモリMM0に格納されたデータは、アド
レスXに存在する命令に対応するものである(ウエイ0
にヒットした)ことが分かる。また、メモリMM1に格
納されたデータのうち要素Vが「1」であり、かつメモ
リAA1から読み出されたデータとアドレスXの上位2
5ビットが一致したならば、メモリMM1に格納された
データは、アドレスXに存在する命令に対応するもので
あること(ウエイ1にヒットした)が分かる。なお、ウ
エイ0、ウエイ1に同時にヒットした状態を故障として
検出する。
【0054】次に、分岐アドレス生成手段62は、分岐
予測先アドレスX2を生成する。以下の説明では、ウエ
イ0にヒットしたケースについて述べる。
予測先アドレスX2を生成する。以下の説明では、ウエ
イ0にヒットしたケースについて述べる。
【0055】まず、分岐命令が制御を移すであろうTa
kenアドレスとNotTakenアドレスの両方を生
成する。Takenアドレスは、メモリMM0から読み
出したデータの要素Tから得られる。また、NotTa
kenアドレスは現フェッチアドレスXに分岐命令その
もののサイズを加えることで得られる。
kenアドレスとNotTakenアドレスの両方を生
成する。Takenアドレスは、メモリMM0から読み
出したデータの要素Tから得られる。また、NotTa
kenアドレスは現フェッチアドレスXに分岐命令その
もののサイズを加えることで得られる。
【0056】分岐アドレス生成手段62は、メモリMM
0から読み出したデータの要素Hを取り出し、もっとも
最近実行された時の分岐方向を調べる。分岐アドレス生
成手段62は、「前回の分岐と同じ方向に分岐する」と
予測し、メモリMM0から読み出したデータの要素Hが
示す分岐方向のアドレスを選択し、予測アドレスX2と
する。
0から読み出したデータの要素Hを取り出し、もっとも
最近実行された時の分岐方向を調べる。分岐アドレス生
成手段62は、「前回の分岐と同じ方向に分岐する」と
予測し、メモリMM0から読み出したデータの要素Hが
示す分岐方向のアドレスを選択し、予測アドレスX2と
する。
【0057】今回生成した予測アドレスは、直接次のサ
イクルでは使用可能ではない。そのため、予測アドレス
を、実際に分岐命令が実行されるまで待避する分岐アド
レスバッファ621を用意する。本実施例では、4つの
バッファを用意する。
イクルでは使用可能ではない。そのため、予測アドレス
を、実際に分岐命令が実行されるまで待避する分岐アド
レスバッファ621を用意する。本実施例では、4つの
バッファを用意する。
【0058】例えば、図2におけるプログラムの命令I
1に対して予測が行なわれ、分岐アドレスバッファ62
1に登録されたとする。この分岐アドレスバッファ62
1の具体的なエントリ内容を図8に示す。
1に対して予測が行なわれ、分岐アドレスバッファ62
1に登録されたとする。この分岐アドレスバッファ62
1の具体的なエントリ内容を図8に示す。
【0059】ここで、図8中、BVは有効ビット
(1)、BNTは予測対象となった命令I1の結果を参
照する分岐命令B3のアドレス(108)、BTは分岐
命令B3のTaken側分岐アドレス(200)、BS
は分岐方向(Taken)、BFは該当する分岐命令が
既にフェッチされたかどうかを示す。分岐アドレスバッ
ファ621は、予測アドレスが登録されていた分岐命令
B3が実際に命令実行回路30において実行された時に
解放される。なお、BNTの値とメモリMM0から読み
出したデータの要素Dの和をとることで、分岐命令B3
のNotTakenアドレスを求めることができる。
(1)、BNTは予測対象となった命令I1の結果を参
照する分岐命令B3のアドレス(108)、BTは分岐
命令B3のTaken側分岐アドレス(200)、BS
は分岐方向(Taken)、BFは該当する分岐命令が
既にフェッチされたかどうかを示す。分岐アドレスバッ
ファ621は、予測アドレスが登録されていた分岐命令
B3が実際に命令実行回路30において実行された時に
解放される。なお、BNTの値とメモリMM0から読み
出したデータの要素Dの和をとることで、分岐命令B3
のNotTakenアドレスを求めることができる。
【0060】また、分岐アドレスバッファ621に登録
された比較命令I1の結果を参照する、分岐命令B1が
フェッチされると、分岐アドレスバッファ621のフェ
ッチ済みビットBFを「1」とする。
された比較命令I1の結果を参照する、分岐命令B1が
フェッチされると、分岐アドレスバッファ621のフェ
ッチ済みビットBFを「1」とする。
【0061】分岐アドレスバッファ621の8つのデー
タそれぞれに含まれる要素であるアドレスBNTの何れ
かと、そのサイクルのフェッチアドレスXが一致したな
らば、そのサイクルにフェッチ中の命令に対して予測が
行なわれたことになり、アドレスの一致した分岐アドレ
スバッファ621の予測アドレスを次のサイクルのフェ
ッチアドレスとして用いる。なお、分岐アドレスバッフ
ァ621の4つのバッファのうち何れとマッチしたかを
デコーダ624で生成し、命令B3と一緒にパイプライ
ン中を持ちまわる。
タそれぞれに含まれる要素であるアドレスBNTの何れ
かと、そのサイクルのフェッチアドレスXが一致したな
らば、そのサイクルにフェッチ中の命令に対して予測が
行なわれたことになり、アドレスの一致した分岐アドレ
スバッファ621の予測アドレスを次のサイクルのフェ
ッチアドレスとして用いる。なお、分岐アドレスバッフ
ァ621の4つのバッファのうち何れとマッチしたかを
デコーダ624で生成し、命令B3と一緒にパイプライ
ン中を持ちまわる。
【0062】命令デコード・発行制御回路20では、一
般的なプロセッサと同様の発行制御を行なうが、発行し
た命令に、分岐予測回路60で読み出されたデータを付
加して命令実行回路30に送る。
般的なプロセッサと同様の発行制御を行なうが、発行し
た命令に、分岐予測回路60で読み出されたデータを付
加して命令実行回路30に送る。
【0063】命令実行回路30において比較命令I1が
実行されると、比較命令I1に付加された比較命令I1
の結果を参照する分岐命令B3の分岐判定条件を参照す
る。命令実行回路30は、この比較命令I1の実行結果
と分岐命令B3の分岐判定条件から、分岐命令B3の分
岐方向を知ることができる。また、比較命令I1に付加
された分岐予測情報によって、分岐予測の失敗及び成功
を検出することができる。
実行されると、比較命令I1に付加された比較命令I1
の結果を参照する分岐命令B3の分岐判定条件を参照す
る。命令実行回路30は、この比較命令I1の実行結果
と分岐命令B3の分岐判定条件から、分岐命令B3の分
岐方向を知ることができる。また、比較命令I1に付加
された分岐予測情報によって、分岐予測の失敗及び成功
を検出することができる。
【0064】分岐予測が失敗すると、命令実行回路30
は分岐予測回路60に「分岐予測が失敗したこと」と、
真の分岐方向を報告する。また、分岐予測失敗の判定信
号S14を分岐予測回路60に送る。分岐予測回路60
は判定信号S14を受け取って、フラグF0に「1」を
セットする。
は分岐予測回路60に「分岐予測が失敗したこと」と、
真の分岐方向を報告する。また、分岐予測失敗の判定信
号S14を分岐予測回路60に送る。分岐予測回路60
は判定信号S14を受け取って、フラグF0に「1」を
セットする。
【0065】分岐予測が失敗したことが報告されると、
まず分岐予測回路60はフラグF0を0クリアする。同
時に、分岐予測回路60は、分岐アドレスバッファ62
1を参照し、分岐命令B3がどの予測アドレスバッファ
621に登録されているかを示す情報S10と、分岐命
令B3の分岐方向S13によって真の分岐アドレスを選
択し、レジスタ623に格納する。
まず分岐予測回路60はフラグF0を0クリアする。同
時に、分岐予測回路60は、分岐アドレスバッファ62
1を参照し、分岐命令B3がどの予測アドレスバッファ
621に登録されているかを示す情報S10と、分岐命
令B3の分岐方向S13によって真の分岐アドレスを選
択し、レジスタ623に格納する。
【0066】なお、情報S10は、分岐命令B3がフェ
ッチされたときに付加された情報S10と同じものであ
る。また、予測アドレスバッファ621のフェッチ済み
ビットBFを参照し、該当する分岐命令が既にフェッチ
されたかどうかを調べる。
ッチされたときに付加された情報S10と同じものであ
る。また、予測アドレスバッファ621のフェッチ済み
ビットBFを参照し、該当する分岐命令が既にフェッチ
されたかどうかを調べる。
【0067】もし、分岐命令B3が既にフェッチされて
いれば、真の分岐アドレスS12からのフェッチを始め
る。加えて、これ以降でかつ分岐命令が実行されるまで
の間、フェッチした命令には、キャンセル抑止のビット
が付加される。
いれば、真の分岐アドレスS12からのフェッチを始め
る。加えて、これ以降でかつ分岐命令が実行されるまで
の間、フェッチした命令には、キャンセル抑止のビット
が付加される。
【0068】分岐命令B3がまだフェッチされていない
状態であれば、B3がフェッチされるまで待機し、分岐
命令B3がフェッチされた後、真の分岐アドレスS12
からのフェッチを開始する。加えて、これ以降でかつ分
岐命令が実行されるまでの間、フェッチした命令には、
キャンセル抑止のビットが付加される。
状態であれば、B3がフェッチされるまで待機し、分岐
命令B3がフェッチされた後、真の分岐アドレスS12
からのフェッチを開始する。加えて、これ以降でかつ分
岐命令が実行されるまでの間、フェッチした命令には、
キャンセル抑止のビットが付加される。
【0069】分岐命令B3実行時に、既に分岐予測失敗
であることが分かっているので、それ以降のフェッチし
た命令群ANに対してキャンセルが行なわれる。ただ
し、キャンセル抑止ビットが付加された命令群ANに関
してはキャンセルを行なわない。その場合、命令群AN
に付加したキャンセル抑止ビットを消去する。これによ
り、真の分岐方向の命令が残ることになり、正常動作が
保証される。
であることが分かっているので、それ以降のフェッチし
た命令群ANに対してキャンセルが行なわれる。ただ
し、キャンセル抑止ビットが付加された命令群ANに関
してはキャンセルを行なわない。その場合、命令群AN
に付加したキャンセル抑止ビットを消去する。これによ
り、真の分岐方向の命令が残ることになり、正常動作が
保証される。
【0070】なお、本発明は上述した実施の形態に限定
されるものではなく、その技術思想の範囲内において様
々に変形して実施することができる。
されるものではなく、その技術思想の範囲内において様
々に変形して実施することができる。
【0071】
【発明の効果】以上説明したように本発明の命令処理装
置によれば、分岐予測を分岐命令のフェッチ時でなく、
分岐命令が参照する引数を生成する命令のフェッチ時に
行ない、さらに、その分岐命令が参照する引数を生成す
る命令の実行時に、該当する分岐命令に対する予測の成
功、失敗を判定できるため、従来よりも早く分岐予測失
敗の処理が行なえる。これにより、分岐予測失敗時のペ
ナルティを減少させることができるという効果が得られ
る。
置によれば、分岐予測を分岐命令のフェッチ時でなく、
分岐命令が参照する引数を生成する命令のフェッチ時に
行ない、さらに、その分岐命令が参照する引数を生成す
る命令の実行時に、該当する分岐命令に対する予測の成
功、失敗を判定できるため、従来よりも早く分岐予測失
敗の処理が行なえる。これにより、分岐予測失敗時のペ
ナルティを減少させることができるという効果が得られ
る。
【図面の簡単な説明】
【図1】 本発明の実施の形態による分岐予測回路を備
えるパイプライン処理を行なう命令処理装置の構成を示
す図である。
えるパイプライン処理を行なう命令処理装置の構成を示
す図である。
【図2】 本発明の命令処理装置に適用するプログラム
の例を示す説明図である。
の例を示す説明図である。
【図3】 本発明の命令処理装置に適用するプログラム
中の比較命令のフォーマット構成を示す図である。
中の比較命令のフォーマット構成を示す図である。
【図4】 従来における命令処理装置の構成を示す図で
ある。
ある。
【図5】 図1に示す本発明の実施の形態による命令処
理装置と図4に示す従来の命令処理装置において実行し
た図2にプログラムの実行タイミングチャートである。
理装置と図4に示す従来の命令処理装置において実行し
た図2にプログラムの実行タイミングチャートである。
【図6】 本発明の命令処理装置における分岐予測回路
の実施例を示すブロック図である。
の実施例を示すブロック図である。
【図7】 本発明の命令処理装置における分岐予測回路
のメモリの具体的内容を示す図である。
のメモリの具体的内容を示す図である。
【図8】 本発明の命令処理装置における分岐予測回路
の予測アドレスバッファの具体的内容を示す図である。
の予測アドレスバッファの具体的内容を示す図である。
10 命令フェッチ回路 20 命令デコード・発行制御回路 30 命令実行回路 40 命令実行後処理回路 50 命令フェッチアドレス格納レジスタ 60 分岐予測回路 61 予測情報格納メモリ 62 分岐アドレス生成手段 621 予測アドレスバッファ MM0,MM1,AA0,AA1 メモリ 622 カウンタ 623 レジスタ 624 デコーダ F0 フラグ I1 比較命令 B3 分岐命令
フロントページの続き (56)参考文献 特開 昭61−82238(JP,A) 特開 平2−173825(JP,A) 特開 昭64−8445(JP,A) 特開 昭63−124135(JP,A) 特開 平6−110683(JP,A) 特開 平8−83356(JP,A) 特開 平8−76999(JP,A) 特開 平6−301538(JP,A) 特開 平8−110857(JP,A) 特開 平6−161750(JP,A) 特開 平10−133874(JP,A) 特開 平10−333906(JP,A) 特開 平10−333908(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38
Claims (7)
- 【請求項1】 パイプライン処理を行なう命令処理装置
において、 分岐予測を第1の分岐命令のフェッチ時でなく、第1の
分岐命令の分岐判定条件を生成する第2の命令のフェッ
チ時に行なう分岐予測手段と、 前記第1の分岐命令の分岐判定条件を生成する前記第2
の命令の実行結果に基づいて、前記第1の分岐命令に対
応する分岐予測の成功又は失敗を判定する判定手段とを
備えることを特徴とする命令処理装置。 - 【請求項2】 前記分岐予測手段が、 前記第2の命令に含まれる付加情報に基づいて、前記第
2の命令に関する情報を格納する情報格納手段を備える
ことを特徴とする請求項1に記載の命令処理装置。 - 【請求項3】 前記第2の命令に含まれる付加情報が、
前記第1の分岐命令の分岐判定条件を生成する命令であ
ること、前記第2の命令と前記第1の分岐命令とアドレ
ス差、前記第2の命令の結果を分岐判定条件として参照
する前記第1の分岐命令の判定基準からなることを特徴
とする請求項2に記載の命令処理装置。 - 【請求項4】 前記分岐予測手段が、 前記第2の命令のフェッチ時に、前記情報格納手段から
前記第2の命令に関する情報を読み出し、前記第1の分
岐命令に対応する分岐予測先の情報を予測情報として生
成する生成手段を備えることを特徴とする請求項2に記
載の命令処理装置。 - 【請求項5】 前記分岐予測手段が、 前記判定手段によって前記第1の分岐命令に対応する分
岐予測の失敗が判定された時に、前記第1の分岐命令の
フェッチが終了しているかどうかを調べるフェッチ判定
手段と、 フェッチが終了していない場合に、前記第1の分岐命令
の実行が終了するまで前記予測情報を待避する待避手段
とを備えることを特徴とする請求項4に記載の命令処理
装置。 - 【請求項6】 前記分岐予測手段は、前記判定手段から
前記第1の分岐命令に対応する分岐予測の失敗が報告さ
れた時に、前記第1の分岐命令が既にフェッチされてい
れば、分岐予測を中止して真のアドレスからのフェッチ
を開始し、前記第1の分岐命令がフェッチされていない
時は、前記第1の分岐命令がフェッチされるまで待機
し、フェッチされた後に真のアドレスからのフェッチを
開始することを特徴とする請求項1に記載の命令処理装
置。 - 【請求項7】 前記分岐予測手段は、 前記第1の分岐命令に対応する分岐予測の失敗判定から
前記第1の分岐命令実行までの間であることを示すフラ
グと、 前記フラグが分岐予測の失敗判定から前記第1の分岐命
令実行までの間にフェッチされた命令に対するパイプラ
インフラッシュ処理を抑止する手段とを備えることを特
徴とする請求項1に記載の命令処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13452798A JP3156773B2 (ja) | 1998-04-28 | 1998-04-28 | 命令処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13452798A JP3156773B2 (ja) | 1998-04-28 | 1998-04-28 | 命令処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11312086A JPH11312086A (ja) | 1999-11-09 |
JP3156773B2 true JP3156773B2 (ja) | 2001-04-16 |
Family
ID=15130412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13452798A Expired - Fee Related JP3156773B2 (ja) | 1998-04-28 | 1998-04-28 | 命令処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3156773B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6508596B1 (en) | 1993-10-15 | 2003-01-21 | Matsushita Electric Industrial Co., Ltd. | Apparatus using a method for recording digital data including a data conversion or format conversion, and apparatus using the method |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100634384B1 (ko) * | 2004-07-16 | 2006-10-16 | 삼성전자주식회사 | 액세스 데이터를 저장하는 회로를 구비한 반도체 메모리 장치 |
WO2024112157A1 (ko) * | 2022-11-24 | 2024-05-30 | 삼성전자 주식회사 | 공동 편집 명령어를 처리하는 전자 장치 및 그 방법 |
-
1998
- 1998-04-28 JP JP13452798A patent/JP3156773B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6508596B1 (en) | 1993-10-15 | 2003-01-21 | Matsushita Electric Industrial Co., Ltd. | Apparatus using a method for recording digital data including a data conversion or format conversion, and apparatus using the method |
Also Published As
Publication number | Publication date |
---|---|
JPH11312086A (ja) | 1999-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5142631A (en) | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register | |
JP3096451B2 (ja) | データを転送する方法およびプロセッサ | |
EP0381447B1 (en) | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system | |
US5819079A (en) | Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch | |
US5666506A (en) | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle | |
US5809294A (en) | Parallel processing unit which processes branch instructions without decreased performance when a branch is taken | |
US20050278505A1 (en) | Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory | |
US20080301420A1 (en) | Branch prediction control device having return address stack and method of branch prediction | |
US20050066131A1 (en) | Apparatus and method for loading data values | |
JP2002525742A (ja) | 記憶からロードへの転送のための機構 | |
US10853072B2 (en) | Arithmetic processing apparatus and method of controlling arithmetic processing apparatus | |
JP2003519832A (ja) | アントレーニングを備えるストア−ロード転送プレディクタ | |
US7844807B2 (en) | Branch target address cache storing direct predictions | |
JP2006520964A5 (ja) | ||
JP2006520964A (ja) | 分岐ターゲットに基づいて分岐予測をするための方法および装置 | |
JP2000322257A (ja) | 条件分岐命令の投機的実行制御方法 | |
JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
JPH06242951A (ja) | キャッシュメモリシステム | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US6421771B1 (en) | Processor performing parallel operations subject to operand register interference using operand history storage | |
JP3156773B2 (ja) | 命令処理装置 | |
JP7409208B2 (ja) | 演算処理装置 | |
JP2004038338A (ja) | 分岐予測機構を有する情報処理装置 | |
US6711671B1 (en) | Non-speculative instruction fetch in speculative processing | |
JP3394854B2 (ja) | 無条件ジャンプ命令処理方法並びにそのための無条件ジャンプ命令処理装置及び汎用レジスタ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080209 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090209 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100209 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |