JPH0795271B2 - 分岐命令実行装置 - Google Patents

分岐命令実行装置

Info

Publication number
JPH0795271B2
JPH0795271B2 JP2158825A JP15882590A JPH0795271B2 JP H0795271 B2 JPH0795271 B2 JP H0795271B2 JP 2158825 A JP2158825 A JP 2158825A JP 15882590 A JP15882590 A JP 15882590A JP H0795271 B2 JPH0795271 B2 JP H0795271B2
Authority
JP
Japan
Prior art keywords
instruction
branch
signal
condition
conditional
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
Application number
JP2158825A
Other languages
English (en)
Other versions
JPH03129441A (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.)
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
Publication of JPH03129441A publication Critical patent/JPH03129441A/ja
Publication of JPH0795271B2 publication Critical patent/JPH0795271B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔概要〕 マイクロプロセッサにおいてパイプライン処理を用いて
順次各命令語を実行して分岐命令のトレースを行う分岐
命令実行装置に関し、 この種の分岐命令トレース方法において、条件付き分岐
命令がデコードされた場合においても、パイプライン処
理に乱れが生じないようにして、処理速度の低下を防止
することを目的とし、 パイプライン処理により命令を順次実行する命令実行装
置において、条件付き分岐命令がデコードされた場合
に、当該条件の判定結果を待つことなく条件成立を推定
して分岐先の命令の実行の有無を決める分岐先実行フラ
グを立て、その後実際の判定結果が出た時点で前記分岐
先実行フラグの内容を修正するように構成する。
〔産業上の利用分野〕
本発明は、マイクロプロセッサにおいてパイプライン処
理を用いて順次各命令語を実行して分岐命令のトレース
を行う分岐命令実行装置に関する。
この種のトレースは、デバッグ技術の一つとして使用さ
れるもので、プログラムが正しく動作しているか否かを
知るために、プログラム中の命令の実行順序や変数の値
を自動的に出力させるものである。
〔従来の技術〕
パイプライン処理を行うマイクロプロセッサの分岐トレ
ース(分岐を行った分岐命令のトレース)に関して、条
件付き分岐命令の条件判定の結果が当該命令の処理の終
了まで出ないような場合、デバッグ例外発生を示すビッ
トを有するレジスタの書き込みは、当該命令処理の最終
サイクルで行われるので、分岐成立か否かの結果を見て
から前記レジスタの書き込みを行うと、パイプライン処
理に乱れが生じてしまう。
〔発明が解決しようとする課題〕
上述の如く、従来の分岐命令トレースにおいては、条件
付き分岐命令がデコードされた場合、当該条件の判定結
果を待ってから、デバッグ例外発生ビットを立てるよう
にしていた。
その為、パイプライン処理に乱れが生じて、パイプライ
ン処理本来の目的である処理速度の高速化が害されると
いう問題点があった。
本発明は、この種の分岐命令トレース方法において、条
件付き分岐命令がデコードされた場合においても、パイ
プライン処理に乱れが生じないようにして、処理速度の
低下を防止することを目的とする。
〔課題を解決するための手段〕
本発明の原理説明図を第1図に示す。同図において、命
令デコード部1では、条件付き分岐命令をデコードした
場合、分岐判定部3に対しその旨を通知する(a1)。
演算実行部3では、命令デコード部1からの通知(a1)
とトレースのモード制御などを行うデバッグ制御部4か
らの分岐トレースの指示(a3)に基づいて分岐成立の予
測を行い、分岐成立の確率が高い場合には、演算実行部
2からの通知(a2)が来る前に、分岐成立を推定して、
分岐先実行ビット例えばデバッグ例外発生ビットを立て
るべき指示を発生する(a4)。
その後、演算実行部2からの通知(a2)を受取り条件判
定を行い、分岐不成立の場合には、デバッグ制御部4に
デバッグ例外発生ビットの修正指示を出す(a5)。
デバッグ制御部4は、デバッグ制御に関するレジスタを
有し、分岐トレースの指示を分岐判定部に通知し(a
3)、前記ビットを立てるべき指示(a4)を受けて前記
レジスタ内デバッグ例外発生ビットを立てる。
また、分岐判定部3からの修正指示(a5)によって、前
記ビットの修正を行うものである。
分岐方向の予測は、例えば無条件分岐,ループ命令等の
ように、分岐確率が高い条件命令の場合には、分岐成立
方向に予測する(命令種別による予測)。
また、過去の分岐判定の履歴により、次にその条件分岐
命令を実行した際、その分岐方向を予測する(分岐予測
テーブルによる予測)。
このように、本発明方式は、パイプライン処理を用いて
順次各命令語を実行するマイクロプロセッサに関し、そ
の実行中に分岐した命令語を順次トレースする場合にお
いて、条件付き分岐命令がデコードされた場合には、当
該条件の判定結果を待つことなく直ちに条件成立を推定
してデバッグ例外発生ビットを立て、その後実際の判定
結果が出た時点でデバッグ例外発生ビットの内容を修正
することを特徴とするものである。
〔作用〕
以上の構成によれば、分岐トレースの指示(a3)がある
場合、条件分岐命令をデコードした際(a1)、分岐方向
の予測を行い、分岐成立の確率が高い場合には、条件判
定結果(a2)を待たずに、分岐成立を予測して(a4)デ
バッグ例外発生ビットを立てるようにし、分岐不成立で
あった場合には(a5)、前記ビットの修正を行うように
している。
従って、条件判定結果が命令の処理終了まで分からない
ような条件分岐命令の分岐トレースを行った場合には、
デバッグ例外発生ビットの書き込みも当該命令処理中に
行われる為、パイプライン処理の乱れを抑えることがで
きる。
〔実施例〕
第2図は本発明の一実施例を説明する図であり、条件付
き分岐命令の分岐トレースにおけるパイプライン処理の
ステージを示している。
同図に示されるように、サイクルで命令デコードが行
われ、サイクルマで条件の演算を行い、サイクルで
条件の判定及びレジスタの書き込みを行う条件付き分岐
命令に於いて、この命令が無条件分岐,ループ命令のよ
うに分岐確率が高い場合には、分岐成立を推定して、条
件判定結果を待たずに、サイクルでデバッグ例外発生
ビットに“1"が書き込まれる(図中(a)参照)。
その後、サイクルで実際の条件判定の結果、分岐成立
の場合には、デバッグ例外発生ビットの内容はそのまま
に保持される(図中(a)参照)。
これに対し、サイクルの実際の条件判定の結果、分岐
不成立の場合には、サイクルにおいてデバッグ例外発
生ビットのクリアが行われる(図中(b)参照)。
この場合、レジスタ書き込み処理ではなくリセット処理
なので、パイプライン処理には影響は与えない。
このように、上述した実施例によれば、条件付き分岐命
令の分岐トレースにおいて、分岐成立の確率が高いと予
測された場合には、分岐成立を推定して、デバッグ例外
発生ビットを立てるため、パイプライン処理の乱れを抑
制し、処理速度の低下を防止することができる。
第3図に本発明の一実施例をより具体的に示す。
命令実行部10は、メインメモリユニット(MMU)/キャ
ッシュ11から命令をフェッチし、それを解読し、演算す
る部分である。MMU/キャッシュ11からの命令、すなわち
マクロ命令は、命令デコーダ12にフェッチされて解読さ
れる。各命令を処理するルーチンは、マイクロプログラ
ムとして、マイクロROM13に格納される。フェッチされ
たマクロ命令のOPコードに対応するマイクロROM13内の
領域の先頭アドレスが命令デコーダ12から与えられる
と、マイクロROM13の出力は、制御信号として演算器14,
レジスタ15,あるいはメモリアクセス/制御レジスタ制
御回路16に与えられる。命令で処理されるデータはレジ
スタ15やMMU/キャッシュ11などから読出されて演算器14
で演算され結果がレジスタ15やMMU/キャッシュ11、また
はそれを通して外部メモリ(図示せず)などに書込まれ
る。第3図のMMU/キャッシュ11はアドレス変換のための
管理機構と内蔵キャッシュからなる。MMU/キャッシュ11
からデータの読み出し書き込みをする場合には、マイク
ロROM13からの制御信号は、メモリアクセス/制御レジ
スタ制御回路16に与えられる。メモリアクセス/制御レ
ジスタ制御回路16はマイクロROM13からの指示にもとづ
きメモリのリード/ライト要求の発生や制御レジスタの
リード/ライト指示などを行う。MMU/キャッシュ11は、
外部の装置とインターフェース17を介して接続されてい
る。外部装置から割り込み要求があると割り込み要求信
号が割込み/例外制御回路18に与えられ、その割り込み
が受け付けられた場合には、割り込みルーチンに移るべ
きマイクロアドレスがマイクロROM13に与えられる。パ
イプライン制御回路19は、デコード(DC)ステージ,ア
ドレス演算(AC)ステージ,マイクロ読み出し(MI)ス
テージ,演算(OE)ステージ,結果の書き込み(OW)ス
テージ,すなわちDC,AC,MI,DE,OWの各ステージの進行を
監視し、また、キャッシュミスヒットによる外部メモリ
アクセスなどの待ち条件により必要に応じてステージの
状態保持を制御する。またDCステージで有効な命令デコ
ードを行った直後にストローブ信号を1にする。
分岐判定部20内の判定回路21は、条件分岐命令が成立し
たかどうかを演算器14からの状態フラグを用いて判定
し、条件が成立する場合には、条件成立信号を1に、条
件不成立の場合には、条件不成立信号を1にする。本発
明では、分岐する確率の高い条件分岐命令、分岐する確
率の低い条件分岐命令の違いにより、分岐制御を行う論
理回路よりなる制御回路を分岐判定部20に有する。
命令デコーダ12から条件分岐コード、またはマイクロRO
M13からマイクロ指示が与えられ、そのどちらかを選択
して、得られる分岐条件が判定回路21に与えられる。go
to文のような無条件分岐あるいは、Do loopのような分
岐確率の高い条件分岐命令(条件分岐1)、あるいは1F
分のように、分岐する確率の低い条件分岐命令(条件分
岐2)の区別を示す信号、すなわち、無条件分岐信号,
条件分岐1信号,条件分岐2信号がそれぞれ命令デコー
ダ12から出力される。それらの制御信号が分岐判定部20
に与えられ、無条件分岐信号と条件分岐1信号が活性化
されている場合には、分岐条件の条件制御を待たずに、
分岐を実行する制御が行われる。すなわち、無条件分岐
と条件分岐1の制御信号は、OR回路30に与えられ、その
出力は、分岐が行われたときだけトレース条件となるフ
ロートレースのモードであることを示す信号と、AND回
路32でアンドがとられる。そのAND回路32の出力が1と
なると、OR回路34を介してAND回路35に与えられる。し
たがって、パイプライン回路19からのストローブ信号が
1のときに、すなわちデコード終了直後にAND回路35の
出力が1になり、パイプラインディレイ回路37、OR回路
38を介してデバッグ制御レジスタ25のステータスをセッ
ト状態にする。またAND回路35の出力はOR回路36を通し
て割込み/例外制御回路18へデバッグ例外要求(即ちデ
バッグ例外発生フラグ)となり(第4図(c)のANDの
出力参照)、分岐判定を待たずして、デバッグルーチン
にJUMPすることになる。デバッグ例外発生フラグはパイ
プラインディレイ回路37で遅延された後、デバッグ制御
レジスタ25も制御する。JUMPしてしまったのち、パイプ
ライン動作の最後のステージ、すなわち演算結果を書き
込むOWステージで分岐実行に対する可否の判定がなされ
る。すなわち、演算器14からの状態フラグの内容の結
果、判定回路21に与えられる分岐条件が条件不成立であ
った場合には、条件不成立信号と、条件分岐1信号との
両方が、フロートレース状態においてAND回路33に入力
されると、デバッグ制御レジスタ25のデバッグステージ
状態をクリアする。また、デバッグルーチンはキャンセ
ルされることになる。
なお、OR回路34の入力には、ステップトレースすなわち
1命令実行ごとにトレース条件が成立するときに1とな
る信号が入力されている。以上の説明では、ステップト
レースは0としている。
本発明では、分岐条件の制御を待って、デバッグルーチ
ンにJUMPする場合も考慮する。分岐する確率の低い条件
分岐命令、すなわち条件分岐2信号が1である場合に
は、その条件が成立するか否かは、演算器14からの状態
フラグの観測によって決定され、パイプライン動作の場
合のOWステージで、この制御が行われる。すなわち、条
件が成立する場合には、条件成立信号が1で、条件分岐
2信号も1であるから、フロートレース状況では、AND
回路31の出力が1となり、この1がOR回路36を介してデ
バッグ制御レジスタ25のデバッグステータスの状態をセ
ットする。この場合には、デバッグルーチンにJUMPする
のは、条件分岐1信号の場合に比べて、遅れることとな
る。すなわ、本発明では、常に分岐する無条件分岐の場
合と、命令の種類や過去の履歴等で決められる分岐する
確率の高い条件分岐命令すなわち、条件分岐1に対して
は、命令の解読後、次の命令をキャンセルした後に即座
に、デバッグステータスをセットして、デバッグルーチ
ンに入る。
第3図において、上述したようにデバッグ制御レジスタ
25のセット信号によって、デバッグルーチンが実行され
る。このとき、デバッグルーチンの各命令は本発明では
CPU内部にたとえば、キャッシュの1部をROM化して格納
されている。したがって、デバッグルーチンもCPU内部
にMMU/キャッシュ11,命令実行部10、命令デコーダ12,分
岐判定部20,デバッグ制御部レジスタ25とともに、1chip
化されるので、条件分岐1信号の場合の実行をあいまっ
てデバッグルーチンを高速化することができる。
次に、本発明のパイプライン動作を説明する。
第4図(a)は従来例あるいは分岐確率の低い条件分岐
命令で分岐した場合のデバッグ処理である。
第4図(b)は本発明による分岐確率の高い条件分岐命
令で分岐した場合および無条件分岐のデバッグ処理であ
る。
第4図(a)の場合は、命令1が分岐確率の低い条件分
岐命令であるからに、その命令は、DCステージ,ACステ
ージ,MI,DE,OW,ステージの順に、それぞれ1のサイクル
づつ連続的に、各ステージが進行する。DCステージを見
れば、命令1のデコード、命令2のデコード、命令3の
デコード、命令4のデコードの各サイクルで行われる。
そして、命令2のデコードと命令1のアドレス計算は同
時に行われる。そして、命令1の条件分岐命令は、OEス
テージにおける演算器からの状態フラグをセンスして、
OWステージにおいて、分岐するかどうかが決定される。
条件が成立した場合に、命令2,命令3,命令4の実行をキ
ャンセルして、その命令1内に示されるアドレス、すな
わちジャンプ先のアドレスにJUMPする。しかしフロート
レース監視中の場合には、分岐先アドレスにジャンプす
るかわりにデバッグルーチンが起動され、命令1のOWス
テージ後に、デバッグルーチンの最初のステップのマイ
クロ読出しが行われる。
デバッグルーチンに入ると、DCステージに相当するマイ
クロ開始アドレス生成後MIステージ、OEステージの各ス
テージ状態が進んで、デバッグのサブルーチンが実行さ
れる。
第4図(b)の場合は、分岐命令1は、分岐確率の高い
条件分岐命令であるから、フロートレース監視中の場合
命令1のDCステージ後、命令1に後続する命令2のデコ
ードステージをキャンセルし、デバッグルーチンに即座
に入ることが可能である。
そして、命令1のOE,OWの実行時に、デバッグ1はMI,OE
ステージになっている。本発明では、条件分岐命令でも
分岐する確率の高いものは、命令1の実行完了を待たず
にデコード直後から後続命令をキャンセルしてデバッグ
処理に移るためのマイクロ処理を起動し、条件が成立し
なかった時はデバッグ処理に移るためのマイクロ処理を
キャンセルして後続命令のデコードからやり直す。
なお、デバッグ等の例外・割込処理はACステージを持た
ない。
第4図(c)は分岐判定部20の制御回路において分岐成
立,不成立が定まるタイミングをデバッグ制御レジスタ
25との関係を示したものである。
第4図(c)の場合、命令1のデコード結果により、パ
イプラインディレイ回路37は、フロートレースと条件分
岐1信号のANDによりAND回路32を介してセットされる。
そして、命令1がMIステージになったときに、即座にデ
バッグのDCステージが始まり、デバッグ制御レジスタ25
のステータス状態は、パイプラインディレイ回路37に出
力によってセットされる。パイプラインディレイ回路は
命令の進行にあわせて前記AND35の出力を遅延させ、命
令がOWステージに進んだ時にデバッグ制御レジスタのス
テータスのセットを指示する。OWステージまで待ってセ
ットしているのはそれ以前の命令で例外・割込などによ
り命令取消が行われた場合デバッグ制御レジスタの変化
を抑止するためである。もし命令1のOWステージにおい
て、分岐条件不成立と判定された場合には、命令1につ
づくデバッグルーチンはキャンセルされ、デバッグ制御
レジスタ25のステータス情報はリセットされる。その後
に、命令1に続く命令2,命令3が実行される。
第4図(c)下方には、分岐条件判定のタイミングを具
体的に示した。まずOEステージの前半でレジスタ15から
データを読み出し、OEステージの後半でこのデータに対
する演算が演算器(ALU)14で実行される。その結果、
状態フラグが生成されるのがOWステージの前半であっ
て、その状態フラグが分岐判定回路に与えられ、OWステ
ージの後半において、分岐条件が決定される。また、レ
ジスタの内容,PSWの内容,デバッグ制御レジスタの内容
が更新される。
第4図(d)は、条件分岐命令(ACB命令)に対するパ
イプライン制御のタイミングを示した図である。ACB命
令はカウンタを更新し、カウンタ値がリミット値未満な
ら指定アドレスに分岐するループ命令である。
ACBの場合、ループカウンタのカウンタ数を示すカウ
ントは、カウントアップのステップ幅(STEP)がOEステ
ージで加算され、更新されたカウント数がOWステージで
レジスタに書き込まれる。そのカウンタ値の更新の演算
と同時に、カウンタの最大値(LIMIT)と比較する動作
をOEステージで行う。比較した結果がLIMIT未満の場合
にはループの先頭に分岐するのでデバッグ制御レジスタ
のステータスはセットされたままとなるが、LIMIT以上
なら非分岐であるからステータスをクリアする。
ただしこの場合2つの演算器が必要なのでもう1つの例
としてACB場合は、カウンタ値とステップ数との演算
をOE1ステージで行い、更新されたカウンタ値とリミッ
トとの比較をOE2ステージで行う。この場合2つのマイ
クロステップとなるのでパイプラインディレイ回路はOE
ステージ等で2サイクル間状態を保持することによりタ
イミングをあわせる。ACBの例の方が条件分岐判定が
さらに遅れるのでパイプラインが乱れる可能性が大きく
なる。
第5図は、被デバッグプログラムとトレース内容の例を
示す。BRAは無条件分岐命令、Bccは条件分岐命令、BSR
はサブルーチン分岐命令である。
#A1のBRAは無条件にアドレス#A2にJUMPする。そし
て、プログラムを進めてBccにくると、条件成立である
とすれば、#A5にJUMPする。その後#A6迄すすみ、ACB
は条件成立であるとすれば、#A3にもどる。次に、Bcc
迄すすんで、これが条件不成立となるとすれば、次の#
A6のACBまで進む。したがって、また#A3にもどる。次
のBccは条件不成立であるから、Bcc命令に続く命令を実
行し、#A6迄すすむ。ACBは条件成立であるから#A3に
戻り、#A4迄すすみBccは条件成立であるから#A5にJUM
Pする。その後すすんで次のACBは条件不成立であるか
ら、ACBに続く命令を実行し、BSRは無条件分岐であるか
ら、図示されていないサブルーチンの格納された#A8に
跳ぶ。
第6図は、デバッグ処理を説明する図である。
第6図においてデバッグ処理においては、被デバッグプ
ログラムからデバッグ処理にうつる時、マイクロ処理に
よって情報を退避する。退避する内容は、PSW(Program
Status Word),戻りアドレス及び例外発生アドレスで
あって、これを主記憶の退避領域に記憶する。そして、
デバッグのためのハンドラプログラムで退避領域の戻り
アドレス(フロートレースでは分岐先アドレス)、例外
発生アドレス(フロートレースでは分岐命令アドレス)
を主記憶の一部に設けられたトレース領域あるいは別に
設けられたトレースメモリに書込み、またトレースメモ
リへの書込みポインタを更新する。その後、復帰命令を
実行したときに、退避した情報のPSW、戻りアドレスを
戻して復帰する。
第7図は命令デコーダ12およびその周辺回路の構成図で
ある。
命令先取り要求回路41から命令先取りの要求信号が命令
キャッシュ42に与えられると、命令デコーダ12に対しキ
ャッシュ42からの応答信号が出される。すると、命令先
取りバッファ43に現在のライトポインタ格納用レジスタ
44にインクリメンタで1だけ加えたライトポインタで示
される番地に命令を書き込む。命令先取り要求信号が出
されている間は、命令キャッシュ42から命令先取りバッ
ファ43に命令が読み込まれる。命令先取りバッファ43の
内容は、リードポインタ格納用レジスタ46の内容で読み
出され、読み出された内容が命令コードとして、第1の
ラッチ回路45に与えられる。そして、リードポインタ格
納用レジスタ46の内容は、加算器53によって、命令長に
対応する更新量だけ加算されて、その更新値がリードポ
インタ格納用レジスタ46に再びセットされる。分岐命令
が実行されていない場合には,連続する命令が次々と読
み出され、第1のラッチ回路45にラッチされる。第1の
ラッチ回路45にセットされた命令コードは命令デコーダ
PLA(Programable Logic Array)47に与えられ、第2の
ラッチ回路48にセットされ、その内容がマイクロROMを
アドレスするマイクロアドレスや各種の制御信号、及び
無条件分岐命令である場合にアクティブになる無条件分
岐命令信号、分岐確率が高い場合にアクティブになる条
件分岐命令1信号、分岐確率が低い場合にアクティブに
なる条件分岐命令2信号が出力される。命令先取りバッ
ファ43からの命令コードは、PLAを介さずに、命令レジ
スタ49にもセットされる。命令レジスタ49の内容は、レ
ジスタ番号や分岐条件等を形成するために使われる。
命令先取りバッファ制御回路50は、無条件分岐、条件分
岐命令1、条件分岐命令2の各場合に命令先取りバッフ
ァ43のライトポインタやリードポインタの値を退避した
り、あるいは、変化させる制御を行い、また、分岐判定
部20から送られている条件分岐成立信号や条件分岐不成
立信号によって、ライトポインタやリードポインタ格納
用レジスタ44及び46の状態を制御する。
分岐動作とポインタ制御は以下のようになる。
無条件分岐をデコードした場合: ライトポインタ・リードポインタ格納用レジスタ44及び
46のエントリ番号部(すなわち、WSあるいはRS以外のラ
イトポインタあるいはリードポインタ)と共にゼロに
し、WS=RSになるようにサイド指定ビットをイニシャラ
イズする。リードポインタ格納用レジスタ46のエントリ
内オフセット部は、実行部から分岐アドレス計算結果の
該当する下位部を抜き出してセットする。
条件分岐1(分岐確率が高い命令:条件判定前に分
岐先命令デコード・実行)をデコードした場合: ライトポインタ・リードポインタ格納用レジスタ44,46
のエントリ番号部を共にゼロにし、WS/RSとも反転(逆
サイド)にする。リードポインタ格納用レジスタ46のエ
ントリ内オフセット部は、実行部から分岐アドレス計算
結果の該当する下位部を抜き出してセットする。またそ
れ以前のライトポインタ・リードポインタの値をそれぞ
れライトポインタ2・リードポインタ2退避用レジスタ
54,56に退避する。
この状態でそれまでと逆サイドに分岐側命令を先取り
し、読み出して実行する。
その後、分岐判定結果により、分岐条件成立の場合は、
そのまま継続し、分岐条件不成立の場合は、命令実行を
キャンセルし、ライトポインタとリードポインタ格納用
レジスタ44,46をそれぞれライトポインタ2とリードポ
インタ2の退避用レジスタ54,56の値に戻す。そして、W
S/RSとも反転する。
命令先取りアドレスは非分岐側に戻す。
条件分岐2(分岐確率が低い命令:条件判定前に非
分岐命令をデコード・実行)をデコードした場合: ライトポインタ格納用レジスタ44の値をライトポインタ
2退避用レジスタ54に退避し、ライトポインタ格納用レ
ジスタ44のエントリ番号部をゼロにし、WSを反転する。
リードポインタはそのままのサイドを指す。
この状態で、命令先取りは分岐先命令とするが、デコー
ド・実行は非分岐側になる。
その後、分岐判定結果により分岐条件成立の場合は、命
令実行をキャンセルし、リードポインタ格納用レジスタ
46のエントリ部をゼロにし、オフセット部に分岐アドレ
スの下位側をロードし、RSを反転する。
分岐条件不成立の場合は、命令バッファの読み出し・デ
コード・実行はそのまま継続する。
ライトポインタはライトポインタ2退避用レジスタ54か
ら戻し、WSを反転する。
命令先取りアドレスは非分岐側に戻す。
命令先取りアドレスカウンタとプログラムカウンタは、
実行部にもつため第7図には図示しない(第3図も概略
図なので省略してある)が、ポインタ同様退避のための
レジスタを備える必要がある。
命令先取りアドレスカウンタはライトポインタと同様に
切換えが行われ、プログラムカウンタはリードポインタ
と同様に切換えられる。
分岐動作がない時は、ライトポインタはキャッシュまた
は外部メモリから有効デコードが転送された(応答があ
った)時にカウントアップされる。また、リードポイン
タは、デコーダがデコード済の命令長を指定するのでそ
の分カウントアップする。
命令先取りは、命令先取りバッファ43に空があるかぎり
要求される。通常はライトポインタとリードポインタの
差を判断して空きを検出する。
ただし、条件分岐動作中、書き込みと読み出しのサイド
が一致しない時(条件分岐2の場合)は、ライトポイン
タが最大値になるまで先取りを行う。
次に、命令バッファ・ポインタの制御を行う命令先取り
バッファ制御回路50の構成と動作を第8図を参照して説
明する。
第8図において、システムリセットまたは無条件分岐信
号が1の場合には、OR回路61の出力が1となり、WS/RS
をイニシャライズする。WS/RS-Clear信号が活性化され
る。またOR回路63の出力であるWP-zero信号とOR回路68
の出力であるRP-zero信号とが活性化されて、命令先取
りバッファ43のリードポインタ,ライトポインタが初期
化される、条件分岐1信号が活性化される。すなわち、
分岐される確率の高い分岐命令である命令がデコードさ
れた場合には、OR回路66の出力が1になることにより、
WP2-latch-Inable信号の活性化によりライトポインタ2
のラッチをイネーブルし、現在のライトポインタWPをこ
こに退避させる。更にOR回路63の出力のWP-zeroも活性
化され、ライトポインタのエントリ番号部を0にする。
OR回路62の出力WS-reverseの信号が活性化され、排他的
論理和回路51(第7図)により、WSフリップフロップの
値を反転させ、ライトポインタの最上位ビット(WS)が
1になる。このことにより、命令先取りバッファへの書
き込みアドレスが、サイド1からサイド2側に移る。そ
してWP-zeroの活性化によって、サイド2の先頭アドレ
スを指すことになる。これがライトサイド反転動作であ
る。すなわち、命令先取りの命令として、分岐先命令が
命令先取りバッファ43のサイド2に取り込まれる動作と
なる。また、命令先取りバッファからのリード動作に対
しても、同様にサイド2側から読み出す動作に移る。す
なわち条件分岐1信号が1になると、反転回路73,74を
介して、RP2-latch-enable信号が1となって、現在のリ
ードポインタの値をリードポインタ2に退避させる。そ
してOR回路69の出力が1となり、その出力はOR回路67,6
8に入力される。RS−reverse、RP-zero信号がそれぞれ
1となる。RS−reverse信号が1となると、排他的論理
和回路52(第7図)によって、RS-FFの値が反転され
る。また、RP-zero信号が1なることによって、RS以外
のリードポインタすなわちエントリ番号部が0にクリア
される。すなわち、サイド2の先頭アドレスを指すこと
になり、サイド2側から命令が読み出されることにな
る。すなわち、条件分岐の分岐する確率が高い場合に
は、条件分岐判定を待たず、命令先取りバッファのサイ
ド2、すなわち、分岐先命令の先取りと読み出しを実行
する。
また、条件分岐1信号が1の場合には、OR回路77の出力
が1となって、Dタイプフリップフロップ78の状態を1
にする。このフリップフロップは条件分岐1がデコード
されてから分岐条件成立、不成立信号のどちらかがくる
まで、1を保持するものである。すなわち、分岐条件成
立、不成立信号がともに0である場合にはNOR回路75の
出力が1となり、Q=1とNOR回路の出力=1によってA
ND76の出力が1となり、OR77を介してFFを再び1にす
る。すなわち1の保持が継続される。分岐条件成立、不
成立信号は、命令先取りバッファのサイド2側への命令
書き込み、あるいは命令読み出しを実行している間に、
遅れて入力される。条件分岐1が活性化されてからQ=
1の状態になって、その後分岐条件成立が1になると、
Q=1であるから反転回路71の出力が0となり、分岐条
件成立信号が1であっても、AND回路70の出力は0とな
り、バッファのサイド2に対する読み書き動作をそのま
ま実行する。そして、条件分岐成立信号が0となると、
AND回路76、OR回路77を介してフリップフロップの出力
Qを0に戻す。
一方、分岐条件不成立信号が1になった場合、現在読み
書きが行われているサイド2の分岐先命令の読み出しを
停止し、サイド1側にもどって、分岐命令につづく命令
の読み書き動作を実行する必要がある。そのために分岐
条件不成立信号が1になることにより、OR回路62の出力
WP-reversが1になり、WSを反転すなわち1から0に戻
し、また、反転回路64,65を介して、WS-restore-from-W
P2信号を1にして、ライトポインタ2に退避されていた
値をライトポインタに戻す制御が行われる。読み出し動
作に対しても同様で、分岐条件不成立信号が1になるこ
とにより、Q=1であるから、AND回路72の出力が1と
なって、OR回路67の出力RS-reverse信号を1にし、また
RP-restore-from-RP信号を1にする。すなわち、RS信号
を1から0に戻し、読み出しをサイド1側から実行する
ために、リードポインタ2に退避されていた内容をリー
ドポインタ46に戻す制御が行われる。また、分岐条件不
成立信号が1になると、NOR回路75の出力が0となっ
て、AND回路76の出力を0にするので、次のクロックでF
FのQを0にリセットする。
条件分岐2すなわち分岐する確率が低い場合には、命令
先取りバッファへの書き込みに対しては、サイド2側に
対して実行される。すなわち、OR回路66の出力が1にな
ることにより、WSを反転し、WP-zeroを1にして、エン
トリ番号部を0にし、現在のライトポインタのエントリ
番号をライトポインタ2に退避するために、WP2-zero-e
nable信号を1にする。しかし、条件分岐2の場合に
は、命令先取りバッファからの読み出しに対しては、サ
イド1側から行う。すなわち、読み出しを制御する制御
信号に対しては、条件分岐2信号は、無関係であって、
従って、条件分岐命令につづく命令が格納されているサ
イド1側から読み出される。そして、その後、分岐条件
成立信号が1になると、Q=0であるから、AND回路70
の出力が1となって、サイド2側に移る動作が実行され
る。そして、ライト動作のサイドと同じサイドになる。
また、分岐条件不成立が1になった場合には、ライト動
作に対しては、サイド2からサイド1に戻す必要がある
ので、OR回路62の出力WS-reverse信号を1にし、また、
WP-restore-from-WP2を1にして、ライトポインタ2の
内容をライトアドレスとして使う様に、制御が実行され
る。
次に、条件命令の構成について説明する。
第9図は条件分岐命令、Bcc(Branch conditionaly)の
内容である。
OPコードはBccであることを示す。
PCオフセットは、条件が成立した場合にブランチする分
岐先アドレスを現在のプログラムカウンタからのオフセ
ット(相対値)として示したものである。分岐条件コー
ドは4bitからなり、(0000)は、ALUのキャリーフラグ
が1である場合に分岐、(0001)は、キャリーフラグが
0である場合に分岐するものである。それらは、ニモニ
ック表示ではBXS,BXCである。Bはブランチ、Xはキャ
リーを表現し、SとCはそれぞれにセット、クリアを表
現する。ALUのZEROフラグが1または0の場合の条件コ
ードがそれぞれ(0010),(0011)に対応し、ニモニッ
クではBEQ,BNEに対応する。ここで、EQはequal、NEはno
t equalを表現する。(0100)と(0101)は比較の結果
が低い場合と高い場合に相当し、低い場合にブランチす
るのがBLTであり、低くない場合がBGFに対応する。LTは
less than、GEはgreater equalを表現する。(0110)と
(0111)は、比較が等しいか低い場合に分岐する場合
と、そうでない場合に分岐する場合に、それぞれ相当す
る。ニモニックではBLE、BGTに相当し、LEはless equa
l、GTはgreater thanに対応する。
また、ACB(Add,Compare & Branch)/SCB(Subtract,C
ompare & Branch)命令は命令コード中に分岐条件コー
ドを持たないが、例えば、ACBではカウンタ値がリミッ
ト値未満ならば分岐なのでBLTに相当し、SCBではカウン
タ値がリミットより大きければ分岐なのでBGTに相当す
る。この場合、分岐条件コードはマイクロプログラムか
ら指定される。
第10図は、分岐制御回路とフラグ生成回路の実施例であ
る。
演算部の演算器81から、ALUのキャリー▲
▼や▲▼などが出力され、シフタか
らシフタキャリー▲▼などが出力され
る。これらは、状態フラグと呼ばれる。状態フラグ生成
条件はマイクロプログラムコードの指定によって、有効
か無効かが決定される。そのため、マイクロコードから
の状態フラグ生成条件をデコーダした信号と各フラグと
のANDがとられる。第10図では、負論理方式でデコーダ
や演算器から信号が出力されるので、NOR回路でそれら
の有効か無効かが決定されている。状態フラグバスの各
バスの列線が、X(キャリー),Z(0),L(ロウ〔マイ
ナス〕)・・・V(オーバーフロー)などのフラグに対
応している。たとえば、各フラグバスはクロック信号▲
▼信号のロウにより、PMOSトランジスタがオン
となり、バスがハイ状態になっいる。そして、デコーダ
回路82の出力線83が0′でかつまた、▲
▼信号がロウのとき、NOR回路84の出力がハイとな
り、NMOSトランジスタ85をオンとする。すると、ハイ状
態にあったXフラグバスがロウになって、負論理で活性
化される。同様にシフタキャリー▲▼
がロウで、マイクロ命令がシフタキャリー▲
▼を指定しているならば、NOR回路86の出力がハ
イとなってMOS回路87をオンにしてXをロウにする。Z
フラグバスは▲▼信号がロウでかつ、マ
イクロ指定があった場合に、ロウとなる。これら状態フ
ラグは、クロック信号CLKYの入力によって、ラッチ回路
88にラッチされる。ラッチ回路88の出力は反転され、分
岐条件コードの上位3ビット、すなわち第9図の分岐条
件コードの上位3ビットとのそれぞれとAND回路89で分
岐条件に従った条件が形成される。それらはOR回路90に
よって、ORされ、排他的論理部91に入力される。その排
他的論理部91の他の入力は、分岐条件コードの最下位ビ
ット(LSB)が入力されている。それが1の場合には、O
R回路90の出力は反転され、0の場合には、その出力は
反転されない。排他的論理部91の出力が分岐条件成立を
示す信号であるが、実際にはマイクロプログラムよりの
指令に従う分岐条件判定タイミング信号が1の時に、AN
D回路92を介して分岐条件成立信号を出力する。また、
排他的論理部91の出力の反転と、分岐条件判定タイミン
グ信号とのAND回路93の出力が分岐条件不成立信号とな
る。このように状態フラグは、ALU,シフタなどの各演算
器からキャリーやゼロチェックの結果等の信号と、マイ
クロ指示に基づき、X(キャリー),Z(ゼロ),L(ロウ
〔マイナス〕),・・・,V(オーバーフロー)などのフ
ラグを演算器のどの信号によって生成するかを示す信号
とを組み合わせて生成される。例えば、CMOSの回路で
は、ダイナミック論理回路を利用し、フラグセット条件
と演算器出力の論理積=1の時フラグバスの信号線につ
ながるNMOSトランジスタをオンにし、バス線をLOWレベ
ルにする。セットする条件が1つも成立しないとそのバ
ス線はプリチャージによってHIGHレベルにされたままと
なる。
分岐条件は、例えば第9図のように定義され、これに従
えば、条件とするフラグの選択と、そのフラグのセット
・クリアいずれの状態を選ぶかで指定される。
そこで、第10図のように、フラグビットを選ぶデコーダ
の出力に従って選択されたフラグを条件により排他論理
和で反転し、マイクロからの分岐判定タイミング指示で
条件分岐成立あるいは不成立を判断する。
第11図は、条件分岐の中で分岐する確率の高い命令を過
去の履歴から予測するためのブロック図である。
過去に登録した分岐命令アドレスのそれぞれは現在のプ
ログラムカウンタPCの値とか比較器100〜104で比較さ
れ、どれかに一致した場合に、分岐命令アドレス105に
対応する分岐先命令バッファ106の内容を読み出す。そ
のために比較回路の比較結果をOR回路107を介してでき
る分岐ウィンドウヒット信号を生成する。この信号が1
になると、イネーブル回路108の出力がイネーブルにな
るので、分岐先命令バッファ1,2,3,4のうち比較結果で
イネーブルされたレジスタの内容がデコードに与えられ
る。分岐ウィンドウヒット信号が0、すなわち、PCがど
の分岐命令アドレスと一致しない場合は、分岐ウィンド
ウヒット信号が0であるから、反転回路109によって、
イネーブル回路110をイネーブルし、命令先取りバッフ
ァから通常通り命令デコーダに出力される。すなわち、
これが履歴による分岐方向予測の例の原理である。この
方式では、数エントリ(例では4エントリ)の分岐先命
令バッファとそれと組になる分岐命令アドレス記憶用レ
ジスタを持つ。分岐命令アドレス記憶部は、過去に分岐
条件成立したBcc命令の命令アドレスが登録され、また
分岐先命令バッファにはそれに対応する分岐先命令が登
録されている。プログラムカウンタがそのいずれかと一
致した場合には、過去に分岐したBcc命令を再び実行す
ることになるので、今回も分岐する確率が高いものと判
断して命令先取りバッファの出力を抑え、分岐先命令バ
ッファからの命令を読み出して命令デコーダ(PLA)111
に供給する。命令先取りバッファ43には分岐先命令の次
からが先取りされる。分岐ウィンドウがヒットした場合
で、分岐条件が成立しなかった時は、該当エントリの登
録が抹消される。
また、分岐ウィンドウにヒットしないBcc命令は通常ど
うり命令先取りバッファ43を使用して処理されるが、そ
れが分岐条件成立した場合は、分岐ウィンドウの未使用
エントリまたはそれがない場合は旧エントリのどれかを
追い出して、分岐命令アドレスおよび分岐先命令コード
を登録する。
なお、以上はデバッグルーチンのトレースを例にとって
説明したが、本発明はデバッグルーチンのトレース以外
の条件分岐命令を実行する場合に適用できることは勿論
である。
〔発明の効果〕
以上説明したように、本発明によれば、パイプライン処
理を行うマイクロプロセッサの分岐トレースに対して
は、条件分岐命令の条件判定が命令処理の最終サイクル
で行われても、パイプライン処理の乱れを生ずることな
く処理が進められ、命令処理速度の向上に寄与するとこ
ろが大きい。
【図面の簡単な説明】
第1図は本発明の原理説明図、 第2図は本発明の一実施例構成図で条件分岐命令の分岐
トレースのパイプライン処理を示す図、 第3図は本発明の命令実行部のブロック図、 第4図(a)〜(d)は本発明のパイプライン動作説明
図、 第5図は被デバッグプログラムとトレース内容の一例を
説明する図、 第6図はデバッグ処理の説明図、 第7図は第3図における命令デコーダとその周辺回路の
ブロック図、 第8図は条件分岐命令(BCC)を示す図、 第9図は第3図における分岐判定回路の構成図、 第10図は第3図における分岐予測の原理図、 第11図は条件分岐の中で分岐する確率の高い命令を過去
の履歴から予測するためのブロック図である。 1……命令デコード部、2……演算実行部、3……分岐
判定部、4……デバッグ制御部.

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】パイプライン処理により命令を順次実行す
    る命令実行装置において、 条件付き分岐命令がデコードされた場合に、当該条件の
    判定結果を待つことなく条件成立を推定して直ちにデバ
    ッグ例外発生フラグを立てる手段と、その後実際の判定
    結果が出た時点で前記デバッグ例外発生フラグの内容を
    修正する修正手段とを有することを特徴とする分岐命令
    実行装置。
  2. 【請求項2】パイプライン処理による命令の実行中に分
    岐した命令を順次実行する命令実行装置において、 条件付き分岐命令がデコードされた場合に、当該条件の
    判定結果を待つことなく直ちに条件成立を推定してトレ
    ース命令を実行し、その後実際の判定結果が出た時点で
    もし、分岐不成立の場合は、前記トレース命令の実行を
    キャンセルする手段を有することを特徴とする分岐命令
    実行装置。
  3. 【請求項3】メインメモリユニットから命令をフェッチ
    し、それを解読し演算する命令実行装置において、 各命令を解読し、解読した命令が無条件分岐である場
    合、分岐する確率の高い条件分岐命令の場合あるいは分
    岐する確率の低い条件分岐命令である場合に、それぞれ
    活性化される無条件分岐信号,条件分岐1信号,条件分
    岐2信号を出力する命令デコード手段と、 前記条件分岐命令の条件が成立する場合には、条件成立
    信号を活性化し、条件不成立の場合には、条件不成立信
    号を活性化する判定手段と、 前記命令デコーダ手段からの条件分岐1信号が活性化さ
    れている場合に前記判定手段からの条件成立,不成立の
    結果を待たずにトレース処理を行い、前記判定手段の判
    定結果として、分岐不成立信号が活性化される場合に
    は、トレース処理の実行をキャンセルする制御を行う制
    御手段とを有することを特徴とする分岐命令実行装置。
  4. 【請求項4】メインメモリユニットから命令をフェッチ
    し、それを解読し演算する命令解読実行装置において、 各命令を解読し、解読した命令が無条件分岐である場合
    活性化される無条件分岐信号、分岐する確率の高い条件
    分岐命令である場合に活性化される条件分岐1信号ある
    いは分岐する確率の低い条件分岐命令である場合に活性
    化される条件分岐2信号を出力する命令デコード手段
    (12)と、 前記命令デコード手段によってアドレス制御されマイク
    ロプログラムを格納するマイクロ命令格納手段(13)
    と、 前記マイクロ命令格納手段の出力によって制御される演
    算手段(14)と、 前記演算手段からの状態フラグと前記命令デコーダ手段
    から与えられる分岐条件コードを用いて、前記マイクロ
    命令格納手段からのマイクロ指示に従って、前記条件分
    岐命令の条件が成立する場合には、条件成立信号を活性
    化し、条件不成立の場合には、条件不成立信号を活性化
    する判定手段(21)と、 前記命令デコーダ手段からの条件分岐1信号が活性化さ
    れている場合に前記判定手段からの条件成立,不成立の
    結果を待たずにデバッグ例外発生フラグをたて、前記判
    定手段の判定結果として、分岐不成立信号が活性化され
    る場合には、前記デバッグ例外発生フラグの修正を行う
    制御手段とを有することを特徴とする分岐命令実行装
    置。
  5. 【請求項5】前記命令解読実行装置のデコーダ(DC)ス
    テージ,アドレス計算(AC)ステージ,マイクロ命令読
    出し(MI)ステージ,実行ステージ(OE),実行結果書
    込みステージ(OW)よりなるパイプライン活性化におい
    て、前記条件分岐2信号が活性化されている場合にはそ
    れ以前の命令のOEステージで実行される演算部の実行結
    果として生じる状態フラグの生成を見て分岐するか否か
    の判定を行い、分岐する場合には条件分岐2信号を生じ
    た分岐命令につづく命令をキャンセルし、 前記条件分岐1信号が活性化されている場合には、条件
    分岐1命令の分岐先アドレス計算のACステージが終わり
    次第分岐先命令を先取りして分岐先命令のDCステージに
    入り、OEステージで実行される演算部の実行結果として
    生じる状態フラグの生成を見て分岐するか否かの判定を
    行い、分岐する場合にはそのまま分岐先命令のパイプラ
    イン動作を実行し、分岐しない場合には、分岐先命令を
    キャンセルし、そのOWステージにつづくDCステージから
    条件分岐1信号を生じた条件分岐命令につづく命令DCス
    テージに入ることを特徴とする請求項4記載の分岐命令
    実行装置。
  6. 【請求項6】前記命令デコーダ手段は、命令先取り要求
    を行う命令先取り要求回路と、 条件分岐命令の非分岐側命令列と分岐側命令列をそれぞ
    れ格納する2つの領域を有し、前記命令先取り要求回路
    から命令先取り要求信号が命令キャッシュに与えられ、
    それに対する応答信号が出力された場合に前記命令キャ
    ッシュから命令を先取りして、書き込み、さらに書き込
    んだ命令を読み出す動作を実行する命令先取りバッファ
    と、 前記命令先取りバッファから読み出される命令コードを
    デコードするデコード手段と、 前記デコーダ手段から無条件分岐命令である場合にアク
    ティブになる無条件分岐命令信号、分岐確率信号が高い
    場合にアクティブになる条件分岐命令1信号、分岐確率
    の低い場合にアクティブになる条件分岐命令2信号を入
    力し、前記命令先取りバッファのライトポインタやリー
    ドポインタの値を変化させる制御を行い、さらに条件分
    岐の成立,不成立を制御する判定回路から送られてくる
    条件分岐成立信号と条件分岐不成立信号の入力によって
    前記変化されたライトポインタまたはリードポインタの
    値を所定時間後、再度変化させる命令先取りバッファ制
    御手段と、 前記命令先取りバッファの第1及び第2の領域に命令を
    振りわけるために書き込みアドレスを生成または退避す
    るライトポインタ手段と、 前記命令先取りバッファの第1及び第2の領域から命令
    を振りわける読み出しアドレスを生成または退避するリ
    ードポインタ手段、 とを有することを特徴とする請求項4記載の分岐命令実
    行装置。
  7. 【請求項7】前記命令デコード手段が無条件分岐をデコ
    ードした場合には、ライトポインタ,リードポインタの
    格納用レジスタのエントリ番号部を共にゼロにし、WS=
    RSになるようにサイド指定ビットをイニシャライズする
    手段と、リードポインタ格納用レジスタのエントリ内オ
    フセット部に、実行部から分岐アドレス計算結果の該当
    する下位部を抜き出してセットする手段とを有し、前記
    命令先取りバッファの一方の領域に対して、リード・ラ
    イトを行うことを特徴とする請求項6記載の分岐命令実
    行装置。
  8. 【請求項8】前記命令デコード手段が、分岐確率が高い
    命令である条件分岐1をデコードした場合には、 ライトポインタ・リードポインタ格納用レジスタのエン
    トリ番号部を共にゼロにし、WS/RSとも反転(逆サイ
    ド)にする手段と、リードポインタのエントリ内オフセ
    ット部に、実行部から分岐アドレス計算結果の該当する
    下位部を抜き出してセットする手段と、それ以前のライ
    トポインタ・リードポインタの値をそれぞれライトポイ
    ンタとリードポインタ格納用レジスタに退避する手段
    と、 この状態で命令先取りバッファの逆サイドに分岐先命令
    を先取りし、読み出して実行する手段と、 その後、分岐判定結果により分岐条件成立の場合は、そ
    のまま継続し、分岐条件不成立の場合は、命令実行をキ
    ャンセルし、ライトポインタ・リードポインタ格納用レ
    ジスタにそれぞれライトポインタとリードポインタ退避
    用レジスタに退避してあった値を戻し、そしてWS/RSと
    も反転し、命令先取りバッファのアドレスは非分岐側に
    戻す手段とを有することを特徴とする請求項6記載の分
    岐命令実行装置。
  9. 【請求項9】前記命令デコーダ手段は、分岐確率が低い
    命令である条件分岐2をデコードした場合には、 ライトポインタの値をライトポインタ退避用レジスタに
    退避し、ライトポインタ格納用レジスタのエントリ番号
    部をゼロにし、WSを反転する手段と、リードポインタは
    そのままにする手段と、 その後、分岐判定結果により分岐条件成立の場合には、
    命令実行をキャンセルし、リードポインタ格納用レジス
    タのエントリ部をゼロにし、オフセット部に分岐アドレ
    スの下位側をロードし、RSを反転するように制御する手
    段と、 分岐条件不成立の場合には、命令バッファの読み出し・
    デコード・実行はそのまま継続する手段と、ライトポイ
    ンタ格納用レジスタにライトポインタ2退避用レジスタ
    に退避してあった値を戻し、WSを反転する手段とを有す
    ることを特徴とする請求項6記載の分岐命令実行装置。
  10. 【請求項10】前記命令先取りバッファ制御手段は、無
    条件分岐,条件分岐1,条件分岐2,分岐条件不成立,分岐
    条件成立信号を入力し、 無条件分岐信号が活性化される場合には、ライトポイン
    タ,リードポインタともクリアし、 条件分岐1が活性化された場合には、ライトポインタを
    退避用レジスタにセットするイネーブル信号および、逆
    サイドに移させる制御信号を形成し、 リードポインタを退避用レジスタにセットするイネーブ
    ル信号および逆サイドに移させる制御信号を形成し、 条件分岐1信号がデコードされてから分岐条件成立,不
    成立信号のどちらかが入力されるまでセットされている
    フリップフロップにより条件分岐1の実行を判断し、分
    岐条件不成立の場合には、リードポインタおよびライト
    ポインタを退避状態からもとにもどし、分岐命令につづ
    く命令の先取り、デコードを再開し、 条件分岐2信号が活性化されている場合には、ライトポ
    インタを退避用レジスタにセットするイネーブル信号お
    よび、逆サイドに移させる制御信号を形成し、 分岐信号不成立が活性化された場合には、ライトポイン
    タを退避状態からもとに戻し、もとの分岐命令につづく
    命令のライトを実行する制御信号を発生し、 分岐条件成立信号が活性化された場合には、リードポイ
    ンタを逆サイドに移させる制御信号を発生することを特
    徴とする請求項6記載の分岐命令実行装置。
  11. 【請求項11】前記分岐先命令実行ビットで駆動される
    処理はデバッグルーチンであることを特徴とする請求項
    4記載の分岐命令実行装置。
  12. 【請求項12】前記分岐命令としてデバッグルーチンに
    jumpした場合、該デバッグルーチンは特権モードで実行
    されることを特徴とする請求項11記載の分岐命令実行装
    置。
  13. 【請求項13】前記条件分岐1信号を生じた条件分岐命
    令はDo loopであることを特徴とする請求項4記載の分
    岐命令実行装置。
  14. 【請求項14】前記Do loopはDo loopのカウント更新と
    同一のOEステージにDo loopを抜けるためのリミット値
    との比較を行うことにより実行されることを特徴とする
    請求項13記載の分岐命令実行装置。
  15. 【請求項15】前記Do loopは、Do loopのカウント更新
    を行うOEステージと、そのDo loopから抜けるためのリ
    ミット比較を行うOEステージとで実行することを特徴と
    する請求項13記載の分岐命令実行装置。
  16. 【請求項16】前記判定手段(21)は、演算部から出力
    される状態フラグをマイクロ指示による状態フラグ生成
    条件によって有効にするか無効にするかを決定させる手
    段(81〜87)と、 有効になった状態フラグをさらに条件分岐命令の分岐条
    件コードによって前記分岐条件の成立または不成立を決
    定する手段(88〜93)を有することを特徴とする請求項
    4記載の分岐命令実行装置。
  17. 【請求項17】前記命令解読実行装置は1chipのCPU内に
    設けられ、デバッグルーチンを格納するメモリも該CPU
    内に設けることを特徴とする請求項4記載の分岐命令実
    行装置。
  18. 【請求項18】前記命令デコード手段(12)は、過去に
    分岐条件が成立した分岐命令の命令アドレスを登録する
    複数の分岐命令アドレス記憶部と、 前記分岐命令アドレスに対する分岐先命令を登録する分
    岐先命令バッファ手段と、 現在のプログラムカウンタ値と、前記分岐命令アドレス
    記憶部に記憶されている複数の分岐命令アドレスをそれ
    ぞれ比較する比較手段と、 前記比較手段の比較結果プログラムカウンタの値が分岐
    命令アドレスのいずれかと一致した場合には、一致した
    分岐命令アドレスに対応する分岐先命令を前記分岐先命
    令バッファから読み出しデコーダに与えまた同時に分岐
    確率の高い命令を示す条件分岐1信号を活性化し、プロ
    グラムカウンタの値が前記分岐命令アドレス記憶部のど
    のアドレスにも一致しない場合には、命令先取りのバッ
    ファの命令を前記命令デコーダに与え分岐確率の低い命
    令を示す条件分岐2信号を活性化する制御を行う分岐予
    測手段を有することを特徴とする請求項4記載の分岐命
    令実行装置。
  19. 【請求項19】パイプライン処理による各命令語の実行
    中に分岐した命令語を順次トレースする方法において、 条件付き分岐命令がデコードされた場合に、当該条件の
    判定結果を待つことなく直ちに条件成立を推定してデバ
    ッグ例外発生ビットを立て、その後実際の判定結果が出
    た時点でデバッグ例外発生ビットの内容を修正すること
    を特徴とする分岐命令トレース方法。
  20. 【請求項20】パイプライン処理による各命令語の実行
    中に分岐した命令語を順次トレースする方法において、 条件付き分岐命令がデコードされた場合に、当該条件の
    判定結果を待つことなく直ちに条件成立を推定してトレ
    ース命令を実行し、その後実際の判定結果が出た時点で
    もし、分岐不成立の場合は、前記分岐先命令の実行をキ
    ャンセルすることを特徴とする分岐命令トレース方法。
JP2158825A 1989-06-20 1990-06-19 分岐命令実行装置 Expired - Lifetime JPH0795271B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP1-157904 1989-06-20
JP15790489 1989-06-20

Publications (2)

Publication Number Publication Date
JPH03129441A JPH03129441A (ja) 1991-06-03
JPH0795271B2 true JPH0795271B2 (ja) 1995-10-11

Family

ID=15659980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2158825A Expired - Lifetime JPH0795271B2 (ja) 1989-06-20 1990-06-19 分岐命令実行装置

Country Status (4)

Country Link
US (1) US5715440A (ja)
EP (1) EP0404068A3 (ja)
JP (1) JPH0795271B2 (ja)
KR (1) KR930009756B1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528002A (ja) * 1991-07-24 1993-02-05 Nec Corp マイクロプロセツサ
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3699518B2 (ja) * 1995-01-26 2005-09-28 サン マイクロシステムズ インコーポレイテッド パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
US6026236A (en) * 1995-03-08 2000-02-15 International Business Machines Corporation System and method for enabling software monitoring in a computer system
TW470915B (en) * 1996-03-12 2002-01-01 Matsushita Electric Ind Co Ltd Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations
JP3203180B2 (ja) * 1996-03-27 2001-08-27 三菱電機株式会社 幾何学演算装置
US6119221A (en) * 1996-11-01 2000-09-12 Matsushita Electric Industrial Co., Ltd. Instruction prefetching apparatus and instruction prefetching method for processing in a processor
US6112298A (en) * 1996-12-20 2000-08-29 Texas Instruments Incorporated Method for managing an instruction execution pipeline during debugging of a data processing system
US6052753A (en) * 1997-01-21 2000-04-18 Alliedsignal Inc. Fault tolerant data bus
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6122729A (en) * 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6513155B1 (en) * 1997-12-12 2003-01-28 International Business Machines Corporation Method and system for merging event-based data and sampled data into postprocessed trace output
EP0992907B1 (en) * 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
GB2362729B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Memory access debug facility
GB2366006B (en) * 1999-12-23 2004-06-30 St Microelectronics Sa A computer system with debug facility
GB2362968B (en) 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
GB2365546B (en) 1999-12-23 2004-02-18 St Microelectronics Sa A computer system with two debug watch modes
US6842811B2 (en) * 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US7350110B2 (en) * 2002-01-14 2008-03-25 International Business Machines Corporation Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
EP2106584A1 (en) * 2006-12-11 2009-10-07 Nxp B.V. Pipelined processor and compiler/scheduler for variable number branch delay slots
JP5082716B2 (ja) * 2007-09-20 2012-11-28 富士通セミコンダクター株式会社 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
GB2481385B (en) * 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US9489284B2 (en) 2012-02-29 2016-11-08 Freescale Semiconductor, Inc. Debugging method and computer program product
US10802828B1 (en) 2018-09-27 2020-10-13 Amazon Technologies, Inc. Instruction memory

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS518841A (ja) * 1974-07-09 1976-01-24 Hitachi Ltd Bunkimeireiseigyohoshiki
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4338661A (en) * 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
JPS57153342A (en) * 1981-03-19 1982-09-21 Mitsubishi Electric Corp Pipeline computer
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
JPS59223850A (ja) * 1983-06-03 1984-12-15 Fuji Electric Co Ltd 命令先読み制御方式
JPH0752390B2 (ja) * 1985-05-07 1995-06-05 株式会社日立製作所 命令処理装置
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPS6255738A (ja) * 1985-09-04 1987-03-11 Hitachi Ltd プログラムカウンタトレ−ス機構をもつデ−タ処理装置
WO1987005417A1 (en) * 1986-02-28 1987-09-11 Nec Corporation Instruction prefetch control apparatus
JPS63245525A (ja) * 1987-03-31 1988-10-12 Toshiba Corp マイクロプログラム処理装置
JPH0195331A (ja) * 1987-10-08 1989-04-13 Fujitsu Ltd パイプライン処理システム
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5129087A (en) * 1988-02-03 1992-07-07 International Business Machines, Corp. Computer system and a method of monitoring transient data structures in a computer system
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction

Also Published As

Publication number Publication date
JPH03129441A (ja) 1991-06-03
KR930009756B1 (ko) 1993-10-09
KR910001538A (ko) 1991-01-31
US5715440A (en) 1998-02-03
EP0404068A3 (en) 1991-12-27
EP0404068A2 (en) 1990-12-27

Similar Documents

Publication Publication Date Title
JPH0795271B2 (ja) 分岐命令実行装置
KR100667120B1 (ko) 이중 모드 시스템에서 혼합 명령 스트림 내의 상이한 명령세트의 분기 명령 에뮬레이팅
JP3599409B2 (ja) 分岐予測装置
US5805877A (en) Data processor with branch target address cache and method of operation
US6772325B1 (en) Processor architecture and operation for exploiting improved branch control instruction
US6324643B1 (en) Branch prediction and target instruction control for processor
US5761723A (en) Data processor with branch prediction and method of operation
EP1003095A2 (en) A computer system for executing branch instructions
JPH02260033A (ja) ブランチ予測
US20010005882A1 (en) Circuit and method for initiating exception routines using implicit exception checking
JP3486690B2 (ja) パイプライン方式プロセッサ
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
JP3599499B2 (ja) 中央処理装置
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
EP0666538A2 (en) Data processor with branch target address cache and method of operation
JP3394854B2 (ja) 無条件ジャンプ命令処理方法並びにそのための無条件ジャンプ命令処理装置及び汎用レジスタ
KR970011209B1 (ko) 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP3564517B2 (ja) データ処理システム
JPH0769807B2 (ja) データ処理装置
JPH03291724A (ja) マイクロプログラム制御方式

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20071011

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20081011

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20081011

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20091011

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20091011

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20101011

Year of fee payment: 15

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101011

Year of fee payment: 15