JP2001209535A - プロセッサの命令スケジューリング装置 - Google Patents

プロセッサの命令スケジューリング装置

Info

Publication number
JP2001209535A
JP2001209535A JP2000018291A JP2000018291A JP2001209535A JP 2001209535 A JP2001209535 A JP 2001209535A JP 2000018291 A JP2000018291 A JP 2000018291A JP 2000018291 A JP2000018291 A JP 2000018291A JP 2001209535 A JP2001209535 A JP 2001209535A
Authority
JP
Japan
Prior art keywords
instruction
scheduling
window
dispatched
bit
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.)
Pending
Application number
JP2000018291A
Other languages
English (en)
Inventor
Hisatomo Satou
寿倫 佐藤
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000018291A priority Critical patent/JP2001209535A/ja
Priority to US09/492,274 priority patent/US6643767B1/en
Publication of JP2001209535A publication Critical patent/JP2001209535A/ja
Pending 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)

Abstract

(57)【要約】 (修正有) 【課題】 データ依存関係にある命令を投機的に実行す
るプロセッサにおいて、動的な命令スケジューリングの
効率を向上させる。 【解決手段】 命令をデコードし、演算するプロセッサ
の動的な命令スケジューリング装置であって、スケジュ
ーリングウインドウ271と命令バッファ272とを有
し、それらが分割して構成される。そして、各命令は計
算器にディスバッチされると直ちに命令スケジューリン
グ機構を解放するため、命令スケジューリング機構の実
効容量低下を引き起こさない。その結果、プロセッサ性
能の低下を抑えることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサに関
し、特にプロセッサの命令スケジューリング装置に関す
る。
【0002】
【従来の技術】プロセッサの性能向上を妨げる要因の一
つに命令間の依存関係の問題がある。依存関係には制御
依存関係(control dependence)、資源依存関係(name
dependence)、そしてデータ依存関係(data dependen
ce)がある。制御依存関係には多くの研究があり、分岐
予測や投機的実行により依存関係の解消が試みられてい
る。資源依存関係はレジスタの数というハードウエア資
源の不足により生じる。これはレジスタリネーミング
(R.M.Keller, Look-Ahead Processors, ACM Computing
Surveys, vol.7, no.4, pp.177-195, 1975)を施すこと
により解消可能である。しかしデータ依存関係は、「真
の依存関係」とも称されるように、解消できる方法は未
だない。つまりデータ依存関係は、命令レベル並列度
(instructionlevel parallelism)を向上する妨げとな
る非常に深刻な問題である。
【0003】例えば図8に示す命令シーケンスを考え
る。理解を容易にするために、fからfまでの各オ
ペレーションのソースオペランドは1つに限定する。実
行レイテンシは、命令I1を除いて1と仮定する。命令
I1は、例えばデータキャッシュミスを発生したロード
命令であり、そのレイテンシを4と仮定する。図8の命
令シーケンスには2つのデータ依存関係が存在する。一
つは命令I1と命令I3の間であり、もう一つは命令I
3と命令I4の間である。データ依存関係が存在する場
合には、後続の命令は先行する命令の終了を待たなけれ
ば演算を実行できない。この例では、命令I3は命令I
1が終了しなければ演算を開始できないし、命令I4は
命令I3が終了しなければ演算を開始できない。したが
って従来は、データ依存のために演算が停止している命
令を追い越して、データ依存の関係にない命令を実行し
ている。この操作は動的な命令スケジューリングと呼ば
れており、リザベーションステーション(R.M.Tomasul
o, An Effect Algorithm forExploiting Multiple Arit
hmetic Units, IBM Journal, vol.11, pp.25-33, 196
7)などを用いて構成される命令ウインドウによって実
現される。
【0004】図9にレジスタアップデイトユニット(G.
S.Sohi, Instruction Issue Logicfor High-Performanc
e, Interruptible, Multiple Functional Unit, Pipeli
nedComputers, IEEE Trans. on Computer, vol.39, no.
3, pp.349-359, 1990)を用いて構成される命令ウイン
ドウの1エントリを示す。命令ウインドウの各エントリ
は、2つのソースオペランドフィールド(Source Opera
nd)100(又は110)、デスティネーションフィー
ルド(Destination)120、ディスパッチドビット(D
ispatched)130、ファンクションユニットフィール
ド(Functional Unit)140、実行(Executed)ビッ
ト150、そしてプログラムカウンタフィールド(Prog
ram Counter)180から構成される。もしソースオペ
ランドが未だ得られない時には、レディビット(Read
y)101(又は111)がリセットされソースオペラ
ンドが利用不可能であることを示す。同時に、そのオペ
ランドを示すタグ(Tag)102(又は112)がセッ
トされる。オペランドが利用可能になると、ソースレジ
スタの値がコンテント(Content)フィールド103(又
は113)にセットされ、レディビット101(又は1
11)がセットされる。タグ(Tag)情報を伴ったデス
ティネーションレジスタ番号はデスティネーション(Des
tination)フィールド120のレジスタ(Register)フィ
ールド121に保持され、命令の実行結果はコンテント
(Content)フィールド122に保存される。ディスパッ
チドビット130はファンクションユニットフィールド
140で指定されるファンクションユニットに命令がデ
ィスパッチされているかどうかを示す。実行ビット15
0は命令が完了するとセットされる。実行ビット150
がセットされていると、この命令とデータ依存関係にあ
る後続命令はディスパッチ可能になる。最後にプログラ
ムカウンタ(Program Counter)フィールド180は、予
測失敗からのプロセッサ状態の回復と、正確な例外を実
現するために用いられる。
【0005】レジスタアップデイトユニット(RUU)には
命令がプログラムに現れた順に登録される。先行する命
令が演算を終了すると、演算結果122とデスティネー
ションレジスタ番号121が放送される。後続の命令は
デスティネーションレジスタ番号121を観測し、ソー
スオペランドタグ102(又は112)と一致した場合
にはその演算結果をソースオペランド103(又は11
3)として取り込む。命令は、全てのソースオペランド
が揃うと実行可能になる。先行する全ての命令が実行を
終えていなくても、追い越して実行可能となる。
【0006】図10に従来のプロセッサのブロック図を
示す。同図に示すように従来のプロセッサは、命令キャ
ッシュ200、命令デコーダ260、レジスタファイル
210、命令ウインドウ220、ファンクションユニッ
ト240〜243、そしてデータキャッシュ250から
構成されている。プロセッサは命令キャッシュ200か
らフェッチした命令を、命令デコーダ260で解読し、
命令ウインドウ220に登録する。ソースオペランドは
レジスタファイル210から読み出される。レジスタフ
ァイル210から獲得できない場合には、先行する命令
の終了を待って、ファンクションユニット240〜24
3の結果を取り込む。ソースオペランドの揃った命令は
ファンクションユニット240〜243に発行される。
演算結果は命令ウインドウ220を通じて、レジスタフ
ァイル210に書き込まれる。
【0007】図11に図8の命令シーケンスを実行した
場合の命令スケジューリングの例を示す。理解を容易に
するために以下の設定をしている。プロセッサのフェッ
チ幅とディスパッチ幅は、ともに1とする。命令のコミ
ットは省略する。また、タグ情報を含んだデスティネー
ションレジスタ番号は、アーキテクチャレジスタ番号と
同じであると仮定する。レジスタr1とレジスタr2
は、すでに利用可能になっているとする。以上の仮定に
基づいて、命令スケジューリングを説明する。まず最初
のサイクル(図11A)で、命令I1がイシューされ
る。ソースオペランドタグr1とデスティネーションレ
ジスタタグr11が、該当するフィールドに保持され
る。r1は利用可能であるのでレディビット(r)がセ
ットされる。さらに命令I1はディスパッチされ、ディ
スパッチドビット(d)もセットされる。次のサイクル
(図11B)で、命令I2がフェッチおよびディスパッ
チされる。次のサイクル(図11C)で、命令I3がイ
シューされる。命令I3のソースオペランドr11を生
成する命令I1の実行ビットがセットされていないの
で、命令I3をディスパッチ不可能である。同じサイク
ル(図11C)で、命令I2はr12に演算結果を書き
戻し、実行ビット(e)をセットする。r12は命令I
3が必要としているr11に一致しないので利用されな
い。図11Cで点線で表した矢印は、命令I3のソース
オペランドタグと命令I2のデスティネーションタグが
一致しなかったことを表している。次のサイクル(図1
1D)では命令I4がイシューされる。r13は未だ利
用できないのでディスパッチされない。次のサイクル
(図11E)で命令I1が演算を終了し、r11に演算
結果を書き戻して実行ビットをセットする。r11は命
令I3が必要としているソースオペランドなので、命令
I3はディスパッチされる。図で太線で表した矢印は、
命令I3のソースオペランドタグと命令I1のデスティ
ネーションタグが一致したことを表している。次のサイ
クル(図11F)で、命令I3が演算を終了しr13が
利用可能になっているので、命令I4はディスパッチさ
れる。最後のサイクル(図11G)で命令I4の実行が
終わり、命令シーケンスが終了する。
【0008】データ依存関係の問題を解決するために、
ガベイ(Gabbay)は演算結果を予測し、データ依存関係を
投機的に解消する方法を提案している(F.Gabbay: Spec
ulative execution based on value prediction, Techn
ical Report #1080, Department of Electrical Engine
ering, Technion, 1996)。データ依存の投機実行(spec
ulative execution)を用いるためには、投機失敗時にプ
ロセッサ状態を回復する必要がある。そのための機構と
して、以下に説明する命令再発行を可能にする命令ウイ
ンドウが考案されている。
【0009】命令ウインドウには投機実行に用いた予測
データも保存される。投機実行された命令が演算を終了
すると、その結果の値と予測データの比較が行なわれ
る。もし両者が一致していれば投機実行は成功である。
一致しなかった場合には、プロセッサの状態を投機前の
状態に戻す必要がある。間違った予測をしたロード命令
と依存関係にある命令は再実行されなければならない。
【0010】
【発明が解決しようとする課題】しかし、従来の命令再
発行機構を実装すると、以下の問題をひき起こす可能性
がある。全ての命令はコミットされるまで命令ウインド
ウ中に保持されなければならないため、実効的な容量が
低下してしまい命令スケジューリングの自由度も低下し
てしまう。プロセッサの性能を維持するにはウインドウ
の容量を増やせば良いが、その容量はプロセッサのサイ
クルタイムと密接に関連しており、容易には増やすこと
ができない。容量を増やすためには、プロセッサのサイ
クルタイムを維持するために、命令ウインドウをパイプ
ライン化し、レイテンシを増やす必要がある。このレイ
テンシ増加はプロセッサ性能低下を引き起こしてしま
う。つまり、命令発行から演算結果出力までの時間が長
くなってしまう。
【0011】本発明は、データ依存関係にある命令を投
機的に実行するプロセッサにおいて、動的な命令スケジ
ューリングの効率を向上させることを目的とする。従来
のプロセッサにおいては、投機に失敗した時のプロセッ
サ状態を回復する方法として、命令スケジューリング装
置を用いて、投機に失敗した命令とデータ依存の関係に
ある命令を検出し、その命令を再発行させる方法を採用
している。しかし、この方法では命令スケジューリング
の効率を低下させる可能性があった。
【0012】本発明は、命令スケジューリングと命令再
発行の機能を分割することで、命令のスケジューリング
の効率を低下することなく、命令再発行を実現してい
る。
【0013】
【課題を解決するための手段】本発明は、命令をデコー
ドし、演算するプロセッサの動的な命令スケジューリン
グ装置であって、命令スケジューリング機構と命令再発
行機構とを有し、それらが分割して構成されることを特
徴とする。
【0014】この発明によれば、命令スケジューリング
機構と命令再発行機構を分割することにより、命令スケ
ジューリング機構は小容量であっても、実効的な容量の
低下を回避することができる。命令スケジューリング機
構は小容量であるから、プロセッサのサイクルタイムに
悪影響を及ぼすことはない。一方、データ投機実行の効
果を得るためには、命令再発行機構を大容量とせざるを
得ない。この大容量化は、プロセッサのサイクルタイム
に悪影響を及ぼしうる。しかし、命令再発行機構はデー
タ投機実行が失敗したときだけに必要となるので、プロ
セッサ性能に大きな影響を及ぼすことはない。
【0015】
【発明の実施の形態】以下、図面を用いてこの発明の実
施形態を説明する。命令スケジューリングのための機構
と命令再発行のための機能とに分割された命令ウインド
ウをデカップル命令ウインドウと呼ぶ。
【0016】(第1実施形態)まず、図1〜5に基づい
て第1実施形態を説明する。
【0017】図1は、第1実施形態のデカップル命令ウ
インドウを用いるプロセッサのブロック図である。同図
に示すように第1実施形態のプロセッサは、命令キャッ
シュ200、命令デコーダ260、レジスタファイル2
10、デカップル命令ウインドウ270、データ予測装
置230、ファンクションユニット240〜243、そ
してデータキャッシュ250から構成されている。デカ
ップル命令ウインドウ270は、命令スケジューリング
のための小さなスケジューリング用命令ウインドウ27
1と、命令再発行のための大きな命令再発行用命令ウイ
ンドウ272とから構成されている。以降では、スケジ
ューリング用命令ウインドウ271をスケジューリング
ウインドウ271、命令再発行用命令ウインドウ272
を命令バッファ272と呼び替えることがある。
【0018】スケジューリングウインドウ271は上述
のリザベーションステーションで構成される。図2にリ
ザベーションステーションの1エントリを示す。各エン
トリは、2つのソースオペランド(Source Operand)フ
ィールド100(又は110)、デスティネーション
(Destination)フィールド120から構成される。た
だし、RUU(レジスタアップディトユニット)と異な
りデスティネーションフィールド120はタグを示すレ
ジスタフィールド121のみから成る。
【0019】命令バッファ272は図3で説明する命令
再発行可能なRUUで構成される。RUUを拡張して命
令再発行を可能にした命令バッファを図3に示す。各エ
ントリには予測(Predicted)ビット160と再発行(R
eissued)ビット170が付加されている。予測ビット
160は、デスティネーションフィールド120のコン
テント122に保持されている値が予測された値か否か
を示している。実行ビット150か予測ビット160の
どちらか一方がセットされていると、この命令とデータ
依存関係にある後続命令はディスパッチ可能になる。予
測されたデータ値はデスティネーションコンテントフィ
ールド122に保持される。
【0020】実際の演算結果が得られると、予測された
値と実際の値は比較され、投機実行の成功/失敗が判定
される。そして、実際の値がデスティネーションフィー
ルド120のコンテントフィールド122に保存され、
予測ビット160はリセットされる。
【0021】再発行ビット170は、投機実行が失敗と
判定され、命令が再発行されたことを表している。
【0022】命令が終了し結果が得られると、従来の命
令スケジューリングと同様にデスティネーションタグと
実行結果が放送される。同時に予測の成功/失敗を表す
信号も放送される。以後この信号を再発行信号と呼ぶこ
とにする。
【0023】予測に成功した場合は従来のスケジューリ
ングと同様に、予測に成功した命令のデスティネーショ
ンタグ121とソースオペランドタグ101(又は11
1)が一致する後続の命令がディスパッチ可能となる。
【0024】一方予測に失敗した時には、予測に失敗し
た命令のデスティネーションタグ121とソースオペラ
ンドタグ101(又は111)が一致する後続の命令は
再発行の候補となる。タグが一致した命令のディスパッ
チドビット130がすでにセットされている場合には、
その命令は誤ったソースオペランドを用いて演算を実行
しているため、再発行されなければならない。そして、
ディスパッチドビット130と実行ビット150はリセ
ットされ、再発行ビット170がセットされる。再発行
された命令の実行が終了した場合にも再発行信号が放送
される。したがって再発行信号は、データ値予測に失敗
した命令あるいは再発行された命令が実行を終了したこ
とを表している。以降は上述の説明と同様に、再発行さ
れた命令のデスティネーションタグ121とソースオペ
ランドタグ101(又は111)が一致し且つディスパ
ッチドビット130のセットされたさらなる後続命令が
再発行される。つまり、データ値予測に失敗した命令に
対しデータ依存関係にある後続命令が再発行され、この
再発行された後続命令に対しデータ依存関係にあるさら
なる後続命令が再発行される。こうして、再発行されな
ければならない命令が順に検出される。本機構は従来の
命令ウインドウと比較して再発行信号が一本増えただけ
であり、ハードウエアの増大とサイクルタイムの延長を
防いでいる。
【0025】図4に拡張されたRUUを用いた命令再発
行の例を示す。命令1だけがロードデータ値を予測でき
るとする。
【0026】まず最初のサイクル(図4A)で、命令I
1がイシューされる。ソースオペランドタグr1とデス
ティネーションレジスタタグr11が、該当するフィー
ルドに保持される。r1は利用可能であるのでレディビ
ット(r)がセットされる。さらに命令I1はディスパ
ッチされ、ディスパッチドビット(d)もセットされ
る。命令I1はr11の値を予測し、予測ビット(p)
をセットする。
【0027】次のサイクル(図4B)で、命令I2がフ
ェッチおよびディスパッチされる。次のサイクル(図4
C)で、命令I3がイシューされる。命令I3のソース
オペランドr11を生成する命令I1に予測ビットがセ
ットされているので、命令I3をディスパッチ可能であ
る。同じサイクルで、命令I2はr12に演算結果を書
き戻し、実行ビット(e)をセットする。命令I2のデ
スティネーションタグr12と命令I3のソースオペラ
ンドタグr11が一致しないので、命令I2の結果は命
令I3では利用されない。
【0028】次のサイクル(図4D)では、命令I4が
イシューされる。命令I3が演算を終了しr13が利用
可能になっているので、命令I4はディスパッチされ
る。
【0029】次のサイクルには2通りの場合が考えられ
る。命令I1の予測が成功した場合と、失敗した場合で
ある。
【0030】命令I1での予測に成功した場合(図4
E)、命令I1は予測ビットをリセットし、実行ビット
をセットする。同じサイクルで命令I4が演算を終了
し、やはり実行ビットをセットする。以上でシーケンス
は終了する。
【0031】一方予測に失敗した場合(図4F)には、
命令の再発行が開始される。再発行シグナルが放送さ
れ、予測が失敗した命令I1のデスティネーションタグ
とソースオペランドタグの一致した命令I3は間違った
ソースオペランドを用いてすでにディスパッチされてい
るので、再発行の対象となり再発行ビット(i)がセッ
トされる。命令I3は発行されディスパッチドビットが
セットされる。
【0032】次のサイクル(図4G)で命令I3は終了
し、実行ビットをセットして、再発行ビットをリセット
する。同時に再発行シグナルが放送される。前のサイク
ルと同様にして命令I4が再発行の対象として検出され
る。
【0033】次のサイクル(図4H)で命令I4は終了
し、この命令シーケンスは7サイクルで完了する。
【0034】したがって、データ値の予測に失敗した場
合に必要なサイクル数は、データ依存の投機実行を行な
わない場合に必要なサイクル数と同じである。すなわち
投機に失敗してもペナルティを生じない。
【0035】以上のように、命令の再発行は規模の小さ
なハードウエア(予測値と実際の値を比較するユニッ
ト、再発行信号を生成するユニット)を用いて、且つサ
イクルタイムに影響を及ぼさないで実現可能である。
【0036】図1に示すように、第1実施形態において
は、ある命令が命令キャッシュ200からフェッチさ
れ、命令デコーダ260でデコードされると、命令はス
ケジューリングウインドウ271と命令バッファ272
に発行される。命令がファンクションユニット240〜
243にディスパッチされると、命令はスケジューリン
グウインドウ271中のエントリを直ちに解放する。し
かし、命令バッファ272中のエントリは待機し続け
る。命令がコミットされると、ようやく命令バッファ2
72中のエントリが解放される。スケジューリングウイ
ンドウ271あるいは命令バッファ272が一杯になっ
た時には、命令発行が停止する。
【0037】スケジューリングウインドウ271が命令
スケジューリングを担当する。つまり、ほとんどの場合
はスケジューリングウインドウ271から命令がファン
クションユニット240〜243にディスパッチされ
る。ディスパッチされると命令はスケジューリングウイ
ンドウ271のエントリを解放するので、上述した従来
の命令ウインドウの実効的な容量低下の問題は解決され
ている。さらに、容量が小さいためにプロセッサのサイ
クルタイムに悪影響を与える心配もない。しかし、デー
タ投機実行に失敗した場合、このスケジューリングウイ
ンドウ271内部では命令を再発行できない。そのため
のバックアップとして、命令バッファ272が用意され
ている。
【0038】命令バッファ272が命令再発行を担当す
る。全ての命令はコミットされるまで命令バッファ27
2に待機している。データ投機実行に失敗すると、再発
行すべき命令は命令バッファ272から獲得されディス
パッチされる。大きなデータ投機実行の効果を得るため
に、命令バッファ272を非常に大きくする必要があ
る。そのような大きな命令バッファはプロセッサのサイ
クルタイムに影響するため、この悪影響を回避するため
に、命令バッファ272をパイプライン化する。命令バ
ッファ272は投機失敗時だけに必要なので、このパイ
プライン化はプロセッサ性能に甚大な影響は与えない。
【0039】スケジューリングウインドウ271と命令
バッファ272から得られる二つの同じ命令から選択す
る方法は容易である。もしある命令が投機に失敗した時
には、再発行すべき命令は命令バッファ272からしか
得られない。したがって選択する必要はない。データ依
存が存在して、いまだディスパッチされていない命令は
スケジューリングウインドウ271と命令バッファ27
2の両方から供給される。しかし、命令バッファ272
はパイプライン化されているため、スケジューリングウ
インドウ271よりも同じ命令の供給が遅れる。したが
って、ファンクションユニットにディスパッチされるの
はスケジューリングウインドウ271から供給される命
令であり、命令バッファ272から得られた同じ命令の
ディスパッチは抑制できる。
【0040】上記のように、デカップル命令ウインドウ
270は命令再発行機構の実装により生ずる可能性のあ
る問題を、プロセッサ性能を維持したまま解決できる。
【0041】続いて、第1実施形態のデカップル命令ウ
インドウをシミュレーションにより評価する。シミュレ
ータは現実的なアウトオブオーダー実行を行なう8並列
のスーパースカラプロセッサをモデル化している。動的
スケジューリングはRUUに基づいて行なわれる。RU
Uのエントリは128である。二種類のRUUを評価す
る。一つは通常のレイテンシが1サイクルであるRUU
で、もう一つはパイプライン化されレイテンシが2サイ
クルであるRUUである。各ファンクションユニットは
あらゆる命令を1サイクルで実行できる。ただし、乗算
と除算のレイテンシはそれぞれ4サイクルと12サイク
ルである。データの供給には4ポート、ノンブロッキン
グ、容量128KB、ラインサイズ32B、2ウエイセ
ットアソシアティブのL1データキャッシュを用意す
る。L1データキャッシュのアクセスには、データアド
レス生成後1サイクルを要する。キャッシュミス時のレ
イテンシは6サイクルである。L1データキャッシュ
は、容量8MB、ラインサイズ64B、ダイレクトマッ
プのL2キャッシュがバックアップしている。L2キャ
ッシュのキャッシュミス時のレイテンシは、最初のワー
ドが得られるまでに18サイクル、それに続くワードに
はそれぞれ2サイクルである。全てのメモリ参照命令
は、先行するストア命令が完了しなければ実行できな
い。命令供給には、容量128KB、ラインサイズ32
B、2ウエイセットアソシアティブのL1命令キャッシ
ュを用意する。L1命令キャッシュはL1データキャッ
シュとL2キャッシュを共有している。
【0042】分岐予測には、エントリ数1K、4ウエイ
セットアソシアティブの分岐先バッファ、エントリ数4
K、ジシェア(gshare)タイプの2レベル適応型分岐予測
器、エントリ数8のリターンアドレススタックを用い
る。分岐予測器の更新は、命令がコミットされた時に行
なうこととした。
【0043】データ値予測器は、ガベイ等のストライド
型予測器を用いる。エントリ数は4Kでダイレクトマッ
プとした。
【0044】第1実施形態のデカップル命令ウインドウ
は、エントリ数64の集中型リザベーションステーショ
ンと命令再発行機能を持つエントリ数128のRUUか
ら構成される。このRUUはパイプライン化されてお
り、レイテンシは2サイクルである。
【0045】ベンチマークプログラムにはSPECint
95ベンチマークを用いた。SPEC協会が提供してい
るテストファイルを入力ファイルとして用いている。ベ
ンチマークプログラムと入力ファイルは以下の通りであ
る。
【0046】
【表1】 各プログラムはGNU GCC(version2.6.3)
を用いて最適化オプション−03でコンパイルした。各
プログラムが終了するまで、あるいは最初の1億命令を
シミュレーションした。命令はコミットされたものだけ
を数えた。
【0047】図5は第1実施形態のデカップル命令ウイ
ンドウを採用した時のプロセッサ性能向上率である。各
3本のグラフのうち、左はレイテンシが1サイクルのR
UUを用いたモデルの性能向上率、中央はレイテンシが
2のパイプライン化RUUを用いたモデルの性能向上
率、右が第1実施形態のデカップル命令ウインドウを用
いたモデルの性能向上率である。性能向上率は1サイク
ルあたりの完了命令数(committed instructions per c
ycle:IPC)で評価した。レイテンシ1のRUUでは
プロセッサのサイクルタイムが遅くなるので、それを防
ぐためにパイプライン化したものがレイテンシ2のRU
Uである。レイテンシ2のRUUを使用すると、IPC
が著しく低下している。これをプロセッサの高速化だけ
で補うには25%以上の高速化が必要である(132.
ijpegの場合)。これは実現困難である。したがっ
て、レイテンシ2のRUUを使用するプロセッサはレイ
テンシ1のRUUを使用するプロセッサよりも性能が低
下してしまう。一方、第1実施形態のデカップル命令ウ
インドウを使用すると、レイテンシ1の命令ウインドウ
の場合とほぼ同じIPCが得られている。詳しく比較す
ると性能向上率はやや小さいが、第1実施形態のデカッ
プル命令ウインドウを用いるプロセッサは、1サイクル
レイテンシRUUを用いるプロセッサよりも動作速度を
速くできる。5%以上の高速化が実現可能なので、レイ
テンシ1のRUUの場合よりも性能向上が大きくなる。
したがって、第1実施形態のデカップル命令ウインドウ
を使用したプロセッサの方が性能向上率が勝っている。
【0048】(第2実施形態)図6は、第2実施形態の
デカップル命令ウインドウを用いるプロセッサのブロッ
ク図である。命令キャッシュ200、命令デコーダ26
0、レジスタファイル210、データ予測装置230、
デカップル命令ウインドウ370、ファンクションユニ
ット240〜243、そしてデータキャッシュ250か
ら構成されている。デカップル命令ウインドウ370
は、命令スケジューリングのための小さなスケジューリ
ング用命令ウインドウ371と、命令再発行のための大
きな命令再発行用命令ウインドウ372とから構成され
ている。以降では、スケジューリング用命令ウインドウ
371をスケジューリングウインドウ371、命令再発
行用命令ウインドウ372を命令バッファ372と呼び
替えることがある。
【0049】図7に第2実施形態のデカップル命令ウイ
ンドウ370の構成を詳細に示す。図7では、図6で省
略したフリーリスト300、レジスタマッピング表31
0、アクティブリスト320、そしてビジービット表3
30も表記されている。
【0050】図1に示す第1実施形態では、スケジュー
リングウインドウ271と命令バッファ272は並列に
接続されているので、デコーダ260によってデコード
された命令は、デコーダ260からスケジューリングウ
インドウ271と命令バッファ272の両方に出力され
る。
【0051】一方、図6に示す第2実施形態では、スケ
ジューリングウインドウ371と命令バッファ372は
直列に接続されているので、デコーダ260によってデ
コードされた命令は、デコーダ260からスケジューリ
ングウインドウ371に出力されるが、デコーダ260
から命令バッファ372へは出力されない。命令バッフ
ァ372への命令の供給は、スケジューリングウインド
ウ371によって行われる。
【0052】図1に示す第1実施形態のデカップル命令
ウインドウ270内にも、スケジューリングウインドウ
271と命令バッファ272のみならず、フリーリスト
300、レジスタマッピング表310、アクティブリス
ト320、そしてビジービット表330も設けられる。
ただし、スケジューリングウインドウ271と命令バッ
ファ272は並列に接続される。
【0053】第1及び第2実施形態において、フリーリ
スト300、レジスタマッピング表310、そしてアク
ティブリスト320はレジスタリネーミングを実施す
る。ある命令がデコードされると、そのデスティネーシ
ョンレジスタ番号がレジスタリネーミングされる。リネ
ーミング後のレジスタ番号はフリーリスト300から与
えられる。元のレジスタ番号(論理レジスタ番号)とリ
ネーミング後のレジスタ番号(物理レジスタ番号)との
対応はレジスタマッピング表310に登録される。この
とき、同じ論理レジスタ番号のマッピングが存在してい
る時には、古い方の物理レジスタ番号がアクティブリス
ト320に追い出される。アクティブリスト320に追
い出された物理レジスタ番号をオペランドとする命令が
コミットされると、物理レジスタ番号はアクティブリス
ト320から解放され、フリーリスト300にプールさ
れる。
【0054】データ値予測器230によって予測された
データは、スケジューリングウインドウ371の該当す
るフィールドに保持されると同時に、レジスタファイル
210にも書き込まれる。同時に、スケジューリングウ
インドウ371の予測ビットがセットされる。この予測
ビットの情報はビジービット表330にも与えられてい
る。
【0055】ビジービット表330は、レジスタファイ
ルの各レジスタの値が利用可能になっているかを観測し
ている。状態には次の3つがある。レディ(ready)、投
機(speculative)、ビジー(busy)である。状態がビジー
の時は、まだレジスタの値が利用できない。残りの二つ
の状態の場合には利用可能であるが、投機状態の場合に
は、レジスタ値が間違っている可能性がある。したがっ
て、投機状態のレジスタ値を用いてディスパッチされる
命令は、命令バッファ372に保持されなければならな
い。
【0056】スケジューリングウインドウ371の残り
のフィールドは以下の情報を保持している。Br mskフィ
ールドは分岐命令の情報を保持している。Unitフィール
ドはディスパッチされるべきファンクションユニットを
示している。Functionフィールドで演算の種類が保持さ
れている。rs/rt/rdフィールドはソースレジスタ及びデ
スティネーションレジスタ番号を保持している。最後に
Tagフィールドはアクティブリスト320中のエントリ
との対応づけを行なうためのタグが保持されている。
【0057】ある命令が命令キャッシュ200からフェ
ッチされ、命令デコーダ260でデコードされると、命
令はスケジューリングウインドウ371に発行される。
命令がファンクションユニット240〜243にディス
パッチされると、命令はスケジューリングウインドウ3
71中のエントリを直ちに解放する。この時、ディスパ
ッチされた命令が投機状態にある場合には、その命令は
命令バッファ372に格納される。この命令はコミット
されるまで命令バッファ372中に溜まり、コミット時
にようやく命令バッファ372中のエントリが解放され
る。スケジューリングウインドウ371あるいは命令バ
ッファ372が一杯になった時には、命令発行が停止す
る。
【0058】スケジューリングウインドウ371が命令
スケジューリングを担当する。つまり、ほとんどの場合
はスケジューリングウインドウ371から命令がファン
クションユニット240〜243にディスパッチされ
る。ディスパッチされると命令はスケジューリングウイ
ンドウ371のエントリを解放するので、上述した命令
ウインドウの実効的な容量低下の問題は解決されてい
る。さらに、容量が小さいためにプロセッサのサイクル
タイムに悪影響を与える心配もない。しかし、データ投
機実行に失敗した場合、このスケジューリングウインド
ウ371内部では命令を再発行できない。そのためのバ
ックアップとして、命令バッファ372が用意されてい
る。
【0059】命令バッファ372が命令再発行を担当す
る。投機状態にある命令だけがコミットされるまで命令
バッファ372に待機している。データ投機実行に失敗
すると、再発行すべき命令は命令バッファ372から獲
得されディスパッチされる。投機状態にある命令だけを
保持しておけば良いので、命令バッファ372の容量は
スケジューリングウインドウ371の容量と同程度で良
い。したがって第1実施形態と異なり、命令バッファ3
72をパイプライン化する必要はない。
【0060】第2実施形態のデカップル命令ウインドウ
では、第1実施形態と異なり命令はスケジューリングウ
インドウ371と命令バッファ372のどちらか一方か
らのみ供給される。したがって、ファンクションユニッ
トの状況に応じて、いずれかのウインドウから命令を選
択すれば良い。このとき、命令バッファ372から再発
行される命令に高い優先度を設けることも可能である。
【0061】上記のように、デカップル命令ウインドウ
370は命令再発行機構の実装により生ずる可能性のあ
る問題を、プロセッサ性能を維持したまま解決できる。
【0062】
【発明の効果】本発明により、各命令は計算器にディス
パッチされると直ちに命令スケジューリング機構を解放
するため、命令スケジューリング機構の実効容量低下を
引き起こさない。その結果、プロセッサ性能の低下を抑
えることができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態のデカップル命令ウイン
ドウを使用するプロセッサのブロック図である。
【図2】図1に示すスケジューリングウインドウ(リザ
ベーションステーション)のエントリを示す図である。
【図3】図1に示す命令再発行可能な命令バッファのエ
ントリを示す図である。
【図4】図1に示すデカップル命令ウインドウを用いて
図1の命令シーケンスを実行した場合の命令スケジュー
リングの例を示す図である。
【図5】図1に示すデカップル命令ウインドウを用いた
際のプロセッサ性能向上率を示す図である。
【図6】本発明の第2実施形態のデカップル命令ウイン
ドウを使用するプロセッサのブロック図である。
【図7】図6に示すデカップル命令ウインドウの構成を
示す図である。
【図8】命令シーケンスの例を示す図である。
【図9】従来の命令ウインドウのエントリを示す図であ
る。
【図10】従来のプロセッサのブロック図である。
【図11】従来の命令ウインドウを用いて図1の命令シ
ーケンスを実行した場合の命令スケジューリングの例を
示す図である。
【符号の説明】
100,110 ソースオペランドフィールド 101,111 レディビット 102,112 タグフィールド 103,113 オペランドフィールド 120 デスティネーションフィールド 121 デスティネーションレジスタフィールド 122 演算結果フィールド 130 ディスパッチビット 140 ファンクションユニットフィールド 150 実行ビット 160 予測ビット 170 再発行ビット 180 プログラムカウンタフィールド 200 命令キャッシュ 210 レジスタファイル 220 命令ウインドウ 230 データ値予測装置 240,241,242,243 ファンクションユニ
ット 250 データキャッシュ 260 命令デコーダ 270 デカップルウインドウ 271 スケジューリングウインドウ 272 命令バッファ 300 フリーリスト 310 レジスタマッピング表 320 アクティブリスト 330 ビジービット表 370 デカップルウインドウ 371 スケジューリングウインドウ 372 命令バッファ

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 命令をデコードし、演算するプロセッサ
    の動的な命令スケジューリング装置であって、命令スケ
    ジューリング機構と命令再発行機構とを有し、それらが
    分割して構成されることを特徴とする命令スケジューリ
    ング装置。
  2. 【請求項2】 前記命令スケジューリング機構は、命令
    がファンクションユニットにディスパッチされると、そ
    の命令のエントリを直ちに解放することを特徴とする請
    求項1記載の命令スケジューリング装置。
  3. 【請求項3】 前記命令再発行機構は、命令がファンク
    ションユニットにディスパッチされても、その命令のエ
    ントリを直ちに解放せず、その命令がコミットされた時
    にその命令のエントリを解放することを特徴とする請求
    項2記載の命令スケジューリング装置。
  4. 【請求項4】 前記命令スケジューリング機構から前記
    ファンクションユニットにディスパッチされた命令が、
    そのディスパッチと同時に前記命令再発行機構にも保持
    されることを特徴とする請求項2記載の命令スケジュー
    リング装置。
  5. 【請求項5】 前記命令再発行機構に保持される前記命
    令は、投機状態にあるものに限定されることを特徴とす
    る請求項4記載の命令スケジューリング装置。
  6. 【請求項6】 前記命令スケジューリング機構及び前記
    命令再発行機構から供給される同一命令の内、前記命令
    スケジューリング機構から供給される命令を優先的に選
    択し、前記ファンクションユニットにディスパッチする
    ことを特徴とする請求項3乃至5のいずれか一つに記載
    の命令スケジューリング装置。
  7. 【請求項7】 前記命令スケジューリング機構及び前記
    命令再発行機構から供給される同一命令の内、前記命令
    再発行機構から供給される命令を優先的に選択し、前記
    ファンクションユニットにディスパッチすることを特徴
    とする請求項3乃至5のいずれか一つに記載の命令スケ
    ジューリング装置。
  8. 【請求項8】 前記命令スケジューリング機構の命令エ
    ントリー数が、前記命令再発行機構のそれと比較して小
    さいことを特徴とする請求項1記載の命令スケジューリ
    ング装置。
  9. 【請求項9】 前記命令再発行機構はパイプライン動作
    することを特徴とする請求項8記載の命令スケジューリ
    ング装置。
JP2000018291A 2000-01-27 2000-01-27 プロセッサの命令スケジューリング装置 Pending JP2001209535A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000018291A JP2001209535A (ja) 2000-01-27 2000-01-27 プロセッサの命令スケジューリング装置
US09/492,274 US6643767B1 (en) 2000-01-27 2000-01-27 Instruction scheduling system of a processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000018291A JP2001209535A (ja) 2000-01-27 2000-01-27 プロセッサの命令スケジューリング装置

Publications (1)

Publication Number Publication Date
JP2001209535A true JP2001209535A (ja) 2001-08-03

Family

ID=18545156

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000018291A Pending JP2001209535A (ja) 2000-01-27 2000-01-27 プロセッサの命令スケジューリング装置

Country Status (2)

Country Link
US (1) US6643767B1 (ja)
JP (1) JP2001209535A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009193378A (ja) * 2008-02-14 2009-08-27 Nec Computertechno Ltd ベクトル処理装置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976150B1 (en) * 2000-04-06 2005-12-13 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Resource flow computing device
US7069424B2 (en) * 2002-01-02 2006-06-27 Intel Corporation Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US6845442B1 (en) * 2002-04-30 2005-01-18 Advanced Micro Devices, Inc. System and method of using speculative operand sources in order to speculatively bypass load-store operations
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7089400B1 (en) * 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
US7000095B2 (en) * 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
US7293162B2 (en) * 2002-12-18 2007-11-06 Fujitsu Limited Split data-flow scheduling mechanism
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7302553B2 (en) * 2003-01-23 2007-11-27 International Business Machines Corporation Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US20060149940A1 (en) * 2004-12-27 2006-07-06 Intel Corporation Implementation to save and restore processor registers on a context switch
US7747993B2 (en) * 2004-12-30 2010-06-29 Michigan Technological University Methods and systems for ordering instructions using future values
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US9052890B2 (en) * 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US10802756B1 (en) 2018-07-12 2020-10-13 Seagate Technology Llc Flash queue status polling
US10996981B2 (en) * 2019-03-15 2021-05-04 Toshiba Memory Corporation Processor zero overhead task scheduling

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012403A (en) * 1988-04-01 1991-04-30 Digital Equipment Corporation Apparatus and method for replaying decoded instructions
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5784603A (en) * 1996-06-19 1998-07-21 Sun Microsystems, Inc. Fast handling of branch delay slots on mispredicted branches
US5944818A (en) * 1996-06-28 1999-08-31 Intel Corporation Method and apparatus for accelerated instruction restart in a microprocessor
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US6212626B1 (en) * 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US6240509B1 (en) * 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6098166A (en) * 1998-04-10 2000-08-01 Compaq Computer Corporation Speculative issue of instructions under a load miss shadow

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009193378A (ja) * 2008-02-14 2009-08-27 Nec Computertechno Ltd ベクトル処理装置

Also Published As

Publication number Publication date
US6643767B1 (en) 2003-11-04

Similar Documents

Publication Publication Date Title
US6189088B1 (en) Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US8266412B2 (en) Hierarchical store buffer having segmented partitions
US8275976B2 (en) Hierarchical instruction scheduler facilitating instruction replay
US20040128448A1 (en) Apparatus for memory communication during runahead execution
US8296550B2 (en) Hierarchical register file with operand capture ports
TWI299465B (en) Simultaneous multithread processor and method therefor
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US8024522B1 (en) Memory ordering queue/versioning cache circuit
US8370609B1 (en) Data cache rollbacks for failed speculative traces with memory operations
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US8266413B2 (en) Processor architecture for multipass processing of instructions downstream of a stalled instruction
US7877630B1 (en) Trace based rollback of a speculatively updated cache
JP2001209535A (ja) プロセッサの命令スケジューリング装置
US20020087849A1 (en) Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System
US9176741B2 (en) Method and apparatus for segmented sequential storage
US20220188233A1 (en) Managing cached data used by processing-in-memory instructions
WO2007027671A2 (en) Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US8051247B1 (en) Trace based deallocation of entries in a versioning cache circuit
US5751986A (en) Computer system with self-consistent ordering mechanism
US11868777B2 (en) Processor-guided execution of offloaded instructions using fixed function operations
Hilton et al. BOLT: Energy-efficient out-of-order latency-tolerant execution
US8019944B1 (en) Checking for a memory ordering violation after a speculative cache write
US7779307B1 (en) Memory ordering queue tightly coupled with a versioning cache circuit
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
KR20060021281A (ko) 리플레이 메커니즘을 구비한 로드 저장 유닛

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060501

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060606