JP3146077B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP3146077B2
JP3146077B2 JP30570092A JP30570092A JP3146077B2 JP 3146077 B2 JP3146077 B2 JP 3146077B2 JP 30570092 A JP30570092 A JP 30570092A JP 30570092 A JP30570092 A JP 30570092A JP 3146077 B2 JP3146077 B2 JP 3146077B2
Authority
JP
Japan
Prior art keywords
instruction
branch
execution
conditional branch
instructions
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
JP30570092A
Other languages
English (en)
Other versions
JPH05224927A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP30570092A priority Critical patent/JP3146077B2/ja
Publication of JPH05224927A publication Critical patent/JPH05224927A/ja
Application granted granted Critical
Publication of JP3146077B2 publication Critical patent/JP3146077B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

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】
【従来技術】近年、プロセッサにおける高性能化は、Su
perscalarやVLIWと呼ばれる複数の演算ユニットを用意
し、一度に複数命令を並列に実行する方式が採られるよ
うになってきた。これらの方式で商用化されたものに
は、MOTOROLA社のマイクロプロセッサMC88100等が知ら
れている(MOTOROLA社の「MC88100 MICROPROCESSOR U
SER'S MANUAL SECOND EDITION」に示されている)。
これらの方式を用いると、従来シーケンシャルに実行さ
れていた命令列が、複数の命令を一度に実行することが
可能となる。
【0003】また、命令の実行順序に関して、命令列の
並ぶ順に実行するのではなく、データの依存関係がない
命令については実行可能なものから実行する、すなわち
out-of-order実行という高速化方法も知られている。こ
れらの高速化技法については信学技報CPSY-90-54('90.
7)「SIMP(単一命令流/多重命令パイプライン)方式
に基づくスーパースカラ・プロセッサの改良方針」
(「An Extended Superscalar Processor Prototype Ba
sed on the SIMP (Sngle Instruction stream/Multipl
e instruction Pipelining) Architecture」)に示さ
れている。
【0004】上記従来技術のプロセッサは、条件分岐命
令の分岐が確定していなくても、どちらに分岐するかを
予測して、先行的に命令を実行(投機的実行と呼ぶ)す
ることにより、高速化を図っていた。予測の方法は、例
えば、以前出現したものと同じ条件分岐命令は前回と同
じ側に分岐すると予測する、などがある。
【0005】
【発明が解決しようとする課題】しかしながら、上記の
ような従来技術によれば、以下のような問題点を有して
いた。一般に、複数の命令が同時に実行されるようにな
ると、処理サイクルあたりの分岐命令の出現頻度が増え
る。条件分岐命令の場合には、条件が確定(通常はPS
R:Program Status Registerの変更)するまで分岐す
るか否かは決定できない。このため条件分岐命令毎に命
令流がインターロックされてしまい、性能が頭打ちの状
態になる。(これら分岐による依存関係を制御依存と呼
ぶ) また、分岐するかしないかを予測して、先行的に命令を
処理(投機的実行と呼ぶ)する方法では、個々の条件分
岐命令に関しては、予測が当たった場合は高速化が達成
されるが、予測が外れた場合はもう一方の命令列に戻っ
て命令の実行をやり直すことになり、その代償が大き
い。さらに、プログラム全体の実行に関しては、必ずし
も高速化が達成されるとは限らない。
【0006】本発明の目的は、条件分岐命令に対応する
条件が確定していなくても投機的に命令を処理し、イン
タ−ロックが少なく、プログラムを高速に実行するプロ
セッサを提供することにある。
【0007】
【課題を解決するための手段】上記の課題を解決するた
め、本発明のプロセッサは、複数の実行ユニットを有
し、メモリから取り出された複数の命令を複数の実行ユ
ニットにおいて並列に実行するプロセッサであって、
モリから取り出された複数の命令に含まれ、条件が他の
命令の実行結果に依存する条件分岐命令の種類を判別す
る命令種別判別手段と、分岐の成否が決定されるまでの
間、条件分岐命令の種類に応じて、(a)分岐先の命令
列、(b)分岐先の命令列及び後続する命令列の両方、
(c)後続する命令列の何れかから、複数の命令を複数
実行ユニットに対して並列発行する命令並列発行手段
と、前記条件分岐が依存する他の命令が実行されたと
き、命令種別判別手段により判別された条件分岐命令の
分岐の成否を判定する分岐判定手段と、条件分岐命令の
分岐の成否の判定結果に整合するよう複数の実行ユニッ
トによる実行結果の有効無効を識別する実行結果管理手
段とを備え、前記条件分岐命令の種類の1つはループ系
の条件分岐命令である。
【0008】前記命令種別判別手段は、イフ・ゼン・エ
ルス系の条件分岐である第1の種類の命令と、それ以外
条件分岐命令とを判別し、前記命令並列発行手段は、
条件分岐命令が第1の種類の命令であった場合、分岐先
の命令列と条件分岐命令に後続する命令列の双方から複
数の命令を複数の実行ユニットに対して並列発行し、条
件分岐命令が第1の種類の命令以外の命令であった場
合、どちらか一方から複数の命令を複数の実行ユニット
に対して並列発行し、前記実行結果管理手段は、条件分
岐命令が第1の種類の命令であった場合、分岐の成否の
判定結果によって、一方の命令列の実行結果を有効に
し、他方を無効にする一方、条件分岐命令が第1の種類
の命令以外の場合、分岐の成否の判定結果に応じて命令
列の実行結果の全てを有効又は無効にし、前記それ以外
の分岐命令は前記ループ系の条件分岐命令を含む。
【0009】前記命令種別判別手段は、第1の種類の分
岐命令以外の命令を、前記ループ系の条件分岐命令であ
第2の種類の命令と、第1の分岐命令より分岐しない
確率が高い条件分岐命令である第3の種類の命令とに判
別し、前記命令並列発行手段は、第2の種類の命令の場
合、分岐先の命令列の命令を実行ユニットに対して並列
発行し、第3の種類の命令の場合、条件分岐命令に後続
する命令列の命令を実行ユニットに並列発行し、前記第
2種の命令は前記ループ系の条件分岐命令である構成と
してもよい。
【0010】前記のプロセッサは、さらに条件分岐命令
に後続する命令列の命令を一時的に記憶するための第1
の命令フェッチバッファと、条件分岐命令の分岐先の命
令列の命令を一時的に記憶するための第2の命令フェッ
チバッファと、メモリに格納された命令を読み出し、
件分岐命令に後続する命令列の命令を第1の命令フェッ
チバッファに、条件分岐命令の分岐先の命令列の命令を
第2の命令フェッチバッファに格納する命令フェッチ手
段とを備えていてもよい。
【0011】前記命令フェッチ手段は、メモリに読み出
しアドレスを出力し、その内容をインクリメントするプ
ログラムカウンタと、前記読み出しアドレスに応じて
モリから読みだされた命令から条件分岐命令を検出する
条件分岐命令検出手段と、条件分岐命令検出手段で検出
された条件分岐命令に基づいて、分岐先のアドレスを計
算する演算手段と、モリから命令が読みだされるごと
にプログラムカウンタの内容をインクリメントしていき
第1の命令フェッチバッファに命令を格納し、条件分岐
命令が検出された場合、後続する命令列の命令を第1の
命令フェッチバッファに格納し、演算手段で求められた
分岐先アドレスをプログラムカウンタに書き込み、分岐
先の命令列の命令を第2の命令フェッチバッファに格納
するフェッチ制御手段とを有していてもよい。
【0012】前記命令並列発行手段は、命令を解読して
実行ユニットへの制御信号を生成する複数の解読手段
と、第1又は、第2の命令フェッチバッファから全ての
解読手段に命令を1つずつ転送する転送制御手段と、転
送制御手段により転送されるそれぞれの命令に、その命
令がどの命令列に属するかを示すモ−ド情報を付加する
モ−ド付加手段とを有し、 前記実行結果管理手段は、モ
ード情報により命令の実行結果が、条件分岐命令に後続
する命令列に属するか分岐先の命令列に属するのかを識
別する。
【0013】前記モ−ド付加手段が付加するモ−ド情報
は、2ビットの情報であり、条件分岐命令に後続する命
令列のモ−ド情報は条件分岐命令自身のモ−ド情報に対
して第1の値を加算した値、分岐先の命令列のモ−ド
は第2の値を加算した値であってもよい。前記条件分
岐命令が依存する他の命令は、プロセッサ内部のPSR
(ProgramStatus Register)を実行結果に応じて変更す
る命令であり、前記分岐判定手段は、前記他の命令が実
行されたことを検出しPSRを参照することにより分岐
の成否を判定するような構成であってもよい。
【0014】前記プロセッサは、さらに、解読手段で解
読された複数の解読結果を参照して、解読された複数の
命令間のデ−タ依存関係を判定するデ−タ依存関係判定
手段と、実行ユニットで実行中の命令が使用しているレ
ジスタがどれであるかを管理するスコアボ−ド管理手段
と、実行ユニットの空き状態を検知する空き状態検知手
段と、解読手段で解読された各命令について、デ−タ依
存関係判定手段の判定結果、スコアボ−ド管理手段、空
き状態検知手段の検知結果に基づいて、発行可能な命令
を命令並列発行手段から実行ユニットへの発行を許可
し、また、解読手段で解読された命令が条件分岐命令で
ある場合には、命令並列発行手段から分岐判定手段への
発行を許可する命令発行許可手段とを有していてもよ
い。
【0015】前記命令発行許可手段は、複数の解読手段
の解読結果にそれぞれについて、データ依存関係検出手
段の検出結果から前の命令とデ−タ依存関係がなく、ス
コアボ−ド管理手段の情報からその命令のオペランドで
指定されているレジスタが実行ユニットで実行中の命令
に使用されていなく、かつ、空き状態検知手段の検知結
果からその命令を実行しうる実行ユニットが空いている
こと、を満たす命令を発行可能と判定することを特徴と
する請求項9記載のプロセッサ。
【0016】前記プロセッサはさらに、実行ユニット毎
に命令を実行中であるか否かを示す情報を保持し、空き
状態検知手段によって参照される実行ユニット管理テ−
ブルと、実行ユニットで実行中の命令が使用しているレ
ジスタがどれであるかを示す情報を保持し、スコアボ−
ド管理手段によって参照されるスコアボ−ドとを備えて
いてもよい。
【0017】前記実行結果管理手段は、命令並列発行手
段によって発行された条件分岐命令のモ−ド情報を初期
モ−ド情報として保持する初期モ−ド保持手段と、命令
並列発行手段によって発行された条件分岐命令の種類を
保持する投機実行種類保持手段と、命令並列発行手段に
よって発行された条件分岐命令の条件判断が未だ確定し
ていないことを示すフラグを保持する投機実行状態指示
手段とを有し、前記命令並列発行手段は、条件分岐命令
を分岐判定手段に発行すると同時に、その条件分岐命令
のモ−ド情報を初期モ−ド保持手段に、その条件分岐命
令の種類を投機実行種類保持手段に出力し、投機実行状
態指示手段のフラグをセットするような構成であっても
よい。
【0018】前記実行結果管理手段は、実行ユニットで
の命令の実行結果と、その命令のモ−ド情報と、その実
行結果の格納先を示す情報と対応させて記憶する一時記
憶手段を有し、 前記実行結果管理手段は、分岐判定手段
の判定結果に基づいて、初期モ−ド保持手段、投機実行
種類保持手段を参照して一時記憶手段の実行結果の有効
無効を識別し、実行結果の格納先を示す情報に従って実
行結果を一時記憶手段から格納先に転送し、無効な実行
結果をクリアするようにしてもよい。前記一時記憶手段
は、格納先の情報として、本来の格納先がレジスタであ
る場合には、レジスタ番号を、本来の格納先がメモリで
ある場合には、メモリアドレスを記憶するような構成で
あってもよい。
【0019】また、本発明のプロセッサは、複数の実行
ユニットを有し、メモリから取り出された複数の命令を
複数の実行ユニットにおいて並列に実行するプロセッ
であって、メモリから取り出された複数の命令に含ま
れ、条件が他の命令の実行結果に依存する条件分岐命令
の種類を判別する命令種別判別手段と、分岐の成否が決
定されるまでの間、条件分岐命令の種類に応じて、
(a)分岐先の命令列、(b)分岐先の命令列及び後続
する命令列の両方、(c)後続する命令列の何れかか
ら、複数の命令を複数の実行ユニットに対して並列発行
する命令並列発行手段と、前記条件分岐が依存する他の
命令が実行されたとき、命令種別判別手段により判別さ
れた条件分岐命令の分岐の成否を判定する分岐判定手段
と、条件分岐命令の分岐の成否の判定結果に整合するよ
複数の実行ユニットによる実行結果の有効無効を識別
する実行結果管理手段とを備え、前記命令並列発行手段
は、命令を解読して実行ユニットへの制御信号を生成す
る複数の解読手段と、第1又は、第2の命令フェッチバ
ッファから全ての解読手段に命令を1つずつ転送する転
送制御手段と、転送制御手段により転送されるそれぞれ
の命令に、その命令がどの命令列に属するかを示すモ−
情報を付加するモ−ド付加手段とを有し、 前記実行結
果管理手段は、モード情報により命令の実行結果が、条
件分岐命令に後続する命令列に属するか分岐先の命令列
に属するのかを識別する。
【0020】
【作用】上記の手段により本発明のプロセッサは、命令
種別判別手段が実行前の命令列に含まれる条件分岐命令
の種類を判別する。ここで、条件分岐命令の種類にはル
ープ系の条件分岐命令を含む。この判別された命令の種
類に応じて、命令並列発行手段は、実行ユニットに対し
て、分岐先の命令列及び/又は後続する命令列の命令を
実行ユニットに対して並列発行する。分岐判定手段によ
って、条件分岐命令の分岐の成否が判定されると、実行
結果管理手段は、命令列の実行結果の有効無効を識別す
る。
【0021】さらに、命令種別管理手段は、イフ・ゼン
・エルス系の条件分岐を含む第1の種類の命令と、前記
ループ系の条件分岐命令を含む第2の種類の分岐命令
と、それ以外の条件分岐命令を含む第3の種類の分岐命
令とを判別する。命令フェッチ手段は、通常メモリから
第1の命令フェッチ手段に命令を格納していき、条件分
岐命令検出手段によって条件分岐命令が検出された場
合、条件分岐命令に後続する命令列の命令を第1の命令
フェッチバッファに、分岐先の命令列の命令を第2の命
令フェッチバッファに格納する。これらの命令フェッチ
バッファに格納された命令について、命令並列発行手段
は、モ−ド付加手段によりモ−ドを付加しつつ、転送制
御手段によって2つの命令フェッチバッファから複数の
解読手段に対して命令を取り込む。
【0022】さらに、命令発行許可手段は、複数の解読
手段で解読された各命令について、デ−タ依存関係判定
手段の判定結果、スコアボ−ド管理手段、空き状態検知
手段の検知結果に基づいて、発行可能な命令を命令並列
発行手段から実行ユニットへの発行を許可し、また、解
読手段で解読された命令が条件分岐命令である場合に
は、命令並列発行手段から分岐判定手段への発行を許可
する。このとき、命令発行許可手段は、条件分岐命令が
第1の種類の命令であった場合、分岐先の命令列と条件
分岐命令に後続する命令列の双方を実行ユニットに対し
て並列発行を許可し、第2の種類の命令の場合、分岐先
の命令列の命令を実行ユニットに対して並列発行し、第
3の種類の命令の場合、条件分岐命令に後続する命令列
の命令を実行ユニットに並列発行を許可する。
【0023】前記命令並列発行手段は、条件分岐命令を
分岐判定手段に発行すると同時に、その条件分岐命令の
モ−ドを初期モ−ド保持手段に、その条件分岐命令の種
類を投機実行種類保持手段に出力し、投機実行状態指示
手段のフラグをセットする。分岐判定手段により分岐す
る否かが判定されると、実行結果管理手段は、その判定
結果に基づいて、初期モ−ド保持手段、投機実行種類保
持手段を参照して一時記憶手段の実行結果の有効無効を
識別し、有効な実行結果を本来の格納先に転送し、無効
な実行結果をクリアする。
【0024】
【実施例】図1は本発明のプロセッサの構成図である。
図1において、1はメモリであり、プログラムを構成す
る命令列やオペランドデータを記憶する。2は命令フェ
ッチ部であり、メモリ1から命令をプリフェッチし、命
令フェッチバッファA3または命令フェッチバッファB
4に書き込む。この命令フェッチ部2は、フェッチした
命令が条件分岐命令であるかどうかを検出し、検出結果
に応じて書き込み先の命令フェッチバッファを切り替え
る。
【0025】この命令フェッチ部2によって検出される
分岐命令について説明する。例えば、プログラム言語C
の場合、一般的には、分岐するかしないかが不確定なif
-then-else系の場合と、分岐する確率が高いループの場
合と、分岐しない確率が高い場合の分岐動作がある。
switch文の場合には実装方法によるが一般的にif-then-
elseと同様に考えてよい。そこで、本実施例では、あら
かじめ分岐の確率に応じて、分岐の確率が高い場合に高
速に動作するル−プ系の分岐命令と、分岐の確率が不明
な場合に高速に動作するif-then-else系の分岐命令と、
分岐しない確率が高い場合に高速に動作する分岐命令の
三種類を機械語命令の中に設けている。ル−プ系の分岐
命令は、ル−プ向きの分岐命令で分岐する確率が高い命
令(以後、Bcc_lと省略)であり、if-then-else系の分
岐命令は分岐するかしないかが不確定な分岐命令(以
後、Bcc_iと省略)である。このほかに、分岐しない確
率が高い命令(以後、Bcc_nと省略)がある。
【0026】分岐命令が命令フェッチ部2により検出さ
れると、分岐命令に後続する命令列(分岐しないときに
実行される命令列)と分岐先の命令列(分岐したときに
実行される命令列)の両方を読み出し、分岐命令に後続
する命令列をそれまでと同じ命令フェッチバッファに、
分岐先の命令列をもう1つの命令フェッチバッファに格
納する。この読み出し動作は、命令の解読や実行とは非
同期に、命令フェッチバッファA3または命令フェッチ
バッファB4を常に一杯にする。
【0027】命令フェッチバッファA3は、命令フェッ
チ部2により読み出された命令をFIFO(First In F
irst Out)メモリである。命令フェッチバッファB4
は、3と同様、FIFOメモリである。5はセレクタで
あり、2つの命令フェッチバッファから出力される命令
を切り替える。切り替えの指示は命令解読部7によって
行われる。
【0028】6は命令解読バッファであり、命令解読の
対象となる命令を記憶し、本実施例では、6命令分の記
憶容量を持つ。記憶容量については、少なくとも演算ユ
ニット8〜11と同数以上が望ましい。命令解読部7
は、命令フェッチバッファから命令解読バッファ6への
命令の転送制御、命令解読バッファの命令解読、及び演
算ユニットへの命令発行を行う。
【0029】8は演算ユニットAであり、ロード命令と
ストア命令を実行し、このうちロード命令の実行は、説
明の便宜上2サイクルかかるとしている。9は演算ユニ
ットBであり、整数演算を処理する。10は演算ユニッ
トCであり、整数演算を処理する。11は演算ユニット
Dであり、浮動小数点演算を処理する。演算ユニットA
8〜D11は本実施例では説明を簡単化するため1サイ
クル(ロード命令は2サイクル)で命令の実行が完了す
るとしている。また、ユニットのパイプライン段数も本
発明の主旨とは関係無いのでここでは定義しない。
【0030】12は演算ユニット管理テーブルであり、
演算ユニットごとに、使用中であることを示す情報(ビ
ット)を記憶する。このビットは、各演算ユニットによ
って、演算ユニットの命令実行開始時にセットされ、演
算ユニットの命令実行終了時にクリアされる。13は実
行順序管理バッファであり、投機的に実行された命令の
演算結果と、その結果が本来格納されるべきレジスタの
番号と、その命令のモ−ドと記憶する。実行順序管理バ
ッファ13の記憶形式は、図7に示すようにモ−ド、レ
ジスタ番号、演算結果を記憶する領域を有している。
【0031】14は初期モード保持回路であり、命令解
読部が処理した分岐命令に付加されているモードを初期
モ−ドとして保持する。15は投機実行種類保持回路で
あり、現在実行している分岐命令の種類(Bcc-lである
かBcc-iであるか)を保持する。16は投機実行状態指
示回路であり、現在投機実行中の状態か否かを示すフラ
グを保持する。
【0032】17は実行順序管理回路であり、上記14
〜16から得られる情報に応じて、演算ユニット8〜1
1の演算結果をレジスタファイル19又は実行順序管理
バッファ13に格納する。具体的には、投機実行中でな
いときは、演算結果をレジスタファイルに書き込み、投
機実行中のときは、投機実行中の命令について、モー
ド、演算結果(オペランド)の書き込み先のレジスタ番
号を対応づけて実行順序管理バッファ13に格納する。
また、投機実行が終了したときは、実行順序管理バッフ
ァに格納された演算結果及びレジスタ番号に基づいてレ
ジスタファイルに演算結果を転送する。
【0033】18は命令実行整合性維持回路であり、P
SRの確定結果から条件分岐命令の条件の成否を判定
し、その結果によって、命令解読部7に命令実行のやり
直しの指示、実行順序管理バッファ13内部の無効化、
実行順序管理回路17の転送指示を行う。より具体的に
は、条件分岐命令の種類によって、次の場合に分けられ
る。
【0034】(1)Bcc-l命令について投機実行が行わ
れている場合には、分岐先の命令のみ実行されているの
で、確定の結果から分岐しないことが判明したときには
先行して実行した命令の結果を実行順序管理バッファ内
から消去し、再度分岐しない側の命令を実行するように
命令解読部に指示する。 (2)Bcc-i命令について投機実行が行われている場合
には、分岐先の命令と後続する命令が実行されているの
で、分岐方向が確定したときには、それに応じて、後続
命令または分岐先命令の結果を実行順序管理バッファ内
から消去する。
【0035】(3)Bcc-n命令について投機実行が行わ
れている場合には、分岐命令に後続する命令のみ実行さ
れているので、確定の結果から分岐することが判明した
ときには先行して実行した命令の結果を実行順序管理バ
ッファ内から消去し、再度分岐する側の命令を実行する
ように命令解読部に指示する。19はレジスタファイル
であり、32個のレジスタ及びPSRを有し、命令の実
行結果が格納される。
【0036】20はスコアボ−ドであり、レジスタファ
イル19の各レジスタごとに2ビットのフラグを有す。
1つは、投機実行でない実行中の命令が、対応するレジ
スタを使用(リ−ド又はライト)していることを示す。
もう1つは、投機実行で実行中の命令が、対応するレジ
スタを使用していることを示す。図2は、図1の命令フ
ェッチ部2の詳細な構成を示すブロック図である。同図
において、21はプログラムカウンタであり、メモリ1
から読み出すべき命令のアドレスを出力し、命令が読み
出されるごとにその内容をインクリメントする。
【0037】22は分岐命令検出回路であり、メモリ1
から読み出された命令から条件分岐命令を検出する。2
3は演算回路であり、検出された条件分岐命令に基づい
て分岐先アドレスを算出する。24はセレクタであり、
プログラムカウンタ21と演算回路23の出力を選択し
てメモリ1に出力する。
【0038】25はフェッチ制御部であり、メモリ1か
らの命令読み出し、および、命令フェッチバッファA3
または命令フェッチバッファB4への命令書き込みを制
御する。詳しく言うと、通常は、プログラムカウンタ2
1がインクリメントしながらアドレスを順に出力するよ
うに制御し、一方の命令フェッチバッファに命令を格納
する。分岐命令検出回路22により条件分岐命令が検出
されると、その条件分岐命令が有する分岐先アドレスの
情報を演算回路23に入力して分岐先アドレスを算出さ
せ、分岐先の命令も読み出しうるように制御し、他方の
命令フェッチバッファに命令を格納する。
【0039】図3は、図1の命令解読部7の詳細な構成
を示すブロック図である。同図において、31は分岐命
令検出回路であり、図1のセレクタ5の出力から分岐命
令(Bcc_l命令及びBcc_i命令を検出する。32は転送制
御回路であり、命令フェッチバッファA3または命令フ
ェッチバッファB4の命令を、セレクタ5を介して命令
解読バッファ6に転送する。この転送は、分岐命令検出
回路31の検出結果によってその動作が異なる。
【0040】第1に、分岐命令が検出されていない場
合、転送制御回路32は、命令フェッチバッファA3又
は命令フェッチバッファB4のうちどちらか命令が入っ
ている方の出力ををセレクタ5に選択させて命令解読バ
ッファ6に命令を転送させる。第2に、Bcc_l系命令
(ループ向きの分岐命令で、分岐の確率が高い)が検出
された場合、現在命令を読み出している命令フェッチバ
ッファから、他方の命令フェッチバッファに切り替え
て、命令解読バッファに命令を転送する。命令解読バッ
ファ6には分岐先の命令ばかりが転送されることにな
る。
【0041】第3に、Bcc_i系命令(if-then-else系の
分岐命令で、分岐の確率が不確定)が検出された場合、
命令の読み込みを現在使用している命令フェッチバッフ
ァと他方の命令フェッチバッファから交互に転送する。
命令フェッチバッファには後続する命令(分岐しない時
に実行される命令)と分岐先の命令とが混合して(交互
に)転送されることになる。
【0042】第4に、Bcc_n系命令(分岐しない確率が
高い)が検出された場合、現在命令を読み出している命
令フェッチバッファから、引き続き命令解読バッファに
命令を転送する。命令解読バッファ6には分岐しない側
の命令ばかりが転送されることになる。33はモ−ド付
加回路であり、転送制御回路32による上記の転送に際
して、分岐命令による命令の制御フローが判るように各
命令にモードを付加して、命令解読バッファ6に格納す
る。
【0043】このモ−ド設定ル−ルは、 (1)分岐命令に後続する命令列のモ−ドは、現在のモ
−ドに”+01”を加算する。 (2)分岐先の命令列のモ−ドは、現在のモ−ドに”+
10”を加算する。 の2つである。
【0044】モードと命令のフローの一例を示したモー
ド説明図を図4に示す。同図において、実線の矢印
(↓)は命令列を、丸印(○)は条件分岐命令を、破線
の矢印()はル−プの戻り先(Bcc_l命令の分岐先)
を、” ”内の数字はモ−ドを示す。また、丸付き数字
(、、)はル−プの繰り返し回数である(図2で
は3回繰り返す)。
【0045】例えば、現在の命令列のモードが”00”
とすると、分岐命令に後続する命令列のモードは”+0
1”を加算して”01”、分岐先の命令列のモードは”
+10”を加算して”10”として設定される。また、
ル−プ処理において、ル−プを繰り返すごとにモ−ドが
変化するのは、モ−ドが相対的に設定されているからで
ある。
【0046】このモード設定ルールを使用すれば分岐命
令までの命令列と後続する命令列と分岐先の命令列を容
易に判別でき、分岐先命令列に新たな分岐が存在し、木
のように枝別れする場合でも制御フロ−を判別すること
が可能である。34は命令解読回路であり、デコ−ダ3
4a〜34fを備え、図1の命令解読バッファ6から入
力される6つの命令を同時に解読する。DECの数は、
ここでは命令解読バッファ6の段数と同数であり、演算
ユニット8〜11と同数以上が望ましい。
【0047】35はPSR変更命令検出回路であり、デ
コ−ダ34a〜34fの解読結果が入力され、それぞれ
の命令がPSR(Program Status Register)の内容を
変更するかどうかを検出する。PSR内容が確定すると
条件分岐命令の条件の成否が決定するので、この検出結
果は、命令実行整合性維持回路18に通知される。36
はデータ依存関係検出回路であり、デコ−ダ34a〜3
4fから入力される解読結果に基づいて、1つの命令の
実行結果を他の命令が利用するというデ−タ依存関係あ
るかどうかを検出する。具体的には、データ依存関係検
出回路36は、解読された6つの命令について、解読結
果のレジスタフィ−ルドを比較して、実行アドレスが前
の命令のディスティネ−ション・レジスタが後の命令の
ソ−ス・レジスタになっている場合、デ−タ依存関係が
あると判定する。
【0048】デ−タ依存関係を調べる範囲については、
命令解読バッファ6の命令と、命令解読バッファ6にま
だ取り込まれていない命令との間のデ−タ依存関係は、
調べる必要がない。というのは、前者と後者の命令は同
時に実行されることがないからである。命令解読バッフ
ァ6内にある命令についてのみデ−タ依存関係を調べれ
ばよい。同時に実行されうるからである。ただし、命令
解読バッファ6内の命令であっても、表1に示すよう
に、分岐先の命令列における命令(B)と、分岐命令に
後続する命令列における命令(c)との間のデ−タ依存
関係は、チェックしない。なぜなら、(B)と(C)は
排他的な関係にあるからである。表1に本発明の実施例
における命令列のデ−タ依存関係のチェックの有無を示
【0049】
【表1】
【0050】37はスコアボ−ド管理回路であり、スコ
アボ−ド20を参照して命令の実行で使用されているレ
ジスタの状況を判断し、また、デコ−ダ34a〜34f
の解読結果を見て、レジスタの内容を変更する命令があ
れば、そのレジスタに対応するスコアボ−ド20のフラ
グをセットする。38は空き状態検知回路であり、演算
ユニット管理テーブル12を参照してどの演算ユニット
が空いている(使用中でない)かを判断する。。
【0051】39は命令発行回路であり、セレクタ39
a〜39dを有し、命令発行制御回路40の指示に従っ
て、命令解読回路34によって解読された命令のうち発
行可能な命令を選択して演算ユニット8〜11に並列に
発行する。これと同時に、命令発行回路39は、発行す
る命令ごとに、投機実行であるかどうかを示す識別子を
演算ユニットに格納する。この識別子は、本実施例で
は、”0”で投機実行でないことを、”1”で投機実行
中であることを示す。
【0052】命令発行制御回路40は、上記36〜38
から得られる情報に基づいて、命令解読回路34によっ
て解読された命令のうち発行可能な命令を判別して、命
令発行回路39に発行の指示を出す。発行可能な命令か
どうかは、命令ごとに、次の条件をチェックして全部満
たすものを発行可能と判別する。 6つの命令間において、前の命令とデ−タ依存関係が
ないこと。(データ依存関係検出回路36の検出結果に
基づいて、チェックする。) その命令のオペランドで指定されているレジスタが演
算ユニットで実行中の命令に使用されていないこと。
(スコアボ−ド管理回路37からの情報に基づいて、チ
ェックする。) その命令を実行しうる演算ユニットが空いているこ
と。(空き状態検知回路38の検知結果に基づいて、チ
ェックする。) また、命令の発行と同時に、命令発行制御回路40は、
命令解読バッファ6から発行した命令を削除し、演算ユ
ニット管理テーブル12の対応するビットをセット(使
用中)する。
【0053】発行可能な命令が条件分岐命令である場合
には、演算ユニットには命令発行せず、初期モード保持
回路14に分岐命令のモ−ドを、投機実行種類保持回路
15にBcc-i命令であるかBcc-l命令であるかBcc-nであ
るかを、投機実行状態指示回路16に投機実行中である
ことを示すフラグを、命令実行整合性維持回路18にそ
の命令の条件をセットする。この場合、これ以降は投機
実行状態になる。
【0054】以上のように構成された本発明の実施例に
おける分岐処理装置について、最初にBcc-i命令を含む
場合について、その動作を図5〜図9及び表2を併用し
て説明する。図5は、Bcc-i命令を高速に処理する本実
施例の動作を説明するための命令フローの一例である。
図5において、矢印は命令実行順序を示し、命令N−3
と命令N−2の間の矢印はデータの依存関係があること
を、()内のLDはロ−ド命令、INTは整数演算命
令、FPUは浮動小数点演算命令を示す。命令N−2
は、分岐命令の基になるPSRを変更する命令である。
【0055】まず、命令フェッチ部2の動作について説
明しておく。命令フェッチ部2は、命令解読以下の処理
とは非同期に動作する。命令フェッチ部2は、プログラ
ムカウンタ21を用いてメモリ1から命令を読み込み、
命令フェッチバッファA3に格納する。メモリ1からの
読み出し時に、分岐命令検出回路22が分岐命令を検出
すると、その分岐命令に後続する命令を命令フェッチバ
ッファA3に格納するとともに、演算回路23が分岐先
アドレスを計算し、分岐先の命令をもう一つの命令フェ
ッチバッファB4に格納する。
【0056】この命令フェッチ部2の動作は、分岐命令
がない場合にはどちらか一方の命令フェッチバッファが
一杯になるまで、分岐命令がある場合には両方の命令フ
ェッチバッファが一杯になるまで続けられる。命令フェ
ッチバッファA3と命令フェッチバッファB4は同等で
あり、どちらを先に使用してもかまわない。これ以降の
説明では命令フェッチバッファが常に一杯になっている
として説明を進める。
【0057】図5において、命令N−3より以前に実行
された命令については、本発明の説明とは無関係なので
説明を加えない。また、命令フェッチ部2によって、図
3の命令列のうち分岐命令までの命令列と分岐命令に後
続する命令列は順次命令フェッチバッファA3に格納さ
れ、分岐先の命令列は命令フェッチバッファB4に格納
されている。以下、順を追って説明する。
【0058】(1)命令解読部7は、命令フェッチバッ
ファA3から命令を読みだし、その命令にモードを付加
して命令解読バッファ6に格納する。命令フェッチバッ
ファA3に格納されている図6のN−3からN+2まで
の命令は、命令解読部7によって読み出されてモード”
00”が付加され、命令解読バッファ6に格納される。
この時点の命令解読バッファ6の保持内容を図6に示
す。
【0059】(2)命令解読部7において、データ依存
関係検出回路36は命令間のデータ依存関係をチェック
し、スコアボ−ド管理回路37は使用中のレジスタをチ
ェックし、空き状態検知回路38は演算ユニット管理テ
ーブル12で演算ユニットの空き状況を判断する。これ
らの結果に応じて、命令発行制御回路40は、発行可能
な命令を判別し、命令発行回路39に命令を投機実行で
あるか否か示す識別子を付けて発行させるとともに、当
該命令を命令解読バッファ6から削除する。
【0060】図6において、命令N−2は、命令N−3
とデータ依存関係があるので最初は発行されない。N−
3、N−1、N、N+1の4つが発行される。投機実行
ではないので各命令の識別子は”0”である。これらの
命令発行後の演算ユニットの状態を表2の1行目に示
す。各演算ユニットは、命令が投入されると、演算ユニ
ット管理テーブル12の対応するビットをセットする。
表2は図5の命令フローを実行したときの演算ユニット
での命令実行の状況を示す。
【0061】
【表2】
【0062】(3)演算ユニットは、命令を実行した
後、演算結果を実行順序管理回路17に出力する。投機
実行中の命令ではない(識別子が0である)ので、実行
順序管理回路は、演算結果をレジスタファイル19に直
接書き込む。通常、分岐命令の無い命令列は(1)〜
(3)のように実行される。 (4)命令解読バッファ6は、図6において命令N−2
と命令N+2が残った状態になっている。命令解読部7
の転送制御回路32は、新たな命令を命令フェッチバッ
ファA3から順に読み出し、命令解読バッファ6に格納
する。その際、分岐命令検出回路31が読み出した命令
がBcc_i命令であることを検出すると、転送制御回路3
2は、セレクタ5を交互に切り替えることによって、命
令フェッチバッファA3から分岐命令に後続する命令
(分岐しない場合に続いて実行する命令)と、命令フェ
ッチバッファB4から分岐先命令を交互に読み出し、命
令解読バッファに格納する。これと同時に、モ−ド付加
回路33は、分岐先命令か否かを示すために、現状のモ
ードを”00”とすると、後続する命令には”+01”
を加算して”01”、分岐先の命令には”+10”を加
算して”10”として設定する。すると命令解読バッフ
ァは図7のように命令が格納されることになる。
【0063】(5)命令解読部7は(2)で述べたのと
同様に、発行可能な命令を判別する。前のサイクルで発
行された命令のうち、演算ユニットA8に発行された命
令N−3は2サイクルかかるロード命令のためまだ実行
が完了していない。そのため、この命令とデータ依存関
係をもつ命令N−2は、もう1サイクル命令発行が遅ら
される。この処理サイクルでは、命令N+2、Bcc_i、
命令N+3、命令Mが発行可能であると判別される。命
令発行制御回路40は、命令発行回路39を介して、命
令N+2を演算ユニットD11に、Bcc_i命令を命令実
行整合性維持回路18に、命令N+3を演算ユニットB
9に、命令Mを演算ユニットC10に、識別子を付加し
て発行するとともに、命令解読バッファ6から削除す
る。これらの命令に付加される識別子は、同順に0、
0、1、1である。命令発行後の各演算ユニットの状態
を表2の2行目に示す。発行された各命令は、次の(6
−1)〜(6−4)のように実行される。
【0064】(6−1)演算ユニットD11は、命令N
+2が発行されると、演算ユニット管理テーブル12の
対応するビットをセットし、命令を実行する。演算ユニ
ットD11にて命令の実行が終了すると、実行結果が実
行順序管理回路17に出力される。これと同時に、演算
ユニット管理テーブル12の対応するビットがクリアさ
れる。
【0065】実行順序管理回路17は、命令N+2が投
機実行モード下の実行ではない(識別子が0である)の
で、演算結果を実行順序管理バッファ13へは格納せ
ず、レジスタファイル19へ書き込む。 (6−2)Bcc-i命令は、演算ユニットには発行されず
に、命令発行制御回路40によって、初期モード保持回
路14にこの分岐命令自身のモ−ド”00”が、投機実
行種類保持回路15にBcc-i命令であることが、投機実
行状態指示回路16に投機実行中であることを示すフラ
グが、命令実行整合性維持回路18にその命令の条件が
セットされる。これ以降は投機実行状態に入る。
【0066】(6−3)演算ユニットB9は、命令N+
3が発行されると、演算ユニット管理テーブル12の対
応するビットをセットし、命令を実行する。演算ユニッ
トB9にて命令の実行が終了すると、実行結果が実行順
序管理回路17に出力される。これと同時に、演算ユニ
ット管理テーブル12の対応するビットがクリアされ
る。
【0067】実行順序管理回路17は、この命令が投機
実行下の命令(識別子が1)なので、実行順序管理バッ
ファ13に書き込み先のレジスタ番号とモード”01”
を書き込む。 (6−4)演算ユニットC10は、命令Mが発行される
と、演算ユニット管理テーブル12の対応するビットを
セットし、命令を実行する。演算ユニットB9にて命令
の実行が終了すると、実行結果が実行順序管理回路17
に出力される。これと同時に、演算ユニット管理テーブ
ル12の対応するビットがクリアされる。
【0068】実行順序管理回路17は、この命令が投機
実行下の命令(識別子が1)なので、実行順序管理バッ
ファ13に書き込み先のレジスタ番号とモード”10”
を書き込む。 (7)この時点で実行順序管理バッファ13には図9の
2行目まで積まれることになる。
【0069】(8)また、命令解読バッファは図8のよ
うになる。次のサイクルでは命令N−3が完了している
ので、命令解読部7は一連の処理を行ない命令N−2、
N+4、M+1を発行する。命令発行後の各演算ユニッ
トの状態を表2の3行目に示す。これらの命令実行が終
了した時点で、実行順序管理バッファ13は図9の4行
目まで積まれることになる。
【0070】(9)上記のように演算ユニットは投入さ
れた命令を実行し、新たな命令を処理可能になれば演算
ユニット管理テーブル12の対応するビットをクリアす
る。命令解読部7は、新たな命令を処理できるようにな
れば、命令の発行処理を再開する。 (10)PSRを変更する命令N−2は、表2の3行目に
示すように演算ユニットBで実行される。命令N−2が
完了しPSRが確定すると、演算ユニットBは投機実行状
態指示回路16のフラグをクリアする。命令N−2が完
了しても、投機実行は、表2の4行目まで実行され、実
行順序管理バッファ13には図9の6行目まで投機実行
中の命令が登録される。
【0071】(11)命令実行整合性維持回路18は、
投機実行状態指示回路16のフラグがクリアされたこと
から、投機実行種類保持回路15よりBcc_i命令である
ことと、PSRの値に基づいて、分岐するか否かを判断す
る。この例では分岐すると仮定する。命令実行整合性維
持回路18は、Bcc_i命令であることから実行順序管理
バッファ13内部の後続する命令列(分岐しない側の命
令列)の演算結果はもう必要がないので、初期モード保
持回路14の初期モード”00”に”+01”を加算し
て、モードが”01”である命令の演算結果を無効化す
る。図9において命令N+3,N+4,N+5は無効化
(クリア)される。また、命令解読部7に対して分岐す
ることを通知し、以降分岐先の命令のみを命令解読バッ
ファ6に取り込むようにさせる。
【0072】(12)実行順序管理回路17は、命令実
行整合性維持回路18より、分岐が確定し、投機実行モ
ードが終了したことを通知される。そして、実行順序管
理バッファ13内に存在する分岐先の命令列(モード
が”10”の命令)に対しては、演算結果を対応するレ
ジスタファイル19のレジスタに格納する。 以上のように、条件分岐命令Bcc_iの場合の投機実行で
なされた処理は、分岐することが確定した後の処理と、
連続性を維持している。しかも、およそ半分の投機実行
結果は有効になるから、その分高速に処理されることに
なる。
【0073】続いて、Bcc-l命令を含む場合について、
その動作を図10〜図14及び表3を併用して説明す
る。図10はBcc_l命令高速に処理する本実施例の動作
を説明するための命令フローの一例である。命令実行順
序は矢印の通りである。また、命令N+4と命令N+7
とはデータの依存関係があるとする。命令N+7は条件
分岐命令の分岐判定の基になるPSRを変更する命令であ
る。同図において、命令Nまでに実行されている命令が
あるが本発明の説明には関係しないので説明を加えな
い。また、命令フェッチ部2によって、図10の命令列
のうち分岐命令までの命令列と後続する命令列は順次命
令フェッチバッファA3に格納されており、分岐先命令
列は命令フェッチバッファB4に格納されている。以
後、順を追って説明する。
【0074】(1)命令解読部7は命令フェッチバッフ
ァA3より命令を読みだし、その命令にモ−ドを付加し
て命令解読バッファ6に格納する。格納される命令のモ
ードは”01”とする。今、命令解読バッファ6は図1
1の状態になっているとする。 (2)命令解読部7において、データ依存関係検出回路
36は命令間のデータ依存関係をチェックし、スコアボ
−ド管理回路37は使用中のレジスタをチェックし、空
き状態検知回路38は演算ユニット管理テーブル12で
演算ユニットの空き状況を判断する。これらの結果に応
じて、命令発行制御回路40は、発行可能な命令を判別
し、命令発行回路39に命令を投機実行であるか否か示
す識別子を付けて発行させるとともに、当該命令を命令
解読バッファ6から削除する。
【0075】図11において、命令N+7は、命令N+
4とデータ依存関係があるので最初は発行されない。N
+4,N+5,N+6,N+8の4つが発行される。投
機実行ではないので各命令の識別子は”0”である。こ
れらの命令発行後の演算ユニットの状態を表3の1行目
に示す。表3は同実施例における図8の命令フローを実
行したときの演算ユニットでの命令実行の状況を示す。
【0076】
【表3】
【0077】各演算ユニットは、命令が投入されると、
演算ユニット管理テーブル12の対応するビットをセッ
トする。演算ユニットは、命令を実行した後、演算結果
を実行順序管理回路17に出力する。投機実行中の命令
ではない(識別子が0である)ので、実行順序管理回路
17は、演算結果をレジスタファイル19に直接書き込
む。
【0078】(3)命令解読バッファ6は、図11にお
いて命令N+7と命令Bcc_lが残った状態になってい
る。命令解読部7の転送制御回路32は、新たな命令列
を命令フェッチバッファA3から読みだす。読みだした
命令がBcc_l命令であることを検出すると、セレクタ5
を切り替えて命令フェッチバッファB4から分岐先の命
令のみを読み出し、命令解読バッファ6に格納する。こ
れと同時に、モ−ド付加回路33は、分岐先の命令か否
かを示すために、現状のモードを”01”とすると、分
岐先の命令には”+10”を加算して”11”として設
定する。すると命令解読バッファは図12のように格納
されたことになる。
【0079】(4)命令解読部7は(2)で述べたのと
同様に、発行可能な命令を判別する。前のサイクルで発
行された命令のうち、演算ユニットA8に発行された命
令N+4は2サイクルかかるロード命令であり、まだ実
行が完了しない。そのため、この命令とデ−タ依存関係
を持つ命令N+7は、もう1サイクル命令発行が遅らさ
れる。この処理サイクルでは、Bcc_l、命令N、命令N
+1、命令N+3が発行可能であると判別される。命令
発行制御回路40は、命令発行回路39を介して、Bcc_
l命令を命令実行整合性維持回路18に、命令Nを演算
ユニットB9に、命令N+1を演算ユニットC10に、
命令N+3を演算ユニットD11に、識別子を付加して
発行するとともに、命令解読バッファ6から削除する。
これらの命令に付加される識別子は、同順に0、1、
1、1である。
【0080】命令発行後の各演算ユニットの状態を表3
の2行目に示す。発行された各命令は、次の(5−1)
〜(5−4)のように実行される。 (5−1)Bcc-l命令は、演算ユニットには発行されず
に、命令発行制御回路40によって、初期モード保持回
路14にこの分岐命令自身のモ−ド”01”が、投機実
行種類保持回路15にBcc-l命令であることが、投機実
行状態指示回路16に投機実行中であることを示すフラ
グが、命令実行整合性維持回路18にその命令の条件が
セットされる。これ以降は投機実行状態に入る。
【0081】(5−2)演算ユニットB9は、命令Nが
発行されると、演算ユニット管理テーブル12の対応す
るビットをセットし、命令を実行する。演算ユニットB
9にて命令の実行が終了すると、実行結果が実行順序管
理回路17に出力される。これと同時に、演算ユニット
管理テーブル12の対応するビットがクリアされる。実
行順序管理回路17は、この命令が投機実行下の命令
(識別子が1)なので、実行順序管理バッファ13に書
き込み先のレジスタ番号とモード”11”を書き込む。
【0082】(5−3)演算ユニットC10は、命令N
+1が発行されると、演算ユニット管理テーブル12の
対応するビットをセットし、命令を実行する。演算ユニ
ットB9にて命令の実行が終了すると、実行結果が実行
順序管理回路17に出力される。これと同時に、演算ユ
ニット管理テーブル12の対応するビットがクリアされ
る。
【0083】実行順序管理回路17は、この命令が投機
実行下の命令(識別子が1)なので、実行順序管理バッ
ファ13に書き込み先のレジスタ番号とモード”11”
を書き込む。 (5−4)演算ユニットD11は、命令N+3が発行さ
れると、演算ユニット管理テーブル12の対応するビッ
トをセットし、命令を実行する。演算ユニットD11に
て命令の実行が終了すると、実行結果が実行順序管理回
路17に出力される。これと同時に、演算ユニット管理
テーブル12の対応するビットがクリアされる。
【0084】実行順序管理回路17は、命令N+2が投
機実行下の実行である(識別子が1である)ので、演算
結果をレジスタファイル19には書き込まず、実行順序
管理バッファ13へは格納する。 (6)この時点で、実行順序管理バッファ13には図1
4の3行目まで積まれることになる。
【0085】(7)また、命令解読バッファ6は図13
のようになる。次のサイクルでは命令N+4が完了して
いるので、命令解読部7は一連の処理を行ない命令N+
7,N+2を発行する。命令発行後の演算ユニットの状
態を表3の3行目に示す。これらの命令実行が終了した
時点で、実行順序管理バッファには図14の4行目まで
積まれることになる。
【0086】(8)上記のように演算ユニットは投入さ
れた命令を実行し、新たな命令を処理可能になれば演算
ユニット管理テーブル12の対応するビットをクリアす
る。命令解読部7は、新たな命令を処理できるようにな
れば、命令の発行処理を再開する。 (9)PSRを変更する命令N+7は、表3の3行目に示
すように演算ユニットBで実行される。命令N+7が完
了しPSRが確定すると、演算ユニットBは投機実行状態
指示回路16のフラグをクリアする。命令N+7が完了
しても、投機実行は、表3の4行目まで実行される。
【0087】(10)命令実行整合性維持回路18は、
投機実行状態指示回路16がクリアされたことから、投
機実行種類保持回路15よりBcc_l命令であること、PSR
の値に基づいて、分岐するか否かを判断する。ここでは
分岐すると仮定する。 (11)実行順序管理回路17は、命令実行整合性維持
回路18より、分岐が確定し、投機実行モードが終了し
たことを通知される。そして、実行順序管理バッファ1
3内に存在する分岐先の命令列(モードが”11”の命
令)に対しては、演算結果を対応するレジスタファイル
19のレジスタに格納する。
【0088】以上のように、条件分岐命令Bcc_lの投機
実行および分岐確定後の処理が、投機実行しない場合と
同様に整合性を維持して実行できる。また、(10)に
て分岐しないと確定した場合には以下のようになる。 (11)命令実行整合性維持回路は、分岐しないと判断
した後、投機実行種類保持回路15を参照してBcc_l命
令であることから、実行順序管理バッファ13内の分岐
先命令の演算結果をすべて無効化する。図14において
命令N,N+1,N+3,N+2は無効化(クリア)され
る。また、命令解読部7に対して分岐しないことを通知
し、再度命令フェッチバッファAに残されている後続す
る命令を命令解読バッファ6に取り込むよう処理をやり
直しさせる。
【0089】(12)実行順序管理回路17は、命令実
行整合性維持回路18より、分岐しないことが確定し、
投機実行モードが終了したことを通知される。そして、
実行順序管理バッファ内の命令の演算結果はすべて無効
化されているため何もしない。 以上のように、条件分岐命令Bcc_lによる投機実行でな
された処理は、分岐しないことが確定した後の処理に生
かされることはなく、高速化には寄与していない。しか
し、条件分岐命令Bcc_lは分岐しない確率が低いので、
このようなケ−スが起こる確率も低く、1回の投機実行
のみを見るのではなく、プログラム全体の全ての投機実
行を併せて見ると、高速化されることになる。また、こ
のケ−スでも、条件分岐命令より前の処理は、分岐しな
いことが確定した後の処理と連続性を維持している。
【0090】最後に、Bcc-n命令を含む場合について、
その動作を図15〜図19及び表4を併用して説明す
る。図15はBcc-n命令高速に処理する本実施例の動作
を説明するための命令フローの一例である。先のBcc-l
命令の説明で述べた(1)(2)までは、Bcc_n命令の
場合も同じであるので、ここでは、説明を省略する。
【0091】(3)命令解読バッファ6は、図16にお
いて命令N+7と命令Bcc-nが残った状態になってい
る。命令解読部7の転送制御回路32は、新たな命令列
を命令フェッチバッファA3から読みだす。読みだした
命令がBcc-n命令であることを検出すると、引き続き命
令フェッチバッファA3から分岐命令に後続する(分岐
しない側の)命令のみを読み出し、命令解読バッファ6
に格納する。これと同時に、モ−ド付加回路33は、分
岐先の命令か否かを示すために、現状のモードを”0
1”とすると、分岐先の命令には”+01”を加算し
て”10”として設定する。すると命令解読バッファは
図17のように格納されることになる。
【0092】(4)命令解読部7は、発行可能な命令を
判別する。前のサイクルで発行された命令のうち、演算
ユニットA8に発行された命令N+4は2サイクルかか
るロード命令であり、まだ実行が完了しない。そのた
め、この命令とデ−タ依存関係を持つ命令N+7は、も
う1サイクル命令発行が遅らされる。この処理サイクル
では、Bcc-n、命令N+9、命令N+10、命令N+1
1が発行可能であると判別される。命令発行制御回路4
0は、命令発行回路39を介して、Bcc-n命令を命令実
行整合性維持回路18に、命令N+9を演算ユニットB
9に、命令N+10を演算ユニットC10に、命令N+
11を演算ユニットD11に、識別子を付加して発行す
るとともに、命令解読バッファ6から削除する。これら
の命令に付加される識別子は、同順に0、1、1、1で
ある。
【0093】命令発行後の各演算ユニットの状態を表4
の2行目に示す。表4は同実施例における図15の命令
フローを実行したときの演算ユニットでの命令実行の状
況である。
【0094】
【表4】
【0095】発行された各命令は、次の(5−1)〜
(5−4)のように実行される。 (5−1)Bcc-n命令は、演算ユニットには発行されず
に、命令発行制御回路40によって、初期モード保持回
路14にこの分岐命令自身のモ−ド”01”が、投機実
行種類保持回路15にBcc-n命令であることが、投機実
行状態指示回路16に投機実行中であることを示すフラ
グが、命令実行整合性維持回路18にその命令の条件が
セットされる。これ以降は投機実行状態に入る。
【0096】(5−2)演算ユニットB9は、命令N+
9が発行されると、演算ユニット管理テーブル12の対
応するビットをセットし、命令を実行する。演算ユニッ
トB9にて命令の実行が終了すると、実行結果が実行順
序管理回路17に出力される。これと同時に、演算ユニ
ット管理テーブル12の対応するビットがクリアされ
る。
【0097】実行順序管理回路17は、この命令が投機
実行下の命令(識別子が1)なので、実行順序管理バッ
ファ13に書き込み先のレジスタ番号とモード”10”
を書き込む。 (5−3)演算ユニットC10は、命令N+10が発行
されると、演算ユニット管理テーブル12の対応するビ
ットをセットし、命令を実行する。演算ユニットB9に
て命令の実行が終了すると、実行結果が実行順序管理回
路17に出力される。これと同時に、演算ユニット管理
テーブル12の対応するビットがクリアされる。
【0098】実行順序管理回路17は、この命令が投機
実行下の命令(識別子が1)なので、実行順序管理バッ
ファ13に書き込み先のレジスタ番号とモード”10”
を書き込む。 (5−4)演算ユニットD11は、命令N+11が発行
されると、演算ユニット管理テーブル12の対応するビ
ットをセットし、命令を実行する。演算ユニットD11
にて命令の実行が終了すると、実行結果が実行順序管理
回路17に出力される。これと同時に、演算ユニット管
理テーブル12の対応するビットがクリアされる。
【0099】実行順序管理回路17は、命令N+2が投
機実行下の実行である(識別子が1である)ので、演算
結果をレジスタファイル19には書き込まず、実行順序
管理バッファ13へ格納する。 (6)この時点で、実行順序管理バッファ13には図1
9の3行目まで積まれることになる。
【0100】(7)また、命令解読バッファ6は図18
のようになる。次のサイクルでは命令N+4が完了して
いるので、命令解読部7は一連の処理を行ない命令N+
7、N+12、N+13を発行する。命令発行後の演算
ユニットの状態を表4の3行目に示す。これらの命令実
行が終了した時点で、実行順序管理バッファには図19
の5行目まで積まれることになる。
【0101】(8)上記のように演算ユニットは投入さ
れた命令を実行し、新たな命令を処理可能になれば演算
ユニット管理テーブル12の対応するビットをクリアす
る。命令解読部7は、新たな命令を処理できるようにな
れば、命令の発行処理を再開する。 (9)PSRを変更する命令N+7は、表4の3行目に示
すように演算ユニットBで実行される。命令N+7が完
了しPSRが確定すると、演算ユニットBは投機実行状態
指示回路16のフラグをクリアする。命令N+7が完了
しても、投機実行は、表4の4行目まで実行される。
【0102】(10)命令実行整合性維持回路18は、
投機実行状態指示回路16がクリアされたことから、投
機実行種類保持回路15よりBcc-n命令であること、PSR
の値に基づいて、分岐するか否かを判断する。ここでは
分岐しないと仮定する。 (11)実行順序管理回路17は、命令実行整合性維持
回路18より、分岐しないことが確定し、投機実行モー
ドが終了したことを通知される。そして、実行順序管理
バッファ13内に存在する分岐命令に後続する命令列
(モードが”10”の命令)に対しては、演算結果を対
応するレジスタファイル19のレジスタに格納する。
【0103】以上のように、条件分岐命令Bcc_nによる
投機実行でなされた処理は、分岐しないことが確定した
後の処理と、連続性を維持している。しかも、全ての投
機実行結果は有効であるから、最も効率よく高速に処理
されることになる。また、(10)にて分岐すると確定
した場合には以下のようになる。 (11)命令実行整合性維持回路は、分岐すると判断し
た後、投機実行種類保持回路15を参照してBcc-n命令
であることから、実行順序管理バッファ13内の分岐先
命令の演算結果をすべて無効化する。図19において命
令N+9以降の命令は全て無効化(クリア)される。ま
た、命令解読部7に対して分岐することを通知し、再度
命令フェッチバッファAに分岐先の命令を命令解読バッ
ファ6に取り込むよう処理をやり直しさせる。
【0104】(12)実行順序管理回路17は、命令実
行整合性維持回路18より、分岐しないことが確定し、
投機実行モードが終了したことを通知される。そして、
実行順序管理バッファ内の命令の演算結果はすべて無効
化されているため何もしない。 以上のように、条件分岐命令Bcc_nによる投機実行でな
された処理は、分岐することが確定した後の処理に生か
されることはなく、高速化には寄与していない。しか
し、条件分岐命令Bcc_nは分岐する確率が低いので、こ
のようなケ−スが起こる確率も低く、1回の投機実行の
みを見るのではなく、プログラム全体の全ての投機実行
を併せて見ると、高速化されることになる。また、この
ケ−スでも、条件分岐命令より前の処理は、分岐するこ
とが確定した後の処理と連続性を維持している。
【0105】なお、本実施例では、演算ユニットのパイ
プラインは説明を簡単にするために1段にしている。複
数段にしても演算ユニット管理テーブル12などの変更
だけで済むが、本発明の要旨には関係しない。本実施例
では、命令解読バッファ6に積む順番は交互に積んだ
が、この順番は逆でも、また、命令は1つづつ交互にす
る必要はない。また、命令解読バッファ6自身、必ずし
も備える必要はない。その場合、命令フェッチバッファ
A3、B4からセレクタ5を介して、直接命令解読回路
34の各デコ−ダに対して命令を転送すればよい。
【0106】本実施例では、演算ユニットA8〜D11
は説明を簡単にするため、それぞれ機能を限定したがす
べて同等の機能をもつユニットの構成でもよい。本実施
例では、演算結果の格納先がレジスタファイル19であ
るか、実行順序管理バッファ13であるかを区別するた
めに、命令発行の際に命令に識別子を付加することで実
現したが、識別子の代わりにPC値を使用してもよい。
また、命令解読部7は、命令に識別子を付加せずに、実
行順序管理回路17に格納先を指示してもよい。
【0107】本実施例では、説明を簡単にするため演算
ユニットの演算結果を最終的にレジスタファイル19の
レジスタに格納する命令(オペランドがレジスタにある
命令)を用いているが、これに限らず、演算結果を最終
的にメモリに格納する命令(オペランドがメモリにある
命令)が用いられていてもよい。その場合例えば、実行
順序管理バッファ13は、演算結果、それが本来格納さ
れるべきメモリのアドレスを指す情報、モ−ドを一時的
に記憶することになり、かつ、実行順序管理回路17
は、演算結果をメモリに書き込む機能を持っていればよ
い。
【0108】本実施例では投機実行状態保持回路では状
態を1つしか持てないようにしているため、投機実行し
ている分岐命令は1つに限られているだけで、複数投機
実行してもよい。本実施例では命令解読部で命令が発生
する毎に命令の制御フローが判るように、以下のルール
でモードを付加した。例えば、現在の命令列のモード
が”00”とすると、後続する命令列のモードは”+0
1”を加算して”01”、分岐先の命令のモードは”+
10”を加算して”10”として設定する。このルール
を使用すれば分岐命令までの命令列と後続する命令列と
分岐先の命令列を容易に判断できる。しかし、これは区
別するための一例であり他の方法でも可能である。
【0109】本実施例では投機実行種類保持回路15で
は状態を1つしか持てないようにしているため、投機実
行の基になる分岐命令は1つに限られている。しかし、
命令列を区別するモードの種類を増加し、初期モード保
持回路14、投機実行種類保持回路15、投機実行状態
指示回路16、命令実行整合性維持回路18を複数備え
ることにより、PSRを変更する命令と分岐命令の対応関
係が明確になるので、複数の分岐命令に対して投機実行
することが可能になる。
【0110】本実施例では、データ依存関係については
解読部は命令発行をout-of-order発行で行なったが、in
-orderでも本発明の主旨には影響しない。以上説明して
きたように本発明の情報処理装置は、Bcc-l、Bcc-i、Bc
c-nの3種類の分岐命令を使い分けることによって、分
岐の確率に合わせて、より高速化が図れる。例えば、プ
ログラミング言語Cで記述されたプログラムにおいて、
コンパイラが、分岐の確率が一般に高いforループに対
してはBcc_l命令を使用し、分岐の確率が不確定なif-th
en-else系の命令に対してはBcc_i命令を使用する。その
上、ループ内の命令列をできるだけ同時実行可能なよう
にスケジューリングすればその効果はより大きくなる。
また、if-then-else系の命令の場合、どちらかに予測し
てもはずれたときの代償が大きいと同時に、分岐をどち
らかに予測して投機実行しても、デ−タ依存関係により
命令を1つずつしか実行できない場合も多くあり、この
ような場合並列実行率が上がらず、結局両方を実行した
場合の方が効果が大きい。
【0111】
【発明の効果】本発明のプロセッサによれば、条件分岐
命令の条件が確定していなくても、その条件分岐命令の
種類に応じて、投機的に実行する命令列の命令を変える
ことにより、インタ−ロックが少なく、分岐処理を含む
プログラムを高速に実行することができる。特に、複数
命令の同時実行する場合には分岐の条件を変更する命令
と条件分岐命令間の時間差が少なくなり、この効果は大
きい。
【0112】具体的には、つぎの3つ場合を使い分け
る。 第1の種類の条件付き分岐命令の場合には、投機的に
分岐先の命令を複数の演算ユニットに発行し、その演算
結果を一時的に格納しておくとともに、条件が確定し分
岐しないことが判明した場合には、分岐しない側の命令
列を実行することにより、分岐命令の先行処理が可能と
なり、分岐処理が高速化できるという効果がある。この
第1種類の条件付き分岐命令は、分岐する確率が高い場
合に用いられる。
【0113】第2の種類の条件付き分岐命令の場合に
は、投機的に分岐先の命令と分岐しない側の命令を複数
の演算ユニットに発行し、その演算結果を一時的に格納
しておくとともに、条件が確定した場合には、確定した
側の演算結果のみを有効とすることにより、分岐命令の
先行処理が可能となり、分岐処理が高速化できるという
効果がある。この第2の種類の条件付き分岐命令は、分
岐する確率が不明な場合に用いられる。
【0114】第3の種類の条件付き分岐命令の場合に
は、投機的に分岐しない側の命令を複数の演算ユニット
に発行し、その演算結果を一時的に格納しておくととも
に、条件が確定し分岐することが判明した場合には、分
岐する側の命令列を実行することにより、分岐命令の先
行処理が可能となり、分岐処理が高速化できるという効
果がある。この第3の条件付き分岐命令は、分岐しない
確率が高い場合に用いられる。
【図面の簡単な説明】
【図1】本発明の実施例におけるプロセッサの構成図、
【図2】同実施例における命令フェッチ部の詳細な構成
を示すブロック図である。
【図3】命令解読部の詳細な構成を示すブロック図であ
る。
【図4】図4は同実施例における命令のフローに付加さ
れたモードを示したモード説明図である。
【図5】同実施例におけるBcc_i命令を含む命令フロー
図である。
【図6】同実施例における図5の命令フローを処理する
ときの命令解読バッファの説明図(その1)である。
【図7】同上(その2)である。
【図8】同上(その3)である。
【図9】同実施例における図5の命令フローを処理する
ときの実行順序管理バッファの説明図、
【図10】同実施例におけるBcc_l命令を含む命令フロ
ー図である。
【図11】同実施例における図10の命令フローを処理
するときの命令解読バッファ6の説明図(その1)であ
る。
【図12】同上(その2)である。
【図13】同上(その3)である。
【図14】同実施例における図10の命令フローを処理
するときの実行順序管理バッファの説明図、
【図15】同実施例におけるBcc_n命令を含む命令フロ
ー図である。
【図16】同実施例における図15の命令フローを処理
するときの命令解読バッファ6の説明図(その1)であ
る。
【図17】同上(その2)である。
【図18】同上(その3)である。
【図19】同実施例における図15の命令フローを処理
するときの実行順序管理バッファの説明図である。
【符号の説明】
1 メモリ 2 命令フェッチ部 3 命令フェッチバッファA 4 命令フェッチバッファB 5 セレクタ 6 命令解読バッファ 7 命令解読部 8 演算ユニットA 9 演算ユニットB 10 演算ユニットC 11 演算ユニットD 12 演算ユニット管理テーブル 13 実行順序管理バッファ 14 初期モード保持回路 15 投機実行種類保持回路 16 投機実行状態指示回路 17 実行順序管理回路 18 命令実行整合性維持回路 19 レジスタファイル 20 スコアボ−ド 21 プログラムカウンタ 22 分岐命令検出回路 23 演算回路 31 分岐命令検出回路 32 転送制御回路 33 モ−ド付加回路 34 命令解読回路 34a〜34f デコ−ダ 36 データ依存関係検出回路 37 スコアボ−ド管理回路 38 状態検知回路 39 命令発行回路 39a〜39d セレクタ 40 命令発行制御回路
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭58−137048(JP,A) 特開 昭64−88843(JP,A) 特開 平4−247522(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42

Claims (16)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の実行ユニットを有し、メモリから取
    り出された複数の命令を複数の実行ユニットにおいて
    列に実行するプロセッサであって、メモリから取り出された複数の命令 に含まれ、条件が他
    の命令の実行結果に依存する条件分岐命令の種類を判別
    する命令種別判別手段と、 分岐の成否が決定されるまでの間、条件分岐命令の種類
    に応じて、(a)分岐先の命令列、(b)分岐先の命令
    列及び後続する命令列の両方、(c)後続する命令列の
    何れかから、複数の命令を複数の実行ユニットに対して
    並列発行する命令並列発行手段と、 前記条件分岐が依存する他の命令が実行されたとき、
    令種別判別手段により判別された条件分岐命令の分岐の
    成否を判定する分岐判定手段と、 条件分岐命令の分岐の成否の判定結果に整合するよう
    数の実行ユニットによる実行結果の有効無効を識別する
    実行結果管理手段とを備え、 前記条件分岐命令の種類の1つはループ系の条件分岐命
    令であることを特徴とするプロセッサ。
  2. 【請求項2】前記命令種別判別手段は、 イフ・ゼン・エルス系の条件分岐である第1の種類の命
    令と、それ以外の条件分岐命令とを判別し、 前記命令並列発行手段は、 条件分岐命令が第1の種類の命令であった場合、分岐先
    の命令列と条件分岐命令に後続する命令列の双方から複
    数の命令を複数の実行ユニットに対して並列発行し、条
    件分岐命令が第1の種類の命令以外の命令であった場
    合、どちらか一方から複数の命令を複数の実行ユニット
    に対して並列発行し、 前記実行結果管理手段は、 条件分岐命令が第1の種類の命令であった場合、分岐の
    成否の判定結果によって、一方の命令列の実行結果を有
    効にし、他方を無効にする一方、条件分岐命令が第1の
    種類の命令以外の場合、分岐の成否の判定結果に応じて
    命令列の実行結果の全てを有効又は無効にし、 前記それ以外の分岐命令は前記ループ系の条件分岐命令
    を含むことを特徴とする請求項1記載のプロセッサ。
  3. 【請求項3】前記命令種別判別手段は、 第1の種類の分岐命令以外の命令を、前記ループ系の条
    件分岐命令である第2の種類の命令と、第1の分岐命令
    より分岐しない確率が高い条件分岐命令である第3の種
    類の命令とに判別し、 前記命令並列発行手段は、 第2の種類の命令の場合、分岐先の命令列の命令を実行
    ユニットに対して並列発行し、第3の種類の命令の場
    合、条件分岐命令に後続する命令列の命令を実行ユニッ
    トに並列発行し、 前記第2種の命令は前記ループ系の条件分岐命令である
    ことを特徴とする請求項2記載のプロセッサ。
  4. 【請求項4】前記のプロセッサは、さらに条件分岐命令
    に後続する命令列の命令を一時的に記憶するための第1
    の命令フェッチバッファと、 条件分岐命令の分岐先の命令列の命令を一時的に記憶す
    ための第2の命令フェッチバッファと、 メモリに格納された命令を読み出し、条件分岐命令に後
    続する命令列の命令を第1の命令フェッチバッファに、
    条件分岐命令の分岐先の命令列の命令を第2の命令フェ
    ッチバッファに格納する命令フェッチ手段とを備えたこ
    とを特徴とする請求項1記載のプロセッサ。
  5. 【請求項5】前記命令フェッチ手段は、 メモリに読み出しアドレスを出力し、その内容をインク
    リメントするプログラムカウンタと、前記読み出しアドレスに応じて メモリから読みだされた
    命令から条件分岐命令を検出する条件分岐命令検出手段
    と、 条件分岐命令検出手段で検出された条件分岐命令に基づ
    いて、分岐先のアドレスを計算する演算手段と、 モリから命令が読みだされるごとにプログラムカウン
    タの内容をインクリメントしていき第1の命令フェッチ
    バッファに命令を格納し、条件分岐命令が検出された場
    合、後続する命令列の命令を第1の命令フェッチバッフ
    ァに格納し、演算手段で求められた分岐先アドレスをプ
    ログラムカウンタに書き込み、分岐先の命令列の命令を
    第2の命令フェッチバッファに格納するフェッチ制御手
    段とを有することを特徴とする請求項4記載のプロセッ
    サ。
  6. 【請求項6】前記命令並列発行手段は、 命令を解読して実行ユニットへの制御信号を生成する複
    数の解読手段と、 第1又は、第2の命令フェッチバッファから全ての解読
    手段に命令を1つずつ転送する転送制御手段と、 転送制御手段により転送されるそれぞれの命令に、その
    命令がどの命令列に属するかを示すモ−ド情報を付加
    モ−ド付加手段とを有し、 前記実行結果管理手段は、モード情報により命令の実行
    結果が、条件分岐命令に後続する命令列に属するか分岐
    先の命令列に属するのかを識別する ことを特徴とする請
    求項4記載のプロセッサ。
  7. 【請求項7】前記モ−ド付加手段が付加するモ−ド情報
    は、2ビットの情報であり、条件分岐命令に後続する命
    令列のモ−ド情報は条件分岐命令自身のモ−ド情報に対
    して第1の値を加算した値、分岐先の命令列のモ−ド
    は第2の値を加算した値であることを特徴とする請求
    項6記載のプロセッサ。
  8. 【請求項8】前記条件分岐命令が依存する他の命令は、
    プロセッサ内部のPSR(ProgramStatus Register)を
    実行結果に応じて変更する命令であり、 前記分岐判定手段は、前記他の命令が実行されたことを
    検出しPSRを参照することにより分岐の成否を判定す
    ことを特徴とする請求項6記載のプロセッサ。
  9. 【請求項9】前記プロセッサは、さらに、 解読手段で解読された複数の解読結果を参照して、解読
    された複数の命令間のデ−タ依存関係を判定するデ−タ
    依存関係判定手段と、 実行ユニットで実行中の命令が使用しているレジスタが
    どれであるかを管理するスコアボ−ド管理手段と、 実行ユニットの空き状態を検知する空き状態検知手段
    と、 解読手段で解読された各命令について、デ−タ依存関係
    判定手段の判定結果、スコアボ−ド管理手段、空き状態
    検知手段の検知結果に基づいて、発行可能な命令を命令
    並列発行手段から実行ユニットへの発行を許可し、ま
    た、解読手段で解読された命令が条件分岐命令である場
    合には、命令並列発行手段から分岐判定手段への発行を
    許可する命令発行許可手段とを有することを特徴とする
    請求項6記載のプロセッサ。
  10. 【請求項10】前記命令発行許可手段は、 複数の解読手段の解読結果にそれぞれについて、データ
    依存関係検出手段の検出結果から前の命令とデ−タ依存
    関係がなく、スコアボ−ド管理手段の情報からその命令
    のオペランドで指定されているレジスタが実行ユニット
    で実行中の命令に使用されていなく、かつ、空き状態検
    知手段の検知結果からその命令を実行しうる実行ユニッ
    トが空いていること、を満たす命令を発行可能と判定す
    ることを特徴とする請求項9記載のプロセッサ。
  11. 【請求項11】前記プロセッサはさらに、 実行ユニット毎に命令を実行中であるか否かを示す情報
    を保持し、空き状態検知手段によって参照される実行ユ
    ニット管理テ−ブルと、 実行ユニットで実行中の命令が使用しているレジスタが
    どれであるかを示す情報を保持し、スコアボ−ド管理手
    段によって参照されるスコアボ−ドとを備えたことを特
    徴とする請求項9記載のプロセッサ。
  12. 【請求項12】前記実行結果管理手段は、 命令並列発行手段によって発行された条件分岐命令のモ
    −ド情報を初期モ−ド情報として保持する初期モ−ド保
    持手段と、 命令並列発行手段によって発行された条件分岐命令の種
    類を保持する投機実行種類保持手段と、 命令並列発行手段によって発行された条件分岐命令の条
    件判断が未だ確定していないことを示すフラグを保持す
    る投機実行状態指示手段とを有し、 前記命令並列発行手段は、条件分岐命令を分岐判定手段
    に発行すると同時に、その条件分岐命令のモ−ド情報
    初期モ−ド保持手段に、その条件分岐命令の種類を投機
    実行種類保持手段に出力し、投機実行状態指示手段のフ
    ラグをセットすることを特徴とする請求項9記載のプロ
    セッサ。
  13. 【請求項13】前記実行結果管理手段は、 実行ユニットでの命令の実行結果と、その命令のモ−ド
    情報と、その実行結果の格納先を示す情報と対応させて
    記憶する一時記憶手段を有し、 前記実行結果管理手段は、分岐判定手段の判定結果に基
    づいて、初期モ−ド保持手段、投機実行種類保持手段を
    参照して一時記憶手段の実行結果の有効無効を識別し、
    実行結果の格納先を示す情報に従って実行結果を一時記
    憶手段から格納先に転送し、無効な実行結果をクリアす
    することを特徴とする請求項12記載のプロセッサ。
  14. 【請求項14】前記一時記憶手段は、 格納先の情報として、本来の格納先がレジスタである場
    合には、レジスタ番号を、本来の格納先がメモリである
    場合には、メモリアドレスを記憶することを特徴とする
    請求項13記載のプロセッサ。
  15. 【請求項15】複数の実行ユニットを有し、メモリから
    取り出された複数の命令を複数の実行ユニットにおいて
    並列に実行するプロセッサであって、メモリから取り出された複数の命令に 含まれ、条件が他
    の命令の実行結果に依存する条件分岐命令の種類を判別
    する命令種別判別手段と、 分岐の成否が決定されるまでの間、条件分岐命令の種類
    に応じて、(a)分岐先の命令列、(b)分岐先の命令
    列及び後続する命令列の両方、(c)後続する命令列の
    何れかから、複数の命令を複数の実行ユニットに対して
    並列発行する命令並列発行手段と、 前記条件分岐が依存する他の命令が実行されたとき、
    令種別判別手段により判別された条件分岐命令の分岐の
    成否を判定する分岐判定手段と、 条件分岐命令の分岐の成否の判定結果に整合するよう
    数の実行ユニットによる実行結果の有効無効を識別する
    実行結果管理手段とを備え、 前記命令並列発行手段は、 命令を解読して実行ユニットへの制御信号を生成する複
    数の解読手段と、 第1又は、第2の命令フェッチバッファから全ての解読
    手段に命令を1つずつ転送する転送制御手段と、 転送制御手段により転送されるそれぞれの命令に、その
    命令がどの命令列に属するかを示すモ−ド情報を付加
    モ−ド付加手段とを有し、 前記実行結果管理手段は、モード情報により命令の実行
    結果が、条件分岐命令に後続する命令列に属するか分岐
    先の命令列に属するのかを識別する ことを特徴とするプ
    ロセッサ。
  16. 【請求項16】前記モ−ド付加手段が付加するモ−ド
    は、2ビットの情報であり、条件分岐命令に後続する
    命令列のモ−ド情報は条件分岐命令自身のモ−ド情報
    対して第1の値を加算した値、分岐先の命令列のモ−ド
    情報は第2の値を加算した値であることを特徴とする請
    求項15記載のプロセッサ。
JP30570092A 1991-11-15 1992-11-16 プロセッサ Expired - Fee Related JP3146077B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30570092A JP3146077B2 (ja) 1991-11-15 1992-11-16 プロセッサ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP3-300126 1991-11-15
JP30012691 1991-11-15
JP30570092A JP3146077B2 (ja) 1991-11-15 1992-11-16 プロセッサ

Publications (2)

Publication Number Publication Date
JPH05224927A JPH05224927A (ja) 1993-09-03
JP3146077B2 true JP3146077B2 (ja) 2001-03-12

Family

ID=26562217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30570092A Expired - Fee Related JP3146077B2 (ja) 1991-11-15 1992-11-16 プロセッサ

Country Status (1)

Country Link
JP (1) JP3146077B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US6715060B1 (en) 2000-01-28 2004-03-30 Hewlett-Packard Development Company, L.P. Utilizing a scoreboard with multi-bit registers to indicate a progression status of an instruction that retrieves data
JP3729064B2 (ja) 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
JP3729087B2 (ja) 2001-05-23 2005-12-21 日本電気株式会社 マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
JP2006215799A (ja) * 2005-02-03 2006-08-17 Toshiba Corp メモリコントローラ
CN111930427B (zh) * 2020-08-17 2022-06-21 北京百度网讯科技有限公司 指令发射方法、装置、电子设备以及存储介质

Also Published As

Publication number Publication date
JPH05224927A (ja) 1993-09-03

Similar Documents

Publication Publication Date Title
US5511172A (en) Speculative execution processor
JP3547482B2 (ja) 情報処理装置
US5606676A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US7047399B2 (en) Computer system and method for fetching, decoding and executing instructions
KR101148495B1 (ko) 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US6553482B1 (en) Universal dependency vector/queue entry
US6415380B1 (en) Speculative execution of a load instruction by associating the load instruction with a previously executed store instruction
JP2875909B2 (ja) 並列演算処理装置
US6959379B1 (en) Multiple execution of instruction loops within a processor without accessing program memory
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JPH10154073A (ja) データ依存性を管理する装置及び方法
JP3146077B2 (ja) プロセッサ
US5522084A (en) Method and system for invalidating instructions utilizing validity and write delay flags in parallel processing apparatus
JP3486690B2 (ja) パイプライン方式プロセッサ
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
JP3725547B2 (ja) 限定ラン分岐予測
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JPH08221273A (ja) 命令レベルの並列処理制御方法およびプロセッサ
KR100335747B1 (ko) 무순서 인스트럭션 발행이 가능한 프로세서의 인스트럭션 버퍼에 인스트럭션을 로드하는 방법 및 장치

Legal Events

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

Free format text: PAYMENT UNTIL: 20080105

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090105

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100105

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110105

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120105

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees