JP2001166934A - 命令フェッチ制御装置 - Google Patents

命令フェッチ制御装置

Info

Publication number
JP2001166934A
JP2001166934A JP2000298837A JP2000298837A JP2001166934A JP 2001166934 A JP2001166934 A JP 2001166934A JP 2000298837 A JP2000298837 A JP 2000298837A JP 2000298837 A JP2000298837 A JP 2000298837A JP 2001166934 A JP2001166934 A JP 2001166934A
Authority
JP
Japan
Prior art keywords
instruction
branch
prefetch
fetch
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.)
Granted
Application number
JP2000298837A
Other languages
English (en)
Other versions
JP3741945B2 (ja
Inventor
Masaki Ukai
昌樹 鵜飼
Aiichiro Inoue
愛一郎 井上
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000298837A priority Critical patent/JP3741945B2/ja
Priority to US09/793,559 priority patent/US6912650B2/en
Publication of JP2001166934A publication Critical patent/JP2001166934A/ja
Priority to US11/125,212 priority patent/US20050198480A1/en
Application granted granted Critical
Publication of JP3741945B2 publication Critical patent/JP3741945B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】命令処理の遅延時間を削減することのできる装
置を提供する。 【解決手段】命令キャッシュ2に命令フェッチ指示を出
す命令フェッチ制御部9において、命令のプリフェッチ
を行うようにする。命令フェッチ制御部9は、フェッチ
アドレス生成部9−1、ブランチヒストリ9−2、及び
優先順位決定回路9−3を備え、優先順位決定回路9−
3が、命令フェッチ要求を出すか、命令のプリフェッチ
要求を出すかを決定する。命令プリフェッチにおいて
も、プリフェッチアドレスの計算は、フェッチアドレス
生成部9−1が行う。優先順位決定回路9−3は、命令
フェッチや命令プリフェッチ、再命令フェッチなどの命
令の優先順位を決定し、その要求を命令キャッシュ2に
送る。また、アドレスは、優先順位決定回路9−3によ
って制御されるセレクタ9−4によって、複数入力され
るアドレスの内適当なものが選択されて出力される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、パイプライン処理
方式(スーパースカラ処理方式、あるいは、アウトオブ
オーダ処理方式を含む)を採用した情報処理装置に係
り、特に、見かけ上のフェッチ時間を減少させ命令処理
を高速化させるためのプリフェッチ処理に関する。
【0002】
【従来の技術】パイプライン処理方式などを採用した情
報処理装置においては、一つの命令の実行の終了を待た
ずに、次々と後続命令列をフェッチして命令パイプライ
ンに投入している。また、主記憶装置の動作が遅いた
め、キャッシュ機構を採用して後続命令列のフェッチを
高速化している。
【0003】図40は、分岐命令を複数含む命令列の例
を示す図である。同図において、(a)の行のDRは除
算命令であり、(b)の行のBCRは条件分岐命令、
(c)の行のBCRは無条件分岐命令であり、(d)の
行が分岐先命令である。
【0004】図41は、従来の手法を用いた場合のマシ
ンサイクルの遅延を説明する図である。まず、(a)の
行の命令が実行される。(a)の行の命令実行がAステ
ージであるとき、次の命令である(b)の行が実行され
る。このように、パイプライン方式をはじめとする投機
実行方式では、前の命令の実行完了を待つことなく次の
命令をフェッチし、実行する。しかし、(b)の行の命
令は条件分岐命令であるので、Aステージの後、Uステ
ージまでの間、条件確定待ちしている。そして、その間
に(c)の行の命令が実行される。これも分岐命令(無
条件分岐命令)であり、(b)の行の分岐結果に影響を
受けるので、Uステージの実行は、(b)の行の命令の
非分岐が確定するまで待ちの状態にある。(b)の行の
条件分岐命令の非分岐が決定すると、(c)の行の無条
件分岐命令が実行されることが確定するので、(c)の
行の無条件分岐命令のUステージの実行が行われる。こ
れを受けて、(d)の行の分岐先命令(NOP)のフェ
ッチ指令が出され、該分岐先命令のフェッチ及び実行が
行われる。
【0005】同図から明らかなように、(d)行の分岐
先命令のフェッチが遅れているため、(a)行から
(c)行までの命令は、順調にパイプライン処理が行わ
れているが、(d)行の命令になって処理の待ち状態が
生じ、パイプライン処理が遅延を生じている。
【0006】
【発明が解決しようとする課題】まず、従来の手法の場
合、第1の問題点として、キャッシュ機構の欠点、すな
わちフェッチ要求を出した命令列がキャッシュにヒット
しなかった場合に、そのペナルティ(遅延時間)が大き
いということがある。この場合、命令フェッチ要求が真
に必要なことが確定してから該命令フェッチ要求を出す
と、キャッシュミスヒットの場合には、このペナルティ
がそのまま性能差に跳ね返ることになる。
【0007】しかしながら、第2の問題点として、先行
する命令の実行結果が後続の命令の実行に影響を与える
場合は、先行する命令の実行結果が後続命令の実行に影
響しないことが判断できるまで、正しい後続の命令フェ
ッチ要求を出して実行することができない。
【0008】従来技術では、該分岐命令の分岐先アドレ
スが計算されていても、該分岐命令よりも前に実行され
る分岐命令の処理が確定し、該分岐命令が実行されるこ
とが決定されるまで、該分岐命令の分岐先命令フェッチ
を行っていなかった。すなわち、該分岐命令の直前に存
在する分岐命令の分岐条件が確定して(分岐予測の成功
が判明して)から、該分岐命令が分岐予測失敗した場合
に実行される命令列をフェッチするため、この命令フェ
ッチ開始が待たされる分、命令実行にロスが生じてい
た。
【0009】本発明の課題は、パイプライン処理方式等
を採用した情報処理装置において、命令処理の遅延時間
を削減することのできる装置を提供することである。
【0010】
【課題を解決するための手段】本発明の第1の側面にお
ける装置は、キャッシュメモリ手段と、それよりも下位
のメモリ手段と、該キャッシュメモリ手段に格納された
命令列を投機的に実行する手段を備えた命令制御装置に
おける命令のフェッチを制御する命令フェッチ制御装置
であって、該キャッシュメモリ手段に命令フェッチ要求
を出す命令フェッチ手段と、続いてフェッチ要求を予定
している命令列が、該キャッシュメモリ手段に存在しな
い場合には、該キャッシュメモリ手段に、該下位メモリ
手段から該予定命令列を事前に転送しておく命令プリフ
ェッチを行う命令プリフェッチ手段とを備えることを特
徴とする。
【0011】本発明の第2の側面における装置は、キャ
ッシュメモリ手段と、それよりも下位のメモリ手段と、
該キャッシュメモリ手段に格納された命令列を投機的に
実行する手段を備えた命令制御装置における命令のフェ
ッチを制御する命令フェッチ制御装置であって、該キャ
ッシュメモリ手段に命令フェッチ要求を出す命令フェッ
チ手段と、条件分岐命令もしくは無条件分岐命令を実行
する際に、分岐成立する場合の分岐先命令アドレスを求
めるアドレス生成手段と、該分岐命令の分岐する場合の
分岐先命令アドレスが求められた時点で、前記キャッシ
ュメモリ手段に該分岐先命令の命令フェッチを要求する
分岐先命令プリフェッチを行う分岐先命令プリフェッチ
手段とを備えることを特徴とする。
【0012】本発明の方法は、キャッシュメモリと、下
位メモリと、該キャッシュメモリに命令フェッチ要求を
出す命令フェッチ装置と、該キャッシュメモリに格納さ
れた命令列を処理する命令制御装置とを備える装置にお
ける命令制御方法であって、(a)続いてフェッチ要求
を予定している命令列が、該キャッシュメモリに存在し
ない場合には、該キャッシュメモリに、該下位メモリか
ら該予定命令列を事前に転送しておく命令プリフェッチ
を行うステップを備えることを特徴とする。
【0013】本発明においては、フェッチ予定の命令列
をプリフェッチするようにしたことにより、例えば、キ
ャッシュミスヒットした場合、新たに、フェッチするた
めに必要な命令列を下位メモリから転送しなくても良く
なり、命令実行の遅延時間を抑制することが出来る。
【0014】また、分岐命令の場合、分岐予測を行っ
て、予測された分岐先命令をフェッチしておくが、従来
では、分岐予測がはずれると、分岐予測がはずれたこと
が判明した時点で命令列をフェッチし直さなくてはなら
なかったので、処理遅延が生じていた。しかし、本発明
によれば、分岐予測されなかった方の分岐先の命令列を
分岐命令プリフェッチすることにより、あらかじめ命令
一時バッファに格納するようにする。従って、分岐予測
がはずれたとしても、すぐにキャッシュメモリから必要
な命令列をフェッチして実行することができるので、処
理遅延をより抑制することが出来る。
【0015】また、他の側面においては、前に実行して
いる命令が命令プリフェッチしようとしているアドレス
の内容を書き換える可能性がある場合には、命令プリフ
ェッチを取り下げるようにする。従って、ストア命令の
ような命令によって、アドレスの内容が書き換えられる
場合にも、整合性のある命令プリフェッチを行うことが
出来る。
【0016】
【発明の実施の形態】本発明の実施形態の概念を以下に
述べる。第1の問題を解決するための方法としては、事
前に、命令実行される可能性の高いアドレス域をキャッ
シュ機構に伝達し、キャッシュ機構に該アドレスの命令
列が登録されていなければ、実命令フェッチが行われる
よりも前に、主記憶装置あるいは下位のキャッシュメモ
リ(キャッシュメモリが多段からなる場合)から出来る
限り事前に命令列を登録し始めることを特徴とした命令
プリフェッチ機構を用いる。
【0017】こうすることにより、キャッシュのミスヒ
ット率を低下させることができ、性能向上に貢献するこ
とが可能となる。仮に実命令フェッチまでにキャッシュ
の登録作業が間に合わなかったとしても、実命令フェッ
チと、本発明の実施形態によるプリフェッチ要求との時
間差だけ、従来技術よりも遅延時間(ミスヒットペナル
ティ)を減らすことが出来る。
【0018】更に、同じタイミングで複数のフェッチ・
命令プリフェッチ要求を出すことが出来ないような装置
においては、命令プリフェッチの優先順位を設定し、そ
れに従って要求を出すようにする。
【0019】また、このような構成の場合、同じアドレ
スで複数回のプリフェッチ要求を出すのは無駄であるか
ら、フラグを準備して、同じアドレスで複数回のプリフ
ェッチ要求を出さないように抑制する。また、キャッシ
ュ機構の形式によっては、フェッチするバイト長よりも
大きなデータ単位を一つのまとまり(キャッシュブロッ
ク)として管理する形式のものもある。このときは、同
一キャッシュブロックへの命令プリフェッチ要求を抑制
する。すなわち、プリフェッチするアドレスが異なって
いても、前回のプリフェッチでキャッシュメモリに格納
されたキャッシュブロックの中に既に、そのアドレスの
命令が含まれている場合には、再び命令プリフェッチを
行って、主記憶からキャッシュメモリに命令を読み込む
ことは無駄となる。従って、このような場合には、プリ
フェッチ要求を出力しないようにする。
【0020】第2の問題点を解決するための方法として
は、特に、命令フェッチ制御部に命令フェッチの要求を
するが、命令フェッチ結果を命令デコード部に受け渡す
か否かを保留することを可能とする、あるいは、命令フ
ェッチ動作の途中で一時中断することを可能とすること
を特徴とした、分岐命令プリフェッチ機構を用いる。
【0021】通常、該分岐命令が分岐する場合の分岐先
アドレスは、条件コードの確定、すなわち、分岐するか
否かが確定するよりも前に求めることが可能である。例
えば、演算命令と直後の条件分岐命令がパイプライン処
理方式によって流れる場合、演算命令の実行(Xステー
ジ)の結果、条件コードが決定し分岐するか否かが確定
するタイミング(演算命令のUステージ)よりも前に、
後続の分岐命令の分岐先命令アドレスをAステージで求
めている。
【0022】しかしながら、図40のように、(a)演
算命令、(b)条件分岐命令、(c)無条件分岐命令と
続く命令列の場合、従来技術では図41のように(c)
無条件分岐命令が実行されることが確定されるまで、す
なわち、(b)条件分岐命令の非分岐が確定するまで、
(c)無条件分岐命令の分岐先命令を、命令フェッチす
ることが出来なかった。
【0023】ところが、図1に示すように、本発明の実
施形態を適用することにより、(c)行の無条件分岐命
令の分岐先アドレスが確定した時点で、このアドレスで
命令プリフェッチ(分岐命令プリフェッチ)を行うこと
ができる。この後、(a)行の演算命令の実行により条
件コードが確定し、(b)行の条件分岐命令が非分岐で
あれば、(c)行の無条件分岐命令は実行されるのだか
ら、無条件分岐命令の後続でデコード、実行、あるい
は、フェッチされている命令列はすべて棄却し、すでに
始まっている分岐命令プリフェッチを実命令フェッチと
して継続実行すれば良い。図1のケースでは、従来技術
よりも3クロックの性能向上が達成できる。この際、も
し他の分岐命令プリフェッチが行われていれば、これも
不要であるから、棄却すればよい。逆に(b)行の条件
分岐命令の分岐が確定し、(c)行の無条件分岐命令が
実行されないことが分かったならば、この時点で、すで
に始まっている分岐命令プリフェッチを中止、棄却すれ
ば良い。
【0024】後者の(c)行の無条件分岐命令が条件分
岐命令であっても本発明の実施形態を適用可能であり、
もちろん、上記命令列の(b)行の条件分岐命令に対し
ても本発明の実施形態を適用可能である。また、二つの
分岐命令の間に何らかの命令列が存在しても本発明の実
施形態を適用可能であることは、当業者には容易に理解
されよう。更に、ブランチヒストリに代表される分岐予
測機構を併用した場合でも、条件分岐命令が分岐予測さ
れた場合には、後続命令(非分岐である場合の命令列)
を分岐命令プリフェッチするようにすることで、同様の
手法を適用可能である。すなわち、分岐予測された結
果、分岐先と予測されたアドレスとは逆に、分岐しなか
った場合の次の命令のアドレスを分岐命令プリフェッチ
によってプリフェッチするようにしておくことも可能で
ある。
【0025】また、例えば、NOP(No Operation)命
令の代用として用いられるような、必ず非分岐となる分
岐命令においては、分岐先アドレスと称するアドレスへ
は分岐しないのだから、これを分岐命令プリフェッチす
るのは不利である。従って、このプリフェッチを抑止す
れば、無駄な動作が抑止され、性能劣化しないことにな
る。同様に無条件分岐命令のように、絶対に分岐命令の
後続命令が実行されない分岐命令においては、後続命令
を分岐命令プリフェッチするのは不利である。従って、
このプリフェッチを抑止することで、無駄な動作を抑止
し、性能劣化を防ぐことができる。
【0026】第1の問題の解決法でも述べたように、同
じタイミングで複数のフェッチ・分岐命令プリフェッチ
要求を出すことが出来ないような装置においては、プリ
フェッチする命令間に優先順位を設定し、それに従って
要求を出すことも可能である。
【0027】このようにして出される分岐命令プリフェ
ッチは、必ずしも実行されるわけではないので、実行さ
れることが分かっていなければならない。ここで、デコ
ードされるより手前のステージで分岐命令プリフェッチ
された命令列を一時保存しておく一時命令バッファを設
ける。また、一時命令バッファを設ける代わりに、命令
プリフェッチ動作の途中でインタロックをかけることも
出来る。いずれの場合にも、所定の条件でインタロック
を解除し、フェッチの続きあるいはデコード以降の処理
を行えば良い。
【0028】特に、スーパースカラ処理方式などを採用
した場合には、複数の分岐命令が時間的に近接して処理
されることになるので、本発明の実施形態の手法を用い
れば、連続あるいは、同時に複数の分岐命令プリフェッ
チを行う場合も考えられる。更に、これら複数の分岐命
令プリフェッチに対応した一時命令バッファを設けるこ
とで、複数の分岐命令プリフェッチ要求に対応すること
も可能である。
【0029】特に、この場合には、それぞれの分岐命令
プリフェッチを区別する方法を用いることができる。主
記憶にキャッシュメモリ機構がある場合、そのキャッシ
ュメモリ機構の特性に応じて分岐命令プリフェッチ要求
に工夫を加えると、更に性能向上する可能性がある。
【0030】キャッシュメモリが小さいなど性能が劣る
場合、この分岐命令プリフェッチによって本来使われる
頻度が高いはずの命令列がキャッシュメモリから消去さ
れる危険性が高くなる。特に、分岐性能が高くないの
で、この危険性は特に高くなる。このような危険性を回
避するために、分岐命令プリフェッチの場合には、その
プリフェッチ命令がキャッシュに存在しない場合、主記
憶から命令列を取り出してキャッシュメモリを更新する
ことを抑制し、性能劣化を防ぐことができる。
【0031】逆に、キャッシュ機構の性能が良い場合で
も、制御回路を設置しづらい場合もあり得る。このよう
な場合には、キャッシュ機能の性能の良さを利用し、キ
ャッシュにヒットしなかった場合にあらかじめ主記憶か
ら命令列を読み込むようにして、実際に、これらの命令
列が必要になった場合に、キャッシュミスヒットによる
ペナルティを最小限に抑えることが可能となる。すなわ
ち、前述の第1の問題点の解決法を利用することができ
る。
【0032】ところで、命令セットの中には、メモリに
データを書き込む動作を含む命令(以下、ストア命令と
呼ぶ)が存在する。ストア命令が、このような分岐命令
プリフェッチデータ列を書き換える可能性が常に存在す
る。従って、分岐命令プリフェッチの場合でも、この可
能性を検出する手段、及び、実際に該ストア命令が分岐
命令プリフェッチデータ列を書き換えた場合には、その
結果をこれらの命令列に反映するなどの対応をとる必要
がある。
【0033】実際に分岐命令プリフェッチした命令列を
書き換える手法の他に、該ストア命令によって実際に書
き換えられる、あるいは書き換えられる可能性がある場
合には、分岐命令プリフェッチを取りやめることもでき
る。分岐命令プリフェッチ要求によって得られる命令列
は常に命令実行されるわけではない。従って、このよう
な方法をとれば、回路構成が簡便になるメリットの方が
大きくなる。
【0034】以下に、図面に基づいて各回路構成につい
て詳細に説明する。ここで、図面に示された<、及び、
>でくくられた数字は、ビット番号を示し、小さい番号
のビットが上位ビットであり、大きい番号のビットが下
位ビットである。従って、<1>がMSBであり、<3
1>がLSBである。
【0035】図2は、本実施形態の装置の全体の概略構
成(要部)を示す図である。本実施形態においては、命
令フェッチポートをA、Bの二つ持っており、いずれか
一方が現在命令実行処理中のポートになり、もう一方が
分岐予測機構(ブランチヒストリ)によって分岐予測さ
れた分岐先命令列を保持するようになっている。これら
のポートの役割は動的に変更される。
【0036】以下は、同図及び後述の図における信号の
対応を示す表である。 (1)命令フェッチ要求(+IFCH REQUEST
VALID) (2)命令プリフェッチ要求(+IF PREFCH
REQUEST VALID) (3)データ (4)フェッチ命令列 (5)デコードする命令列 (6)命令デコードした情報 (7)ストアデータ (8)オペランドデータ (9)再命令フェッチ要求(+RE IFETCH
EQUEST) (10)分岐命令プリフェッチ要求(+BR PREF
CH REQ VALID) (11)分岐履歴情報 (12)分岐予測情報 (13)ストア命令によるフェッチ命令列の上書き可能
性検出信号 (14)ムーブイン(主記憶装置からキャッシュへのデ
ータ複写)要求(+MOVE IN REQUEST) (15)命令フェッチアドレス (16)フェッチ出来ない状態であることを示す信号
(+SU BUSY) (17)命令プリフェッチ出来ない状態であることを示
す信号(+SU PREFCH BUSY) (18)再命令フェッチアドレス (19)分岐予測先アドレス (20)分岐予測信号(+BRHIS HIT) (21)分岐命令プリフェッチアドレス (22)分岐予測失敗信号(CANCEL ALL
ORT) 図2においては、主記憶装置1から命令データ(3)が
命令キャッシュ2にフェッチされて送られ、次に、フェ
ッチ命令列(4)が命令一時バッファ3に格納される。
それから、デコードすべき命令列(5)が命令デコード
部4に入力される。そして、命令デコード部4における
デコードの結果に基づいて、各制御部(分岐命令制御部
5、ストア命令制御部6、その他の命令の制御部7)に
当該デコード情報が入力される。このとき、命令データ
と一緒にオペランドのデータがデータキャッシュ8に入
力され、各制御部における処理に使用するために、デコ
ードされた命令とともに、ストア命令制御部6やその他
の命令の制御部7に入力される(8)。また、ストア命
令制御部6は、処理の結果データをストアする場合に
は、ストアデータ(7)をデータキャッシュ8に書き込
むとともに、データキャッシュ8から命令キャッシュ2
には、命令列の書き換えデータが送られる。命令列が命
令一時バッファ3に格納されている場合には、命令一時
バッファ3にストアデータ(7)が送られる。また、書
き換えられるべき命令列やオペランドが主記憶装置1に
記憶されている場合には、ストアデータ(3)を主記憶
装置1に送る。
【0037】また、命令フェッチ制御部9は、命令キャ
ッシュ2に命令フェッチ要求(1)を出力して、命令列
を命令一時バッファ3へフェッチさせるとともに、命令
プリフェッチ要求(2)を出して、命令列を主記憶装置
1から命令キャッシュ2にプリフェッチさせる。
【0038】分岐命令制御部5は、分岐命令を処理した
結果、新しく命令のフェッチが必要になった場合には、
再命令フェッチ要求(9)を命令フェッチ制御部9に出
すとともに、分岐予測されなかった方の分岐のアドレス
の命令をプリフェッチさせるために分岐命令プリフェッ
チ要求(10)を命令フェッチ制御部9に出力する。ま
た、分岐命令制御部5の分岐命令処理結果は、分岐履歴
情報(11)として、ブランチヒストリ9’に送られ、
ブランチヒストリ9’において分岐予測情報(12)を
生成するために使用される。分岐予測情報(12)は、
命令フェッチ制御部9に送られ、分岐命令の分岐先アド
レスの命令のフェッチに使用される。更に、分岐命令制
御部5は、分岐予測に失敗したと判断した場合には、分
岐予測失敗信号(22)を命令キャッシュ2に送り、命
令キャッシュ2にフェッチされた分岐先命令が格納され
ているポートをキャンセルさせる。
【0039】図3は、命令プリフェッチ機構の構成例を
示す図である。本実施形態においては、1クロックで1
つの命令フェッチ要求を行うことができる。命令フェッ
チ要求には、シーケンシャルフェッチ(後続命令のフェ
ッチ)、分岐ターゲットフェッチ(分岐予測先の命令の
フェッチ)、再命令フェッチ(分岐予測失敗や割り込み
発生などのフェッチ)、及び本実施形態による分岐ター
ゲットの並びにシーケンシャルの命令プリフェッチの5
つがある。
【0040】これら5つの要求の優先順位が、再命令フ
ェッチ、分岐ターゲットフェッチ、分岐ターゲットの命
令プリフェッチ、シーケンシャルフェッチ、シーケンシ
ャルの命令プリフェッチの順であるとすれば、優先順位
決定回路9−3は、この優先順位で命令キャッシュ2に
要求を出すようにする。
【0041】フェッチアドレス生成部9−1では、フェ
ッチすべき命令のアドレスを生成し、セレクタ9−4に
入力する。の信号は、フェッチ要求を出したが、割り
込みなどの要因で受け入れられなかった場合に、同じア
ドレスを出力するために設けられている。の信号は、
16バイトの加算器から演算されて出力される、シーケ
ンシャルフェッチに使用されるアドレスである。また、
の信号は、再命令フェッチ要求(9)に対応して入力
される再命令フェッチアドレス(18)を示す信号であ
る。更に、の信号は、前に出力されたフェッチアドレ
スからブランチヒストリ9−2が処理した結果得られた
分岐予測先アドレス(19)である。優先順位決定回路
9−3は、ブランチヒストリ9−2から分岐予測信号2
0を受け取ると、命令フェッチや命令プリフェッチの優
先順位を勘案して、適切な場合に、フェッチアドレス選
択信号aを出力して、分岐予測先アドレス(19)をセ
レクタ9−4に選択させて、命令フェッチアドレス(1
5)として命令キャッシュ2に入力させる。このとき、
優先順位決定回路9−3は、命令フェッチアドレス(1
5)のアドレスの命令をフェッチさせたい場合には、命
令フェッチ要求(1)を命令キャッシュに入力し、命令
プリフェッチをさせたい場合には、命令プリフェッチ要
求(2)を命令キャッシュ2に入力する。
【0042】命令キャッシュ2によって命令フェッチ要
求(1)が受け入れられると、命令キャッシュ2から命
令(4)が命令一時バッファ3に送られる。このとき、
命令フェッチする命令が命令キャッシュ2に存在しない
場合には、主記憶装置1から命令データ(3)が呼び込
まれ、続いて命令一時バッファ3に命令(4)がフェッ
チされる。
【0043】命令キャッシュ2によって命令プリフェッ
チ要求(2)が受け入れられると、命令キャッシュは、
ムーブイン要求(14)を主記憶装置1に入力し、主記
憶装置1の信号(15)で入力されるアドレスから命令
キャッシュへ命令をプリフェッチする。
【0044】命令キャッシュ2が命令フェッチ出来ない
場合には、信号(16)を、命令プリフェッチ出来ない
場合には、信号(17)を優先順位決定回路9−3に入
力し、命令フェッチ制御部9に命令フェッチ、命令プリ
フェッチの再試行などを行わせる。
【0045】図4は、図3の優先順位決定回路の構成例
を示す図である。すなわち、本実施形態においては、再
命令フェッチ許可信号(+IF REQ REIFCH
GO)は、再命令フェッチ要求(+RE IFETCH
REQUEST)が入力されたら、そのまま、再命令
フェッチとして出力されるので、最優先で行われる。再
命令フェッチ要求がない場合は、分岐ターゲットフェッ
チ信号(+IF REQ BRHIS GO)は、分岐
成立予測がされていて、(+BRHIT HITが
“H”)かつ、ターゲットフェッチ格納先となるフェッ
チポートが空いている(−FCH PORT ALL
BUSYが“H”)場合にのみ行われる。すなわち、再
命令フェッチ要求(+RE IFETCH REQUE
ST)の論理をインバータ10で反転した信号と、命令
キャッシュ2からの信号である、フェッチポートがすべ
て埋まっていることを示す信号の論理が反転した信号
(−FCH PORT ALL BUSY)及び、分岐
予測信号(+BRHIS HIT)がAND回路14に
入力され、これらの信号のAND結果が、AND回路1
4から分岐ターゲットフェッチ許可信号(+IF RE
BRHIS GO)となる構成となっている。
【0046】それ以外の場合には、後続の命令のフェッ
チ信号(+IF REQ SEQUENTIAL
O)(シーケンシャルフェッチ)が従来行われていたと
ころを、それより優先順位が高いところに、分岐ターゲ
ットの命令プリフェッチ許可信号(+IF REQ
REFCH BRHIS GO)の優先順位を設定して
いる。もちろん、再命令フェッチが行われておらず、か
つ、分岐予測が成立していなければ分岐ターゲットの命
令プリフェッチは、行われないので、+RE IFET
CH REQUESTの論理反転信号と、+BRHIS
HIT信号と、分岐ターゲットの命令プリフェッチが
まだ行われていないことを示す信号(−BRHIS
GT PREFECH DONE)の論理積をAND回
路15でとって+IF REQ PREFCH BRH
IS GO信号を生成している。
【0047】同図の回路図だけでは、同時に+IF
EQ BRHIS GOと+IF REQ PREFCH
BRHIS GOが出てしまうが、アドレス選択の際
には同じアドレスが用いられること、及び、キャッシュ
機構への要求信号は、後述する図8の回路に示される通
り実フェッチが優先されるので、これで問題は生じな
い。
【0048】シーケンシャルフェッチの許可信号(+I
REQ SEQUENTIAL GO)は、+RE
IFETCH REQUEST信号のインバータ10に
よる論理反転信号と、+BRHIS HIT信号の論理
をインバータ11によって反転したものと、−BRHI
TGT PREFCH DONE信号の論理をイン
バータ12で反転したものと−I BUFF FULL
信号の論理積をAND回路16でとったものとなってい
る。これは、再命令フェッチ要求がなく、分岐予測信号
が出力されておらず、分岐ターゲットの命令プリフェッ
チが行われており、命令キャッシュの命令バッファが一
杯でない(−I BUFF FULL信号が“H”)時
に、シーケンシャルフェッチの要求が命令キャッシュ2
に出力されることを意味する。
【0049】更に、シーケンシャル命令の命令プリフェ
ッチ許可信号(+IF REQ PREFECH SE
GO)は、シーケンシャルフェッチの条件の内、再
命令フェッチ、分岐予測信号、及び分岐ターゲットの命
令プリフェッチについては、同じであり、更に、命令キ
ャッシュの命令バッファが一杯である場合であって、次
のシーケンシャル命令の命令プリフェッチが行われてい
ない(−NEXT SEQ PREFCH DONE信
号が“H”)場合に、AND回路17から出力される。
【0050】このように、最下位にはシーケンシャル
(後続)の命令プリフェッチ(+IF REQ PREF
CH SEQ GO)を設定している。もちろん、一般
的にはこれ以外の優先順位の設定も考えられる。それぞ
れのGO信号(図4の右へ出ていく信号)は、図3にお
けるフェッチアドレス選択信号aとして用いられる。
【0051】また、特に同じアドレス、あるいは、キャ
ッシュ上の同じページへの要求を連続して出すことは無
意味であるから、これを抑えてやることによって無駄な
プリフェッチ要求が減り、従って、更に下位キャッシュ
あるいは主記憶装置1へフェッチ要求が出せるようにな
る。
【0052】図5は、同じアドレスの命令へのプリフェ
ッチ要求を連続して出さないようにするためのフラグ生
成回路(シーケンシャルプリフェッチの場合)の構成例
を示す図である。
【0053】フラグは各フェッチポート(命令フェッチ
ポート)毎に設けられ、フラグのON、OFFはそれぞ
れ独立して行われる。優先順位決定回路9−3から出力
されるシーケンシャル命令の命令プリフェッチ許可信号
(+IF REQ PREFCH SEQ GO)、命
令プリフェッチ要求(+IF PREFCH REQU
EST VALID)、及び、フェッチポート選択信号
(+PORT SEL;ここで、xは、ポートの識
別子あるいは番号であって、同図の回路が担当するフェ
ッチポートの選択信号が入力された場合に、フラグを立
てるために用いられる)がAND回路18に入力され、
すべてが“H”の場合、SR−FF(フリップフロッ
プ)19のSET端子に論理“H”の信号が入力され
る。また、FF19のRESET端子には、命令キャッ
シュ2の命令バッファが一杯であることを示す信号(+
BUFF FULL)が入力される。SET端子に
論理“H”の信号が入力されると、次のシーケンシャル
命令のプリフェッチが行われたので、出力端子Qから
は、同一アドレスにはプリフェッチ要求を出さないよう
に指示する信号(フラグ;+NEXT SEQ PRE
FCH DONE)が“H”となって(ONとなって)
出力される。一方、+I BUFF FULL信号が論
理“H”でRESET端子に入力されると、命令キャッ
シュ2のバッファが一杯になっていることを示すので、
同一のアドレスの命令は既にフェッチされたことを意味
し、従って、次の命令プリフェッチ要求は同じアドレス
に対しては行われないはずであることになる。従って、
+NEXT SEQ PREFCH DONE信号の出
力フラグは“L”(OFF)となる。このような仕組み
により、命令キャッシュ2の同じアドレスに連続して要
求を出さないようにすることが出来る。
【0054】図6は、同じキャッシュブロックに含まれ
ている命令を繰り返してプリフェッチ要求を行わせない
ようにするためのフラグを生成する回路例である。同図
の回路も図5と同様に、フェッチポート毎に設けられ
る。
【0055】優先順位決定回路9−3から+IF RE
PREFCH SEQ GO信号が入力されると、
命令プリフェッチ要求信号(+IF PREFCH
EQUEST VALID)とフェッチポート選択信号
(+PORT SEL)とのANDを取り、フリッ
プフロップのSET端子に入力され、プリフェッチ抑制
信号(+NEXT SEQ PREFCH DONE)
が出力される。また、命令フェッチ要求(+IFCH
REQUEST VALID)信号が入力されると、キ
ャッシュブロックの最終ビット信号(+IF EAG<
26>と+IF EAG<27>)が“11”となってい
るか否か(ここでは、64バイトのキャッシュブロック
を想定しており、最終の2ビットは“11”が設定され
ている)がAND回路21によって判断され、その結果
が命令フェッチ要求とともにAND回路22に入力され
る。更に、ポート選択信号(+PORT SEL)
が入力され、AND回路22でANDがとられて、OR
回路に入力される。OR回路には、ポートを強制的にク
リアする信号(+CLEAR IF PORT x)も入
力され、命令フェッチ要求がキャッシュブロックの最終
アドレスに来た場合か、ポートを強制的にクリアする場
合に、フリップフロップをRESETして、フラグの出
力を“L”(OFF)に設定する。
【0056】図7は、同一プリフェッチ要求抑制フラグ
(分岐予測先プリフェッチの場合)の回路構成例を示す
図である。優先順位決定回路9−3から+IF REQ
PREFCH BRHIS GO信号が入力される
と、命令プリフェッチ要求信号(+IF PREFCH
REQUEST VALID)との論理積をAND回
路25で取り、フリップフロップのSET端子に入力す
る。これにより、該論理積が“H”のとき、同じアドレ
スへの分岐予測先プリフェッチ要求を抑制するフラグ
(+BRHIS TGT PREFCH DONE)がO
Nとなって出力される。そして、強制的なポートクリア
信号(+CLEAR IF PORT)がRESET端
子に入力されると、+BRHIS TGT PREFC
DONE信号の出力が抑制される。
【0057】前述の優先順位決定回路9−3に基づき、
命令プリフェッチ要求を出すことになった場合には、命
令プリフェッチ要求は、他のフェッチ要求とは指令内容
が異なるので、その区別をする必要がある。
【0058】図8は、フェッチ・プリフェッチ区別回路
の構成例を示す図である。優先順位決定回路から出力さ
れる命令フェッチ要求は、+IF REQ REIFC
GO、+IF REQ BRHIS GO、及び、
+IF REQ SEQUENTIAL GOの3つの信
号であるので、これらのORを取り、フェッチ出来る状
態であることを示す信号(−SU BUSY)とのAN
Dをとって、現在、命令フェッチ要求(+IFCH
EQUEST VALID)を生成する。
【0059】また、優先順位決定回路9−3から出力さ
れる命令プリフェッチ要求は、+IF REQ PRE
FCH BRHIS GOと+IF REQ PREF
CH SEQ GOの2つの信号であるので、これらのO
Rを取り、命令フェッチ要求が行われていないことを示
す信号(−IFCH REQUEST VALID)
と、命令プリフェッチが出来る状態であることを示す信
号(−SU PREFCH BUSY)とのANDを取
って、命令プリフェッチ要求(+IF PREFCH
REQUEST VALID)を出力する。
【0060】キャッシュ機構においては、キャッシュミ
スヒットしたときは通常、下位のキャッシュ機構もしく
は主記憶装置からデータ転送を行う。従って、命令プリ
フェッチ要求を識別する信号(前述)に応じて、キャッ
シュヒット/ミスしたときの処理を変更すれば良い。す
なわち、キャッシュミスヒットのときには、通常の命令
フェッチでキャッシュミスヒットしたときと同じよう
に、下位キャッシュもしくは主記憶装置へデータ要求す
れば良い。
【0061】図9は、下位メモリへのデータ要求信号を
生成する回路の構成例を示す図である。命令プリフェッ
チ要求信号に1段ラッチをかませて得た信号(+IF
PREFCH REQUEST VALID LCH)
あるいは、命令フェッチ要求信号に1段ラッチをかませ
て得た信号(+IFCH REQUEST VALID
LCH)のいずれかが“H”となって入力されると、O
R回路47の出力が“H”になる。そして、命令キャッ
シュ2から得られるキャッシュミスヒットを示す信号
(+CACHE NOT FOUND DATA)との
ANDを取る。これにより、キャッシュミスヒットが起
きた場合に下位メモリへのデータ要求(ムーブイン;+
MOVE IN REQUEST)が“H”となって出
力される。このデータ要求信号は命令キャッシュ2に入
力される。
【0062】また、下位キャッシュあるいは主記憶装置
などの下位メモリにデータ要求する場合、いずれの場合
にも、キャッシュデータを命令制御装置に送らないの
で、そのための抑制回路が必要である。本実施形態にお
いては、フェッチリクエストのキャンセル信号を利用し
ている。
【0063】図10は、プリフェッチ要求時のキャッシ
ュから命令制御装置へのデータ転送抑制信号を生成する
回路例を示す図である。命令プリフェッチ要求に1段ラ
ッチをかませた信号(+IF PREFCH REQUE
ST VALID LCH)あるいは、分岐命令制御部
から入力される分岐予測失敗を示す信号(+CANCE
ALL PORT)(22)が入力されると、命令
制御装置へのデータ転送抑制信号である+CANCEL
PORT PREFCHが出力される。
【0064】図11は、第2の命令プリフェッチ機構の
構成例を示す図である。本実施形態においては、命令フ
ェッチ制御部9は、分岐命令プリフェッチポートを二つ
持っている。すなわち、最大二つの分岐命令プリフェッ
チ要求を出すことが可能である。また、1回の命令フェ
ッチもしくは分岐命令プリフェッチで、主記憶部(もし
くはキャッシュ)1’から16バイトの命令列を確保す
ることができるものとする。
【0065】分岐命令処理部5においては、4つの分岐
命令リザベーションステーション5−1を持っており、
最大4つの分岐命令の管理(処理)が可能である。ま
た、同図において、括弧付き番号で示される各信号は、
図2で説明したとおりである。
【0066】キャッシュ/主記憶装置1’からフェッチ
命令列(4)が命令フェッチ制御部9に送られ、フェッ
チポートAあるいはBに格納される。そして、フェッチ
された命令列は、デコードする命令列(5)として、命
令デコード部4に送られて、デコードされる。命令デコ
ードした情報(6)は、それが分岐命令である場合に
は、分岐命令処理部5に入力され、分岐命令リザベーシ
ョンステーション5−1に登録される。そして、アウト
ポインタ(OUT−PTR)5−2によって指示される
リザベーションステーション5−1を参照して、分岐命
令プリフェッチ要求(10)がキャッシュ/主記憶装置
1’に送られるとともに、命令フェッチ制御部9の分岐
命令プリフェッチポートAあるいはBに格納される。分
岐命令プリフェッチアドレス(21)がキャッシュ/主
記憶装置1/2に送られる。また、命令フェッチが失敗
した場合には、分岐命令処理部5から命令フェッチ制御
部9に再命令フェッチ要求(9)が送られる。
【0067】分岐命令リザベーションステーション5−
1は、図12(a)のようなエントリを持っている。本
実施形態においては、分岐命令の完了は最大1命令行え
るものとし、次に完了させるべき分岐命令をポインタ5
−2で管理しているものとする。図12の各エントリの
信号は、後述の回路で使用される。
【0068】図13は、分岐命令の処理の流れを説明す
る図である。まず、Dステージで、命令のデコードが行
われ、Aステージで分岐先命令アドレスの計算が行われ
る。それから、Xステージにおいて分岐・非分岐の確定
するのを待つ。このXステージにおいて、条件コード及
び前分岐命令の確定が行われる。そして、次のUステー
ジで、分岐実行が行われ、Wステージで分岐命令が完了
する。
【0069】すなわち、命令デコード部4でデコードさ
れ分岐命令と判断された命令は、分岐命令リザベーショ
ンステーション5−1に登録されると同時に、アドレス
生成部(不図示)において該命令が分岐する場合の分岐
先アドレスを計算する。そして、該命令の直前に行われ
ている演算命令の終了により条件コードが確定すること
によって、該分岐命令の動作が確定する。ここで、該分
岐命令が、分岐予測による分岐判断と実際の動作が異な
る場合、従来技術ではこの動作の確定時点で初めて(U
ステージで)再命令フェッチを行うことになる。
【0070】図14は、分岐命令リザベーションステー
ションの実行順序回路の構成例を示す図である。図11
のアウトポインタ5−2から出力される、どの分岐命令
リザベーションステーションにエントリされている分岐
命令を処理するかを示す信号(RSBR OUT PTR
<0>、<1>)に従って、各分岐命令リザベーション
ステーションの優先順位を決定する。アウトポインタ5
−2から出力される信号は、2ビットからなっており、
「00」の時は、0番目のリザベーションステーション
RSBR0が最も優先順位が高い。「10」の時は、1
番目のリザベーションステーションRSBR1、「0
1」の時は、2番目のリザベーションステーションRS
BR2、「11」の時は、3番目のリザベーションステ
ーションRSBR3が最も高い優先順位を有するように
なっている。最も高い優先順位より低い優先順位のリザ
ベーションステーションは、サイクリックに優先順位が
割り当てられる。
【0071】図15は、分岐命令リザベーションステー
ションの実行順序別信号生成回路の例である。同図の回
路は、優先順位が最優先のものを1つ記載しているが、
実際には、各優先順位毎に同様の回路が設けられてい
る。
【0072】図14の回路から入力される各信号−0
〜−3と、分岐命令リザベーションステーションRS
BR0〜RSBR3のエントリである有効フラグ−0
〜−3がそれぞれのAND回路50〜53に入力さ
れ、信号と信号とがともに“H”となった時点で、
その優先順位の分岐命令リザベーションステーションに
対応する分岐命令を処理すべき旨を示す信号(同図の場
合、+RSBR TOQ VALID)がそれらのAND
回路50〜53の出力が入力されるOR回路54を介し
て出力される。
【0073】図16は、分岐命令プリフェッチアドレス
の生成回路の構成例を示す図である。同図の回路も、各
分岐先リザベーションステーションRSBR0〜RSB
R3に対応してそれぞれ設けられる。
【0074】同図のセレクタ61には、分岐命令リザベ
ーションステーションRSBRx(x=0〜3)のエン
トリである分岐命令アドレスと分岐命令長とを加算した
アドレス信号(+RSBRx IAR+ILC<1:3
1>)と、分岐先命令アドレス(+RSBR TIAR
<1:31>)が入力される。これらは、それぞれプロ
グラムの分岐命令の次の行に記述されている命令列のア
ドレスと、分岐先命令アドレスを示しており、分岐命令
リザベーションステーションRSBRxのエントリであ
る分岐予測フラグ(+RSBRx BRHIS HI
T)によってセレクタ61が制御され、いずれかのアド
レスが分岐命令プリフェッチアドレス(+RSBRx
PREFCH IAR<1:31>)として出力され
る。分岐予測フラグは、ブランチヒストリ9−2におい
て、非分岐予測がなされた場合には、“0”、分岐予測
がなされた場合には“1”となる。セレクタ61は、分
岐予測フラグが“0”のときは、分岐先命令アドレス
を、“1”のときは分岐命令アドレスに分岐命令長を加
算して得られる信号を、分岐命令プリフェッチアドレス
として選択出力する。
【0075】図17は、分岐命令プリフェッチ可能信号
の生成回路の構成例である。なお、同図の回路は、各分
岐命令リザベーションステーションRSBRxのそれぞ
れに対応して設けられるものである。
【0076】同図の回路では、各分岐命令リザベーショ
ンステーションRSBRxのエントリである分岐先アド
レス確定フラグ(+RSBRx TIAR VALI
D)と分岐予測フラグの論理反転した信号(−RSBR
BRHIS HIT)とのANDが取られる。すな
わち、分岐先アドレスが確定し、分岐予測が成立してい
ない場合に、AND回路71の出力が“1”となる。こ
の信号は、分岐予測フラグ(+RSBR BRHIS
HIT)とともに、OR回路72に入力され、更に、A
ND回路73に入力される。そして、分岐命令リザベー
ションステーションRSBRxのエントリである分岐条
件コード確定フラグ(−RSBRx RESOLVE
D)とのANDが取られ、分岐命令プリフェッチ可能信
号(+RSBRx PREFCH REQ VALI
D)が出力される。
【0077】図18は、図19に入力する信号を生成す
る中間回路の構成例である。なお、同図の回路は、分岐
命令リザベーションステーションRSBR0〜RSBR
3の優先順位の数だけ、すなわち、本実施形態の場合
は、同図の回路も含めて3つが設けられる。
【0078】図14及び図17の回路からの出力信号を
それぞれAND回路80〜83に入力し、分岐命令リザ
ベーションステーションの実行順序が与えられ、分岐命
令プリフェッチが可能となった時点で、該分岐命令プリ
フェッチに対応する分岐命令リザベーションステーショ
ンRSBRxに格納される分岐命令のプリフェッチを要
求するための信号を生成するための中間信号(1ST
(TOQ) RSBR PREFCH REQ VALI
D、この他に、優先順位が2ND、3RDの信号も平行
して生成される)を出力する。
【0079】図19は、分岐命令プリフェッチ要求有効
信号と選択信号を生成する回路の構成例である。同図の
回路は、図18の出力を入力とし、優先順位最上位(1
ST)の分岐命令リザベーションステーションRSBR
xのプリフェッチを最優先にし、順次2ND、3RDと
分岐命令プリフェッチ選択信号(+1ST RSBR
PREFCH SEL、+2ND RSBR PREF
CH SEL、+3RD RSBR PREFCH
EL)を出力するものである。この選択信号により、ど
の分岐命令リザベーションステーションRSBRxに登
録されている分岐命令に対応する分岐先命令をプリフェ
ッチするかが決定される。
【0080】また、いずれかの選択信号が出力された場
合には、分岐命令プリフェッチ要求が生成されたものと
して、分岐命令プリフェッチ要求(+BR PREFC
REQ VALID)が出力される。
【0081】本実施形態では、図16〜図19の回路構
成のようにすることで、非分岐予測された場合には、分
岐先アドレス計算がすんだ時点で分岐先命令プリフェッ
チの動作を、分岐予測された場合には命令が分岐リザベ
ーションステーションに登録された時点で非分岐の場合
の後続の分岐命令プリフェッチの動作を、直ちに開始す
ることができる。この際、分岐命令プリフェッチ動作を
行ったことを示すフラグ(RSBRx PREFCH
DONE)を分岐命令リザベーションステーションRS
BRxにセットし、同時に、使用した分岐命令プリフェ
ッチポートが使用中であることを示すフラグを、同じく
分岐命令リザベーションステーションRSBRxにセッ
トする。
【0082】図20は、分岐命令プリフェッチポートの
使用中を示すフラグを生成する回路の構成例である。図
11で説明したように、分岐命令プリフェッチポートは
AとBの2つが設けられているので、同図の回路もポー
トA用とポートB用の2つが設けられる。ただし、分岐
命令プリフェッチポートが2以外の数だけ設けられてい
る場合には、その数に対応して、同図の回路も設ける。
【0083】同図の回路は、分岐命令リザベーションス
テーションのエントリである+RSBR PREFCH
PORT xを入力し、フリップフロップ101を介
して、プリフェッチに使用しているポートが使用中であ
ることを示すフラグ+PREFCH PORTx BU
SYを出力する。また、図11の(9)の信号である再
命令フェッチ要求(図20では、+REIFCHと記載
されている+RE IFETCH REQUEST信号
のことである)、あるいは、後述する図23のプリフェ
ッチポートのキャンセル信号+PFCH PORT
CANCEL、あるいは、命令キャッシュから入力さ
れるプリフェッチをキャンセルする旨の信号+CANC
EL PREFCH PORTx FROM SUのい
ずれかがOR回路102に入力された場合に、フリップ
フロップ101をRESETし、分岐命令プリフェッチ
ポートの使用中フラグ(+PREFCH PORTx
BUSY)をリセットする。
【0084】そして、RSBRx PREFCH DO
NEフラグがセットされている場合は、条件コードが確
定し(すなわち、分岐命令リザベーションステーション
RSBRxにRSBRx RESOLVEDフラグがセ
ットされ)、かつ前の分岐命令が確定して(すなわち自
分自身が優先順位第1位の分岐命令となって)いれば、
該プリフェッチ要求を、条件コードに応じて棄却する
か、実命令フェッチに切り替えるかすれば良い。
【0085】逆に、分岐命令プリフェッチが不要になれ
ば該プリフェッチポートをキャンセルすれば良い。図2
1及び図22は、分岐命令プリフェッチの実フェッチ化
及びキャンセルのための回路例を示す図である。
【0086】図21の回路では、リザベーションステー
ションRSBRxから、分岐成立/不成立フラグ(+R
SBRx TAKEN)と、分岐予測フラグ(+RSB
BRHIS HIT)をEXOR回路111、112
に入力し、排他論理和を取る。分岐成立/不成立フラグ
(+RSBRx TAKEN)と分岐予測フラグ(+R
SBRx BRHIS HIT)の一方が“0”、すな
わち、分岐が成立しており、分岐不成立を予測している
場合、あるいは、分岐が不成立で、分岐成立を予測して
いる場合には、“1”の分岐予測失敗フラグ(+RSB
Rx PREDICT FAILURE)をEXOR回
路111から出力する。逆に、分岐が成立しており、分
岐成立を予測している場合、あるいは、分岐が不成立
で、分岐不成立を予測している場合には、“0”の分岐
予測成功フラグ(+RSBRx PREDICT SUC
CESS)を出力する。
【0087】図22では、図22(a)において、図2
1の回路からの分岐予測成功/失敗フラグをAND回路
122−1〜122−3に入力するとともに、分岐命令
リザベーションステーションRSBRxから、プリフェ
ッチ要求済みフラグ(+RSBRx PREFCH
ONE)、分岐条件コード確定フラグ(+RSBRx
ESOLVED)をインバータ121、及び、AND回
路122−1〜122−3に入力する。そして、プリフ
ェッチ要求済みフラグ(+RSBRx PREFCH
DONE)は、AND回路122−2、122−3に入
力されるとともに、AND回路122−1に論理反転さ
れて入力される。また、分岐条件コード確定フラグ(+
RSBRx RESOLVED)は、AND回路122
−1〜122−3にそのまま入力される。また、分岐予
測失敗フラグ(+RSBRx PREDICT FAIL
URE)は、AND回路122−1と122−2に入力
され、分岐予測成功フラグ(+RSBRx PREDI
CT SUCCESS)は、AND回路122−3に入
力される。プリフェッチ要求が完了しておらず、分岐条
件コードが確定し、分岐予測が失敗した場合には、AN
D回路122−1から分岐命令リザベーションステーシ
ョンRSBRxの命令の再フェッチリクエスト(+RS
BRx REIFCH REQUEST)が出力され
る。プリフェッチ要求が完了しており、分岐条件コード
が確定し、分岐予測が失敗した場合には、AND回路1
22−2から分岐命令リザベーションステーションRS
BRxのプリフェッチを実フェッチに変更する信号(+
RSBRx PREFCH TO REAL)が出力され
る。また、プリフェッチ要求が完了しており、分岐条件
コードが確定し、分岐予測が成功した場合には、命令プ
リフェッチせずに、命令を直接フェッチすればよいの
で、命令プリフェッチをキャンセルする信号(+RSB
Rx PREFCH CANCEL)がAND回路12
2−3から出力される。
【0088】図22(b)の回路は、再命令フェッチ要
求を行うための信号を生成する回路例である。図22
(a)の回路から分岐命令リザベーションステーション
RSBR0〜RSBR3の再フェッチリクエスト信号
(+RSBR0〜3 REIFCH REQUEST)
がそれぞれ入力され、図14の分岐命令リザベーション
ステーションRSBR0〜RSBR3の実行順序を示す
信号(+RSBR TOQ EQ 0〜3)とのANDを
AND回路125−0〜125−3で取り、更に、これ
らのORをOR回路126で取ることにより、再命令フ
ェッチ要求(+RE IFETCH REQUEST)
が生成される。従って、再フェッチリクエスト信号がい
ずれかの分岐命令リザベーションステーションRSBR
xに来ており、その分岐命令リザベーションステーショ
ンRSBRxの実行順序に来ていたら、再命令フェッチ
要求を出すことになる。
【0089】図23は、分岐命令プリフェッチのポート
毎のキャンセルを行う信号を生成する回路例である。同
図の回路は、図22(b)の回路から出力される再命令
フェッチ要求(+RE IFETCH REQUES
T)をOR回路130−1、130−2に入力するとと
もに、各分岐命令リザベーションステーションRSBR
0〜3に対応して設けられるAND回路131−1〜1
31−4・・・からの入力を受けて、図11に示される
分岐命令プリフェッチポートA、Bのキャンセル信号を
生成し、命令フェッチ制御部9に入力する。各分岐命令
リザベーションステーションRSBR0〜RSBR3に
ついては、それぞれ同様な回路構成となっているので、
分岐命令リザベーションステーションRSBR0につい
て説明する。
【0090】まず、AND回路131−1には、図22
(a)の回路から命令プリフェッチキャンセル信号(+
RSBR0 PREFCH CANCEL)と分岐命令
リザベーションステーションRSBR0に格納されてい
るプリフェッチポート番号の反対論理信号(−RSBR
PREFCH PORT)が入力され、これらの信
号のANDがAND回路131−1により取られる。こ
れにより、今、命令プリフェッチポートはAとBの二つ
なので、たとえば、“0”をポートAに“1”をポート
Bに割り当てていることを想定している。すると、AN
D回路131−1には、命令プリフェッチキャンセル信
号が入力され、そのプリフェッチポートがAの場合に
は、AND回路131−1はOR回路130−1に論理
“1”の信号を入力する。従って、OR回路130−1
からポートAのキャンセル信号(PFCH PORT
CANCEL)が出力される。また、ポートBの場
合には、AND回路131−2に命令プリフェッチキャ
ンセル信号が入力され、ポートBが指定されていた場合
には、ポートBのキャンセル信号(PFCH PORT
CANCEL)が出力される。再命令フェッチ要
求(+RE IFETCH REQUEST)の場合に
は、ポートAとBの両方をキャンセルする。
【0091】このようにして、分岐命令リザベーション
ステーションRSBR0〜3について、信号を処理し、
1つでもキャンセルの条件がそろえば、OR回路130
−1からはポートAのキャンセル信号(PFCH PO
RT CANCEL)が、OR回路130−2から
はポートBのキャンセル信号(PFCH PORT
CANCEL)が出力される。
【0092】次に、ストア命令が実行命令列に存在した
場合の制御について説明する。ストア命令による書き込
みアドレスとフェッチ要求された命令列のアドレスとの
比較により該ストア命令がフェッチ命令列を書き換える
可能性があることを検出する必要がある。これは通常の
命令フェッチだけでなく、本発明の実施形態による分岐
命令プリフェッチにおいても考慮すべき事項である。
【0093】主記憶装置(あるいは、キャッシュ機構)
においては、要求された命令フェッチに対して、結果の
命令列を命令制御部に返すまでにストア命令による書き
込み指示があった場合には、該ストア命令による書き込
みを反映した結果を返すことが出来るものが多い。この
場合、結果を命令制御装置側で管理する方法、すなわち
ストア命令の書き込み管理がキャッシュ機構(あるいは
主記憶装置)によって行われない回路を持つ場合のみ
に、該ストア命令が分岐命令プリフェッチ命令列を書き
換える可能性があることを検出し、対策をとれば良い。
もちろん、主記憶装置(あるいは、キャッシュ機構)に
そのような機構が備わっていない場合は常にこの可能性
を検出し、対策をとる必要がある。
【0094】分岐命令プリフェッチされる命令列は合計
16バイトであり、またストア系命令によってストアさ
れるデータ列長が常に16バイト以内であるとすれば、
1つのアドレスに1バイトの書き込みが可能であること
を考えると、ストア先アドレス値とプリフェッチアドレ
ス値の差が以下の条件を満たす必要がある。すなわち、 −16<ストア先アドレス−プリフェッチアドレス<1
6 であるとき、前述の上書き可能性があることになる。
【0095】図24は、ストア命令が分岐命令プリフェ
ッチ命令列を書き換える可能性があることを検出する回
路例を示す図である。同図において、+STORE
DRはストア先アドレス、+RSBRx PREFCH
IARは、分岐命令リザベーションステーションxの
プリフェッチアドレス(すなわち、図16の出力)、+
ST MN Px IARは、この二つのアドレスの引
き算の結果であり、分岐命令リザベーションステーショ
ンx上の分岐命令によって要求された分岐命令プリフェ
ッチ命令列がストア命令によって書き換えられる可能性
があることを検出したことを示す信号が、+ST IN
PREFCH xである。
【0096】従って、本実施形態の場合、特に、この検
出回路に必要なプリフェッチアドレスとして、分岐命令
リザベーションステーションRSBRxに記録されてい
る、分岐命令自身の次の命令のアドレスもしくは分岐先
アドレスを選択して与える回路は図16となる。
【0097】ストア命令が該分岐命令プリフェッチ命令
列を書き換える可能性があると判断された場合に、分岐
命令プリフェッチ要求を棄却する場合には、該可能性判
断信号を、その他の要求棄却要因との論理和をとって、
命令キャッシュあるいは主記憶装置に送出すれば良い。
【0098】同図において、ストア先アドレス(+ST
ORE ADR)とプリフェッチアドレス(+RSBR
PREFCH IAR)の差を減算器150で求
め、差信号(+ST MN Px IAR)を生成す
る。次に、AND回路151−1では、+ST MN
Px IARのビットの内、下位4ビットを無視し、上
位27ビットを入力する。ストア先アドレスとプリフェ
ッチアドレスの差が正で16より小さい場合には、差信
号の下位4ビットを除いた上位27ビットはすべて
“0”となる。従って、AND回路151−1の出力は
“0”となる。一方、AND回路151−2には、+S
MN Px IARをインバータ154により論理
反転した信号の下位4ビットを除いた、上位27ビット
が入力される。上記アドレスの差が正で16より小さい
場合には、AND回路151−2に入力されるビットは
すべて“1”となるので、AND回路151−2の出力
は、“1”となる。これをOR回路152で論理和を取
り、AND回路53に入力する。AND回路153に
は、分岐命令リザベーションステーションからプリフェ
ッチ要求済みフラグ(+RSBR PREFCH DO
NE)が入力されており、プリフェッチが要求済みの場
合のみ、上書きされる危険性があることを示す信号(+
ST IN PREFCH x)を“H”にして出力す
る。
【0099】上記アドレスの差が負で−16より大きい
ときは、上記処理において、ST MN Px IARの
論理が反転するので、AND回路51−1が“1”を出
力し、AND回路151−2が“0”を出力する。この
場合も、プリフェッチが要求済みである場合のみ、信号
(+ST IN PREFCH x)が出力される。そ
して、この信号(+ST IN PREFCH x)を
主記憶装置などに入力し、プリフェッチをキャンセルす
るようにすれば、上書きによる障害を回避することがで
きる。
【0100】なお、上記実施形態において、RSBRx
やPORTxなどの「x」は、分岐命令リザベーション
ステーションの番号やポートの番号などを示しており、
図面に「x」を用いた信号を使って記載されている回路
は、分岐命令リザベーションステーションの数、あるい
は、ポートの数に対応した数だけ、それぞれが対応して
設けられていることを意味している。
【0101】また、上記実施形態では、プリフェッチア
ドレスの具体的計算方法を説明しなかったが、これは、
本発明の実施形態に係る命令プリフェッチ機構を有効に
利用できる場合に、当業者が必要に応じて適切なプリフ
ェッチアドレスを算出させ、使用するようにする。この
プリフェッチアドレスの演算の一実施形態としては、条
件分岐命令の実行において、分岐予測された分岐先アド
レスとは逆の、分岐予測されなかった先のアドレスを命
令プリフェッチするようにすることが考えられる。これ
によれば、分岐予測に失敗しても、もう一つの分岐先で
ある、分岐予測されなかった先のアドレスの命令がすで
にプリフェッチされているので、命令処理速度の向上に
非常に有効である。
【0102】また、上記実施形態では、別々に説明した
が、第1の問題点を解決する構成と第2の問題を解決す
る構成とをともに情報装置に組み込めば、より有効なこ
とは、当業者によれば、容易に認識され、実現されるで
あろう。
【0103】上記実施形態においては、命令プリフェッ
チを実命令フェッチに対して1回のみ行う構成を示した
が、以下には、命令プリフェッチに対する更に次の命令
のプリフェッチを行う実施形態について説明する。
【0104】図25は、前述の実施形態における命令実
行の様子を説明する概念図である。図25において、実
線の枠は、実命令フェッチを表している。すなわち、ま
ず、現在フェッチされた命令列に対し、命令のデコード
を行い、処理を行うと共に、分岐予測を行い、分岐先命
令列をフェッチする。そして、この分岐先命令ののフェ
ッチに伴って、分岐予測が発生し、更に先の分岐先命令
列がフェッチされる。そして、この分岐先命令列の次の
命令に対し、命令プリフェッチ(後続命令プリフェッチ
を行うか分岐予測を行って分岐先命令のプリフェッチを
行う。
【0105】しかしながら、前述の実施形態において
は、命令プリフェッチ対象は「続いて命令フェッチ要求
を予定している命令列」のみであった。これは命令プリ
フェッチの効果を自ら制限するものであった。前述の実
施形態においては、命令デコードのための一時命令バッ
ファは、 ・アドレスが連続する、連続した命令列の長さ ・分岐予測により、アドレスは連続しないが実行経路と
して連続する(と予測される)命令列の、不連続点(分
岐すると予測された分岐命令)の数 の2点で物理的に制限される。図25に示されるよう
に、この命令フェッチの物理制約の直後の後続命令ある
いは分岐先命令に対して命令プリフェッチを行うこと、
(あるいは、それぞれ分岐予測が失敗した場合に備えて
の、それぞれ非分岐側の後続の命令プリフェッチ)のみ
が可能であった。
【0106】以下の実施形態では、これを更に一般化
し、その更に先までトレースすることが可能なようにす
る。特に、「続いて命令プリフェッチ要求を予定してい
る命令列」へ適用できるように拡張する。すなわち、命
令フェッチの一時バッファの大きさなどの物理制約によ
って命令プリフェッチ要求が制限されなくなるようにす
る。
【0107】図26は、本実施形態の概念図である。す
なわち、図26の上段に現在の命令列が実フェッチさ
れ、命令のレコードが行われる処理が示されているが、
このとき、分岐予測を行い、分岐先命令列の実命令フェ
ッチが行われる。更に、分岐先命令列の分岐予測を行
い、次の分岐先命令列の実フェッチを行う。そして、次
の段において、分岐予測がなされ、後続命令のプリフェ
ッチあるいは、分岐先命令のプリフェッチが行われる。
本実施形態では、この命令プリフェッチされた分岐先命
令列に基づいて、更に分岐予測を行い次の分岐先命令列
の命令プリフェッチを行う。このようにして、1つ前に
命令プリフェッチされた命令列に基づいて、更に次の命
令列の命令プリフェッチを行う点が本実施形態の特徴で
ある。
【0108】この拡張により、トレースキャッシュ方式
を採用していない一般のキャッシュメモリと、ブランチ
ヒストリなどの分岐予測手段を組み合わせることで、少
ないコストで簡単にトレースキャッシュと同程度の機能
を構築することができる。
【0109】図27は、本実施形態の処理の基本的な流
れを示すフローチャートである。まず、最初ステップS
1において、再命令フェッチが生じたとすると、ステッ
プS2において、命令一時バッファが満杯か否かを判断
する。命令一時バッファが満杯でない場合には、ステッ
プS3において、命令フェッチ動作を行い、ステップS
2に戻る。ステップS2において、命令一時バッファが
満杯であるときには、分岐成立を予測したが分岐先フェ
ッチが出来なかったか、分岐成立が予測されずに後続フ
ェッチができなかったのかによって、ステップS4ある
いはステップS5に進む。
【0110】ステップS4においては、分岐予測成立を
予測したが分岐先フェッチが出来なかった場合なので、
分岐予測先命令プリフェッチ機構を起動し、命令プリフ
ェッチアドレスを設定し、命令プリフェッチアドレスを
有効化する。ステップS5においては、分岐成立が予測
されずに後続フェッチができなかった場合なので、後続
命令プリフェッチ機構を起動し、命令プリフェッチアド
レスを設定し、命令プリフェッチアドレスを有効化す
る。
【0111】ステップS6においては、再び再命令フェ
ッチ要求が生じたか否かを判断する。再命令フェッチ要
求が発生した場合には、ステップS7に進んで、命令一
時バッファのクリアなどを行い、ステップS8におい
て、命令プリフェッチアドレスを無効化してステップS
1に戻る。
【0112】ステップS6において、再命令フェッチ要
求が生じていない場合には、ステップS9に進み、命令
一時バッファが満杯か否かを判断する。命令一時バッフ
ァが満杯でない場合には、命令フェッチ動作を行い(ス
テップS10)、ステップS6に戻る。
【0113】ステップS9において、命令一時バッファ
が満杯であると判断されると、ステップS11に進み、
前回の命令プリフェッチで分岐予測がされたか否かが判
断される。分岐予測された場合には、ステップS12に
進んで、分岐予測先命令プリフェッチ機構を起動し、命
令プリフェッチアドレスを更新して、ステップS6に戻
る。分岐予測されない場合には、ステップS13におい
て、後続命令プリフェッチ機構を起動し、命令プリフェ
ッチアドレスを更新して、ステップS6に戻る。
【0114】すなわち、後続の処理方向へのデマンドフ
ェッチ(実命令フェッチ)が行える間は、そのデマンド
フェッチを優先すべきで、従って、デマンドフェッチを
行う。
【0115】デマンドフェッチを行えない状況になった
場合(ヘッジフェッチ(分岐予測された分岐先とは反対
の予測されなかった方の命令列のフェッチ)を行うかど
うかは実装により可変)、その後続処理(分岐予測を含
む)命令列の命令プリフェッチを要求し、要求した命令
プリフェッチアドレスを格納し、また、そのアドレスに
よって分岐予測機構を参照する。
【0116】また、デマンドフェッチが行える場合に
は、それを優先するし、あるいは命令の実行系列が予測
と異なった場合の再命令フェッチの要求が出された場合
は命令プリフェッチのアドレスを無効化する。どれにも
当てはまらなければ命令プリフェッチを起動し、前回登
録したアドレスの次の実行系列(分岐予測がされたら、
その分岐先、されなければ後続命令列)を命令プリフェ
ッチし、そのアドレスを登録する。
【0117】他にオルタネイトパス(実行予測されてい
る方向以外の分岐方向の命令列など)の命令フェッチ
(ヘッジフェッチ等)を持つ機構も存在するが、それは
デマンドフェッチとプリフェッチの間で行えばよく、本
質的な考え方は前述の通りである。
【0118】ここで、命令プリフェッチ手段も通常の命
令フェッチ要求と同様LBS(Local Buffer Storag
e:一次キャッシュ)を動作させるので、命令プリフェ
ッチによって、その後続の命令フェッチ要求(もしくは
命令プリフェッチ要求)は阻害されうる。
【0119】すなわち、命令プリフェッチ要求を大量に
発行すると、最悪の場合、その命令プリフェッチによっ
てLBSと下位メモリ間のメモリ転送処理を行うため
に、その後本当に必要となった通常の命令フェッチ要求
でさえ、かなり待たされる。
【0120】図28は、命令プリフェッチ要求の影響で
命令フェッチ要求が遅延する場合を説明する図である。
図28上段に記載されているように、分岐命令であるB
Cによって、分岐予測され、分岐先としてXXXが予測
されたとすると、図28下段に記載されているように、
BCの処理がサイクルIA、IT、IB、IRと進行す
る間に、分岐先命令プリフェッチ(XXXのプリフェッ
チ)がサイクルPA、PT、PBと進む。ここで、分岐
先命令プリフェッチがPBまで進むと、下位メモリから
分岐先命令のプリフェッチを行うためデータの転送処理
時間が必要となる。すると、BCの次の命令であるNO
Pの実行が始まっても、下位メモリにアクセスできない
ため、サイクルIA、ITと進んだ、NOPの実行は分
岐先命令プリフェッチの転送処理の終了を待たなくては
ならず、サイクルIB、IRの実行が非常に遅延してし
まう。
【0121】あるいは、命令フェッチ及び命令プリフェ
ッチの優先順位の制御構成によっては、通常の命令フェ
ッチ要求を出せなくなる可能性がある。図29は、命令
プリフェッチ要求を制約なしに出せてしまうと問題とな
る場合について説明する図である。
【0122】この例では、図29上段に示されているよ
うに、計数分岐命令BCTにより一定回数だけXXXと
BCTが繰り返し実行される命令列を示している。分岐
予測により、BCTはXXXに分岐することが予測され
るので、図29下段に示されるように、実行予測命令列
は順に、・・・、NOP、XXX、BCT、XXX、B
CT、XXX、BCT、・・・となる。このうち、XX
X、BCTの命令列は、2回目以降は直前のBCTの分
岐先命令であるので、分岐先命令プリフェッチによるプ
リフェッチ要求が出続ける。すると、NOPの後続命令
である1回目のXXX、BCT命令列が最初に後続命令
プリフェッチとして発行されていると、この分岐先命令
プリフェッチの方が後続命令フェッチより優先順位が高
い場合には、図29のようになってしまい。このデマン
ドフェッチ(後続命令フェッチ)は発行できなくなる。
【0123】したがって、命令プリフェッチ要求の頻度
をある程度制限する手法が有効(あるいは実施方法によ
って必須)となる。図30は、命令プリフェッチ抑制回
路の構成例を示す図である。
【0124】前述の実施形態においては、命令フェッチ
ポート毎に命令プリフェッチ完了のフラグを設置し、命
令プリフェッチ要求の制御を行っていた。本実施形態に
おいては、命令プリフェッチ先の命令プリフェッチのた
めの制御が必要となる。
【0125】本実施形態の第1の構成例として、簡易的
な再帰的命令プリフェッチ手段を備える例を示す。前述
の実施形態のような優先順位回路を備える場合、分岐予
測先命令プリフェッチ要求は、後続命令デマンドフェッ
チよりも優先順位が高いので、前述のように「はまる」
(後続命令フェッチが分岐先命令プリフェッチの連続発
行により、行えなくなる状態になる)可能性はある。し
たがって、例えば、分岐先命令プリフェッチ要求(+I
REQ PREFCH BRHIS GO)が一定
回数発行された場合には、デマンドフェッチが行われる
まで命令プリフェッチ要求を抑制(+SUPRESS
BRHIS TGT PREFCH)する論理を構成す
る。これが、図30の構成である。図30の構成におい
ては、計数回路によって分岐先命令プリフェッチ要求が
発行された回数を計数する構成となっている。この際、
デマンドフェッチが行われれば、「はまり」状態からは
回避できていることになるので、(命令プリフェッチで
はない)命令フェッチ要求を出したことを示す+IFC
REQUEST VALIDを計数回路のリセット
信号としている。
【0126】図31は、命令プリフェッチとデマンドフ
ェッチとを切り替えるために必要となるフェッチポート
選択回路の構成例を示す図である。図31の命令フェッ
チポート選択回路は、命令フェッチを行う場合にどのポ
ートを使うかを演算して、指示信号を出力する回路であ
り、詳細な構成は公知の技術と同様であるので説明を省
略する。
【0127】図31の構成では、命令フェッチを行うポ
ートは、A、B、Cの3つがあるとしている。そして、
これら3つの全てのセレクト信号が出力された場合に、
命令フェッチポートが満杯である旨の信号+IBUFF
FULLが出力される構成となっている。
【0128】図32は、図30、図31の構成を反映し
た優先順位決定回路の構成例を示す図である。図32の
構成においては、前述の+SUPRESS BRHIS
TGT PREFECHによって制限されない限り
は、優先順位に従い、その以前の要求がプリフェッチで
あるかデマンドフェッチであるかに関わらず、その要求
に対応する分岐先命令プリフェッチ(あるいは後続命令
プリフェッチ)を要求することが可能となる。すなわ
ち、図32の出力+IF REQ PREFCH BR
HIS GOが図30の計数回路に入力され、分岐先命
令プリフェッチが生じた回数を計数し、所定回数になっ
たら分岐先命令プリフェッチを抑制する−SUPRES
BRHIS TGT PREFECHが図32の優
先順位決定回路に入力され、+IF REQ PREF
CH BRHIS GOの出力が抑制される。
【0129】このような構成を取ることで、前述の「は
まり」状態を回避しつつ、深い命令プリフェッチを発行
することが可能である。図33は、前述の実施形態の命
令プリフェッチによるブランチヒストリ検索回路を示す
図である。
【0130】アドレス演算器からのアドレス+IF
AGがブランチヒストリに入力されると、対応するデー
タとTAGが出力される。出力されたTAGを用いてヒ
ット検出を行い、出力されたデータの選択を行う。デー
タの選択を行うのは、図33がセットアソシエイティブ
方式を採用していることを前提にしているからであり、
採用する方式によっては、データ選択は行う必要がない
場合がある。出力されたデータとヒット検出信号はFF
を介して、+IB BRHIS DATA、及び、+I
BRHIS HITとして出力される。ここで、パ
イプラインにおいてインターロックが生じたことを示す
信号+PIPELINE INTERLOCKは、デー
タ用及びヒット信号用FFに入力され、インターロック
が生じた場合には、その直前に検出されたブランチヒス
トリのヒットデータ及びヒット信号を保持するように構
成されている。
【0131】ここでは、ブランチヒストリの検索結果を
得るのに2τ(τはマシンサイクル)かかるものとす
る。前述の実施形態では、キャッシュミスなどにより命
令フェッチデータを待つ場合(パイプラインインタロッ
クが発生する場合)にはブランチヒストリの検索結果を
パイプラインに同期させるためにその間、+PIPEL
INE INTERLOCK信号によりホールドさせて
いるが、命令プリフェッチはパイプラインインタロック
とは無関係に動作するようにするために、別途制御する
必要がある。
【0132】図34は、本実施形態を図33のブランチ
ヒストリ検索回路に適用した構成例を示す図である。な
お、ここにおいて、ブランチヒストリ、ヒット検出、デ
ータ選択、データ用及びヒット信号用FFの動作は、図
33と同じなので説明を省略する。
【0133】ここでは、IA、IT、IB、IRの4段
パイプラインによる命令フェッチを仮定している。検索
の要求に関し、ITサイクルでパイプラインインタロッ
クが発生した場合の最初のIBサイクル、IBサイクル
でパイプラインインタロックが発生している場合、いず
れでもパイプラインインタロックが発生しなかった場合
の最初のIBサイクル、の3つで場合分けして、前述の
実施形態の+IB BRHIS HITと全く同じ信号
を生成することができる。
【0134】すなわち、図34の+1ST IB EQ
IT 1T VALID信号は、パイプラインインタ
ロックが発生していない場合に、+IT BRHIS
HIT 1T(ヒット信号)をそのまま+IB BRH
IS HITとして出力させる信号である。
【0135】また、ITサイクルでロックが生じた場合
には、FF200に−IFCH REQUEST VA
LID 2Tが入力され、ロックしたために繰り返され
るITサイクルの内、2番目のITサイクルにおいて生
じたブランチヒストリヒット信号と、ITサイクルのロ
ックが解けて後の最初のIBサイクルにおいて生じたブ
ランチヒストリヒット信号とがFF200に保持され
る。また、最初のIBサイクルにおいて生じたヒット信
号は、パイプラインインタロックが生じた場合には、F
F201にも保持される。そして、ITサイクルがロッ
クした場合に、+1ST IB VALID IT
ENDEDがFF200からの+IT BRHIS
IT 2T HOLDを+IB BRHIS HITと
して出力させる。
【0136】パイプラインインタロックが生じて、IB
サイクルで処理がロックした場合には、+PIPELI
NE INTERLOCKEDがFF201に入力さ
れ、IBサイクルの2番目以降において生じたヒット信
号がFF201に保持される。そして、+IB PEN
DINGによって、FF201から出力される+IB
RHIS HIT PENDINGが+IB BRHI
HITとして出力される。
【0137】図35は、図34の動作を説明するタイミ
ングチャートである。図35においては、ITサイクル
とIBサイクルの両方でインターロックが起こった場合
を示している。
【0138】まず、マシンサイクルがIA、IT、I
T、IT、IB、IB、IB、IB、IRとなったとす
る。ブランチヒストリの検索結果を得るには、2τかか
るので、IAでブランチヒストリを検索した結果は、2
番目のITにおいて得られる。このとき、−1で示さ
れるように、+IFCH REQUEST VALID
2Tが立ち上がり、この時点のヒット信号がFF200
に取り込まれる。+PIPELINE INTERLO
CKは、2番目と3番目のITサイクルで立ち上がって
いるとする。すると、+IT BRHIS HIT
Tが−2に示すように立ち上がり、同じ信号がFF2
00にセットされている結果、−3に示すように、+
IT BRHIS HIT 2T HOLDが立ち上が
る。
【0139】そして、インタロックが解けて、ITサイ
クルからIBサイクルに変わり、IBサイクルの2番目
から再びインタロックが生じたとすると、+IB BR
HIS HIT PENDINGの信号が立つ(−
2)。また、+IT BRHIS HIT 2T HO
LDは、次回の+IFCH REQUEST VALI
2Tが立つまで同じ信号を保持している(−
1)。セレクタ202において、ITサイクルでロック
したが、IBサイクルではロックしなかった場合には、
+1ST IB VALID IT PENDEDによ
って、+IT BRHIS HIT 2T HOLDが
+IB BRHIS HITとして出力され、IBサイ
クルにおいてインタロックが生じた場合には、+IB
BRHIS HIT PENDINGが+IB PEN
DINGによって+IB BRHIS HITとして出力
される(−3)。
【0140】以上の構成により、命令プリフェッチの命
令プリフェッチがどのタイミングで出てもブランチヒス
トリにヒットしたことを検出することが出来る。また、
データの方は、出力される度に、メモリに格納してお
き、必要に応じて読み出す。
【0141】本実施形態の第2の構成例として、本格的
な再帰的命令プリフェッチ手段を備える例を示す。ここ
で、再帰的とは、プリフェッチに基づいて順次次のプリ
フェッチを行うことを示す。
【0142】ここでは、命令プリフェッチアドレスを保
持するレジスタを準備することで、トレース(再帰的に
命令プリフェッチを行うためにアドレスを順次生成する
こと)を可能とする。
【0143】命令プリフェッチアドレスは、実行予測命
令列のアドレスをトレース出来れば良いので、そのアド
レスの更新条件は、命令プリフェッチ要求が成立するこ
とである。
【0144】また、再命令フェッチや割り込みなどによ
り命令実行をやり直す場合、先読みしていた命令プリフ
ェッチ、すなわち予測されていた実行系列と実際の実行
系列が変わるので、命令プリフェッチをトレースし直す
ための制御が必要になる。
【0145】図36は、命令フェッチ及びプリフェッチ
アドレスの生成回路の構成例を示す図である。ここで、
図中の命令フェッチ制御回路には、優先順位決定回路や
図31の命令フェッチポート選択回路などが含まれる。
プリフェッチの機能を除いては前述の実施形態通りであ
る。
【0146】すなわち、ブランチヒストリの分岐予測結
果は、BRHIS−TGT−IARとして、セレクタ2
10に入力される。また、命令実行制御機構からの再命
令フェッチ要求は、IARXとして、セレクタ210に
入力される。セレクタ210の出力は、フェッチポート
IAR−A〜IAR−C及び、プリフェッチ用ポートP
F−IARの何れかに入力される。どのポートにセレク
タ210の出力である命令フェッチアドレスあるいは命
令プリフェッチアドレスを入力するかは、命令フェッチ
制御回路の命令フェッチポート選択回路によって決定さ
れる。命令フェッチポート選択回路から+IBUFF
FULLが出力された場合には、プリフェッチ用ポート
PF IARが選択される。これら命令フェッチポート
から出力されたアドレスは、所定の数値(ここでは、1
6)が加算されて、後続の命令アドレスとしてセレクタ
210から出力される。
【0147】図37は、プリフェッチアドレス生成回路
の構成例を示す図である。後述の優先順位決定回路によ
り分岐予測先命令プリフェッチが行われた時、最初にそ
の命令プリフェッチアドレスがセットされ、図37の回
路が有効となる。更に、図37の回路が有効で有れば、
優先順位決定回路により、再帰的命令プリフェッチが発
行されたときに命令プリフェッチアドレスが更新され
る。また、再命令フェッチなどが発生した場合には、+
CLEAR PIPELINEが発行され、この回路が
無効化される。
【0148】すなわち、プリフェッチ要求が有効の場合
には、+IF PREFCH REQUEST VAL
ID信号が立ち上がり、SR−FFを介して、命令プリ
フェッチのイネーブル信号+ENABLE PREFC
TRACEが出力されると共に、+IF PREF
CH REQUEST VALID信号の立ち上がりの
タイミングで入力される命令プリフェッチアドレスIF
EAGがPF−IARに取り込まれ、+IF PRE
FCH TRACE ADRSとして出力される。+C
LEAR PIPELINEがSR−FFに入力される
場合には、命令プリフェッチイネーブル信号+ENAB
LE PREFCH TRACEがリセットされるの
で、PF−IARから出力される命令プリフェッチアド
レスは無視される。
【0149】図38は、本構成例における優先順位決定
回路の構成例を示す図である。ここでは、命令実行系列
が分岐予測と異なった場合や割り込み発生などによる再
命令フェッチ(+IF REQ REIFCH GO)
が最も優先度が高く、続いて、分岐予測がなされたとき
の分岐先命令フェッチ(+IF REQ BRHIS
GO)、そして、その次の優先順位では、命令フェッチ
ポートが全て埋まっていた場合で分岐予測がなされた場
合には、命令プリフェッチの起動を兼ねて分岐先命令プ
リフェッチを行う(+IF REQ PREFCH
RHIS GO)。その下に、分岐予測が行われなかった
時の後続命令フェッチ(+IF REQ SEQUENT
IAL GO)、更に下に、命令プリフェッチの先の
(トレースの)再帰命令プリフェッチ(分岐予測がされ
た場合(+IF REQ PREFCH TRACE
RHIS GO)とされなかった場合(+IF REQ
PREFCH TRACE SEQ GO))がある。
【0150】図39は、キャッシュに対するフェッチ・
プリフェッチ要求信号の出力回路の構成例を示す図であ
る。なお、図39の回路は、前述の図8の回路に置き換
えられるべき回路であり、図8と同じ部分の説明は省略
する。
【0151】+IFCH REQUEST VALID
が出力されるときは、デマンド命令フェッチ(実命令フ
ェッチ)であり、+IF PREFCH REQUES
VALIDが出力されるときは、命令プリフェッチ要
求である。
【0152】+IFCH REQUEST VALID
は、図30のリセット信号としても使用される。また、
図39では、OR回路215の入力として、分岐先命令
プリフェッチのイネーブル信号+IF REQ PRE
FCH BRHIS GOの他に、再帰的分岐先命令プ
リフェッチイネーブル及び、再帰的後続命令プリフェッ
チのイネーブル(+IF REQ PREFCH TR
ACE BRHIS GO及び+IF REQ PREF
CH TRACE SEQ GO)が設けられている。
【0153】図8と比較すると、再帰的命令プリフェッ
チのためのイネーブルが追加されると共に、再帰的でな
い後続命令プリフェッチのイネーブル(+IF REQ
PREFCH SEQ GO)が無くなっている。こ
れは、再帰的でない後続命令プリフェッチのイネーブル
と再帰的後続命令プリフェッチのイネーブルを共用する
構成としたからである。
【0154】以上の本実施形態によれば、ハードウェア
コストを少なくして、トレースキャッシュ方式のキャッ
シュメモリと同程度のプリフェッチ効果を期待できる。
したがって、命令キャッシュに対してトレースキャッシ
ュを採用する必要が無くなり、ハードウェア量に対する
性能効果が大きい。本発明は以下の形態で実施が可能で
ある。 (付記1)キャッシュメモリ手段と、それよりも下位の
メモリ手段と、該キャッシュメモリ手段に格納された命
令列を投機的に実行する手段を備えた命令制御装置にお
ける命令のフェッチを制御する命令フェッチ制御装置で
あって、該キャッシュメモリ手段に命令フェッチ要求を
出す命令フェッチ手段と、続いてフェッチ要求を予定し
ている命令列が、該キャッシュメモリ手段に存在しない
場合には、該キャッシュメモリ手段に、該下位メモリ手
段から該予定命令列を事前に転送しておく命令プリフェ
ッチを行う命令プリフェッチ手段と、を備えることを特
徴とする装置。 (付記2)更に、分岐命令の成立の可否、及び成立の際
の分岐先アドレスを予測する分岐予測手段と、フェッチ
した命令列を格納するための1つ以上のバッファ手段と
を備え、前記命令プリフェッチ手段は、該分岐予測手段
によって分岐すると予測されたにも関わらず、該バッフ
ァ手段が空いておらず、かつ、前記キャッシュメモリ手
段内に、フェッチ要求を予定している分岐予測先命令列
が存在しない場合には、前記キャッシュメモリ手段に前
記下位メモリ手段から該予測命令列を事前に転送してお
くことを特徴とする付記1に記載の装置。 (付記3)前記命令プリフェッチ手段は、インタロック
要因によって、通常行われるべき命令フェッチ要求が出
せない場合に、前記キャッシュメモリ手段に対して前記
命令プリフェッチを行うことを特徴とする付記1に記載
の装置。 (付記4)更に、前記命令プリフェッチを含む命令フェ
ッチの種別に応じた優先順位を設定し、該優先順位に従
って前記キャッシュメモリ手段に対する命令フェッチあ
るいは命令プリフェッチを、前記命令フェッチ手段ある
いは命令プリフェッチ手段に行わせる優先順位決定手段
を備えることを特徴とする付記1に記載の装置。 (付記5)更に、前記命令プリフェッチによる前記キャ
ッシュメモリ手段への命令列転送中に、当該命令列の命
令フェッチが行われる場合、該命令フェッチが該命令プ
リフェッチを受け継ぐ、あるいは、該キャッシュメモリ
手段へ転送中の命令列を前記バッファ手段へバイパスす
る制御手段を備えることを特徴とする付記1に記載の装
置。 (付記6)前記命令プリフェッチ手段は、同じアドレス
もしくは同じキャッシュブロックに対する前記命令プリ
フェッチを連続して行わないことを特徴とする付記1に
記載の装置。 (付記7)前記命令プリフェッチ手段は、前記命令プリ
フェッチされた命令列に対する命令プリフェッチを行う
ことを特徴とする付記1に記載の装置。 (付記8)前記命令プリフェッチの要求が際限なく発行
されるのを抑制する抑制手段を更に備えたことを特徴と
する付記7に記載の装置。 (付記9)前記命令プリフェッチのためのアドレスレジ
スタを更に備えることを特徴とする付記7に記載の装
置。 (付記10)前記アドレスレジスタの値が有効か否かを
示すフラグを保持することを特徴とする付記9に記載の
装置。 (付記11)現実に実行されるべき命令列の再実行が必
要になった場合、前記アドレスレジスタを無効化するこ
とを特徴とする付記9に記載の装置。 (付記12)前記命令プリフェッチされた命令列に対す
る命令プリフェッチを行う場合に、分岐予測機構を使用
することを特徴とする付記7に記載の装置。 (付記13)キャッシュメモリ手段と、それよりも下位
のメモリ手段と、該キャッシュメモリ手段に格納された
命令列を投機的に実行する手段を備えた命令制御装置に
おける命令のフェッチを制御する命令フェッチ制御装置
であって、該キャッシュメモリ手段に命令フェッチ要求
を出す命令フェッチ手段と、条件分岐命令もしくは無条
件分岐命令を実行する際に、分岐成立する場合の分岐先
命令アドレスを求めるアドレス生成手段と、該分岐命令
の分岐する場合の分岐先命令アドレスが求められた時点
で、前記キャッシュメモリ手段に該分岐先命令の命令フ
ェッチを要求する分岐先命令プリフェッチを行う分岐先
命令プリフェッチ手段と、を備えることを特徴とする装
置。 (付記14)更に、前記分岐命令の成立の可否、及び成
立の際の分岐先アドレスを予測する分岐予測手段を備
え、前記分岐命令プリフェッチ手段は、該分岐予測手段
により分岐予測された分岐命令の実行に際し、分岐しな
い場合の命令アドレスの命令フェッチを前記キャッシュ
メモリ手段に対して要求することを特徴とする付記13
に記載の装置。 (付記15)更に、1つ以上の実行中の分岐命令によ
り、分岐命令プリフェッチを要求することが可能とされ
たそれぞれの分岐命令に優先順位を設定し、その優先順
位に従って、前記分岐命令プリフェッチ手段に分岐命令
プリフェッチを要求させる優先順位決定手段を備えるこ
とを特徴とする付記14に記載の装置。 (付記16)更に、1つ以上の分岐命令プリフェッチ要
求による命令列の保留のための1つ以上の命令バッファ
手段を備えることを特徴とする付記13に記載の装置。 (付記17)前記分岐命令の実行及び分岐先が確定した
時点で、該分岐命令の後続命令のフェッチ及び実行を中
止棄却し、該分岐命令に対応する分岐命令プリフェッチ
を実命令フェッチへと変更して、該分岐命令フェッチを
継続実行あるいは中断解除し、該分岐命令の分岐先命令
を実行させることを特徴とする付記13に記載の装置。 (付記18).前記分岐予測手段によって分岐すること
が予測された該分岐命令が、実行され、かつ、分岐しな
いことが確定した時点、あるいは、予測された分岐先と
異なる分岐先へ分岐することが確定した時点で、該分岐
命令の予測分岐先命令の命令フェッチおよび命令実行を
中止棄却し、該分岐命令に対応する後続命令の分岐命令
プリフェッチを実命令フェッチへと変更して、後続命令
フェッチを継続実行あるいは中断解除し、上記後続命令
を実行させることを特徴とする付記14に記載の装置。 (付記19)該分岐命令が条件分岐命令である場合に、
該分岐命令が実行されること、あるいは、分岐せず後続
命令を実行することが確定した時点、あるいは、該分岐
命令が実行されないことが確定した時点で、それまで行
っていた該分岐命令プリフェッチを棄却することを特徴
とする付記13に記載の装置。 (付記20)前記分岐予測手段において分岐予測が成立
している前記分岐命令が実行されること、あるいは、予
測された該分岐命令の分岐先命令を実行することが確定
した時点で、それまで行っていた該分岐命令プリフェッ
チを棄却することを特徴とする付記14に記載の装置。 (付記21)更に、命令の実行の結果、分岐命令プリフ
ェッチされるべき命令列を書き換える可能性があること
を検出する検出手段を備えることを特徴とする付記13
に記載の装置。 (付記22)前記検出手段は、ストア命令のアドレス及
び分岐命令プリフェッチ要求を出した分岐命令自身のア
ドレス、もしくは、該分岐命令の分岐先命令のアドレス
を用いて、命令列の書き換えの可能性を検出することを
特徴とする付記21に記載の装置。 (付記23)前記命令が実行された場合、前記分岐命令
プリフェッチされるべき命令列が書き換えられることが
判明した場合、該分岐命令プリフェッチ要求を棄却する
ことを特徴とする付記21に記載の装置。 (付記24)前記分岐命令の分岐先命令のアドレスが求
められた時点で、前記キャッシュメモリ手段に該アドレ
スに対応する命令が確保されていない場合に、前記下位
メモリ手段から該キャッシュメモリ手段へ該分岐先命令
を転送することを要求することを特徴とする付記13に
記載の装置。 (付記25)前記分岐予測手段により分岐予測された分
岐命令の実行に際し、前記キャッシュメモリ手段に、分
岐しない場合の命令アドレスに対応する後続命令列が確
保されていないと判明した場合には、前記下位メモリ手
段から該キャッシュメモリ手段へ該後続命令列を転送す
ることを要求することを特徴とする付記14に記載の装
置。 (付記26)前記分岐先命令プリフェッチ手段は、前記
分岐先命令プリフェッチを行った命令列に対して命令プ
リフェッチを行うことを特徴とする付記13に記載の装
置。 (付記27)前記命令プリフェッチの要求が際限なく発
行されるのを抑制する抑制手段を更に備えたことを特徴
とする付記26に記載の装置。 (付記28)前記命令プリフェッチのためのアドレスレ
ジスタを更に備えることを特徴とする付記26に記載の
装置。 (付記29)前記アドレスレジスタの値が有効か否かを
示すフラグを保持することを特徴とする付記28に記載
の装置。 (付記30)現実に実行されるべき命令列の再実行が必
要になった場合、前記アドレスレジスタを無効化するこ
とを特徴とする付記28に記載の装置。 (付記31)前記命令プリフェッチされた命令列に対す
る命令プリフェッチを行う場合に、分岐予測機構を使用
することを特徴とする付記26に記載の装置。 (付記32)キャッシュメモリと、下位メモリと、該キ
ャッシュメモリに命令フェッチ要求を出す命令フェッチ
装置と、該キャッシュメモリに格納された命令列を処理
する命令制御装置とを備える装置における命令制御方法
であって、(a)続いてフェッチ要求を予定している命
令列が、該キャッシュメモリに存在しない場合には、該
キャッシュメモリに、該下位メモリから該予定命令列を
事前に転送しておく命令プリフェッチを行うステップを
備えることを特徴とする方法。 (付記33)更に、(b)分岐命令の分岐先命令を予測
するステップと、(c)フェッチした命令列を格納する
ステップとを備え、前記ステップ(a)では、該ステッ
プ(b)によって分岐すると予測されたにも関わらず、
該ステップ(c)に命令列を格納できない場合に、前記
キャッシュメモリへ、フェッチ要求を予定している分岐
予測先命令列が存在しない場合にはキャッシュメモリに
前記下位メモリから該予測命令列を事前に転送しておく
ことを特徴とする付記32に記載の方法。 (付記34)インタロック要因によって、通常行われる
べき命令フェッチ要求が出せない場合に、命令プリフェ
ッチ要求を行うことを特徴とする付記32に記載の方
法。 (付記35)更に、(d)前記命令プリフェッチを含む
命令フェッチの種別に応じた優先順位を設定し、該優先
順位に従って前記キャッシュメモリ手段に対する命令フ
ェッチあるいは命令プリフェッチ要求を行うステップを
備えることを特徴とする付記32に記載の方法。 (付記36)同じアドレスでの実命令フェッチが行われ
る際に、該命令プリフェッチによる前記キャッシュメモ
リへの命令列転送作業が間に合わなかった場合、該実命
令フェッチが該命令プリフェッチを受け継ぐ、あるい
は、該キャッシュメモリへ転送中の命令列を前記命令制
御装置へバイパスすることを特徴とする付記32に記載
の方法。 (付記37)同じアドレスもしくは同じキャッシュブロ
ックに対する前記命令プリフェッチを連続して行わない
ことを特徴とする付記32に記載の方法。 (付記38)前記ステップ(a)は、前記命令プリフェ
ッチされた命令列に対する命令プリフェッチを行うこと
を特徴とする付記32に記載の方法。 (付記39)キャッシュメモリと、下位メモリと、該キ
ャッシュメモリに命令フェッチ要求を出す命令フェッチ
装置とを備える装置における命令制御方法であって、
(a)条件分岐命令もしくは無条件分岐命令を実行する
際に、分岐成立する場合の分岐先命令アドレスを求める
ステップと、(b)該分岐命令の分岐する場合の分岐先
命令アドレスが求められた時点で、該分岐命令の命令フ
ェッチを要求する分岐命令プリフェッチを行うステップ
と、を備えることを特徴とする方法。 (付記40)更に、(c)前記分岐命令の分岐先命令を
予測するステップを備え、前記ステップ(b)では、該
ステップ(a)により分岐予測された分岐命令の実行に
際し、分岐しない場合の命令アドレスの命令フェッチを
要求することを特徴とする付記39に記載の方法。 (付記41)更に、(d)1つ以上の実行中の分岐命令
により、それぞれの分岐命令の分岐命令プリフェッチを
要求することが可能とされたものに優先順位を設定し、
その優先順位に従って、前記分岐命令プリフェッチ手段
に分岐命令プリフェッチを要求させるステップを備える
ことを特徴とする40に記載の方法。 (付記42)更に、1つ以上の分岐命令プリフェッチ要
求による命令列の保留するステップを備えることを特徴
とする付記39に記載の方法。 (付記43)前記分岐命令の実行及び分岐先が確定した
時点で、該分岐命令の後続命令フェッチ及び命令実行を
中止棄却し、該分岐命令に対応する分岐命令プリフェッ
チを実命令フェッチへと変更して、分岐先命令フェッチ
を継続実行あるいは中断解除し、分岐先命令を実行する
ことを特徴とする付記39に記載の方法。 (付記44)前記ステップ(a)によって分岐すること
が予測された該分岐命令が、実行され、かつ、分岐しな
いことが確定した時点、あるいは、予測された分岐先と
異なる分岐先へ分岐することが確定した時点で、該分岐
命令の予測分岐先命令の命令フェッチおよび命令実行を
中止棄却し、該分岐命令に対応する後続命令の分岐命令
プリフェッチを実命令フェッチへと変更して、後続命令
フェッチを継続実行あるいは中断解除し、後続命令を実
行することを特徴とする付記40に記載の方法。 (付記45)該分岐命令が条件分岐命令である場合に、
該命令が実行されること、及び、分岐せず後続命令を実
行することが確定した時点、あるいは、該命令が実行さ
れないことが確定した時点で、それまで行っていた該分
岐命令プリフェッチを棄却することを特徴とする付記3
9に記載の方法。 (付記46)前記ステップ(a)において分岐予測が成
立している前記分岐命令が実行されること、及び、予測
された該分岐命令の分岐先命令を実行することが確定し
た時点で、それまで行っていた該分岐命令プリフェッチ
を棄却することを特徴とする付記40に記載の方法。 (付記47)更に、(e)命令の実行の結果、分岐命令
プリフェッチされるべき命令列を書き換える可能性があ
ることを検出するステップを備えることを特徴とする付
記39に記載の方法。 (付記48)前記ステップ(e)では、分岐命令プリフ
ェッチ要求を出した分岐命令自身のアドレス、及び、分
岐先命令アドレスを用いて、命令列の書き換えの可能性
を検出することを特徴とする付記47に記載の方法。 (付記49)命令が実行された結果、前記分岐命令プリ
フェッチされるべき命令列を書き換えることが判明した
場合、該分岐命令プリフェッチ要求を棄却することを特
徴とする付記47に記載の方法。 (付記50)前記分岐命令の分岐先命令のアドレスが求
められた時点で、前記キャッシュメモリに該アドレスに
対応する命令が確保されていない場合に、該キャッシュ
メモリへの前記下位メモリからの該分岐先命令の転送を
要求することを特徴とする付記39に記載の方法。 (付記51)前記ステップ(a)により分岐予測された
分岐命令の実行に際し、前記キャッシュメモリに、分岐
しない場合の命令アドレスに対応する後続命令列が確保
されていないと判明した場合には、該キャッシュメモリ
への前記下位メモリからの該後続命令列の転送を要求す
ることを特徴とする付記40に記載の方法。 (付記52)前記ステップ(a)、(b)は、前記分岐
先命令プリフェッチを行った命令列に対して命令プリフ
ェッチを行うことを特徴とする付記39に記載の方法。
【0155】
【発明の効果】本発明によれば、条件分岐命令などの遅
延を生じさせる命令をプリフェッチすることにより、命
令処理の遅延時間を縮小することが出来る。
【図面の簡単な説明】
【図1】本発明を適用した場合の命令列の実行の様子を
示す図である。
【図2】本実施形態の装置の全体の概略構成を示す図で
ある。
【図3】命令プリフェッチ機構の構成例を示す図であ
る。
【図4】図3の優先順位決定回路の構成例を示す図であ
る。
【図5】同じアドレスの命令へのプリフェッチ要求を連
続して出さないようにするためのフラグ生成回路(シー
ケンシャルプリフェッチの場合)の構成例を示す図であ
る。
【図6】同じキャッシュブロックに含まれている命令を
繰り返してプリフェッチ要求を行わせないようにするた
めのフラグを生成する回路例である。
【図7】同一プリフェッチ要求抑制フラグ(分岐予測先
プリフェッチの場合)の回路構成例を示す図である。
【図8】フェッチ・プリフェッチ区別回路の構成例を示
す図である。
【図9】下位メモリへのデータ要求信号を生成する回路
の構成例を示す図である。
【図10】プリフェッチ要求時のキャッシュから命令制
御装置へのデータ転送抑制信号を生成する回路例を示す
図である。
【図11】第2の命令プリフェッチ機構の構成例を示す
図である。
【図12】分岐命令リザベーションステーションのエン
トリ内容を例示する図である。
【図13】分岐命令の処理の流れを説明する図である。
【図14】分岐命令リザベーションステーションの実行
順序回路の構成例を示す図である。
【図15】分岐命令リザベーションステーションの実行
順序別信号生成回路の例である。
【図16】分岐命令プリフェッチアドレスの生成回路の
構成例を示す図である。
【図17】分岐命令プリフェッチ可能信号の生成回路の
構成例を示す図である。
【図18】図19に入力する信号を生成する中間回路の
構成例である。
【図19】分岐命令プリフェッチ要求有効信号と選択信
号を生成する回路の構成例である。
【図20】分岐命令プリフェッチポートの使用中を示す
フラグを生成する回路の構成例である。
【図21】分岐命令プリフェッチの実フェッチ化及びキ
ャンセルのための回路例を示す図(その1)である。
【図22】分岐命令プリフェッチの実フェッチ化及びキ
ャンセルのための回路例を示す図(その2)である。
【図23】分岐命令プリフェッチのポート毎のキャンセ
ルを行う信号を生成する回路例である。
【図24】ストア命令が分岐命令プリフェッチ命令列を
書き換える可能性があることを検出する回路例を示す図
である。
【図25】前述の実施形態における命令実行の様子を説
明する概念図である。
【図26】本実施形態の概念図である。
【図27】本実施形態の処理の基本的な流れを示すフロ
ーチャートである。
【図28】命令プリフェッチ要求の影響で命令フェッチ
要求が遅延する場合を説明する図である。
【図29】命令プリフェッチ要求を制約なしに出せてし
まうと問題となる場合について説明する図である。
【図30】命令プリフェッチ抑制回路の構成例を示す図
である。
【図31】命令プリフェッチとデマンドフェッチとを切
り替えるために必要となるフェッチポート選択回路の構
成例を示す図である。
【図32】図30、図31の構成を反映した優先順位決
定回路の構成例を示す図である。
【図33】前述の実施形態の命令プリフェッチによるブ
ランチヒストリ検索回路を示す図である。
【図34】本実施形態を図33のブランチヒストリ検索
回路に適用した構成例を示す図である。
【図35】図34の動作を説明するタイミングチャート
である。
【図36】命令フェッチ及びプリフェッチアドレスの生
成回路の構成例を示す図である。
【図37】プリフェッチアドレス生成回路の構成例を示
す図である。
【図38】本構成例における優先順位決定回路の構成例
を示す図である。
【図39】キャッシュに対するフェッチ・プリフェッチ
要求信号の出力回路の構成例を示す図である。
【図40】分岐を複数含む命令列の例を示す図である。
【図41】従来の手法を用いた場合のマシンサイクルの
遅延を説明する図である。
【符号の説明】
1 主記憶装置 1’ キャッシュ/主記憶装置 2 命令キャッシュ 3 命令一時バッファ 4 命令デコード 5 分岐命令制御部 5−1 分岐命令リザベーションステーション 5−2 アウトポインタ 6 ストア命令制御部 7 その他の命令の制御部 8 データキャッシュ 9 命令フェッチ制御部 9−1 フェッチアドレス生成部 9−2 ブランチヒストリ 9−3 優先順位決定回路 9−4、61、202 セレクタ 9’ ブランチヒストリ 10〜13、82、93、121、154 インバ
ータ 14〜17、20〜22、25、30−1〜30−3、
32、36、41−1〜41−4・・・、42、50、
51−1、51−2、52、53、71、73、80〜
83、94、95、122−1〜122−3、125−
0〜125−3、131ー1〜131−4。151−
1、151−2、153 AND回路 18、24、31、35、40−1、40−2、41、
45、52、54、72、84、96、102、12
6、130−1、130−2、152、215OR回路 19、23、26、101、200、201 フリ
ップフロップ 111、112 EXOR回路 150 減算器

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】キャッシュメモリ手段と、それよりも下位
    のメモリ手段と、該キャッシュメモリ手段に格納された
    命令列を投機的に実行する手段を備えた命令制御装置に
    おける命令のフェッチを制御する命令フェッチ制御装置
    であって、 該キャッシュメモリ手段に命令フェッチ要求を出す命令
    フェッチ手段と、 続いてフェッチ要求を予定している命令列が、該キャッ
    シュメモリ手段に存在しない場合には、該キャッシュメ
    モリ手段に、該下位メモリ手段から該予定命令列を事前
    に転送しておく命令プリフェッチを行う命令プリフェッ
    チ手段と、を備えることを特徴とする装置。
  2. 【請求項2】更に、 分岐命令の成立の可否、及び成立の際の分岐先アドレス
    を予測する分岐予測手段と、 フェッチした命令列を格納するための1つ以上のバッフ
    ァ手段とを備え、 前記命令プリフェッチ手段は、 該分岐予測手段によって分岐すると予測されたにも関わ
    らず、該バッファ手段が空いておらず、かつ、前記キャ
    ッシュメモリ手段内に、フェッチ要求を予定している分
    岐予測先命令列が存在しない場合には、前記キャッシュ
    メモリ手段に前記下位メモリ手段から該予測命令列を事
    前に転送しておくことを特徴とする請求項1に記載の装
    置。
  3. 【請求項3】前記命令プリフェッチ手段は、インタロッ
    ク要因によって、通常行われるべき命令フェッチ要求が
    出せない場合に、前記キャッシュメモリ手段に対して前
    記命令プリフェッチを行うことを特徴とする請求項1に
    記載の装置。
  4. 【請求項4】更に、前記命令プリフェッチを含む命令フ
    ェッチの種別に応じた優先順位を設定し、該優先順位に
    従って前記キャッシュメモリ手段に対する命令フェッチ
    あるいは命令プリフェッチを、前記命令フェッチ手段あ
    るいは命令プリフェッチ手段に行わせる優先順位決定手
    段を備えることを特徴とする請求項1に記載の装置。
  5. 【請求項5】更に、前記命令プリフェッチによる前記キ
    ャッシュメモリ手段への命令列転送中に、当該命令列の
    命令フェッチが行われる場合、該命令フェッチが該命令
    プリフェッチを受け継ぐ、あるいは、該キャッシュメモ
    リ手段へ転送中の命令列を前記バッファ手段へバイパス
    する制御手段を備えることを特徴とする請求項1に記載
    の装置。
  6. 【請求項6】前記命令プリフェッチ手段は、同じアドレ
    スもしくは同じキャッシュブロックに対する前記命令プ
    リフェッチを連続して行わないことを特徴とする請求項
    1に記載の装置。
  7. 【請求項7】前記命令プリフェッチ手段は、前記命令プ
    リフェッチされた命令列に対する命令プリフェッチを行
    うことを特徴とする請求項1に記載の装置。
  8. 【請求項8】キャッシュメモリ手段と、それよりも下位
    のメモリ手段と、該キャッシュメモリ手段に格納された
    命令列を投機的に実行する手段を備えた命令制御装置に
    おける命令のフェッチを制御する命令フェッチ制御装置
    であって、 該キャッシュメモリ手段に命令フェッチ要求を出す命令
    フェッチ手段と、 条件分岐命令もしくは無条件分岐命令を実行する際に、
    分岐成立する場合の分岐先命令アドレスを求めるアドレ
    ス生成手段と、 該分岐命令の分岐する場合の分岐先命令アドレスが求め
    られた時点で、前記キャッシュメモリ手段に該分岐先命
    令の命令フェッチを要求する分岐先命令プリフェッチを
    行う分岐先命令プリフェッチ手段と、を備えることを特
    徴とする装置。
  9. 【請求項9】更に、 前記分岐命令の成立の可否、及び成立の際の分岐先アド
    レスを予測する分岐予測手段を備え、 前記分岐命令プリフェッチ手段は、 該分岐予測手段により分岐予測された分岐命令の実行に
    際し、分岐しない場合の命令アドレスの命令フェッチを
    前記キャッシュメモリ手段に対して要求することを特徴
    とする請求項8に記載の装置。
  10. 【請求項10】前記分岐先命令プリフェッチ手段は、前
    記分岐先命令プリフェッチを行った命令列に対して命令
    プリフェッチを行うことを特徴とする請求項8に記載の
    装置。
JP2000298837A 1999-09-30 2000-09-29 命令フェッチ制御装置 Expired - Fee Related JP3741945B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000298837A JP3741945B2 (ja) 1999-09-30 2000-09-29 命令フェッチ制御装置
US09/793,559 US6912650B2 (en) 2000-03-21 2001-02-27 Pre-prefetching target of following branch instruction based on past history
US11/125,212 US20050198480A1 (en) 1999-09-30 2005-05-10 Apparatus and method of controlling instruction fetch

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP27799199 1999-09-30
JP11-277991 1999-09-30
JP2000298837A JP3741945B2 (ja) 1999-09-30 2000-09-29 命令フェッチ制御装置

Publications (2)

Publication Number Publication Date
JP2001166934A true JP2001166934A (ja) 2001-06-22
JP3741945B2 JP3741945B2 (ja) 2006-02-01

Family

ID=26552666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000298837A Expired - Fee Related JP3741945B2 (ja) 1999-09-30 2000-09-29 命令フェッチ制御装置

Country Status (1)

Country Link
JP (1) JP3741945B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510989A (ja) * 2003-11-06 2007-04-26 インテル・コーポレーション 動的キャッシングエンジン命令
JP2008510258A (ja) * 2004-08-17 2008-04-03 エヌヴィディア コーポレイション メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US7783868B2 (en) 2002-06-28 2010-08-24 Fujitsu Limited Instruction fetch control device and method thereof with dynamic configuration of instruction buffers
EP2275927A2 (en) 2009-06-30 2011-01-19 Fujitsu Limited Processor and instruction control method
JP2015219550A (ja) * 2014-05-14 2015-12-07 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP2016119120A (ja) * 2011-05-20 2016-06-30 株式会社半導体エネルギー研究所 半導体装置及びその駆動方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783868B2 (en) 2002-06-28 2010-08-24 Fujitsu Limited Instruction fetch control device and method thereof with dynamic configuration of instruction buffers
JP2007510989A (ja) * 2003-11-06 2007-04-26 インテル・コーポレーション 動的キャッシングエンジン命令
JP2008510258A (ja) * 2004-08-17 2008-04-03 エヌヴィディア コーポレイション メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
EP2275927A2 (en) 2009-06-30 2011-01-19 Fujitsu Limited Processor and instruction control method
JP2011013864A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd 命令制御装置、命令制御方法および演算回路
JP2016119120A (ja) * 2011-05-20 2016-06-30 株式会社半導体エネルギー研究所 半導体装置及びその駆動方法
JP2015219550A (ja) * 2014-05-14 2015-12-07 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP3741945B2 (ja) 2006-02-01

Similar Documents

Publication Publication Date Title
US20050198480A1 (en) Apparatus and method of controlling instruction fetch
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US7159103B2 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US7222227B2 (en) Control device for speculative instruction execution with a branch instruction insertion, and method for same
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US10289415B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for recording architected register data
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
JP2001166935A (ja) プロセッサにおける分岐予測方法及びプロセッサ
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JPH0540627A (ja) 並列演算処理装置
US10073699B2 (en) Processing instructions in parallel with waw hazards and via a distributed history buffer in a microprocessor having a multi-execution slice architecture
US5870579A (en) Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US10282205B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for restoring architected register data via issued instructions
JP2002527798A (ja) ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム
JP2001060153A (ja) 情報処理装置
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP3741945B2 (ja) 命令フェッチ制御装置
JP3839755B2 (ja) 命令制御方法及びプロセッサ
JP2001100995A (ja) 分岐履歴情報の書き込み制御装置及びその方法
US6807624B1 (en) Instruction control device and method therefor
EP0912927B1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
EP0912930B1 (en) A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same
JP3971780B2 (ja) 命令制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050816

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051109

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081118

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091118

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101118

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101118

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111118

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111118

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121118

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121118

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131118

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees