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

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

Info

Publication number
JP2000099328A
JP2000099328A JP10270677A JP27067798A JP2000099328A JP 2000099328 A JP2000099328 A JP 2000099328A JP 10270677 A JP10270677 A JP 10270677A JP 27067798 A JP27067798 A JP 27067798A JP 2000099328 A JP2000099328 A JP 2000099328A
Authority
JP
Japan
Prior art keywords
instruction
stage
dependency
execution
register
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
JP10270677A
Other languages
English (en)
Other versions
JP3199035B2 (ja
Inventor
Atsushi Torii
淳 鳥居
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)

Abstract

(57)【要約】 【課題】パイプラインプロセッサにおいて、命令間の依
存によるストールの発生を減らすプロセッサの提供。 【解決手段】プロセッサのパイプラインステージに待機
ステージ57を備え、命令間のレジスタハザードを検出
した時に、待機ステージ57を用いて、依存を検出した
命令が実行ステージに進むのを遅れさせることによっ
て、依存を解消すると共に、後続命令を合わせて実行す
ることによって、レジスタハザードの発生を低減する。

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、レジスタ読み出しバス1
2、レジスタ書き戻しバス13、即値バス14等を備え
て構成されている。他に制御系の信号等が必要となる
が、説明に直接関係しないので、図7では省略されてい
る。
【0005】このプロセッサでは、R3000に規定されて
いるような分岐遅延スロットは規定されていず、分岐予
測ユニット2を備え、分岐命令を命令キャッシュ1から
フェッチした際に、分岐命令の結果を予測して分岐側、
非分岐側のいずれかの後続命令をフェッチして実行を続
ける。
【0006】分岐予測の成否は、分岐検証ユニット7に
よって検証され、予測が誤りだった場合には、正しい命
令のフェッチからやり直すと共に、分岐予測ユニット2
内の分岐予測テーブルを書換える。
【0007】また、計算が終った値は、レジスタに書き
戻す前に、フォワーディングパス9を用いて、後続命令
に供給可能である。
【0008】図8は、命令デコード発行ユニット3か
ら、レジスタハザードおよびフォワーディングパス9の
設定の制御を行う部分を示したブロック図である。
【0009】図3において、命令コード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】このようなプログラムコードを実行した場
合、図4に示すようなパイプライン実行図に示すような
タイミングで処理される。
【0019】但し、図4では、BEQ命令(3)の条件が成立
しないことを予測しており、実際に予測が成立した場合
を示している。
【0020】この時、(3)の分岐命令(レジスタR1とR4
の内容が等しい場合100番地へ分岐)は、(2)のロード命
令の結果(主記憶のX番地の内容をレジスタR1にロー
ド)を参照する必要があるため、T4サイクルでRDステ
ージが実行できず、レジスタハザードとなり、1サイク
ル実行が遅れさせられてしまう。
【0021】この問題を解決するために、従来よりいく
つかの手法が提案されている。
【0022】このうち一番単純な方法は、(1)と(2)の命
令順序をコンパイラもしくはアセンブラ等で入れ換える
ことである。
【0023】図5に示したように、この場合、(2)のロ
ード命令と、(3)の分岐命令との間に(1)ADD 命令が挿入
されているため、空きスロットを生じさせることなく、
命令が実行可能になる。
【0024】また、このようなin-order(イン・オー
ダ)実行型ではなく、out-of-order(オウト・オブ・オ
ーダ)実行方式のマイクロプロセッサにおいては、実行
できる命令から順に実行を行うので、プログラムコード
を変更すること無く、このような空きスロットを極力減
らすことが可能である。
【0025】
【発明が解決しようとする課題】しかしながら、コンパ
イラやout-of-order実行によっても解決できないコード
も存在し得る。例えば、図4において、(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 フラグ書き戻しバス

Claims (7)

    【特許請求の範囲】
  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 true JP2000099328A (ja) 2000-04-07
JP3199035B2 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007097017A1 (ja) * 2006-02-27 2009-07-09 富士通株式会社 バッファリング装置およびバッファリング方法
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法
JP2014044509A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd 演算処理装置および演算処理装置の制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007097017A1 (ja) * 2006-02-27 2009-07-09 富士通株式会社 バッファリング装置およびバッファリング方法
JP4779010B2 (ja) * 2006-02-27 2011-09-21 富士通株式会社 バッファリング装置およびバッファリング方法
US8533368B2 (en) 2006-02-27 2013-09-10 Fujitsu Limited Buffering device and buffering method
JP2010522940A (ja) * 2007-03-28 2010-07-08 クゥアルコム・インコーポレイテッド プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法
JP2014044509A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP3199035B2 (ja) 2001-08-13

Similar Documents

Publication Publication Date Title
US8555039B2 (en) System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US5958041A (en) Latency prediction in a pipelined microarchitecture
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
KR100819232B1 (ko) 순차 멀티스레딩 프로세서, 순차 멀티스레딩 프로세서의 처리량 향상 방법 및 컴퓨터 판독 가능 기록 매체
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US20070022277A1 (en) Method and system for an enhanced microprocessor
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
JPH09223013A (ja) 高性能プロセッサにおける投機ロード命令の実行方法
US20010005882A1 (en) Circuit and method for initiating exception routines using implicit exception checking
US20060184772A1 (en) Lookahead mode sequencer
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
JP2535252B2 (ja) 並列処理装置
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US8127114B2 (en) System and method for executing instructions prior to an execution stage in a processor
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP2007528549A (ja) 電子回路
JP3790626B2 (ja) デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置
JP2001243071A (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
JP3199035B2 (ja) プロセッサ及びその実行制御方法
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US6769057B2 (en) System and method for determining operand access to data

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