JP3037863B2 - 投機的実行制御機能を有するプロセッサ - Google Patents

投機的実行制御機能を有するプロセッサ

Info

Publication number
JP3037863B2
JP3037863B2 JP5336850A JP33685093A JP3037863B2 JP 3037863 B2 JP3037863 B2 JP 3037863B2 JP 5336850 A JP5336850 A JP 5336850A JP 33685093 A JP33685093 A JP 33685093A JP 3037863 B2 JP3037863 B2 JP 3037863B2
Authority
JP
Japan
Prior art keywords
instruction
execution
cycle
branch
speculative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP5336850A
Other languages
English (en)
Other versions
JPH07200293A (ja
Inventor
宣彦 山上
恭正 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP5336850A priority Critical patent/JP3037863B2/ja
Publication of JPH07200293A publication Critical patent/JPH07200293A/ja
Application granted granted Critical
Publication of JP3037863B2 publication Critical patent/JP3037863B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、条件付き分岐命令の
投機的実行制御機能を有するプロセッサに関する。
【0002】
【従来の技術】パイプライン方式を適用する従来のプロ
セッサにおいては、条件付き分岐命令に続く命令を取り
込もうとする場合、その条件が決定されてから、その分
岐命令に続く命令のアドレスを出すのが一般的であっ
た。
【0003】以下に、従来のプロセッサにおける動作に
ついて、命令読み出し(命令フェッチ)サイクルF、命
令解析(命令デコード)サイクルD、命令実行サイクル
Eおよびレジスタ書き込みサイクルWからなる4段のパ
イプラインと、各サイクル(パイプラインサイクル)で
最大2命令ずつオーバーラップすることが可能な2命令
同時実行方式を適用する場合を例に、図8乃至図11の
タイミングチャートを参照して述べる。但し、図8およ
び図9は命令の基本動作の説明であるため、2命令同時
実行の様子は示されていない。
【0004】まず図8は、比較命令の基本動作のタイミ
ングチャートであり、オペランドの読み出し、比較実
行、結果の確定が、それぞれDサイクル、Eサイクル、
Wサイクルで行われる(結果の確定はWサイクルの前半
で終了)ことを示している。
【0005】次に図9は、条件付き分岐命令の基本動作
のタイミングチャートであり、条件判定と分岐先番地
(分岐先命令のアドレス)の計算がDサイクルで行わ
れ、分岐先命令のFサイクルが、その次のサイクルとな
ること(分岐成立時)を示している。なお、条件付き分
岐命令に後続する遅延命令は、条件付き分岐命令を含む
命令列の処理効率の向上を図るために用意されるもので
ある。そのため、当該遅延命令には、先行する条件付き
分岐命令の条件が成立した場合に実行されても何ら影響
されない命令が用いられる。
【0006】図10および図11は比較命令と条件付き
分岐命令が連続する場合の動作タイミングを示す。両図
の違いは、図10が比較命令と条件付き分岐命令を同時
にデコード(命令解析)し始める場合を示すのに対し、
図11は比較命令より1サイクル遅れて条件付き分岐命
令をデコードし始める場合を示す点である。
【0007】まず、比較命令のWサイクルの前半で比較
結果は確定する。次に、そのサイクルの後半で、条件付
き分岐命令のデコード処理により上記比較結果が参照さ
れて、条件判定と分岐先番地(分岐先命令のアドレス)
の計算が行われる。つまり、このサイクルで、条件付き
分岐命令のDサイクルは終了する。そして、その次のサ
イクル(Eサイクル)で分岐先命令(および更に次の命
令)のフェッチが行われる(条件成立時)。
【0008】以上に述べたように、従来のプロセッサに
おいては、条件付き分岐命令を実行する場合、先行する
比較命令の実行完了により比較結果が確定(したがって
条件フラグが確定)してから、その結果に従う条件判定
(分岐の成否の判定)と分岐先番地の計算を行い、分岐
成立を判定したところで、分岐先命令をフェッチするよ
うになっていた。
【0009】しかし、条件付き分岐命令に先行する比較
命令(所定の命令種類の先行命令)の結果が確定するの
を待ってから条件判定等を行うのでは、当該条件付き分
岐命令の処理が遅れるという問題があった。
【0010】そこで、この問題を解決するために、条件
付き分岐命令の命令解析時に、先行する比較命令の実行
が完了していない等の要因で分岐の成否の判定に用いら
れる条件フラグが確定していない場合は、分岐成立の場
合を仮定して、当該条件付き分岐命令の実行とそれに続
く命令の解析、実行処理を進め、条件フラグ確定時に実
際の分岐条件判定を行って、その判定結果に従って先行
して進めた本来実行すべきでない処理を選択的に無効化
する(条件付き分岐命令の)投機的実行制御機能を有す
るプロセッサが提案されている。
【0011】このようなプロセッサにおける投機的実行
制御動作について、図10および図11と同様に比較命
令と条件付き分岐命令が連続する場合を例に、図12お
よび図13のタイミングチャートを参照して述べる。こ
の例でも、2命令同時実行方式を適用するものとする。
但し、投機的実行制御を行う場合には、命令解析機構
(命令デコード機構)は、条件付き分岐命令に続く2命
令用と分岐先の2命令用の4つを仮定するのが通常であ
る。即ち、投機的実行制御を行う場合、命令解析機構
は、条件付き分岐命令に続く2命令と分岐先の2命令の
4命令を同時に解析できるように構成される。なお、図
12および図13の違いは比較命令と条件付き分岐命令
を同時にデコードし始めるか否かの差である。
【0012】さて、投機的実行制御を行う場合、条件付
き分岐命令のDサイクルは、図10と比較して分かるよ
うに、先行する比較命令の結果の確定を待たずに1サイ
クルで終了する。その次のサイクルでは、(分岐成立を
仮定して)常に分岐先命令のフェッチが行われる。そし
て、その後に比較命令の結果が確定すると、本来実行す
べきでない命令が選択的に無効化される。
【0013】つまり、条件付き分岐命令が本当に分岐す
るとき(branch takenのとき)には、遅延
命令の次の命令とそれに続く命令の実行が無効化され、
条件付き分岐命令が本当は分岐しないとき(branc
h untakenのとき)には分岐先命令とそれに続
く命令の実行が無効化される。
【0014】
【発明が解決しようとする課題】ここで、従来提案され
ている投機的実行制御機能を有するプロセッサにおける
問題について述べる。
【0015】まず、以上に述べた説明では、比較命令の
Eサイクルが1サイクルで終了することを仮定している
が、実際には複数サイクルを要する場合がある。例え
ば、当該比較命令の直前の命令がメモリを参照する命令
(ロード命令など)であって、そのメモリ参照命令の実
行でデータのキャッシュミスなどを起こして、そのメモ
リ参照命令のEサイクルに複数サイクルを要し、それに
伴い当該比較命令のEサイクルが終了できない(命令の
実行順序を守らなければならないため)場合(パイプラ
インがホールドされる場合)である。
【0016】さて、従来提案されている投機的実行制御
機能を有するプロセッサにおいては、比較命令の次に当
該比較命令の比較結果をもとに条件分岐を行う条件付き
分岐命令があると、前記したように投機的実行が行わ
れ、当該比較命令の比較結果が確定する前に条件付き分
岐命令の分岐先の命令のフェッチが行われる。
【0017】ところが、この命令フェッチについては、
比較命令の結果が確定する前に行う利点がない。なぜな
ら、分岐先の命令のフェッチでキャッシュミス等を起こ
してメモリにアクセスする必要が生じた場合、比較命令
の前にあるメモリ参照命令が実行中であると、この命令
フェッチは待たされる。また、分岐先の命令のフェッチ
が1サイクルで終了した場合でも、その前のメモリ参照
命令と比較命令のEサイクルが終了していないと、分岐
先の命令はEサイクルに入ることができず、Dサイクル
で待たされることになる。
【0018】しかも、従来提案されている投機的実行制
御機能を有するプロセッサにおいては、分岐先命令のフ
ェッチ要求は無条件で発行されるため、条件付き分岐命
令が本当は分岐しない条件の場合に、その分岐先命令の
フェッチでキャッシュミスなどが起こると、実行されな
い命令のフェッチに複数のサイクルを費やすことにな
り、全く無駄となる。
【0019】このことが、従来提案されている投機的実
行制御機能を有するプロセッサの第1の問題点である。
【0020】次に、従来提案されている投機的実行制御
機能を有するプロセッサの第2の問題点について述べ
る。
【0021】この問題は、図13の例のように、条件付
き分岐命令のDサイクルと遅延命令の次の命令およびそ
れ以降の命令のFサイクルが重なった場合に生じる。
【0022】従来提案されている投機的実行制御機能を
有するプロセッサでは、遅延命令の次の命令およびそれ
以降の命令のフェッチ要求は無条件で発行される。この
命令フェッチでキャッシュミスなどを起こすと、その命
令フェッチに複数のサイクルを要することになる。する
と、その後に比較命令の結果が確定したときに、それに
続く条件付き分岐命令が本当は分岐しない結果であれ
ば、上記の命令フェッチに複数サイクルを要したことの
無駄はないが、逆に当該条件付き分岐命令が本当に分岐
する結果である場合には、上記の命令フェッチに要した
時間は無駄となる。
【0023】このことが、従来提案されている投機的実
行制御機能を有するプロセッサの第2の問題点である。
【0024】次に、従来提案されている投機的実行制御
機能を有するプロセッサの第3の問題点について、図1
4を参照して述べる。
【0025】この問題は、図14のように、比較命令#
1、条件付き分岐命令#1、遅延命令、遅延命令の次の
命令、遅延命令の次の次の命令という命令の順番で、且
つ遅延命令が比較命令#2であり、遅延命令の次の命令
または遅延命令の次の次の命令が条件付き分岐命令#2
である場合(図14の例では、遅延命令の次の命令が条
件付き分岐命令#2となっている)に生じる。
【0026】従来提案されている投機的実行制御機能を
有するプロセッサでは、条件付き分岐命令#1の投機的
実行により、当該条件付き分岐命令#1のDサイクルで
分岐先番地が計算され、その次のサイクルで分岐先命令
のフェッチが行われる。また、分岐命令#1のDサイク
ルと同一のサイクルでは、命令フェッチが可能であるた
め、遅延命令の次の命令と遅延命令の次の次の命令がフ
ェッチされる。
【0027】もし、このフェッチされる2つの命令のい
ずれかが新たな条件付き分岐命令#2の場合(ここで
は、遅延命令の次の命令が条件付き分岐命令#2)に
は、当該条件付き分岐命令#2に対しても投機的実行が
行われる。この結果、新たな条件付き分岐命令#2のD
サイクルで分岐先番地が計算され、その次のサイクル
(条件付き分岐命#2のEサイクルと同一のサイクル)
がその分岐先命令のFサイクルになってしまう。このサ
イクルは、遅延命令の次の命令および遅延命令の次の次
の命令のいずれも条件付き分岐命令でない場合には、条
件付き分岐命令#1の分岐先命令の次の次の命令のフェ
ッチが行われるサイクルになる。
【0028】ところが、条件付き分岐命令#2のDサイ
クルは、比較命令のWサイクルと重なっているため、条
件付き分岐命令#1の投機的実行はまだ完了していな
い。つまり、条件付き分岐命令#2自身、本来実行され
るか否かがまだ決まっていない。このような投機的実行
が重なる場合の制御は複雑であり、その実現は容易では
ない。
【0029】このことが、従来提案されている投機的実
行制御機能を有するプロセッサの第3の問題点である。
【0030】この発明は上記事情を考慮してなされたも
のでその目的は、条件付き分岐命令の投機的実行に伴い
無駄な処理が行われることが回避できる投機的実行制御
機能を有するプロセッサを提供することにある。
【0031】この発明の他の目的は、分岐先の命令の読
み出しを投機的に行うことが無駄な場合を事前に検出す
ることにより、無駄な命令読み出しが回避できる投機的
実行制御機能を有するプロセッサを提供することにあ
る。
【0032】この発明の更に他の目的は、条件付き分岐
命令に後続する遅延命令より更に後続の命令の読み出し
を投機的に行うことが無駄な場合を事前に検出すること
により、無駄な命令読み出しが回避できる投機的実行制
御機能を有するプロセッサを提供することにある。
【0033】この発明の更に他の目的は、投機的実行の
重なりが生じることを事前に検出することにより、2重
の投機的実行が行われることを回避して、無駄な投機的
実行を防ぐと共に、制御の簡略化が図れる投機的実行制
御機能を有するプロセッサを提供することにある。
【0034】
【課題を解決するための手段および作用】この発明の第
1の観点に係る投機的実行制御機能を有するプロセッサ
は、条件付き分岐命令の先行命令であって、当該分岐命
令の分岐判定に用いられる条件フラグの確定に必要な所
定の命令種類の先行命令の実行サイクルが当該先行命令
の直前の命令の実行サイクルに連動して延びることを検
出するための延長検出手段と、この延長検出手段により
上記先行命令の実行サイクルが延びることが検出された
場合には、上記条件付き分岐命令の投機的実行を抑止
し、上記条件フラグが確定してから分岐の成否を判定す
る投機的実行抑止手段とを備えたことを特徴とするもの
である。
【0035】上記の構成においては、条件付き分岐命令
の先行命令の実行サイクルが、その先行命令の更に直前
の命令の実行で例えばメモリ参照が行われてキャッシュ
ミスを発生した等の要因でパイプラインがホールドさ
れ、通常より延びる場合には、その旨が延長検出手段に
より検出される。この場合、投機的実行抑止手段により
上記条件付き分岐命令の投機的実行が抑止され、上記先
行命令の実行により条件フラグが確定してから当該条件
フラグをもとに分岐の成否が確定的に判定される。
【0036】これにより、条件付き分岐命令の実行に伴
う命令のフェッチ動作は、たとえキャッシュミス等を起
こしても無駄になることがない。
【0037】これに対し、従来提案されている投機的制
御機能を有するプロセッサでは、上記先行命令が実行サ
イクルに止まっている場合でも無条件に投機的実行を行
って分岐先の命令を投機的にフェッチしているため、条
件付き分岐命令が本当は分岐しない条件の場合に、その
分岐先命令の投機的なフェッチでキャッシュミス等が発
生すると、そのフェッチに複数サイクルを費やすため無
駄となる。しかも、このような危険を犯しても、上記先
行命令が実行サイクルに止まる場合には、投機的にフェ
ッチした分岐先命令が命令解析サイクルで待たされるた
め、危険を犯す価値がない。
【0038】この発明の第2の観点に係る投機的実行制
御機能を有するプロセッサは、条件付き分岐命令の命令
解析サイクルと同じサイクルで、当該条件付き分岐命令
に後続する遅延命令より更に後続の命令の読み出しが開
始される際に、その読み出しに複数サイクルを要するこ
とを検出するための命令読み出し遅延検出手段と、この
読み出し遅延検出手段により上記後続命令の読み出しに
複数サイクルを要することが検出された場合には、当該
後続命令の読み出し動作を、そのサイクルのみで中止さ
せる命令読み出し制御手段とを備えたことを特徴とする
ものである。
【0039】上記の構成においては、条件付き分岐命令
の命令解析サイクルと当該分岐命令の次の命令(遅延命
令)より更に後の命令(後続命令)の命令読み出しサイ
クルとが重なり、且つ当該後続命令の読み出しが開始さ
れたサイクルでキャッシュミス等が発生したために当該
命令読み出しサイクルが1サイクルで終了しない場合に
は、その旨が読み出し遅延検出手段により検出される。
この場合、命令読み出し制御手段により、当該後続命令
の読み出しがそのサイクルのみで中止され、条件付き分
岐命令の命令解析サイクルでの投機的解析により求めら
れる分岐先番地に基づく分岐先命令の投機的な読み出し
が、次のサイクルで行われる。
【0040】これにより、条件付き分岐命令が本当に分
岐する結果となった場合の上記後続命令の読み出しに要
する時間の無駄が、従来提案されている投機的制御機能
を有するプロセッサのように当該後続命令の読み出しに
複数サイクルを要する場合でも無条件に最後まで読み出
しを続けるものとは異なって、解消できる。
【0041】この発明の第3の観点に係る投機的実行制
御機能を有するプロセッサは、条件付き分岐命令が投機
的に実行されている状態で、条件フラグが確定して当該
条件付き分岐命令の投機的実行の成否が確定する以前
に、新たな条件付き分岐命令の命令解析が開始されて投
機的実行の重なりが生じることを検出するための投機的
実行重なり検出手段と、この投機的実行重なり検出手段
により、投機的実行の重なりが生じることが検出された
場合には、少なくとも先の条件付き分岐命令の投機的実
行の成否が確定した後に、新たな条件付き分岐命令の命
令解析の実行を開始させる投機的実行開始制御手段とを
備えたことを特徴とするものである。
【0042】上記の構成において、条件付き分岐命令が
投機的に解析される際には、投機的実行重なり検出手段
によりフラグ情報保持手段が参照され、有効なフラグ情
報が保持されていないならば、既に投機的実行が行われ
ている先行する条件付き分岐命令は存在しない、即ち投
機的実行の重なりは生じないものと判断される。この場
合、投機的実行開始制御手段の制御により、条件付き分
岐命令の投機的解析が開始される。その際または解析完
了時に、条件付き分岐命令の投機的実行状態にあること
を示すために、フラグ操作手段により、フラグ情報保持
手段に有効なフラグ情報が設定される。
【0043】一方、フラグ情報保持手段に有効なフラグ
情報が保持されている場合には、既に投機的実行が行わ
れている先行する条件付き分岐命令が存在する、即ち投
機的実行の重なりが生じるものと、投機的実行重なり検
出手段により判断される。この場合、投機的実行開始制
御手段は、上記先行する条件付き分岐命令の条件判定に
必要な条件フラグが確定して上記フラグ情報が無効化さ
れ、更に条件付き分岐命令の投機的実行の成否が確定し
て分岐不成立となった場合だけ、新たな条件付き分岐命
令の命令解析の実行を開始させる。
【0044】これにより、2つの投機的実行が重なるこ
とが回避され、したがって2つの投機的実行が重なった
場合の制御が不要となり、従来に比べて制御の簡略化を
図ることができる。
【0045】
【実施例】以下、この発明を、F(命令読み出し),D
(命令解析)、E(命令実行)およびW(レジスタ書き
込み)の各サイクルからなる4段のパイプラインと2命
令同時実行方式を適用するプロセッサに実施した場合に
つき、図面を参照して説明する。
【0046】図1はこの発明の一実施例に係る投機的実
行制御機能を有するプロセッサの概略構成を示すブロッ
ク図である。
【0047】図1に示すプロセッサは、命令読み出し機
構1、命令バッファ2、命令解析機構3、命令実行機構
4、実行結果判定機構5およびレジスタファイル6を主
たる構成要素とする。
【0048】命令読み出し機構1は、メモリ等からの命
令読み出し(命令読み出しサイクルF)を司る。
【0049】この命令読み出し機構1は、目的とする命
令がキャッシュメモリ(図示せず)に存在するキャッシ
ュヒット時には、当該命令をこのキャッシュメモリから
高速に(ここでは1サイクルで)取り込み、目的とする
命令がキャッシュメモリに存在しないキャッシュミス時
には、命令解析機構3から後述する投機的解析完了の通
知がないならば当該命令を主メモリ(図示せず)から読
み出してキャッシュメモリを通して取り込むようになっ
ている。
【0050】また命令読み出し機構1は、キャッシュミ
ス時に命令解析機構3から投機的解析完了の通知がある
ならば、そのとき行っていた命令読み出しを中止して、
投機的解析完了の通知と共に渡される分岐先番地の命令
の読み出しを行う、特徴ある命令読み出し制御機能を有
している。
【0051】命令バッファ2は、命令読み出し機構1に
より取り込まれた(フェッチされた)命令をその取り込
み順に一時保持するためのものである。
【0052】命令解析機構3は、命令バッファ2に取り
込み・保持された命令を順に解析する命令解析(命令解
析サイクルD)を司る。
【0053】この命令解析機構3は、命令解析結果をも
とに必要なオペランド・データをレジスタファイル6か
ら読み出す他、条件付き分岐命令の場合には、(必要に
より投機的解析を行って)分岐先番地(分岐先命令のア
ドレス)を計算し、経路31を介して命令読み出し機構
1に伝達するようになっている。
【0054】命令解析機構3は、投機的実行が可能なよ
うに、条件付き分岐命令に続く2命令と分岐先の2命令
の4命令を同時に解析できるように構成されている。
【0055】命令解析機構3で条件付き分岐命令の投機
的解析が行われる条件は、パイプラインがホールドされ
ておらず、投機的実行が行われている他の条件付き分岐
命令が存在しないことである。
【0056】ここで、投機的実行が行われている他の条
件付き分岐命令が存在するか否かを管理するために、例
えば命令解析機構3内に、条件付き分岐命令の投機的な
解析により求められた分岐先番地(投機的分岐先番地と
称する)を発行済みであるか否かを示すフラグ情報(投
機的分岐先番地発行済み情報)が保持されるフラグ情報
保持部32が設けられる。このフラグ情報は、条件付き
分岐命令の投機的な解析により求められた分岐先番地が
命令解析機構3から命令読み出し機構1に発行される投
機的解析完了の通知時に、フラグ情報保持部32に設定
され、命令実行機構4から後述する比較結果確定通知割
り込みが発行された際にクリアされるようになってい
る。これにより、フラグ情報が有効な期間は、条件付き
分岐命令の投機的実行状態にあることが示される。
【0057】命令実行機構4は、命令解析機構3での命
令解析結果に従う命令実行処理(命令実行サイクルE)
を司る。
【0058】命令実行機構4は、条件付き分岐命令の条
件判定に必要な所定の命令種類の先行命令(例えば比較
命令)の直前の命令(例えば比較命令の直前にあって当
該比較命令と並行して行われるメモリ参照命令)でキャ
ッシュミスを起こした等の要因によりパイプラインがホ
ールドされる際(即ち先行命令の実行サイクルEが通常
より延びる際)に、その旨を経路41を介して命令解析
機構3に通知するようになっている。
【0059】また命令実行機構4は、比較命令の実行に
より比較結果を求めた際には、経路41を介して命令解
析機構3に比較結果確定通知割り込みを発行するように
もなっている。
【0060】実行結果判定機構5は、命令実行機構4で
の命令処理の結果をレジスタファイル6に書き戻す処理
(レジスタ書き込みサイクルW)を司る。
【0061】この実行結果判定機構5は、投機的実行が
行われているときには、その成否を判定し、その判定結
果に従って、処理結果の書き戻し、後続命令の実行、解
析、読み出し動作を選択的に無効化させるようになって
いる。そのため、実行結果判定機構5から経路51、経
路52、経路53を介してそれぞれ命令実行機構4、命
令解析機構3、命令読み出し機構1に当該判定結果が通
知される。
【0062】レジスタファイル6は、実行結果判定機構
5の実行結果等を保持するためのものである。
【0063】次に、図1の構成の動作を、3つの動作例
#1〜動作例#3について順に説明する。
【0064】[動作例#1]まず、メモリ参照命令ld
(ここではロード命令)、比較命令cmp、条件付き分
岐命令br、遅延命令delayの順の並びの命令列を
含むプログラムが実行される場合の動作を、図2のフロ
ーチャートおよび図5のタイミングチャートを参照して
説明する。なお条件付き分岐命令brの分岐先の命令は
target1、その次の命令はtarget2である
ものとする。
【0065】今、命令読み出し機構1により命令バッフ
ァ2にフェッチされていたメモリ参照命令ldおよび比
較命令cmpが命令解析機構3に移されて、当該メモリ
参照命令ldおよび比較命令cmpの処理内容を解析
(デコード)する処理(Dサイクル)が、命令解析機構
3により、図5に示すようにサイクルT1で行われたも
のとする。
【0066】次のサイクルT2では、メモリ参照命令l
dおよび比較命令cmpは命令実行機構4に移り、サイ
クルT1での命令解析機構3の命令解析結果に従い、当
該メモリ参照命令ldおよび比較命令cmpの実行処理
(Eサイクル)が開始される。
【0067】ここで、命令実行機構4がメモリ参照命令
ldの実効番地で指定されるデータを参照しようとした
結果、その目的のデータがキャッシュメモリに存在しな
いキャッシュミスが起きたものとする。
【0068】この場合、メモリ参照命令ldの実行の完
了に、図5に示すように複数サイクルを要するので、命
令実行機構4により、パイプラインはその間(図の例で
はサイクルT7まで)ホールドされ、メモリ参照命令l
dは当該命令実行機構4(Eサイクル)に止まる。即ち
メモリ参照命令ldのEサイクル(命令実行サイクル)
が通常より延ばされる。
【0069】このとき、命令実行機構4において、メモ
リ参照命令ldと並行して実行される比較命令cmp自
体の実行は、当該メモリ参照命令ldの実行結果を利用
するのではない限り1サイクル(サイクルT2)で完了
する。しかし、パイプラインがホールドされるので、そ
の間(サイクルT7まで)比較命令cmpも命令実行機
構4に止まり、比較結果は当該命令実行機構4内に一時
保持される。
【0070】命令実行機構4は、上記の如くパイプライ
ンがホールドされる場合、その旨を経路41を介して命
令解析機構3に通知する。
【0071】さて、メモリ参照命令ldおよび比較命令
cmpの実行が開始されたサイクルT2では、比較命令
cmpの次の条件付き分岐命令brおよび更にその次の
遅延命令delayが命令解析機構3に移されて、当該
条件付き分岐命令brおよび遅延命令delayの処理
内容を解析(デコード)する処理(Dサイクル)が行わ
れる。
【0072】命令解析機構3は、解析対象命令が条件付
き分岐命令brの場合(ステップS1)、命令実行機構
4からのパイプラインホールド通知の有無を調べ(ステ
ップS2)、上記のようにパイプラインホールド通知有
りの場合には、条件付き分岐命令brの投機的実行を行
わず、命令実行機構4から比較命令cmpの処理結果
(比較結果)を取得できたことが通知されるのを待つ
(ステップS3)。
【0073】一方、命令実行機構4は、比較命令cmp
の実行をサイクルT2の1サイクルで完了すると、例え
ば当該サイクルT2の終了時に、比較結果が求められた
ことを示す比較結果取得通知を経路41を介して命令解
析機構3に通知する。
【0074】命令解析機構3は、パイプラインがホール
ドされている状態で命令実行機構4から比較結果取得通
知を受け取った場合(ステップS3)、命令実行機構4
に保持されている比較命令cmpの比較結果を参照し
て、条件付き分岐命令brを確定的に解析し、分岐成立
/不成立の判定と分岐先番地(分岐先命令のアドレス)
の計算を行う(ステップ4)。
【0075】命令解析機構3は、このステップS4を行
うと、命令読み出し機構1に対して命令のフェッチ要求
を経路31を介して発行し、分岐の成否の判定結果およ
び分岐先番地(分岐不成立時には判定結果のみ)を渡
す。
【0076】命令読み出し機構1は、命令解析機構3か
ら命令フェッチ要求があると、当該命令解析機構3から
渡された判定結果に従って、分岐成立時であれば、図5
に示すように分岐先命令target1およびその次の
命令target2の(キャッシュメモリ等からの)読
み出し(フェッチ)を開始する。
【0077】以上に述べたように、本実施例において
は、条件付き分岐命令brの分岐の成否判定(条件判
定)に用いる条件フラグを確定するのに必要な、当該命
令brに先行する所定種類の命令(ここでは比較命令c
mp)のEサイクルが、この先行命令(比較命令cm
p)と並行して行われる他の命令(ここではメモリ参照
命令ld)でキャッシュミスを起こした等の要因により
パイプラインホールドされて、通常より延びる場合に
は、その旨が命令実行機構4から命令解析機構3に通知
される。
【0078】命令解析機構3は、条件付き分岐命令br
の解析時に、命令実行機構4からパイプラインホールド
が通知されて、当該分岐命令brの先行命令(比較命令
cmp)のEサイクルが延びることを検出すると、当該
命令brの投機的実行を行わずに、命令実行機構4から
の比較結果取得通知を待って、当該命令brの分岐の成
否を確定的に判定する。したがって、この判定結果に従
う命令のフェッチ動作は、たとえキャッシュミス等を起
こしても無駄になることがない。
【0079】これに対し、従来提案されている投機的実
行制御機能を有するプロセッサでは、分岐命令brに先
行する所定種類の命令(比較命令cmp)のEサイクル
が、この先行命令(比較命令cmp)と並行して行われ
る命令(メモリ参照命令ld)でキャッシュミスを起こ
した等の要因により延びる場合でも、当該分岐命令br
の投機的実行が無条件で行われてしまう。ところが、投
機的実行により分岐先の命令target1がたとえ1
サイクルでフェッチできたとしても、上記のように分岐
命令rの先行命令(比較命令cmp)のEサイクルが延
びていることから、そのEサイクルが終了しない(パイ
プラインホールドが解除されない)限り、上記フェッチ
された分岐先命令target1はEサイクルに入れ
ず、投機的実行の利点が生じない。もし、条件付き分岐
命令brが本当は分岐しない条件の場合で、その分岐先
命令target1のフェッチでキャッシュミスなどが
起こると、実行されない命令のフェッチに複数のサイク
ルを費やすことになり、全く無駄となる。
【0080】[動作例#2]次に、比較命令cmp、条
件付き分岐命令br、命令next1、命令next
2、命令next3、命令next4の順の並びの命令
列を含むプログラムが実行される場合の動作を、図2乃
至図4のフローチャートおよび図6のタイミングチャー
トを参照して説明する。なお、上記命令next1,n
ext2,next3,next4は条件付き分岐命令
brの後続の命令列であり、そのうち命令next1は
遅延命令である。また、条件付き分岐命令brの分岐先
の命令はtarget1、その次の命令はtarget
2であるものとする。
【0081】まず、サイクルT1の開始時には、既に比
較命令cmp、条件付き分岐命令br、命令(遅延命
令)next1および命令next2が命令バッファ2
にフェッチされているものとする。そして、この命令バ
ッファ2にフェッチされていた命令列のうち、比較命令
cmpおよび条件付き分岐命令brが命令解析機構3に
移されて、当該比較命令cmpおよび条件付き分岐命令
brの処理内容を解析する処理(Dサイクル)が、命令
解析機構3により、図6に示すようにサイクルT1で行
われたものとする。
【0082】命令解析機構3は、サイクルT1の命令解
析処理において、(前記動作例#1の場合と同様に)解
析対象とする命令が条件付き分岐命令であるか否かを調
べ(ステップS1)、この例のように条件付き分岐命令
(ここでは条件付き分岐命令br)であるならば、更に
パイプラインホールド通知の有無を調べる(ステップS
2)。このサイクルT1の例では、パイプラインホール
ド通知は無い。
【0083】この場合、命令解析機構3は、当該命令解
析機構3内のフラグ情報保持部32に、投機的分岐先番
地を発行済みであること(投機的実行状態にあること)
を示す有効なフラグ情報がセットされているか否かを調
べ(ステップS6)、この例のようにセットされていな
いならば、条件付き分岐命令brの投機的解析を実行す
る(ステップS7)。即ち命令解析機構3は、条件付き
分岐命令brに先行する比較命令cmpの比較結果が確
定するのを待たずに、例えば分岐成立を仮定して分岐先
番地(投機的分岐先番地)を計算する。
【0084】命令解析機構3は、サイクルT1において
上記した条件付き分岐命令brの投機的解析実行を終了
すると、この実行により求めた投機的分岐先番地を経路
31を介して命令読み出し機構1に発行し、投機的解析
の完了を通知する(ステップS8)。そして命令解析機
構3は、投機的分岐先番地を発行したこと(即ち投機的
実行状態にあること)を表す有効なフラグ情報を当該命
令解析機構3内のフラグ情報保持部32にセットする
(ステップS9)。このフラグ情報は、後述するよう
に、或る分岐命令の投機的実行が完了しない状態で、別
の条件付き分岐命令のDサイクルが開始されること(即
ち投機的実行の重なりが生じること)を検出するのに用
いられる。なお、このフラグ情報セットは、ステップS
7の投機的解析実行の際に行われても構わない。
【0085】さて、条件付き分岐命令brの投機的解析
(Dサイクル)が行われるサイクルT1では、命令読み
出し機構1において、当該分岐命令brの後続命令ne
xt1,next2に続く命令next3,next4
の読み出し(Fサイクル)が行われる。即ち、命令ne
xt3,next4のFサイクルが、条件付き分岐命令
brのDサイクルと重なって行われる。
【0086】もし、この命令next3,next4の
読み出し(フェッチ)に際してキャッシュミスが発生
し、その読み出しサイクル(Fサイクル)が当該サイク
ルT1だけで完了せずに複数サイクルを要する場合は、
命令解析機構3から命令読み出し機構1に対して発行さ
れた投機的分岐先番地に基づく分岐先命令(ここでは命
令target1,target2)の読み出しを、次
のサイクルT2において行うことができなくなる。
【0087】ところが、その後に比較命令cmpの比較
結果が確定したときに、それに続く条件付き分岐命令b
rが本当に分岐する結果であるならば、条件付き分岐命
令brの次の命令(遅延命令)next1より更に後の
命令である命令next3,命令next4の読み出し
(フェッチ)に複数サイクルを要したことは無駄となる
(従来提案されている投機的実行制御機能を有するプロ
セッサで、このような無駄が発生する)。
【0088】そこで本実施例では、このような無駄な命
令読み出しを回避するために、命令読み出し機構1にお
ける命令読み出しに際して(その読み出しに複数サイク
ルを要する)キャッシュミスが発生すると(ステップS
31)、命令読み出し機構1はまず、命令解析機構3か
ら投機的解析の完了が通知されているか否かを調べるよ
うにしている(ステップS32)。
【0089】もし、サイクルT1における命令next
3,next4の読み出し(Fサイクル)でキャッシュ
ミスが発生し、その同じサイクルT1(即ち命令nex
t3,next4のFサイクルと重なった条件付き分岐
命令brのDサイクル)で、上記したように命令解析機
構3から命令読み出し機構1に対して投機的解析の完了
が通知された場合、命令読み出し機構1は、命令nex
t3,next4の読み出し(Fサイクル)を、図6に
示すように当該サイクルT1のみで中止する(ステップ
S33)。
【0090】そして命令読み出し機構1は、次のサイク
ルT2では、サイクルT1において命令解析機構3から
発行された投機的分岐先番地に基づく分岐先命令(ここ
では命令target1,target2)の読み出し
を開始する。
【0091】一方、命令next3,next4の読み
出しでキャッシュミスが発生しなかった場合、即ち命令
next3,next4の読み出しが1サイクルで完了
できる場合、或いは命令解析機構3から投機的解析の完
了通知がなかった場合(命令next3,next4が
条件付き分岐命令brの次の命令より更に後の命令でな
く、したがってそのFサイクルが条件付き分岐命令br
のDサイクルと重ならない場合)には、命令読み出し機
構1は、キャッシュミスの発生の有無に関係なく、その
命令next3,next4の読み出しを継続する(ス
テップS34)。
【0092】さて、サイクルT2では、比較命令cmp
および条件付き分岐命令brは命令実行機構4に移り、
当該比較命令cmpおよび条件付き分岐命令brの実行
処理(Eサイクル)が開始される。
【0093】命令実行機構4は、このサイクルT2にお
いて、比較命令cmpの比較結果を求めると、当該サイ
クルT2の終了時に命令解析機構3に対して比較結果確
定通知割り込みを発行する。
【0094】命令解析機構3は、この割り込みを受け付
けると、先の条件付き分岐命令brの投機的実行が完了
したものとして、当該命令解析機構3内のフラグ情報保
持部32にセットしておいたフラグ情報(投機的分岐先
番地の発行済み情報)をクリアする(ステップS2
1)。
【0095】なお、次のサイクルT3では、命令実行機
構4での実行により求められた比較命令cmpの比較結
果が当該比較命令cmpおよび条件付き分岐命令brと
共に実行結果判定機構5に送られる。実行結果判定機構
5は、命令解析機構3から比較命令cmpの比較結果を
受け取ると、当該比較結果が確定したものとして、当該
比較結果をもとに条件付き分岐命令brの実際の分岐成
立/不成立の判定を行う。そして実行結果判定機構5
は、分岐成立時であれば、命令実行機構4における命令
next2の実行を無効化し、分岐不成立時であれば、
命令解析機構3における命令target1,targ
et2の解析処理を無効化する。
【0096】以上のように、本実施例における命令読み
出し機構1は、条件付き分岐命令のDサイクルと当該分
岐命令の次の命令(遅延命令)より更に後の命令(後続
命令)のFサイクルとが重なり、且つ当該後続命令の読
み出しが開始されたサイクルでキャッシュミスが発生し
たために当該Fサイクルが1サイクルで終了しないこと
を検出した場合には、当該後続命令の読み出しをそのサ
イクルのみで中止する。そして命令読み出し機構1は、
条件付き分岐命令のDサイクルでの投機的解析により命
令解析機構3から発行される投機的な分岐先番地に基づ
く分岐先命令の読み出しに切り替える。これにより、上
記の無駄な命令読み出しを回避することができる。
【0097】[動作例#3]次に、比較命令cmp1、
条件付き分岐命令br1、比較命令cmp2、条件付き
分岐命令br2、命令next1、命令next2の順
の並びの命令列を含むプログラムが実行される場合の動
作を、図2乃至図4のフローチャートおよび図7のタイ
ミングチャートを参照して説明する。なお、比較命令c
mp2は条件付き分岐命令br1の遅延命令、命令ne
xt1は条件付き分岐命令br2の遅延命令である。ま
た、条件付き分岐命令br1の分岐先の命令はtarg
et11であり、以降target12,target
13,target14と続くものとする。同様に、条
件付き分岐命令br2の分岐先の命令はtarget2
1であり、以降target22と続くものとする。
【0098】まず、サイクルT1の開始時には、既に比
較命令cmp1、条件付き分岐命令br1、比較命令c
mp2(遅延命令)および条件付き分岐命令br2が命
令バッファ2にフェッチされているものとする。そし
て、この命令バッファ2にフェッチされていた命令列の
うち、比較命令cmp1および条件付き分岐命令br1
が命令解析機構3に移されて、当該比較命令cmp1お
よび条件付き分岐命令br1の処理内容を解析する処理
(Dサイクル)が、命令解析機構3により、図7に示す
ようにサイクルT1で行われたものとする。
【0099】命令解析機構3は、サイクルT1の命令解
析処理において、(前記動作例#2の場合と同様に)解
析対象とする命令が条件付き分岐命令であるか否かを調
べ(ステップS1)、この例のように条件付き分岐命令
(ここでは条件付き分岐命令br1)であるならば、更
にパイプラインホールド通知の有無を調べる(ステップ
S2)。このサイクルT1の例では、パイプラインホー
ルド通知は無い。
【0100】この場合、命令解析機構3は、当該命令解
析機構3内のフラグ情報保持部32に、投機的分岐先番
地を発行済みであることを示す有効なフラグ情報がセッ
トされているか否かを調べ(ステップS6)、この例の
ようにセットされていないならば、条件付き分岐命令b
r1の投機的解析を実行する(ステップS7)。
【0101】命令解析機構3は、サイクルT1において
上記した条件付き分岐命令br1の投機的解析実行を終
了すると、この実行により求めた投機的分岐先番地を経
路31を介して命令読み出し機構1に発行し、投機的解
析の完了を通知する(ステップS8)。そして命令解析
機構3は、投機的分岐先番地を発行したことを表す有効
なフラグ情報を当該命令解析機構3内のフラグ情報保持
部32にセットする(ステップS9)。
【0102】この条件付き分岐命令br1の投機的解析
(Dサイクル)が行われるサイクルT1では、命令読み
出し機構1において、当該分岐命令br1の後続命令で
ある比較命令cmp2および条件付き分岐命令br2に
続く命令next1,next2の読み出し(Fサイク
ル)が行われる。
【0103】次のサイクル2では、サイクルT1で解析
された比較命令cmp1および条件付き分岐命令br1
が命令実行機構4に移り、当該比較命令cmp1および
条件付き分岐命令br1の実行処理(Eサイクル)が開
始される。また、このサイクルT2では、比較命令cm
p1および条件付き分岐命令br1に続く比較命令cm
p2(条件付き分岐命令br1の遅延命令)および条件
付き分岐命令br2が命令バッファ2から命令解析機構
3に取り込まれ、当該比較命令cmp2および条件付き
分岐命令br2の解析処理が開始される。
【0104】命令解析機構3は、条件付き分岐命令br
2の解析を行う際には(ステップS1)、パイプライン
ホールド通知の有無を調べる(ステップS2)。もし、
パイプラインホールド通知が無い場合には、命令解析機
構3は、当該命令解析機構3内のフラグ情報保持部32
に、投機的分岐先番地を発行済みであることを示す有効
なフラグ情報がセットされているか否かを調べる(ステ
ップS6)。ここでは、先の条件付き分岐命令br1の
投機的解析の完了時に、有効なフラグ情報がセットされ
ている。
【0105】この場合、命令解析機構3は、現在解析対
象となっている条件付き分岐命令br2より先に解析さ
れた条件付き分岐命令(ここでは条件付き分岐命令br
1)の投機的実行が完了していないものと判断する。そ
して命令解析機構3は、2つの投機的実行が重ならない
ように、先に解析された条件付き分岐命令br1の投機
的実行が完了するまで、即ちフラグ情報保持部32内の
有効なフラグ情報がクアされるまで、現在解析対象とな
っている条件付き分岐命令br2の投機的実行を待つ
(ステップS10)。
【0106】さて、このサイクルT2では、命令読み出
し機構1は、先のサイクルT1において命令解析機構3
から発行された条件付き分岐命令br1の投機的な分岐
先番地に基づく分岐先命令(ここでは命令target
11,target12)の読み出しを開始する。
【0107】また、サイクルT2において、命令実行機
構4が比較命令cmp1を実行した結果、その比較結果
が求まると、当該サイクルT2の終了時に命令実行機構
4から命令解析機構3に対して比較結果確定通知割り込
みが発行される。
【0108】命令解析機構3は、この割り込みを受け付
けると、先の条件付き分岐命令br1の投機的実行が完
了したものとして、当該命令解析機構3内のフラグ情報
保持部32にセットしておいた有効なフラグ情報をクリ
アする(ステップS21)。さて、サイクルT2の次の
サイクルT3では、命令実行機構4での実行により求め
られた比較命令cmp1の比較結果が当該比較命令cm
p1および条件付き分岐命令br1と共に実行結果判定
機構5に送られる。実行結果判定機構5は、命令解析機
構3から比較命令cmp1の比較結果を受け取ると、当
該比較結果が確定したものとして、当該比較結果をもと
に条件付き分岐命令br1の実際の分岐成立/不成立の
判定を行う。この実行結果判定機構5での条件付き分岐
命令br1の分岐成立/不成立判定結果は、経路51を
介して命令実行機構4に、経路52を介して命令解析機
構3に、そして経路53を介して命令読み出し機構1
に、それぞれ通知される。
【0109】命令解析機構3は、サイクルT2の終了時
に命令実行機構4から発行された比較結果確定通知割り
込みにより、当該命令解析機構3内のフラグ情報保持部
32にセットされていた有効なフラグ情報がクリアされ
たことを検出すると(ステップS10)、先の条件付き
分岐命令br1の投機的実行が完了し、したがって現在
解析対象となっている条件付き分岐命令br2の投機的
実行を開始することが可能であると判断する。但し、先
の条件付き分岐命令br1が本当に分岐する場合に、条
件付き分岐命令br2の解析(投機的解析)処理を行う
ことは無駄である。
【0110】そこで命令解析機構3は、上記の如くフラ
グ情報がクリアされたことを検出すると(ステップS1
0)、まず、先の条件付き分岐命令br1の実際の分岐
の成否を、実行結果判定機構5から通知された分岐成立
/不成立判定結果をもとに調べる(ステップS11)。
【0111】もし、分岐成立ならば、即ち本当に分岐す
る場合には、命令解析機構3は、現在解析対象となって
いる条件付き分岐命令br2の解析処理を無効化する
(ステップS12)。同時に命令解析機構3は、条件付
き分岐命令br2の遅延命令である命令next1の解
析処理も無効化する。このとき命令読み出し機構1は、
命令next1の次の命令である命令next2を、実
行結果判定機構5からの分岐成立通知に応じて、命令バ
ッファ2から追い出す。
【0112】これに対し、先の条件付き分岐命令br1
が分岐不成立ならば、即ち本当は分岐しない場合には
(図7は、この場合が示されている)、命令解析機構3
は、現在解析対象となっている条件付き分岐命令br2
の投機的解析を実行する(ステップS7)。同時に命令
解析機構3は、分岐不成立となった条件付き分岐命令b
r1の分岐先の2命令であるtarget11,tar
get12の解析処理を無効化する。このとき命令読み
出し機構1は、実行結果判定機構5からの分岐不成立通
知に応じて、target13,target14の読
み出しを無効化する。
【0113】さて、命令解析機構3は、上記ステップS
7で条件付き分岐命令br2の投機的解析を実行する
と、この投機的解析の実行により求めた投機的な分岐先
番地(ここでは、target21を示すアドレス)を
経路31を介して命令読み出し機構1に発行して、投機
的解析の完了を通知し(ステップS8)、更に有効なフ
ラグ情報を当該命令解析機構3内のフラグ情報保持部3
2にセットする(ステップS9)。
【0114】命令読み出し機構1は、命令実行機構4か
ら発行された分岐先番地をもとに、次のサイクルT4に
おいて、条件付き分岐命令br2の分岐先の2命令(こ
こではtarget21,target22)の読み出
しを行う。
【0115】以上のように、本実施例における命令解析
機構3は、先の条件付き分岐命令(br1)の投機的実
行が完了する前に、新たな条件付き分岐命令(br2)
の投機的解析が必要となったこと(即ち投機的実行の重
なりが生じること)を、フラグ情報保持部32内の有効
なフラグ情報により検出した場合には、当該フラグ情報
がクリアされ(即ち、先の条件付き分岐命令(br1)
の実際の分岐判定に必要な先行比較命令cmp1の比較
結果が確定し)、且つ実行結果判定機構5から先行比較
命令cmp1の比較結果に従う分岐判定で分岐不成立と
なったことが通知された場合だけ、新たな条件付き分岐
命令(br2)の投機的解析の実行を開始する。
【0116】このような制御の結果、2つの投機的実行
が重なることが回避されるため、2つの投機的実行が重
なった場合の制御が不要となり、従来に比べて制御の簡
略化を図ることができる。これにより、ハードウェアの
ロジック量を減らし、プロセッサのチップ面積を小さく
することができる。
【0117】
【発明の効果】以上詳述したようにこの発明によれば、
条件付き分岐命令の先行命令の実行サイクルが、その先
行命令の更に直前の命令の実行で例えばメモリ参照が行
われてキャッシュミスを発生した等の要因でパイプライ
ンがホールドされ、通常より延びる場合には、分岐先の
命令の読み出しを投機的に行うことは無駄であるとし
て、条件付き分岐命令の投機的実行を行わずに条件フラ
グが確定してから分岐の成否を確定的に判定する構成と
したので、パイプラインがホールドされていても無条件
で分岐先命令を投機的に読み出すものと異なり、無駄な
命令読み出しが発生するのを回避することができる。
【0118】また、この発明によれば、条件付き分岐命
令の命令解析サイクルと当該分岐命令の次の命令(遅延
命令)より更に後の命令(後続命令)の命令読み出しサ
イクルとが重なり、且つ当該後続命令の読み出しが開始
されたサイクルでキャッシュミス等が発生したために当
該命令読み出しサイクルが1サイクルで終了しない場合
には、当該後続命令の読み出しを投機的に行うことは無
駄であるとして、当該後続命令の読み出しをそのサイク
ルのみで中止し、条件付き分岐命令の命令解析サイクル
での投機的解析により求められる分岐先番地に基づく分
岐先命令の投機的な読み出しに切り替える構成としたの
で、当該後続命令の読み出しに複数サイクルを要する場
合でも無条件に最後まで読み出しを続けるものと異な
り、条件付き分岐命令が本当に分岐する結果となった場
合の上記後続命令の読み出しに要する時間の無駄が解消
できる。
【0119】また、この発明によれば、条件付き分岐命
令が投機的に解析される際には、投機的実行が行われて
いる先行する条件付き分岐命令が存在するか否かを調
べ、存在する場合には、投機的実行の重なりが生じるも
のとして、少なくとも先の条件付き分岐命令の投機的実
行の成否が確定した後に、新たな条件付き分岐命令の命
令解析の実行を開始させる構成としたので、2つの投機
的実行が重なることが回避され、したがって2つの投機
的実行が重なった場合の制御が不要となり、従来に比べ
て制御の簡略化を図ることができる。また制御が簡略化
されることから、ハードウェアのロジック量を減らし、
プロセッサのチップ面積を小さくすることもできる。
【0120】このように、この発明によれば、条件付き
分岐命令の投機的実行に伴い無駄な処理が行われるのを
回避でき、CPU処理の遅延防止が図れる。
【図面の簡単な説明】
【図1】この発明の一実施例に係る投機的実行制御機能
を有するプロセッサの概略構成を示すブロック図。
【図2】図1中の命令解析機構3の動作を条件付き分岐
命令の命令解析処理時を中心に説明するためのフローチ
ャート。
【図3】図1中の命令解析機構3が命令実行機構4から
の比較結果確定通知割り込みを受け付けた際の動作を説
明するためのフローチャート。
【図4】図1中の命令読み出し機構1の動作を説明する
ためのフローチャート。
【図5】同実施例において、条件付き分岐命令brの解
析時に、当該分岐命令brの先行命令である比較命令c
mpのEサイクルが、この比較命令cmpと並行して実
行されるメモリ参照命令ldでキャッシュミスを起こし
た結果パイプラインがホールドされて延びる場合の動作
を説明するためのタイミングチャート。
【図6】同実施例において、条件付き分岐命令brのD
サイクルと当該分岐命令brに後続する2命令next
1,nextより更に後続の命令(後続命令)next
3,next4のFサイクルとが重なり、且つ当該後続
命令next3,next4の読み出しが開始されたサ
イクルでキャッシュミスが発生した場合の動作を説明す
るためのタイミングチャート。
【図7】同実施例において、先の条件付き分岐命令br
1の投機的実行が完了する前に、新たな条件付き分岐命
令br2の投機的解析が必要となった場合(投機的実行
の重なりが生じる場合)の動作を説明するためのタイミ
ングチャート。
【図8】比較命令の基本動作のタイミングチャート。
【図9】条件付き分岐命令の基本動作のタイミングチャ
ート
【図10】比較命令と条件付き分岐命令が連続する場合
の一般的な動作タイミングチャート。
【図11】比較命令と条件付き分岐命令が連続する場合
の一般的な動作タイミングチャート。
【図12】従来提案されている投機的実行制御機能を有
するプロセッサにおける動作を比較命令と条件付き分岐
命令が連続する場合を例に説明するためのタイミングチ
ャート。
【図13】従来提案されている投機的実行制御機能を有
するプロセッサにおける動作を比較命令と条件付き分岐
命令が連続する場合を例に説明するためのタイミングチ
ャート。
【図14】従来提案されている投機的実行制御機能を有
するプロセッサにおける動作を、投機的実行の重なりが
発生する場合を例に説明するためのタイミングチャー
ト。
【符号の説明】
1…命令読み出し機構(命令読み出し遅延検出手段、命
令読み出し制御手段)、2…命令バッファ、3…命令解
析機構(延長検出手段、投機的実行抑止手段、投機的実
行重なり検出手段、投機的解析実行開始制御手段、フラ
グ情報操作手段)、4…命令実行機構、5…実行結果判
定機構、6…レジスタファイル、32…フラグ情報保持
部、S2…ステップ(延長検出手段)、S3,S4…ス
テップ(投機的実行抑止手段)、S6…ステップ(投機
的実行重なり検出手段)、S9,S21…フラグ情報操
作手段、S10,S11,S7…ステップ(投機的実行
開始制御手段)、S31,S32…ステップ(命令読み
出し遅延検出手段)、S33…ステップ(命令読み出し
制御手段)。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−200722(JP,A) 特開 昭64−31228(JP,A) 特開 昭57−150039(JP,A) 特開 平3−113535(JP,A) 特開 昭64−57338(JP,A) 特開 平2−242338(JP,A) 特開 昭63−148329(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 先行命令の実行結果を分岐条件とする分
    岐命令が検出されると、後続の命令実行に加え、前記分
    岐命令の分岐先の命令の読み出し及び実行を行い、前記
    分岐命令の判定結果に基づき一方の命令実行を無効化す
    る、投機的実行制御機能を有するプロセッサであって、 前記先行命令の実行サイクルが当該先行命令の直前の命
    令の実行サイクルに連動して延びることを検出する延長
    検出手段と、 該延長検出手段により前記先行命令の実行サイクルが延
    びることが検出されると、前記投機的実行を抑止し、前
    記分岐命令の条件が確定してから分岐の成否を判定する
    投機的実行抑止手段とを具備することを特徴とする投機
    的実行制御機能を有するプロセッサ。
  2. 【請求項2】 先行命令の実行結果を分岐条件とする分
    岐命令が検出されると、後続の命令実行に加え、前記分
    岐命令の分岐先の命令の読み出し及び実行を行い、前記
    分岐命令の判定結果に基づき一方の命令実行を無効化す
    る、投機的実行制御機能を有するプロセッサであって、 前記分岐命令の命令解析サイクルと同じサイクルで、当
    該分岐命令に後続する遅延命令より更に後続の命令の読
    み出しが開始される際に、その読み出しに複数サイクル
    を要することを検出する命令読み出し遅延検出手段と、 該命令読み出し遅延検出手段により前記後続命令の読み
    出しに複数サイクルを要することが検出された場合に
    は、当該後続命令の読み出し動作を、そのサイクルのみ
    で中止させ、次のサイクルで、前記分岐命令の分岐先の
    命令の投機的な読み出しを行わせる命令読み出し制御手
    段とを具備することを特徴とする投機的実行制御機能を
    有するプロセッサ。
JP5336850A 1993-12-28 1993-12-28 投機的実行制御機能を有するプロセッサ Expired - Fee Related JP3037863B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5336850A JP3037863B2 (ja) 1993-12-28 1993-12-28 投機的実行制御機能を有するプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5336850A JP3037863B2 (ja) 1993-12-28 1993-12-28 投機的実行制御機能を有するプロセッサ

Publications (2)

Publication Number Publication Date
JPH07200293A JPH07200293A (ja) 1995-08-04
JP3037863B2 true JP3037863B2 (ja) 2000-05-08

Family

ID=18303240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5336850A Expired - Fee Related JP3037863B2 (ja) 1993-12-28 1993-12-28 投機的実行制御機能を有するプロセッサ

Country Status (1)

Country Link
JP (1) JP3037863B2 (ja)

Also Published As

Publication number Publication date
JPH07200293A (ja) 1995-08-04

Similar Documents

Publication Publication Date Title
EP1003095B1 (en) A computer system for executing branch instructions
JP2504830Y2 (ja) デ―タ処理装置
US6760835B1 (en) Instruction branch mispredict streaming
US20040123081A1 (en) Mechanism to increase performance of control speculation
US4763253A (en) Microcomputer with change of flow
US7962726B2 (en) Recycling long multi-operand instructions
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JP3683248B2 (ja) 情報処理装置及び情報処理方法
JP3037863B2 (ja) 投機的実行制御機能を有するプロセッサ
JP2694799B2 (ja) 情報処理装置
JPH05241827A (ja) 命令バッファ制御装置
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP2666737B2 (ja) トレースメモリ内蔵マイクロプロセッサおよびトレース方法
JP2944563B2 (ja) パイプライン型情報処理装置
JP3766772B2 (ja) 情報処理装置、例外回復処理方法および記録媒体
JP4423757B2 (ja) 例外処理システム及び方法、並びに、プロセッサ
JP3112861B2 (ja) マイクロプロセッサ
JPH08212068A (ja) 情報処理装置
JP3558481B2 (ja) データ処理装置
JPH027128A (ja) 情報処理装置
JP2000347931A (ja) キャッシュメモリおよびキャッシュメモリ制御方法
JPH10154072A (ja) パイプライン処理装置
JP3102846B2 (ja) ロードアドレスキャッシュ装置及び方法
JP2002063154A (ja) ベクトルメモリアクセス時スカラメモリアクセス命令発行制御方式
JPH08286914A (ja) メモリ制御装置

Legal Events

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

Free format text: PAYMENT UNTIL: 20080225

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090225

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees