JP3199035B2 - プロセッサ及びその実行制御方法 - Google Patents

プロセッサ及びその実行制御方法

Info

Publication number
JP3199035B2
JP3199035B2 JP27067798A JP27067798A JP3199035B2 JP 3199035 B2 JP3199035 B2 JP 3199035B2 JP 27067798 A JP27067798 A JP 27067798A JP 27067798 A JP27067798 A JP 27067798A JP 3199035 B2 JP3199035 B2 JP 3199035B2
Authority
JP
Japan
Prior art keywords
instruction
stage
execution
branch
processor
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
JP27067798A
Other languages
English (en)
Other versions
JP2000099328A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP27067798A priority Critical patent/JP3199035B2/ja
Publication of JP2000099328A publication Critical patent/JP2000099328A/ja
Application granted granted Critical
Publication of JP3199035B2 publication Critical patent/JP3199035B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置に関
し、特にパイプライン構造を採用しているマイクロプロ
セッサに関する。
【0002】
【従来の技術】プロセッサにおいて、その処理速度を高
めるために、パイプライン構造が広く用いられている。
パイプライン構造のプロセッサでは、一つの命令の処理
を複数のサイクルに分割しておこなう。例えば、MIPS社
のR3000 プロセッサでは、命令フェッチ(IF)、命令デ
コード(RD)、実行(ALU)、メモリアクセス(ME
M)、レジスタへの書き戻し(WB)の5段から構成され
ており、図6に示すように、1サイクルに複数の命令が
跨って処理を行う。
【0003】このようなパイプライン方式のプロセッサ
では、命令を重畳して処理を行うため、後続の命令が、
先行命令の実行結果を参照する場合には、先行命令が後
続命令の完了を待ち合わせる必要がある。このため、命
令が発行できないサイクル(空きスロット) が生じ、性
能低下の要因となっている。これを、「レジスタハザー
ド」と呼ぶ。
【0004】図7は、5段構成のパイプライン構造の従
来のプロセッサを構成の一例を示すブロック図である。
図7を参照すると、このプロセッサは、命令キャッシュ
1、分岐予測ユニット2、命令デコード発行ユニット
3、レジスタファイル4、ALU (Arithmetic Logic
Unit)5、データキャッシュ6、分岐検証ユニット7、
パイプラインレジスタ8a〜8d、フォワーディングパ
ス9、トライステートバッファ10a〜10d、マルチ
プレクサ11a〜11d、レジスタ読み出しバス12、
レジスタ書き戻しバス13、即値バス14等を備えて構
成されている。他に制御系の信号等が必要となるが、説
明に直接関係しないので、図7では省略されている。
【0005】このプロセッサでは、R3000に規定されて
いるような分岐遅延スロットは規定されていず、分岐予
測ユニット2を備え、分岐命令を命令キャッシュ1から
フェッチした際に、分岐命令の結果を予測して分岐側、
非分岐側のいずれかの後続命令をフェッチして実行を続
ける。
【0006】分岐予測の成否は、分岐検証ユニット7に
よって検証され、予測が誤りだった場合には、正しい命
令のフェッチからやり直すと共に、分岐予測ユニット2
内の分岐予測テーブルを書換える。
【0007】また、計算が終った値は、レジスタに書き
戻す前に、フォワーディングパス9を用いて、後続命令
に供給可能である。
【0008】図8は、命令デコード発行ユニット3か
ら、レジスタハザードおよびフォワーディングパス9の
設定の制御を行う部分を示したブロック図である。
【0009】図において、命令コード21は、命令キ
ャッシュ1からフェッチした命令を示している。
【0010】この命令コード21から、レジスタアクセ
ス/命令完了デコーダ22によって、第1の読み出しレ
ジスタアドレス(rreg1)28、第2の読み出しレジス
タアドレス(rreg2)29、書き込みレジスタアドレス
(wreg)30の有効/無効を示す書き込み有効フラグ3
1、及び、命令完了ステージフラグ32(ALUステージも
しくはMEMステージ)をデコードする。
【0011】このうち、書き込みレジスタアドレス(wr
eg)の有効フラグ(V)31および命令完了ステージフ
ラグ(D)32は、書き込みレジスタアドレス(wreg)
30と共に、パイプラインレジスタ26に格納され、1
サイクル毎にレジスタ26a、レジスタ26bと進めら
れる。
【0012】これによって、先行命令、すなわちALU
ステージおよびMEMステージに位置する命令の書き込
みレジスタアドレス30と、RDステージに位置する命
令の第1、第2の読み出しレジスタアドレス28、29
の内容と、パイプラインレジスタ26に保持される書き
込みアドレスレジスタの内容をレジスタアドレス比較器
23を用いて比較する。
【0013】ALUステージに位置する命令の完了が、
MEMステージ、且つ、パイプラインレジスタ26aの
書き込みレジスタアドレスと、RDステージに位置する命
令の第1、第2の読み出しレジスタアドレス28、29
の少なくとも一方と一致した場合には、レジスタハザー
ド検出論理24によってレジスタハザードとなり、後続
命令の発行が遅れることになる。RDステージに位置する
命令の第1、第2の読み出しレジスタアドレス28、2
9と、パイプラインレジスタ26aの書き込みレジスタ
アドレスを比較するレジスタアドレス比較器23a、2
3cの一致出力信号は、パイプラインレジスタ26aの
有効(V)フラグ31とそれぞれANDゲートで論理積
演算され、その出力は命令完了ステージフラグ(D)3
2及び命令完了ステージフラグ32の反転信号と、AN
Dゲートで論理積演算されレジスタハザード検出論理2
4に入力されており、これら2つの入力の少なくとも一
方がオンであれば、レジスタハザード検出論理24によ
ってレジスタハザードとなる。
【0014】また、ALUステージに位置する命令の完
了が、ALUステージ、且つ、書き込みレジスタアドレ
スとRDステージに位置する命令の読み出しレジスタア
ドレスとが一致した場合、および、MEMステージに位
置する命令の書き込みレジスタアドレスとRDステージ
に位置する命令の読み出しレジスタアドレスが一致した
場合には、フォワーディングパス設定論理25によっ
て、レジスタハザードとなる。すなわち、RDステージ
に位置する命令の第1、第2の読み出しレジスタアドレ
ス28、29と、パイプラインレジスタ26bの書き込
みレジスタアドレスを比較するレジスタアドレス比較器
23b、23dの一致出力信号は、パイプラインレジス
タ26bの有効フラグ31とそれぞれANDゲートで論
理積演算され、前段のレジスタアドレス比較器23a、
23bの一致信号の論理演算結果とともに、フォワーデ
ィングパス設定論理25a、25bに入力される。
【0015】ALU、MEMステージの両者がRDステージの
読み出しレジスタアドレスと一致した場合には、ALU側
がフォワードの送信元となる。これらのフォワーディン
グパス設定情報は、マルチプレクサ11、トライステー
トバッファ10に送られ、フォワーディングパス9を適
切に設定する。
【0016】例えば、表1に示すようなプログラムコー
ドが与えられた場合を考える。
【0017】
【表1】 (1) ADD R2,R3,R4 ;R2+R3→R4 (2) LOAD R1,X ;主記憶のX番地の内容→ R1 (3) BEQ R1,R4,100 ;R1とR4の内容が等し ければ、100番地へ (4) ADD R1,1,R1 ;R1+1→R1 (5) 100 STORE R1,X ;R1→主記憶のX番地
【0018】このようなプログラムコードを実行した場
合、図に示すようなパイプライン実行図に示すような
タイミングで処理される。
【0019】但し、図では、BEQ命令(3)の条件が成立
しないことを予測しており、実際に予測が成立した場合
を示している。
【0020】この時、(3)の分岐命令(レジスタR1とR4
の内容が等しい場合100番地へ分岐)は、(2)のロード命
令の結果(主記憶のX番地の内容をレジスタR1にロー
ド)を参照する必要があるため、T4サイクルでRDステ
ージが実行できず、レジスタハザードとなり、1サイク
ル実行が遅れさせられてしまう。
【0021】この問題を解決するために、従来よりいく
つかの手法が提案されている。
【0022】このうち一番単純な方法は、(1)と(2)の命
令順序をコンパイラもしくはアセンブラ等で入れ換える
ことである。
【0023】図10に示したように、この場合、(2)の
ロード命令と、(3)の分岐命令との間に(1)ADD 命令が挿
入されているため、空きスロットを生じさせることな
く、命令が実行可能になる。
【0024】また、このようなin-order(イン・オー
ダ)実行型ではなく、out-of-order(オウト・オブ・オ
ーダ)実行方式のマイクロプロセッサにおいては、実行
できる命令から順に実行を行うので、プログラムコード
を変更すること無く、このような空きスロットを極力減
らすことが可能である。
【0025】
【発明が解決しようとする課題】しかしながら、コンパ
イラやout-of-order実行によっても解決できないコード
も存在し得る。例えば、図において、(1)の命令がLOA
D 命令であり、レジスタR4をメモリから読み出す場合に
は、(1)と(2)の命令を入れ替えても、同じように空きス
ロットが生じてしまう。
【0026】また、out-of-order実行は特別なハードウ
ェアを用意する必要がある。このような空きスロット
は、同時に複数の命令を実行可能なスーパースカラ(sup
er scalar) 構造のプロセッサでは、相互に依存の無い
命令を同時に発行しながら処理を進めるので、パイプラ
インステージ間の命令には依存が増加し、空きスロット
が、従来にも増して、多く生じる問題があった。
【0027】また、out-of-order 実行方式のマイクロ
プロセッサでは、例えば文献(MikeJohson, “Super-sca
lar Processor Design”,Prentice-Hall, 1991) にも
示されているように、リオーダバッファ、リザベーショ
ンステーションなどの、複雑なユニットを追加する必要
があった。
【0028】したがって本発明は、上記問題点に鑑みて
なされたものであって、その目的は、ハードウェア構成
が簡易なin-order 実行型のマイクロプロセッサにおい
て、プログラムコードを書き替えることなく、命令完了
を待ち合わせるためのパイプライン空きスロットを低減
する、プロセッサ及びその実行制御方法を提供すること
にある。
【0029】
【課題を解決するための手段】上記目的を達成する本発
明は、命令発行ステージと実行ステージの間に待機ステ
ージを用意し、先行命令と依存が存在し命令完了のタイ
ミングが、発行しようとする命令のデータ供給に間に合
わない場合に、該命令を待機ステージで待機させて前記
先行命令の命令完了を待ち合わせるように制御するもの
である。これにより、命令発行の空きスロットを生じさ
せること無くパイプラインを動作させることが可能にな
り、性能を向上させることが可能になる。
【0030】
【発明の実施の形態】本発明の実施の形態について説明
する。本発明のプロセッサは、その好ましい実施の形態
として、プロセッサのパイプラインステージに、命令発
行ステージと実行ステージの間に待機ステージ(STB
Y)を備え、命令間のレジスタハザードを検出した時
に、待機ステージ(STBY)を用いて、依存が検出さ
れた命令が、実行ステージに進むのを遅れさせることに
よって、依存を解消すると共に、後続命令を同時に実行
するように制御し(図3参照)、これによってレジスタ
ハザードの発生を低減するようにしたものである。
【0031】
【実施例】本発明の実施例について説明する。図1は、
図7に示した従来プロセッサの構成に対して、本発明を
適用したプロセッサの基本的な構成を示したブロック図
である。
【0032】図1を参照すると、本発明の一実施例は、
分岐検証に関して、待機ステージ57を備えている。待
機ステージ57を設けたため、マルチプレクサ51e、
51f、51g、51h、パイプラインレジスタ48g、4
8h、48i、48jを、レジスタファイル44と分岐検
証ユニット47との間に付加している。
【0033】また、命令デコード発行ユニット43にお
いて、レジスタハザードおよびフォワーディングパス4
9の設定部は、図2に示したように、待機ステージ57
を設けたことによる拡張を行う。具体的には、図8に示
した構成に、待機ステージ使用状態有無フラグ71、分
岐検証用フォワーディングパス設定論理73が追加さ
れ、図8のハザード検出論理24は、ハザード検出以外
に待機ステージの使用有無を決定すべく、ハザード検出
/待機ステージ使用決定論理72に拡張されている。
【0034】また、待機ステージの使用の有無を判断す
るため、RDステージ(命令デコードと命令発行を行うス
テージ)に位置する命令が分岐命令か否かを検出する分
岐命令検出ユニット74を備え、検出結果をハザード検
出/待機ステージ使用決定論理72が受け取る。
【0035】図3は、本発明の一実施例によるパイプラ
イン実行の様子を模式的に示す図である。上記した表1
のコードの実行を順に説明する。
【0036】まず、図3を参照すると、サイクルT1
〜T3は、図9と同じ動作を行う。
【0037】次に、サイクルT4において、(3)の分岐
命令は、(2)のロード命令の結果を参照する必要があ
り、サイクルT5において値を読むことができないと判
断する。
【0038】この判断は、レジスタアドレス比較器63
による比較結果によって、ハザード検出/待機ステージ
使用決定論理72が行う。すなわち、ハザード検出/待
機ステージ使用決定論理72は、パイプラインレジスタ
66aに格納された(2)のロード命令レジスタ書き込
みアドレスが、(3)の分岐命令の参照レジスタアドレ
スと同一であることをレジスタアドレス比較器63aで
確認され、かつ(2)のロード命令の完了ステージがM
EMステージ終了時点であることをパイプラインレジス
タ66aの命令完了ステージフラグを読み出すことによ
って行われる。
【0039】この時、命令コード61が、分岐命令であ
ることを分岐命令検出ユニット74で検出しており、そ
の情報も併せてハザード検出/待機ステージ使用決定論
理72に送られる。
【0040】また、現在、待機ステージを、先行する命
令が使用していないことは、待機ステージ使用有無フラ
グ71に示されている。もし、先行する命令が待機ステ
ージを使用している場合には、該当命令は待機ステージ
に格納することは出来ないので、1サイクルのストール
(次のサイクルでもIDステージ留まる)が生じ、後続
命令もすべてストールされる。
【0041】これらの情報から、ハザード検出/待機ス
テージ使用決定論理72は、待機ステージを使用するこ
とを決定する。この際、サイクルT6で使用するため
の、フォワーディングパス49の設定情報を、分岐検証
フォワーディングパス設定論理73によって決定する。
【0042】また、フォワーディングパス設定論理65
によって、(1)の加算命令で生成されたレジスタR4の
値を、待機ステージ57にフォワーディングする。
【0043】また、待機ステージ使用有無フラグ71を
待機ステージ使用中にセットする。これによって、後続
の命令が待機ステージを使用できなくなる。
【0044】さらに、レジスタファイル44からレジス
タの値を読み出す場合もあり得る。これは、例えば、分
岐命令(3)がBEQ R1、R2,100;R1とR
2の内容が等しければ、100番地へといった場合のよう
に、R1のレジスタの値をフォワーディングによって、
R2の値をレジスタファイルから直接読み出す場合に行
われる。この場合、サイクルT4でレジスタR2の値を
読んでしまうことによって、サイクルT5では、(4)
のADD命令のみがレジスタファイル44をアクセスす
るだけで済むため、レジスタボート数を増やす必要はな
い。
【0045】サイクルT5では、(3)の分岐命令は待機
ステージ57に格納される(図3のSTBY)。したがっ
て、サイクルT5では、ALUステージに位置する命令
は存在しない。
【0046】サイクルT5において、後続の(4)の加算
命令は、RDステージに位置し、レジスタR1の値をフ
ォワーディングによって(2)のロード命令から供給でき
るようフォワーディングパス設定論理65によって設定
を行う。
【0047】同時にサイクルT4で設定された分岐検証
ユニット47に対するフォワーディングパス49も設定
される。
【0048】ALUステージに命令が配置されていないた
め、ALUステージからのフォワードデータ出力の必要
は無く、ALU45と分岐検証ユニット47へのフォワ
ーディングパスは共用することが可能である。
【0049】また、このサイクルT5で、待機ステージ
57は使用を終えるので、待機ステージ使用有無フラグ
71をリセットする。これによって、後続命令が待機ス
テージを使用することが可能になる。
【0050】これによって、サイクルT6で、(3)の分
岐命令の検証と、(4)のALU命令の加算実行を同時に
行うことが可能となり、レジスタファイル44のリード
ポート数を増やすことなく、レジスタハザードを生じな
くすることができる。
【0051】但し、分岐命令が2命令続いて、先行する
分岐命令が待機ステージ57に入った場合には、後続の
分岐命令は、1サイクル発行が遅れさせられる。先行す
る命令が、待機ステージ57に格納されていることは、
待機ステージ使用有無フラグ71によって示される。
【0052】次に図4を参照して、本発明の第2の実施
例について説明する。
【0053】図4を参照すると、本発明の第2の実施例
は、図1に示した前記実施例の構成と異なり、状態フラ
グ用バス部96が、演算結果用バス部97と分離されて
設けられている。状態フラグは、レジスタに値を格納す
る際に生成される。例えば、レジスタファイルに書き込
む値の符号を示すSignフラグや、ゼロか否かを示す
Zeroフラグ、演算中のキャリーの有無を示すCar
ryフラグ、オーバフローの有無を示すOverflo
wフラグなどがフラグの例としてあげることができる。
これらは、ALU85およびデータキャッシュ86でレ
ジスタファイルに書き込む値や演算過程によって生成さ
れ、状態フラグレジスタ98に格納される。
【0054】また、状態検証ユニット99によって、状
態フラグを調べて分岐命令の成否を決定し、結果を分岐
予測ユニット82に通知する。
【0055】待機ステージ95は、状態フラグレジスタ
98を読み出す前の位置に存在している。これは、状態
フラグを調べる命令のみが、状態フラグレジスタ98を
アクセスするためである。これによって、アクセスする
前に1ステージ命令を待機させることにより、図6に示
した構成と比べて、フォワーディングパス88が簡単化
可能である。
【0056】このプロセッサでは、分岐命令は、フラグ
を参照して成否を決定するため、分岐命令の表記が、表
1とは異なる。
【0057】表2に、本発明の第2の実施例のプロセッ
サでのコードの一例を示す。
【0058】
【表2】 (1) LOAD R1,X ;X番地の内容→R1 (2) BZ 100 ;Zeroフラグがセットされて いる(R1が0)ならば、100番地へ (3) ADD R1,1,R1;R1+1→R1 (4) 100 STORE R1,X ;R1→主記憶のX番地
【0059】このコードにおいて、BZ命令(2)は、状
態フラグのうち、直前のレジスタ書き込み命令によって
設定された値が0か否かを示すゼロフラグを参照し、0
か否かを判断して、ジャンプする分岐命令である。
【0060】このプログラムの場合では、(2)の分岐
命令を実行する際のZeroフラグは、直前レジスタへ
の書き込み命令、すなわちLOAD命令(1)によって設
定される。
【0061】図5は、本発明の第2の実施例によるパイ
プライン実行の様子を模式的に示す図である。図5を参
照して、表2のコードの実行を順に説明する。
【0062】まず、サイクルT1において、ロード命令
(1)がフェッチされ実行が開始される。サイクルT2で
は分岐命令(2)でフェッチされ、サイクルT3の前半で
発行可否をチェックする。この時、命令発行ユニット8
3は、状態フラグに対するハザードを検出し、当該命令
を待機ステージ95に格納する。
【0063】本実施例によれば、待機ステージ95に格
納する命令は、RDステージの前半の命令デコードのみ
を行い、状態フラグレジスタ98の読み出しを行う前に
格納される。
【0064】次に、サイクルT4において分岐命令(2)
は待機ステージからRDステージの後半に位置する状態
フラグレジスタ98を読み出すことになる。
【0065】但し、本実施例では直前の命令が書き込む
状態フラグのみを参照するので、ここでは状態フラグは
読み出されない。
【0066】もし、(1)のロード命令では設定しない状
態フラグと、設定する状態フラグの両者の値を合わせた
状態で検証を行う場合には、ここで読み出しを行う必要
が生じる。
【0067】同一のサイクル、すなわちサイクルT4に
おいて、(3)の加算命令は、RDステージで(1)の結果を
フォワーディングするための検出を行う。
【0068】次のサイクルT5で状態フラグ用バス96
を用いて(1)のロード命令のフラグ結果を(2) の分岐命
令へフォワーディングすると共に、演算結果用バス97
を用いてロード結果を(3)の加算命令に送出する。
【0069】これによって、状態フラグの確定に2サイ
クルかかる命令直後にフラグを参照する命令が配置され
ても、レジスタハザードが生じること無く、命令を実行
することが可能になる。
【0070】さらに、図4に示したプロセッサを拡張
し、同時に複数指令をフェッチ、デコードできるように
して、ALU85やデータキャッシュ86へのアクセス
ポート、フォワーディングバス88等を複数持たせるこ
とによって、複数命令を同時に実行可能にしたスーパー
スカラ型プロセッサについて考える。この場合において
も、待機ステージを設けることによってプログラム順序
を保ちながら、レジスタハザードの発生頻度を低減する
ことが可能になる。特に、スーパースカラプロセッサに
おいてプログラム順序に従って実行する構造を採用した
場合、同時に命令を実行することによってレジスタハザ
ードの発生頻度は高まるので、本発明の効果が顕著にな
る。
【0071】
【発明の効果】以上説明したように本発明によれば、命
令を複数のパイプラインステージに分けて段階的に処理
を行うマイクロプロセッサにおいて、先行する命令の結
果が後続の命令の参照に間に合わない時に生じるレジス
タハザード、フラグハザードの発生頻度を、out-of-ord
er発行といった複雑なハードウェアを用いること無く、
in-order発行を用い、またレジスタポート数を増やすこ
と無く、待機ステージを用いて実行ステージをずらすこ
とによって、低減することが可能になり、性能向上に寄
与するという効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施例のプロセッサの構成を示すブ
ロック図である。
【図2】本発明の一実施例のプロセッサにおけるレジス
タハザードチェック/フォワード制御部の構成を示す図
である。
【図3】本発明の一実施例のプロセッサによる実行タイ
ミングを示す図である。
【図4】本発明の第2の実施例のプロセッサの構成を示
すブロック図である。
【図5】本発明の第2の実施例のプロセッサによる実行
タイミングを示す図である。
【図6】R3000プロセッサのパイプライン実行イメージ
を示す図である。
【図7】従来パイプラインプロセッサの構成を示すブロ
ック図である。
【図8】従来プロセッサにおけるレジスタハザードチェ
ック/フォワード制御部の構成を示す図である。
【図9】従来パイプラインプロセッサによる実行タイミ
ングを示す図である。
【図10】従来パイプラインプロセッサによる命令入れ
替えに後の実行タイミングを示す図である。
【符号の説明】
1 命令キャッシュ 2 分岐予測ユニット 3 命令デコード発行ユニット 4 レジスタファイル 5 ALU(Arithmetic Logic Unit) 6 データキャッシュ 7 分岐検証ユニット 8 パイプラインレジスタ 9 フォワーディングパス 10 トライステートバッファ 11 マルチプレクサ 12 レジスタ読み出しバス 13 レジスタ書き戻しバス 14 即値バス 15 分岐結果バス 21 命令コード 22 レジスタアクセス/命令完了ステージデコーダ 23 レジスタアドレス比較器 24 レジスタハザード検出論理 25 フォワーディングパス設定論理 26 パイプラインレジスタ 27 オペコード 28 読み出しレジスタアドレス1 29 読み出しレジスタアドレス2 30 書き込みレジスタアドレス 31 書き込み有効フラグ 32 命令完了ステージフラグ 41 命令キャッシュ 42 分岐予測ユニット 43 命令デコード発行ユニット 44 レジスタファイル 45 ALU(Arithmetic Logic Unit) 46 データキャッシュ 47 分岐検証ユニット 48 パイプラインレジスタ 49 フォワーディングパス 50 トライステートバッファ 51 マルチプレクサ 52 レジスタ読み出しバス 53 レジスタ書き戻しバス 54 即値バス 55 分岐結果バス 56 待機ステージ 61 命令コード 62 レジスタアクセス/命令完了ステージデコーダ 63 レジスタアドレス比較器 64 レジスタハザード検出論理 65 フォワーディングパス設定論理 66 パイプラインレジスタ 67 オペコード 68 読み出しレジスタアドレス1 69 読み出しレジスタアドレス2 70 書き込みレジスタアドレス 71 待機ステージ使用有無フラグ 72 ハザード検出/待機ステージ使用決定論理 73 分岐検証用フォワーディングパス設定論理 74 分岐命令検出ユニット 75 書き込み有効フラグ 76 命令完了ステージフラグ 81 命令キャッシュ 82 分岐予測ユニット 83 命令デコード発行ユニット 84 レジスタファイル 85 ALU(Arithmetic Logic Unit) 86 データキャッシュ 87 パイプラインレジスタ 88 フォワーディングパス 89 トライステートバッファ 90 マルチプレクサ 91 レジスタ読み出しバス 92 レジスタ書き戻しバス 93 即値バス 94 分岐結果バス 95 待機ステージ 96 状態フラグ用バス部 97 演算結果用バス部 98 状態フラグレジスタ 99 状態検証ユニット 100 フラグ読み出しバス 101 フラグ書き戻しバス
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】命令の処理を複数のステージに分けてパイ
    プライン実行を行い、命令をプログラムで指定された順
    序に従って実行するプロセッサ装置において、 先行する命令と後続の命令との間の依存を検出する依存
    検出手段と、 パイプラインステージの命令発行ステージと実行ステー
    ジの間に、先行する命令との依存が検出された後続の
    令を待機させる待機ステージと、を備え、 前記依存検出手段で先行する命令との依存が検出された
    後続の命令を前記命令発行ステージから前記待機ステ
    ージに格納して前記実行ステージに進むのを遅らせて依
    存を解消するとともに、前記待機ステージから実行ステ
    ージに進んだ前記後続の命令、前記後続の命令に後続
    する命令の実行ステージを同一サイクルに実行できる
    構成とされている、ことを特徴とするプロセッサ装置。
  2. 【請求項2】前記プロセッサが、予め定められた特定の
    命令に限って前記待機ステージに格納することを特徴と
    する請求項1記載のプロセッサ装置。
  3. 【請求項3】命令の処理を複数のステージに分けてパイ
    プライン実行を行い、命令をプログラムで指定された順
    序に従って実行するプロセッサ装置において、 複数のプログラムの実行状態を示すフラグを保持し、 前記フラグの値の組合せに従って、次のサイクルで実行
    する命令の格納番地を変更できる分岐命令と、 前記フラグを生成する手段と、 前記フラグを調べ、分岐命令の成立/不成立を決定する
    検証手段と、 前記フラグの生成と参照の関係の依存を検出する依存検
    出手段と、 パイプラインステージの命令デコードステージの命令デ
    コードを行う前半部と、フラグ読み出しを行う前記命令
    デコードステージの後半部の間において、先行する命令
    との間で、前記依存が検出された後続の命令を待機させ
    る待機ステージと、 を備え、先行する命令に後続の前記分岐命令について、 前記依存
    検出手段によって検出されたフラグ依存によって、前記
    分岐命令が直ちに実行できないと判断された場合、前記
    分岐命令を、前記命令デコードステージから、前記待機
    ステージに格納して前記依存の解消を待ち合わせ、その
    後、前記命令デコードステージの後半部でフラグの値を
    読み出し、 前記分岐命令の成立/不成立を決定する検証の実行と、
    前記分岐命令の後続命令の実行ステージを同一サイクル
    に実行できる構成とされている、ことを特徴とするプロ
    セッサ装置。
  4. 【請求項4】前記プロセッサが、複数の命令を同時に実
    行することが可能なスーパースカラ型のプロセッサであ
    る、ことを特徴とする請求項3記載のプロセッサ装置。
  5. 【請求項5】命令の処理を複数のステージに分けてパイ
    プライン実行を行い、命令をプログラムで指定された順
    序に従って実行するプロセッサ装置において、 パイプラインステージの命令発行ステージと、実行ステ
    ージの分岐検証ユニットの間に、先行命令との依存が検
    出された分岐命令を待機させるため待機ステージを設
    け、 先行命令と間の依存を検出する手段を備え、 ある分岐命令について先行命令との依存が検出された時
    に、前記依存が検出された前記分岐命令を、前記命令発
    行ステージから前記待機ステージに進ませ、前記分岐命
    令が、前記実行ステージに進むのを遅らさせることによ
    って、前記依存を解消するとともに、前記分岐命令の分
    岐検証の実行と該分岐命令に後続する命令の実行ステー
    ジを同一サイクルに実行することができる構成とされて
    なる、ことを特徴とするプロセッサ装置。
  6. 【請求項6】命令の処理を複数のステージに分けてパイ
    プライン実行を行い、命令をプログラムで指定された順
    序に従って実行するプロセッサ装置において、 パイプラインステージの命令発行ステージと実行ステー
    ジの間に待機ステージを設け、 ある命令と先行命令との依存が検出された時に、前記依
    存が検出された前記ある命令を、一時的に前記待機ステ
    ージで待機させ、前記依存が検出された前記ある命令
    が、前記実行ステージに進むのを遅れさせることによっ
    て、依存を解消するとともに、前記ある命令と前記ある
    命令に後続する命令の実行ステージを同一サイクルに実
    行する、ように制御することを特徴とするプロセッサの
    実行制御方法。
  7. 【請求項7】命令の処理を複数のステージに分けてパイ
    プライン実行を行い、命令をプログラムで指定された順
    序に従って実行するプロセッサ装置において、 命令発行ステージと実行ステージの間に待機ステージを
    用意し、ある命令が先行命令と依存が存在し前記先行命
    令の命令完了のタイミングが、発行しようとする前記命
    令のデータ供給に間に合わない場合に、前記ある命令
    を、一旦、前記待機ステージで待機させて前記先行命令
    の命令完了を待ち合わせ、前記待機ステージから実行ス
    テージに進んだ前記ある命令と、前記ある命令に後続す
    る命令の実行ステージを同一サイクルに実行するように
    し、これにより、命令発行の空きスロットを生じさせる
    こと無く、パイプラインを動作させることを可能とした
    ことを特徴とするプロセッサの実行制御方法。
JP27067798A 1998-09-25 1998-09-25 プロセッサ及びその実行制御方法 Expired - Fee Related JP3199035B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27067798A JP3199035B2 (ja) 1998-09-25 1998-09-25 プロセッサ及びその実行制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27067798A JP3199035B2 (ja) 1998-09-25 1998-09-25 プロセッサ及びその実行制御方法

Publications (2)

Publication Number Publication Date
JP2000099328A JP2000099328A (ja) 2000-04-07
JP3199035B2 true JP3199035B2 (ja) 2001-08-13

Family

ID=17489416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27067798A Expired - Fee Related JP3199035B2 (ja) 1998-09-25 1998-09-25 プロセッサ及びその実行制御方法

Country Status (1)

Country Link
JP (1) JP3199035B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4779010B2 (ja) * 2006-02-27 2011-09-21 富士通株式会社 バッファリング装置およびバッファリング方法
US8127114B2 (en) * 2007-03-28 2012-02-28 Qualcomm Incorporated System and method for executing instructions prior to an execution stage in a processor
JP5949327B2 (ja) * 2012-08-24 2016-07-06 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2000099328A (ja) 2000-04-07

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US8555039B2 (en) System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
KR100819232B1 (ko) 순차 멀티스레딩 프로세서, 순차 멀티스레딩 프로세서의 처리량 향상 방법 및 컴퓨터 판독 가능 기록 매체
JP3336892B2 (ja) 高性能プロセッサにおける投機ロード命令の実行方法、プロセッサ、およびデータ処理システム
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
US20050066131A1 (en) Apparatus and method for loading data values
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
JP2535252B2 (ja) 並列処理装置
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP2007528549A (ja) 電子回路
EP0499853A2 (en) Memory access scheme
JP2001243071A (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US7234043B2 (en) Decoding predication instructions within a superscaler data processing system
US20070028077A1 (en) Pipeline processor, and method for automatically designing a pipeline processor
JP3199035B2 (ja) プロセッサ及びその実行制御方法
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US6769057B2 (en) System and method for determining operand access to data
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
JP2894438B2 (ja) パイプライン処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010515

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

Free format text: PAYMENT UNTIL: 20080615

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090615

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110615

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110615

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130615

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees