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

分岐命令実行装置

Info

Publication number
JPH03129441A
JPH03129441A JP2158825A JP15882590A JPH03129441A JP H03129441 A JPH03129441 A JP H03129441A JP 2158825 A JP2158825 A JP 2158825A JP 15882590 A JP15882590 A JP 15882590A JP H03129441 A JPH03129441 A JP H03129441A
Authority
JP
Japan
Prior art keywords
branch
instruction
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.)
Granted
Application number
JP2158825A
Other languages
English (en)
Other versions
JPH0795271B2 (ja
Inventor
Tetsuya Omura
徹也 大村
Toshiharu Oshima
大島 俊春
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

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

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

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
JPH03129441A true JPH03129441A (ja) 1991-06-03
JPH0795271B2 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)

Cited By (3)

* 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 マイクロプロセツサ
KR100411402B1 (ko) * 1995-01-26 2004-03-20 선 마이크로시스템즈 인코퍼레이티드 파이프라인방식의프로세서에서잘못예측된분기로부터의복원방법및장치
JP2014506371A (ja) * 2011-01-13 2014-03-13 アーム・リミテッド データ処理装置のトレース

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
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
US6553564B1 (en) * 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
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
GB2362968B (en) 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
GB2366006B (en) * 1999-12-23 2004-06-30 St Microelectronics Sa A computer system with debug facility
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
GB2365546B (en) 1999-12-23 2004-02-18 St Microelectronics Sa A computer system with two debug watch modes
GB2362729B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Memory access debug facility
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
US8959500B2 (en) * 2006-12-11 2015-02-17 Nytell Software LLC 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
WO2013128238A1 (en) * 2012-02-29 2013-09-06 Freescale Semiconductor, Inc. Debugging method and computer program product
US10802828B1 (en) 2018-09-27 2020-10-13 Amazon Technologies, Inc. Instruction memory

Citations (5)

* 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
JPS57153342A (en) * 1981-03-19 1982-09-21 Mitsubishi Electric Corp Pipeline computer
JPS59223850A (ja) * 1983-06-03 1984-12-15 Fuji Electric Co Ltd 命令先読み制御方式
JPS6255738A (ja) * 1985-09-04 1987-03-11 Hitachi Ltd プログラムカウンタトレ−ス機構をもつデ−タ処理装置
JPH0195331A (ja) * 1987-10-08 1989-04-13 Fujitsu Ltd パイプライン処理システム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
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
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
JPS63245525A (ja) * 1987-03-31 1988-10-12 Toshiba Corp マイクロプログラム処理装置
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

Patent Citations (5)

* 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
JPS57153342A (en) * 1981-03-19 1982-09-21 Mitsubishi Electric Corp Pipeline computer
JPS59223850A (ja) * 1983-06-03 1984-12-15 Fuji Electric Co Ltd 命令先読み制御方式
JPS6255738A (ja) * 1985-09-04 1987-03-11 Hitachi Ltd プログラムカウンタトレ−ス機構をもつデ−タ処理装置
JPH0195331A (ja) * 1987-10-08 1989-04-13 Fujitsu Ltd パイプライン処理システム

Cited By (5)

* 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 マイクロプロセツサ
KR100411402B1 (ko) * 1995-01-26 2004-03-20 선 마이크로시스템즈 인코퍼레이티드 파이프라인방식의프로세서에서잘못예측된분기로부터의복원방법및장치
JP2014506371A (ja) * 2011-01-13 2014-03-13 アーム・リミテッド データ処理装置のトレース
JP2014507710A (ja) * 2011-01-13 2014-03-27 アーム・リミテッド 処理装置、トレースユニット、および診断装置
US10379989B2 (en) 2011-01-13 2019-08-13 Arm Limited Processing apparatus, trace unit and diagnostic apparatus

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH03129441A (ja) 分岐命令実行装置
JP3599409B2 (ja) 分岐予測装置
US7047399B2 (en) Computer system and method for fetching, decoding and executing instructions
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US7620802B2 (en) Instruction execution device, debugging method, debugging device, and debugging program
JP2678527B2 (ja) キャッシュメモリ装置
JPH02260033A (ja) ブランチ予測
KR20010050791A (ko) 분기 명령과 연관된 컴퓨팅 시스템 레이턴시를 감소시키기위한 시스템 및 방법
US5185869A (en) System for masking execution ready signal during unsettled period of determining branch condition to prevent reading out of stored instructions
JPS6125169B2 (ja)
JPH01214932A (ja) データ処理装置
JPH03158928A (ja) データ処理装置
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
KR970011209B1 (ko) 실행된 명령 스트림을 추적하기 위해 사용되는 신호를 발생하기 위한 회로를 포함하는 마이크로프로세서
JP2591325B2 (ja) 分岐制御装置
JP2503223B2 (ja) 先行制御方式
JPH0934704A (ja) 無条件ジャンプ命令処理方法並びにそのための無条件ジャンプ命令処理装置及び汎用レジスタ
JP2579817B2 (ja) マイクロプロセッサ
JPH01258032A (ja) パイプライン処理機構を持つデータ処理装置
JPH0769807B2 (ja) データ処理装置
JPH06242946A (ja) 分岐制御装置
JPH0895784A (ja) 演算処理装置及び方法
JPH0315771B2 (ja)
JPH0769808B2 (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