JP2534662B2 - 命令キヤツシユ制御方法 - Google Patents
命令キヤツシユ制御方法Info
- Publication number
- JP2534662B2 JP2534662B2 JP61067840A JP6784086A JP2534662B2 JP 2534662 B2 JP2534662 B2 JP 2534662B2 JP 61067840 A JP61067840 A JP 61067840A JP 6784086 A JP6784086 A JP 6784086A JP 2534662 B2 JP2534662 B2 JP 2534662B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- cache
- address
- destination address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Advance Control (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、命令キャッシュメモリの制御方式に関し、
特に、分岐先アドレスキャッシュへの先行フェッチを制
御する方式に関する。
特に、分岐先アドレスキャッシュへの先行フェッチを制
御する方式に関する。
分岐先アドレスキャッシュ機構は、既に実行された実
績のある分岐命令について、その命令アドレスと、その
分岐先アドレスとを対にして連想メモリの形で記憶する
キャッシュメモリを持ち、次にフェッチされる命令が分
岐命令か否かを予測するために用いられている。従来の
分岐先アドレスキャッシュ機構の最大の使用目的は、パ
イプライン処理における命令フェッチステージより前で
命令予測を行ない、次にフェッチされる命令が分岐命令
と予測された場合は、分岐先の命令についてもパイプラ
イン処理を並列に開始・実行することにより、分岐命令
によるパイプライン処理中の内容の破棄に伴う処理性能
の著しい低下を抑えることにある。この方式は、各種類
の分岐命令に対して適用される必要性から、条件分岐命
令に対しては、過去の条件の成立/不成立の履歴管理お
よびその履歴情報に基づく分岐予測、およびインデクス
指定形分岐命令に対しては、予測分岐先アドレスとアド
レス計算結果による確定分岐先アドレスとの比較および
その更新などの機構が必要である。しかも、実効性能の
向上のためには、数多くの分岐命令に対して、確度の高
い予測情報を提供する必要があるため、キャッシュ・エ
ントリ数の増大と履歴情報部の複雑化とが必至となる。
さらに、複数の連続する分岐命令への対処のためには複
雑な制御が必要となる場合がある。
績のある分岐命令について、その命令アドレスと、その
分岐先アドレスとを対にして連想メモリの形で記憶する
キャッシュメモリを持ち、次にフェッチされる命令が分
岐命令か否かを予測するために用いられている。従来の
分岐先アドレスキャッシュ機構の最大の使用目的は、パ
イプライン処理における命令フェッチステージより前で
命令予測を行ない、次にフェッチされる命令が分岐命令
と予測された場合は、分岐先の命令についてもパイプラ
イン処理を並列に開始・実行することにより、分岐命令
によるパイプライン処理中の内容の破棄に伴う処理性能
の著しい低下を抑えることにある。この方式は、各種類
の分岐命令に対して適用される必要性から、条件分岐命
令に対しては、過去の条件の成立/不成立の履歴管理お
よびその履歴情報に基づく分岐予測、およびインデクス
指定形分岐命令に対しては、予測分岐先アドレスとアド
レス計算結果による確定分岐先アドレスとの比較および
その更新などの機構が必要である。しかも、実効性能の
向上のためには、数多くの分岐命令に対して、確度の高
い予測情報を提供する必要があるため、キャッシュ・エ
ントリ数の増大と履歴情報部の複雑化とが必至となる。
さらに、複数の連続する分岐命令への対処のためには複
雑な制御が必要となる場合がある。
以上述べたように、分岐先アドレスキャッシュ機構の
技術は、処理装置のパイプライン処理の乱れを少なくす
るために、全ての分岐命令に対する的確な予測と、それ
らに対するパイプライン処理の重複を目的として用いら
れてきた。
技術は、処理装置のパイプライン処理の乱れを少なくす
るために、全ての分岐命令に対する的確な予測と、それ
らに対するパイプライン処理の重複を目的として用いら
れてきた。
しかし、パイプライン処理の定常性を崩す原因として
は、分岐命令の実行によるパイプラインの破壊の他に、
低速である外部メモリに対するアクセスの問題がある。
特に、外部メモリのアクセスが性能の上限を決定するよ
うな、いわゆる「バス・ネック」のシステムにおいて
は、後者のほうがパイプライン処理の性能を決めるより
重要な要因になると考えられる。
は、分岐命令の実行によるパイプラインの破壊の他に、
低速である外部メモリに対するアクセスの問題がある。
特に、外部メモリのアクセスが性能の上限を決定するよ
うな、いわゆる「バス・ネック」のシステムにおいて
は、後者のほうがパイプライン処理の性能を決めるより
重要な要因になると考えられる。
従来の計算機技術では、これらを解決する方法とし
て、キャッシュメモリなどの記憶の階層化手法が用いら
れている。命令コードおよびデータのアクセス時には、
最初にキャッシュメモリへの参照が生じ、キャッシュメ
モリ内にアクセスされるべき内容が存在しなかった場合
には、キャッシュメモリの入れ換え動作が駆動され、こ
のときのみ外部メモリの参照が発生する。
て、キャッシュメモリなどの記憶の階層化手法が用いら
れている。命令コードおよびデータのアクセス時には、
最初にキャッシュメモリへの参照が生じ、キャッシュメ
モリ内にアクセスされるべき内容が存在しなかった場合
には、キャッシュメモリの入れ換え動作が駆動され、こ
のときのみ外部メモリの参照が発生する。
外部メモリのアクセスが性能の上限を決定するよう
な、いわゆる「バス・ネック」のシステムにおいては、
その性能向上のためのキャッシュメモり導入が必須とな
る。しかし、特に命令コードに関するキャッシュ管理に
おいて、従来のキャッシュの入れ換え動作方式は、分岐
命令に関する情報を利用していないため、分岐命令のデ
コード終了後分岐が確定して初めて、分岐先アドレスに
よるキャッシュ検索を行なうことになり、そのときにキ
ャッシュ・ミスが発生すると性能は大きく低下すること
になる。
な、いわゆる「バス・ネック」のシステムにおいては、
その性能向上のためのキャッシュメモり導入が必須とな
る。しかし、特に命令コードに関するキャッシュ管理に
おいて、従来のキャッシュの入れ換え動作方式は、分岐
命令に関する情報を利用していないため、分岐命令のデ
コード終了後分岐が確定して初めて、分岐先アドレスに
よるキャッシュ検索を行なうことになり、そのときにキ
ャッシュ・ミスが発生すると性能は大きく低下すること
になる。
以上のように、従来の分岐先アドレスキャッシュは、
分岐命令に関する命令キャッシュの制御のために用いる
ことが可能ではあるが、全ての分岐命令に対する分岐先
アドレスキャッシュの入れ換えを行なうと、分岐先アド
レスキャッシュより入れ換え頻度の少ない命令キャッシ
ュを制御するためには、命令キャッシュに対して十分大
きなエントリ・サイズを持つ必要があること、および分
岐予測が前回の分岐先アドレスに基づいているため、予
想される分岐先と確定した分岐先との比較手段を用いて
エントリ更新作業を行なう必要があること、並びに分岐
先アドレスキャッシュの更新頻度は、全ての新たな分岐
命令で発生することによりハードウェア量の多大な増
加、およびスイッチングの増大によるシステム消費電力
の増加を伴うという欠点を有している。
分岐命令に関する命令キャッシュの制御のために用いる
ことが可能ではあるが、全ての分岐命令に対する分岐先
アドレスキャッシュの入れ換えを行なうと、分岐先アド
レスキャッシュより入れ換え頻度の少ない命令キャッシ
ュを制御するためには、命令キャッシュに対して十分大
きなエントリ・サイズを持つ必要があること、および分
岐予測が前回の分岐先アドレスに基づいているため、予
想される分岐先と確定した分岐先との比較手段を用いて
エントリ更新作業を行なう必要があること、並びに分岐
先アドレスキャッシュの更新頻度は、全ての新たな分岐
命令で発生することによりハードウェア量の多大な増
加、およびスイッチングの増大によるシステム消費電力
の増加を伴うという欠点を有している。
本発明の目的は、命令キャッシュのヒット率を高める
命令キャッシュ制御方法を提供することである。
命令キャッシュ制御方法を提供することである。
本発明の分岐先アドレスキャッシュ制御方法は、命令
アドレスと命令コードとを対にして保持する命令キャッ
シュと、分岐命令のアドレスと分岐先アドレスとを対に
して連想メモリの形で記憶する分岐先アドレスキャッシ
ュとを有し、分岐先アドレスと当該アドレスに存在する
命令コードを命令キャッシュにフェッチする命令キャッ
シュ制御方法であって、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在するか否かの検索を行い、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在する場合は、そのアドレスと対をなす分
岐先アドレスを分岐先アドレスキャッシュから得て命令
キャッシュの検索を行い、検索の結果、分岐先アドレス
が命令アドレスバッファ内に存在しないときは、主メモ
リから分岐先アドレスの命令コードをフェッチして命令
キャッシュに分岐先アドレスとそのアドレスの命令コー
ドを登録する一方、分岐先アドレスキャッシュの内容の
入れ替えは行わず、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在せず且つ分岐先アドレスも命令キャッシ
ュ内に存在しない場合は、主メモリから分岐先アドレス
の命令コードをフェッチするとともに、命令キャッシュ
及び分岐先アドレスキャッシュの両方の入れ替えを行
い、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在しない一方、分岐先アドレスは、命令キ
ャッシュ内に存在する場合は、分岐先アドレスの命令コ
ードを命令キャッシュから得る一方、分岐先アドレスキ
ャッシュの入れ替えは行わないことを特徴とする。
アドレスと命令コードとを対にして保持する命令キャッ
シュと、分岐命令のアドレスと分岐先アドレスとを対に
して連想メモリの形で記憶する分岐先アドレスキャッシ
ュとを有し、分岐先アドレスと当該アドレスに存在する
命令コードを命令キャッシュにフェッチする命令キャッ
シュ制御方法であって、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在するか否かの検索を行い、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在する場合は、そのアドレスと対をなす分
岐先アドレスを分岐先アドレスキャッシュから得て命令
キャッシュの検索を行い、検索の結果、分岐先アドレス
が命令アドレスバッファ内に存在しないときは、主メモ
リから分岐先アドレスの命令コードをフェッチして命令
キャッシュに分岐先アドレスとそのアドレスの命令コー
ドを登録する一方、分岐先アドレスキャッシュの内容の
入れ替えは行わず、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在せず且つ分岐先アドレスも命令キャッシ
ュ内に存在しない場合は、主メモリから分岐先アドレス
の命令コードをフェッチするとともに、命令キャッシュ
及び分岐先アドレスキャッシュの両方の入れ替えを行
い、 実行すべき分岐命令のアドレスが分岐先アドレスキャ
ッシュ内に存在しない一方、分岐先アドレスは、命令キ
ャッシュ内に存在する場合は、分岐先アドレスの命令コ
ードを命令キャッシュから得る一方、分岐先アドレスキ
ャッシュの入れ替えは行わないことを特徴とする。
次に本発明について図面を参照して説明する。
第1図は本発明の一実施例のブロック図である。第1
図において、101は次にフェッチすべき命令の先頭アド
レスを保持する命令フェッチアドレスレジスタ、102は
分岐命令アドレスと分岐先アドレスとを対にして保持す
る分岐先アドレスキャッシュ、103は命令アドレスと命
令コードとを対にして保持する命令キャッシュ、104は
デコードを待つ命令の待機用バッファ、105は命令デコ
ーダ、106はデコードされた分岐命令の待機用バッフ
ァ、107は分岐先アドレスキャッシュ102に対する分岐命
令登録用ラッチ、108は命令キャッシュ103に対する命令
コード登録用ラッチ、109は命令キャッシュ103に対する
検索要求を調停する命令キャッシュアクセスアービタを
各々表わす。分岐命令待機用バッファ106は、命令デコ
ーダ105によってデコードされ、分岐命令登録用ラッチ1
07及び命令キャッシュアクセスアビータ109に伝達する
命令を一時的に保持する。命令登録用ラッチ108は、命
令キャッシュ要求に応じて、主メモリから新たに参照し
てきた記憶内容を命令キャッシュ103に登録される際
に、一時的に命令アドレスと命令コードを保持する。命
令キャッシュアクセスアビータ109は、命令キャッシュ1
03をアクセスしようとする命令フェッチアドレスレジス
タ101、分岐先アドレスキャッシュ102、分岐命令待機用
バッファ106からの要求を調停し一つずつ選択する。第
1図で示される矢印は、命令の要求先を表す。
図において、101は次にフェッチすべき命令の先頭アド
レスを保持する命令フェッチアドレスレジスタ、102は
分岐命令アドレスと分岐先アドレスとを対にして保持す
る分岐先アドレスキャッシュ、103は命令アドレスと命
令コードとを対にして保持する命令キャッシュ、104は
デコードを待つ命令の待機用バッファ、105は命令デコ
ーダ、106はデコードされた分岐命令の待機用バッフ
ァ、107は分岐先アドレスキャッシュ102に対する分岐命
令登録用ラッチ、108は命令キャッシュ103に対する命令
コード登録用ラッチ、109は命令キャッシュ103に対する
検索要求を調停する命令キャッシュアクセスアービタを
各々表わす。分岐命令待機用バッファ106は、命令デコ
ーダ105によってデコードされ、分岐命令登録用ラッチ1
07及び命令キャッシュアクセスアビータ109に伝達する
命令を一時的に保持する。命令登録用ラッチ108は、命
令キャッシュ要求に応じて、主メモリから新たに参照し
てきた記憶内容を命令キャッシュ103に登録される際
に、一時的に命令アドレスと命令コードを保持する。命
令キャッシュアクセスアビータ109は、命令キャッシュ1
03をアクセスしようとする命令フェッチアドレスレジス
タ101、分岐先アドレスキャッシュ102、分岐命令待機用
バッファ106からの要求を調停し一つずつ選択する。第
1図で示される矢印は、命令の要求先を表す。
第2図は第1図における分岐先アドレスキャッシュ10
2の構成図で、201は分岐命令そのものが存在するアドレ
スを保持する分岐命令アドレスバッファ、202は201で保
持されるアドレスに対応づけられた分岐命令の分岐先ア
ドレスを保持する分岐先アドレスバッファである。
2の構成図で、201は分岐命令そのものが存在するアドレ
スを保持する分岐命令アドレスバッファ、202は201で保
持されるアドレスに対応づけられた分岐命令の分岐先ア
ドレスを保持する分岐先アドレスバッファである。
第3図は第1図における命令キャッシュ103の構成図
で、301は命令の存在するアドレスを保持する命令アド
レスバッファ、302は301で保持されるアドレスに対応づ
けられた命令のコードを含むメモリ部分を保持する命令
コードバッファである。
で、301は命令の存在するアドレスを保持する命令アド
レスバッファ、302は301で保持されるアドレスに対応づ
けられた命令のコードを含むメモリ部分を保持する命令
コードバッファである。
次に本実施例を第4図に示された流れ図にもとづいて
説明する(第4図は動作の概要のみを示す流れ図であ
る)。
説明する(第4図は動作の概要のみを示す流れ図であ
る)。
まず、次にフェッチされる命令の先頭アドレスが命令
アドレスレジスタ101にロードされる(401)。このアド
レスは命令コードのアクセスに使用されるが、そのため
キャッシュアクセスアービタ109を通じて命令キャッシ
ュ103の検索が行なわれる(402)。それと並行して分岐
先アドレスキャッシュ102の検索が行なわれる(403)。
命令アドレスレジスタ101にラッチされたアドレスが分
岐命令アドレスバッファ201内に存在した場合は、命令
アドレスレジスタ101に基づきフェッチされる命令が分
岐命令だと予想されるため、対応する分岐先予想アドレ
スを分岐先アドレスバッファ202から得る(404)。この
アドレスはアービタ109を通じて、次に命令キャッシュ1
03の検索に用いられる(405)。特に、分岐先アドレス
が命令アドレスバッファ301内に存在しない場合には、
命令キャッシュ103の入れかえを実行する(406)。
アドレスレジスタ101にロードされる(401)。このアド
レスは命令コードのアクセスに使用されるが、そのため
キャッシュアクセスアービタ109を通じて命令キャッシ
ュ103の検索が行なわれる(402)。それと並行して分岐
先アドレスキャッシュ102の検索が行なわれる(403)。
命令アドレスレジスタ101にラッチされたアドレスが分
岐命令アドレスバッファ201内に存在した場合は、命令
アドレスレジスタ101に基づきフェッチされる命令が分
岐命令だと予想されるため、対応する分岐先予想アドレ
スを分岐先アドレスバッファ202から得る(404)。この
アドレスはアービタ109を通じて、次に命令キャッシュ1
03の検索に用いられる(405)。特に、分岐先アドレス
が命令アドレスバッファ301内に存在しない場合には、
命令キャッシュ103の入れかえを実行する(406)。
これらの動作の結果として、命令アドレス、命令コー
ド及びその命令が分岐先アドレスキャッシュにあったか
否かを示す情報の3つ組が、命令待機用バッファ104に
集められる。処理403において、命令アドレスレジスタ1
01にラッチされたアドレスが分岐アドレスバッファ201
内に存在しなかった場合は、以上述べた分岐先予想に関
する処理404〜406は実行されず、命令待機用バッファ10
4には上記と同様の情報が集められる。その上で命令デ
コードが行なわれ(407)、その命令が分岐命令であり
(408)、かつ処理409でその分岐が確定した場合(無条
件分岐命令、サブルーチンコール命令などでは必ず分岐
が確定する。条件分岐命令などでは、それ以前の命令実
行でその条件が成立したときのみ分岐が確定する。)そ
の分岐命令の分岐先アドレスを分岐命令待機用バッファ
106を介して分岐命令登録用ラッチ107及び命令アドレス
レジスタ101に格納する(410)。この分岐命令待機用バ
ッファ106は、命令デコード終了以降、分岐命令登録ま
での期間に命令アドレスと分岐先アドレスのペアを一時
的に保持する。
ド及びその命令が分岐先アドレスキャッシュにあったか
否かを示す情報の3つ組が、命令待機用バッファ104に
集められる。処理403において、命令アドレスレジスタ1
01にラッチされたアドレスが分岐アドレスバッファ201
内に存在しなかった場合は、以上述べた分岐先予想に関
する処理404〜406は実行されず、命令待機用バッファ10
4には上記と同様の情報が集められる。その上で命令デ
コードが行なわれ(407)、その命令が分岐命令であり
(408)、かつ処理409でその分岐が確定した場合(無条
件分岐命令、サブルーチンコール命令などでは必ず分岐
が確定する。条件分岐命令などでは、それ以前の命令実
行でその条件が成立したときのみ分岐が確定する。)そ
の分岐命令の分岐先アドレスを分岐命令待機用バッファ
106を介して分岐命令登録用ラッチ107及び命令アドレス
レジスタ101に格納する(410)。この分岐命令待機用バ
ッファ106は、命令デコード終了以降、分岐命令登録ま
での期間に命令アドレスと分岐先アドレスのペアを一時
的に保持する。
デコードにより確定した真の分岐先アドレスに対応す
る命令コードが命令キャッシュ103に存在するか否かが
次に検証される。処理403において分岐命令と予想され
なかった命令でかつデコード結果が分岐命令であった場
合(411)において、確定分岐先アドレスが命令アドレ
スバッファ301に存在した場合は何もしない。これに対
し、確定分岐先アドレスが命令アドレスバッファ301に
存在しなかった場合は、分岐命令登録用ラッチ107に待
機させてある分岐命令アドレスと分岐先アドレスとのペ
アを分岐先アドレスキャッシュ102に登録する入れかえ
を実施し、かつ命令キャッシュ103において分岐先命令
コードを登録する入れかえを実施する(412)。2つの
入れかえは独立故、その順序関係や並列性の如何を問わ
ない。処理終了後は次命令のフェッチ処理に移る。
る命令コードが命令キャッシュ103に存在するか否かが
次に検証される。処理403において分岐命令と予想され
なかった命令でかつデコード結果が分岐命令であった場
合(411)において、確定分岐先アドレスが命令アドレ
スバッファ301に存在した場合は何もしない。これに対
し、確定分岐先アドレスが命令アドレスバッファ301に
存在しなかった場合は、分岐命令登録用ラッチ107に待
機させてある分岐命令アドレスと分岐先アドレスとのペ
アを分岐先アドレスキャッシュ102に登録する入れかえ
を実施し、かつ命令キャッシュ103において分岐先命令
コードを登録する入れかえを実施する(412)。2つの
入れかえは独立故、その順序関係や並列性の如何を問わ
ない。処理終了後は次命令のフェッチ処理に移る。
処理403において分岐命令と予想された命令でも、確
定分岐先が命令キャッシュにあるかどうかがテストされ
る(413)。確定分岐先アドレスが命令アドレスバッフ
ァ301に存在した場合な何もしない。これに対し、確定
分岐先アドレスが命令アドレスバッファ301に存在しな
かった場合は、分岐先アドレスキャッシュ102での予想
アドレスが誤っていた(例えばインデクスアドレシング
などのように動的に分岐アドレスが決定される場合はこ
のようなことが発生し得る)ことになり、分岐先アドレ
スキャッシュ102の当該エントリを更新すると共に、命
令キャッシュにおいて分岐先命令コードを登録する入れ
かえを実施する(414)。2つの処理は独立故、その順
序関係や並列性の如何を問わない。処理終了後は次命令
のフェッチ処理に移る。
定分岐先が命令キャッシュにあるかどうかがテストされ
る(413)。確定分岐先アドレスが命令アドレスバッフ
ァ301に存在した場合な何もしない。これに対し、確定
分岐先アドレスが命令アドレスバッファ301に存在しな
かった場合は、分岐先アドレスキャッシュ102での予想
アドレスが誤っていた(例えばインデクスアドレシング
などのように動的に分岐アドレスが決定される場合はこ
のようなことが発生し得る)ことになり、分岐先アドレ
スキャッシュ102の当該エントリを更新すると共に、命
令キャッシュにおいて分岐先命令コードを登録する入れ
かえを実施する(414)。2つの処理は独立故、その順
序関係や並列性の如何を問わない。処理終了後は次命令
のフェッチ処理に移る。
以上述べたように本実施例では、処理411〜412で示さ
れる通り、新たにデコードされた分岐命令のうち、命令
キャッシュに存在しなかったもののみを分岐先アドレス
バッファに登録している。これは、従来の「全分岐命令
を登録する」方式に比べて次の利点がある。すなわち、
本発明の目的は効率よいキャッシュ制御であり、分岐予
測による分岐先命令コードの早期フェッチである。よっ
て、分岐先アドレスキャッシュ検索の成功(ヒット)/
不成功(ミス)にかかわらず、命令キャッシュに命令コ
ードが存在すればそれが最適な制御となる。従来のよう
に命令キャッシュに存在する命令アドレスを含めて分岐
命令キャッシュに登録することは、命令キャッシュ制御
としては冗長な情報を持つことになる。本発明のように
命令キャッシュに既に存在している分岐命令を分岐先ア
ドレスキャッシュに登録しないことで、分岐先アドレス
キャッシュは従来より少ないエントリ数でより多くのキ
ャッシュサイズに応じた分岐履歴情報をより長時間の間
入れかえられることなしに保持することが可能になると
いう効果がある。
れる通り、新たにデコードされた分岐命令のうち、命令
キャッシュに存在しなかったもののみを分岐先アドレス
バッファに登録している。これは、従来の「全分岐命令
を登録する」方式に比べて次の利点がある。すなわち、
本発明の目的は効率よいキャッシュ制御であり、分岐予
測による分岐先命令コードの早期フェッチである。よっ
て、分岐先アドレスキャッシュ検索の成功(ヒット)/
不成功(ミス)にかかわらず、命令キャッシュに命令コ
ードが存在すればそれが最適な制御となる。従来のよう
に命令キャッシュに存在する命令アドレスを含めて分岐
命令キャッシュに登録することは、命令キャッシュ制御
としては冗長な情報を持つことになる。本発明のように
命令キャッシュに既に存在している分岐命令を分岐先ア
ドレスキャッシュに登録しないことで、分岐先アドレス
キャッシュは従来より少ないエントリ数でより多くのキ
ャッシュサイズに応じた分岐履歴情報をより長時間の間
入れかえられることなしに保持することが可能になると
いう効果がある。
本実施例によれば、さらに分岐先が誤まっていたとき
の処置に効果がある。従来は、処理413でもし分岐先が
予想と異なった場合は、分岐先アドレスバッファの分岐
先アドレスを変更しなければならない。しかし、本発明
では命令キャッシュに分岐先アドレスがヒットする限り
上記変更を行なわないし、分岐は“成功”していると見
なすことができる。これは分岐先アドレスがインデクス
修飾されたアドレシングであっても、それが命令キャッ
シュのブロックサイズ以内(あるいはいくつかのブロッ
クサイズの合計)の範囲を超えなければ厳密な分岐先ア
ドレスで制御を行なう必要はないという考えに基づいて
いる。これにより、分岐先アドレスバッファで得られた
予想分岐先アドレス及びデコード後の確定分岐先アドレ
スに対するアドレス比較手段をすべて命令キャッシュで
代行できることになり、従来に比べて明らかに小規模な
回路を構成することができるという効果がある。
の処置に効果がある。従来は、処理413でもし分岐先が
予想と異なった場合は、分岐先アドレスバッファの分岐
先アドレスを変更しなければならない。しかし、本発明
では命令キャッシュに分岐先アドレスがヒットする限り
上記変更を行なわないし、分岐は“成功”していると見
なすことができる。これは分岐先アドレスがインデクス
修飾されたアドレシングであっても、それが命令キャッ
シュのブロックサイズ以内(あるいはいくつかのブロッ
クサイズの合計)の範囲を超えなければ厳密な分岐先ア
ドレスで制御を行なう必要はないという考えに基づいて
いる。これにより、分岐先アドレスバッファで得られた
予想分岐先アドレス及びデコード後の確定分岐先アドレ
スに対するアドレス比較手段をすべて命令キャッシュで
代行できることになり、従来に比べて明らかに小規模な
回路を構成することができるという効果がある。
以上述べたように、本発明を用いれば小規模な分岐先
アドレスキャッシュ機構によって、分岐予測に関する制
御を含めたキャッシュ制御を実現することが可能とな
り、特にメモリアクセスが性能の上限を決定するような
システムにおいて有効である。
アドレスキャッシュ機構によって、分岐予測に関する制
御を含めたキャッシュ制御を実現することが可能とな
り、特にメモリアクセスが性能の上限を決定するような
システムにおいて有効である。
第1図は本発明の一実施例を示すブロック図、第2図は
アドレスキャッシュ102の構成図、第3図は命令キャッ
シュ103の構成図、第4図(a),(b)はフローチャ
ートである。 101……命令フェッチアドレスレジスタ、102……分岐先
アドレスキャッシュ、103……命令キャッシュ、104……
命令待機用バッファ、105……命令デコーダ、106……デ
コードされた分岐命令待機用バッファ、107……分岐命
令登録用ラッチ、108……命令コード登録用ラッチ、109
……命令キャッシュアクセスアービタ、201……分岐命
令アドレスバッファ、202……分岐先アドレスバッフ
ァ、301……命令アドレスバッファ、302……命令コード
バッファ。
アドレスキャッシュ102の構成図、第3図は命令キャッ
シュ103の構成図、第4図(a),(b)はフローチャ
ートである。 101……命令フェッチアドレスレジスタ、102……分岐先
アドレスキャッシュ、103……命令キャッシュ、104……
命令待機用バッファ、105……命令デコーダ、106……デ
コードされた分岐命令待機用バッファ、107……分岐命
令登録用ラッチ、108……命令コード登録用ラッチ、109
……命令キャッシュアクセスアービタ、201……分岐命
令アドレスバッファ、202……分岐先アドレスバッフ
ァ、301……命令アドレスバッファ、302……命令コード
バッファ。
Claims (1)
- 【請求項1】命令アドレスと命令コードとを対にして保
持する命令キャッシュと、分岐命令のアドレスと分岐先
アドレスとを対にして連想メモリの形で記憶する分岐先
アドレスキャッシュとを有し、分岐先アドレスと当該ア
ドレスに存在する命令コードを前記命令キャッシュにフ
ェッチする命令キャッシュ制御方法であって、 実行すべき分岐命令のアドレスが前記分岐先アドレスキ
ャッシュ内に存在するか否かの検索を行い、 前記実行すべき分岐命令のアドレスが前記分岐先アドレ
スキャッシュ内に存在する場合は、そのアドレスと対を
なす分岐先アドレスを分岐先アドレスキャッシュから得
て前記命令キャッシュの検索を行い、検索の結果、前記
分岐先アドレスが命令アドレスバッファ内に存在しない
ときは、主メモリから前記分岐先アドレスの命令コード
をフェッチして前記命令キャッシュに分岐先アドレスと
そのアドレスの命令コードを登録する一方、前記分岐先
アドレスキャッシュの内容の入れ替えは行わず、 前記実行すべき分岐命令のアドレスが前記分岐先アドレ
スキャッシュ内に存在せず且つ分岐先アドレスも前記命
令キャッシュ内に存在しない場合は、前記主メモリから
前記分岐先アドレスの命令コードをフェッチするととも
に、前記命令キャッシュ及び前記分岐先アドレスキャッ
シュの両方の入れ替えを行い、 前記実行すべき分岐命令のアドレスが前記分岐先アドレ
スキャッシュ内に存在しない一方、分岐先アドレスは、
前記命令キャッシュ内に存在する場合は、前記分岐先ア
ドレスの命令コードを前記命令キャッシュから得る一
方、前記分岐先アドレスキャッシュの入れ替えは行わな
いことを特徴とする命令キャッシュ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61067840A JP2534662B2 (ja) | 1986-03-25 | 1986-03-25 | 命令キヤツシユ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61067840A JP2534662B2 (ja) | 1986-03-25 | 1986-03-25 | 命令キヤツシユ制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS62224829A JPS62224829A (ja) | 1987-10-02 |
JP2534662B2 true JP2534662B2 (ja) | 1996-09-18 |
Family
ID=13356547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61067840A Expired - Lifetime JP2534662B2 (ja) | 1986-03-25 | 1986-03-25 | 命令キヤツシユ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2534662B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2633868B2 (ja) * | 1987-10-14 | 1997-07-23 | 日立電線株式会社 | 酸化物系超電導線材 |
JP2773471B2 (ja) * | 1991-07-24 | 1998-07-09 | 日本電気株式会社 | 情報処理装置 |
US7096348B2 (en) * | 2003-12-15 | 2006-08-22 | Freescale Semiconductor, Inc. | Method and apparatus for allocating entries in a branch target buffer |
US7640422B2 (en) * | 2006-08-16 | 2009-12-29 | Qualcomm Incorporated | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6027945A (ja) * | 1983-07-27 | 1985-02-13 | Nec Corp | 命令取出装置 |
JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
JPS60105050A (ja) * | 1983-11-11 | 1985-06-10 | Fujitsu Ltd | パイプライン制御方式 |
-
1986
- 1986-03-25 JP JP61067840A patent/JP2534662B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPS62224829A (ja) | 1987-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4847753A (en) | Pipelined computer | |
US4991080A (en) | Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions | |
US5210831A (en) | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations | |
JP2504830Y2 (ja) | デ―タ処理装置 | |
US4477872A (en) | Decode history table for conditional branch instructions | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US4725947A (en) | Data processor with a branch target instruction storage | |
US9081563B2 (en) | Method and apparatus for enhancing scheduling in an advanced microprocessor | |
US5276882A (en) | Subroutine return through branch history table | |
US4858104A (en) | Preceding instruction address based branch prediction in a pipelined processor | |
US5297281A (en) | Multiple sequence processor system | |
JPH02206837A (ja) | パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置 | |
JPH02232753A (ja) | デジタルコンピュータシステムにおける仮想メモリーアドレスから物理的メモリーアドレスへの変換を制御する方法とその装置 | |
JP2006520964A5 (ja) | ||
US5146570A (en) | System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution | |
JP3486690B2 (ja) | パイプライン方式プロセッサ | |
EP0550289A2 (en) | A mechanism to detect stores into the instruction stream | |
JP2534662B2 (ja) | 命令キヤツシユ制御方法 | |
JPH06161779A (ja) | データ処理装置の割込み制御方式 | |
US5625808A (en) | Read only store as part of cache store for storing frequently used millicode instructions | |
JPS59132047A (ja) | デ−タ処理ユニツト | |
JPH01133162A (ja) | キャッシュメモリ制御方式 | |
JP2817524B2 (ja) | 命令キャッシュ制御方式 | |
US10198360B2 (en) | Systems and methods storing a page fault virtual address to prevent unnecessary page table walks | |
JPH08161226A (ja) | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 |