JPH08212070A - プロセッサ・アーキテクチャにおける分散制御のための装置および方法 - Google Patents

プロセッサ・アーキテクチャにおける分散制御のための装置および方法

Info

Publication number
JPH08212070A
JPH08212070A JP7318516A JP31851695A JPH08212070A JP H08212070 A JPH08212070 A JP H08212070A JP 7318516 A JP7318516 A JP 7318516A JP 31851695 A JP31851695 A JP 31851695A JP H08212070 A JPH08212070 A JP H08212070A
Authority
JP
Japan
Prior art keywords
execution
instruction
instructions
pipe
pipes
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
JP7318516A
Other languages
English (en)
Other versions
JP3771957B2 (ja
Inventor
Young Robert
ロバート・ヤング
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08212070A publication Critical patent/JPH08212070A/ja
Application granted granted Critical
Publication of JP3771957B2 publication Critical patent/JP3771957B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

(57)【要約】 【課題】 本発明は、分散データ・フロー(DDF)プ
ロセッサの複数の実行パイプを制御する多重レベル命令
スケジューリング・システムを提供する。 【解決手段】 この多重レベル・スケジューリング・シ
ステムは、単純な大域命令スケジューラと、実行パイプ
の数に対応する複数のローカル命令スケジューラとを備
える。大域命令スケジューラは、実行パイプへの命令の
分配を行う。各ローカル命令スケジューラは、分配され
た命令の分担分のスケジューリングと、ソース・オペラ
ンドがすべての使用可能なときに、数の減少した命令を
対応する実行パイプの実行ユニットとマッチさせること
のみを行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・プ
ロセッサ・アーキテクチャの分野に関する。具体的に
は、本発明はコンピュータ・プロセッサにおける分散制
御の分野に関する。
【0002】
【従来の技術】単一の実行ユニットを有するプロセッサ
を備えたコンピュータの処理速度は、主として2つの要
因によって左右される。第1の要因は、命令サイクル・
タイムである。第2の要因は、アーキテクチャ/マイク
ロアーキテクチャおよびその実施態様の並列性または複
雑さ、すなわち、各命令について実行ユニットが実行で
きる計算の総量である。したがって、このようなプロセ
ッサの有効な処理速度は、サイクル・タイムを減らす
か、マイクロプロセッサの並列性を高めるか、あるいは
その両方によって向上させることができる。
【0003】しかし、上記の2つの要因は両立しないこ
とが多い。一方の要因を最適化すると、他方の要因を犠
牲にしなければならないことがある。たとえば、アーキ
テクチャを強化して、2次元配列の浮動小数点数を乗算
する命令を組み込むと、その命令のサイクル・タイムが
増える。逆に、平均サイクル・タイムを最小限にするた
めには、命令セットに単純な命令だけを組み込まなけれ
ばならない。パイプライン方式は複雑な命令に伴うサイ
クル・タイムの増加を軽減することができるが、パイプ
ライン方式によって命令待ち時間も増える。
【0004】性能を向上させるために、複数の命令を同
時に実行することが可能な複数の実行ユニットを有する
データ・フロー・プロセッサなど様々なプロセッサ・ア
ーキテクチャが探求されてきた。商業的に実用化されて
いるものとしては、LSIロジックの「ライトニング」
やヒュンダイ・エレクトロニクスの「サンダー」SPA
RCプロセッサなどがある。従来のソフトウェア命令は
一般に順次プログラム順に作成、実行されるが、実際に
は命令のオペランド相互依存が100%であることはめ
ったにないこと、すなわち、前の命令がすべて実行され
るまではどの命令も実行できないということはめったに
ないという所見から、データ・フロー・プロセッサの基
本アーキテクチャが発展した。命令オペランド相互依存
は一般には50%未満である。したがって、いくつかの
独立した命令を1つのサイクルで別々の実行ユニットに
よって同時に処理することが可能である。さらに、命令
オペランド相互依存は、並列指向ソフトウェア・プログ
ラミング言語およびコンパイラ技法を用いることによっ
て減少させることができる。
【0005】図1は、複数の実行ユニットを有する従来
のデータ・フロー・プロセッサ・アーキテクチャを示す
ブロック図である。データ・フロー・プロセッサ100
は、命令キャッシュ・メモリ110、先取りバッファ1
20、予測レジスタ・ファイル135を有する集中命令
スケジューラ130、複数の実行ユニット141、14
2、...149、およびレジスタ・ファイル/メモリ
190を備えている。先取りバッファ120は、命令キ
ャッシュ・メモリ110と集中命令スケジューラ130
の間に結合されている。レジスタ・ファイル/メモリ1
90は集中命令スケジューラ130に結合されている。
複数の実行ユニット141、142、...149はそ
れぞれ、集中命令スケジューラ130に結合されてい
る。
【0006】データ・フロー・プロセッサ100によっ
て各命令が処理されるとき、命令は保留、発行済み、完
了、およびリタイアの4つの状況の1つをとる。命令が
保留中であるとは、使用可能な実行ユニットや1つまた
は複数のソース・オペランドを待つ間、命令が命令キャ
ッシュ110から取り出され、先取りバッファ120に
格納されている場合である。発行済み状態では、集中命
令スケジューラ130によって実行ユニット141に対
して命令が出され、命令のソース・オペランドが使用可
能である。次に、命令は完了、すなわち実行ユニット1
41によって実行される。最後に命令はリタイアされ
る。リタイアされると、適切な実行ユニット、たとえば
141がリタイアされた命令の状況と結果値を集中命令
スケジューラ130の先取りレジスタ・ファイル135
に返して、プロセッサ100のそれに対応する命令状況
を更新する。集中命令スケジューラ130は、実行ユニ
ット141などの資源を実行ユニットの自由プールに返
し、リタイアされた命令の宛先オペランド値をレジスタ
・ファイル190に転送する。
【0007】集中命令スケジューラ130には複数の実
行ユニット141、142、...149があるため、
理論的には、データ・フロー・プロセッサ100は最大
N個の発行済み命令を持つことができる。この場合、N
は実行ユニットの総数に各実行ユニット内のステージ数
を掛けた数である。したがって、オペランド相互依存が
ない理想的な命令のセットでは、N個の発行済み命令を
同時に実行することもできる。実際には、通常、N個の
発行済み命令の間にはいくらかのオペランド依存があ
り、発行済みのいくつかの命令の実行は、それより古い
他の命令がすべて完了してソース・オペランド値が使用
可能になるのを待つ間、遅らせなければならない。先取
りレジスタ・ファイル135は、別々の実行ユニットに
対して出された命令の間のオペランド相互依存を満たす
ために必要なオペランド値の一時保管場所の役割を果た
す。レジスタ・ファイル135は、プログラマにとって
可視のファイルまたは永続レジスタ・ファイルとは異な
る。たとえば、プログラマ可視ファイルには、対応する
レジスタ設定命令が実行中に打ち切られた場合に無効化
される可能性のある一時レジスタ値が含まれていること
がある。それに対して、レジスタ・ファイル135は、
プログラマにとって透過、すなわち見えないファイルで
あり、集中命令スケジューラ130がアクセスすること
が可能なレジスタの専用プールとして使用される。した
がって、中程度の量の並行処理を行うことができ、それ
によってデータ・フロー・プロセッサ100は、単一の
実行ユニットを有する従来のプロセッサと比較してより
高い命令スループットを実現することができる。
【0008】残念ながら、この中程度の処理速度の高速
化に伴って、すべての命令をスケジュールし、すべての
実行ユニット141、142、...149の状況を追
跡するためのプロセッサ100の制御回路が指数関数的
に複雑化する。集中命令スケジューラ130によって維
持されるこの制御情報とオペランド情報は、実行ユニッ
ト141、142、...149の数の増加や先取りバ
ッファ120内の保留中の命令数の増加につれて大幅に
増える。したがって、従来のデータ・フロー・プロセッ
サ100は、単一命令スケジューラ130がこの大量の
制御情報とデータ情報を維持できる能力によって厳しく
制限されている。さらに、プロセッサ100のスケーラ
ビリティは、実行ユニット141、142、...14
9を制御するために必要な集中命令スケジューラ130
の回路の複雑化によって制限される。
【0009】
【発明の要旨】本発明は、分散データ・フロー(DD
F)プロセッサの複数の実行パイプを制御する多重レベ
ル命令スケジューリング・システムを提供する。この多
重レベルスケジューリング・システムは、単純な大域命
令スケジューラと複数のローカル命令スケジューラを備
えている。各ローカル命令スケジューラにはそれぞれの
実行パイプの1つが関連づけられている。大域命令スケ
ジューラは、実行パイプに命令を分配することだけを行
う。したがって、その回路は従来の集中命令スケジュー
ラに比べて単純であり、他の制御機能はローカル命令ス
ケジューラにゆだねられる。同様に、各ローカル命令ス
ケジューラは、分配された命令の分担分のスケジューリ
ングおよび数の減少した命令とそれに対応する実行パイ
プの実行ユニットとのマッチだけを行うため、ローカル
命令スケジューラも集中命令スケジューラに比べて単純
である。多重レベル・スケジューリング・システムが単
純化される結果、DDFプロセッサは容易に拡張可能に
なる。
【0010】大域命令スケジューラは、たとえば浮動小
数点、整数、またはブールなどの命令クラスやオペラン
ド依存などの適切な基準に基づいて、各実行パイプに命
令を分配する。実行パイプに命令が分配されると、それ
ぞれのローカル命令スケジューラはその命令の実行をス
ケジューリングすることだけを担当する。命令のソース
・オペランド値が入手可能な場合、命令は実行パイプの
使用可能な実行ユニットとマッチさせられる。命令のソ
ース・オペランド値は、3通りの方法の1つで取り出さ
れる。
【0011】第1に、ローカル命令スケジューラは、ロ
ーカルで生成されたレジスタ・オペランド値が、実行パ
イプに分配されたより若い命令によって使用されるよう
に、ローカル・レジスタ・バッファに格納されるように
する。したがって、ローカルで生成されたレジスタの結
果値はローカルで、すなわち実行パイプ内で迅速に使用
可能になり、外部アクセスの必要がない。言い換える
と、パイプ間オペランド依存が、ローカル命令スケジュ
ーラによってローカルで迅速に解決される。
【0012】第2に、ローカル・レジスタ・バッファに
命令のソース・オペランド値が入っていない場合、アー
ビタに対してパイプ間オペランド要求が行われる。パイ
プ間オペランド相互依存の解決を行うアービタは、その
要求をすべての実行パイプまたは一部の実行パイプに同
報通信することができる。あるいは、アービタは大域命
令スケジューラに問い合わせて、必要なソース・オペラ
ンドを持つ別の実行パイプの識別子を取り出す。他の実
施態様では、各命令の必要なオペランドのソース、すな
わち実行パイプの識別子が、命令とともに送られ、それ
によってその後のソース・オペランド値の生成が簡単に
なる。オペランド値を別の実行パイプから入手可能な場
合、第1の実行パイプと第2の実行パイプを結合するパ
イプ間バイパスを介してソース・オペランドの転送が開
始される。
【0013】第3に、ソース・レジスタ・オペランド値
が他のどの実行パイプでも見つからない場合、レジスタ
・オペランド値は大域レジスタ・ファイルから取り出さ
れる。次に、要求されたオペランド値は、第1の実行ユ
ニットを大域レジスタ・ファイルに結合するパイプ間バ
イパスを介して転送される。
【0014】すべてのソース・オペランド値が実行パイ
プに転送されると、命令が実行パイプ内の使用可能な実
行ユニットとマッチさせられる。最終的に、命令はその
実行パイプ内で実行を完了し、リタイアされる。実行パ
イプによって生成された結果のオペランド値は、大域レ
ジスタ・ファイルに書き込まれる。さらに、ローカル命
令スケジューラは、実行の完了を大域命令スケジューラ
に通知し、それによって命令の処理が完了する。
【0015】本発明の分散データ・フロー(DDF)プ
ロセッサには、従来のデータ・フロー・プロセッサより
優れたいくつかの利点がある。そのいくつかは、大域命
令スケジューラとローカル命令スケジューラのスケジュ
ーリングを単純化する階層多重レベル・スケジューリン
グによる利点である。単純化された大域命令スケジュー
ラは、実行パイプからの命令状況情報を処理するだけで
済み、オペランド値を扱う必要がなくなる。したがっ
て、DDFプロセッサは容易に拡張可能で、それに伴っ
て大域およびローカル命令スケジューラの回路が複雑化
することなく、追加の実行パイプを付加することができ
る。
【0016】この複数実行パイプ・アーキテクチャは、
マルチタスク、システム例外/トラップ処理、および、
たとえば命令分岐予測技法のような先取り実行などのソ
フトウェア最適化技法に役立つ。たとえば、DDFプロ
セッサは、個々のタスクを別々の実行パイプで実行する
ことによってマルチタスクを行うことができる。同様
に、それぞれの累積確率に基づいて、別々の実行パイプ
で実行する複数の計算パスを選択することによって、先
取り実行を行うことができる。
【0017】複数実行パイプ・アーキテクチャの他の利
点としては、実行パイプ間の制御/クロック同期論理回
路の減少がある。たとえば、各バイパスを介したパイプ
間交信が同期化されると同時に、各実行パイプはそれぞ
れの固有のクロック速度で、固有の同期またはクロック
方法を用いて動作することができる。さらに、様々な実
行パイプのクロック速度をそれぞれの機能に応じて最適
化することができる。
【0018】
【発明の実施の形態】以下の説明では、多くの詳細によ
って本発明を十分に理解することができる。これらの詳
細には、開発者が分散データ・フロー(DDF)プロセ
ッサを実現するための手助けとなる機能ブロックとスケ
ジューリング基準例が含まれている。さらに、本発明の
DDFプロセッサについて、特定の実施形態を参照しな
がら説明するが、本発明はデータ・フローと非データ・
フローの両方のアーキテクチャおよび環境に適用可能で
ある。他の実施形態では、本発明が不必要に不明瞭にな
らないように、周知の回路および構造については説明し
ない。
【0019】図2は、本発明の1つの実施形態に従った
DDFプロセッサ・アーキテクチャを示すブロック図で
ある。DDFプロセッサ200は、命令キャッシュ・メ
モリ210、複数の先取りバッファ221、22
2、...229、大域命令スケジューラ230、複数
の実行パイプ241、242、...249、1つまた
は複数のパイプ間バイパス251、...259、アー
ビタ260、および大域レジスタ・ファイル/メモリ2
90を備えている。各命令パイプは、固有のローカル命
令バッファ、ローカル命令スケジューラ、実行ユニッ
ト、および一時ローカルレジスタ・バッファを備えてい
る。たとえば、命令パイプ241は、ローカル命令バッ
ファ241a、ローカル命令スケジューラ241b、実
行ユニット241c、およびローカル・レジスタバッフ
ァ241dを備えている。同様に、命令パイプ242は
ローカル命令バッファ242a、ローカル命令スケジュ
ーラ242b、実行ユニット242c、およびローカル
・レジスタバッファ242dを備えている。したがっ
て、実行パイプ241の動作の説明は他の実行パイプ2
42、...249にも等しく適用可能である。
【0020】命令キャッシュ210と大域命令スケジュ
ーラ230の間に、先取りバッファ221、22
2、...292が結合されている。大域命令スケジュ
ーラ230にはローカル命令バッファ241a、242
a、...249aを介して実行パイプ241、24
2、...249がそれぞれ接続されている。実行パイ
プ241、242、...249は相互に接続されてお
り、1つまたは複数のパイプ間バイパス251、...
259によってレジスタ・ファイル290にも接続され
ている。アービタ260が、バイパス251、...2
59、大域命令スケジューラ230、およびレジスタ・
ファイル290に接続されている。
【0021】本発明の他の態様に従うと、DDFプロセ
ッサ200は、複数の命令を処理するための階層多重レ
ベル・スケジューリング構造を備えている。大域命令ス
ケジューラ230は、実行パイプ241、24
2、...249に命令を割り振って分配することを必
要とする最上位レベルのスケジューリングを行う。それ
に対して、ローカル命令スケジューラ241b、242
b、...249bは、命令を実行ユニットとマッチさ
せ、それぞれ実行パイプ241、242、..249に
命令のソース・レジスタ・オペランド値を入手すること
を必要とする、より低いレベルのスケジューリングを行
う。
【0022】1つの実施形態では、以下のようにして命
令が処理される。まず、大域命令スケジューラ230が
先取りバッファ221、222、...229を介して
命令キャッシュ210から命令を取り出す。次に、大域
命令スケジューラ230は、それらの命令を実行パイプ
241、242、...249に分配する。別々の実行
パイプに分配された命令間のオペランド依存を最小限に
するために、命令クラスまたはオペランド依存による分
配など適切な資源(実行パイプ)割り振り基準を実施す
ることができる。一般に、浮動小数点、整数、およびブ
ール命令はそれぞれ浮動小数点、整数、およびブール・
オペランドに対して実行されるため、命令クラスによる
分配は有効である。好ましい実施形態では、命令は大域
命令スケジューラ230によってその命令のソース・オ
ペランドに関する情報とともに分配される。
【0023】それぞれの実行パイプに命令が分配された
後は、大域命令スケジューラ230は命令間のオペラン
ド相互依存の解決は行わない。実行パイプ241、24
2、...249、たとえばパイプ241に命令が分配
されると、それぞれのローカル命令スケジューラ241
b、242b、...249b、たとえばスケジューラ
241bが、命令のローカル・スケジューリングを担当
する。命令は次に、大域命令スケジューラ230によっ
て、それぞれのローカル命令バッファ241a、242
a、...249a、たとえばバッファ241aにロー
ドされる。次に、ローカル命令スケジューラ241bは
ローカル・バッファ241aから実行可能になっている
命令を取り出し、実行ユニット241cに命令をディス
パッチする。
【0024】実行パイプ241内の命令は、必ずしも大
域命令スケジューラ230によって分配された順序で実
行されるわけではないことに留意されたい。これは、命
令スケジューラ241bによるローカル・スケジューリ
ングが、実行パイプ241内の空き実行ユニット241
cの可用性と、ローカル命令バッファ241a内の命令
のソース・オペランドの可用性とに基づいて行われるた
めである。たとえば、バッファ241a内の古い方の
(プログラムの順でより早い方の)命令がソース・オペ
ランドを待っている間に、バッファ241a内のより若
い(プログラムの順でより遅い)命令が、必要なソース
・オペランド値がすべて揃って、実行可能になることが
ある。その場合、近い実行ユニットが使用可能であれ
ば、若い方の命令がディスパッチされる。
【0025】本発明の他の態様に従うと、レジスタ・オ
ペランド値への迅速なアクセスを容易にするため、ロー
カル命令スケジューラ241bは、ローカルで生成され
たレジスタ・オペランド値をローカル・レジスタ・バッ
ファ241dに格納し、実行パイプ241に分配された
より若い命令がソース・オペランド値として使用できる
ようにする。その結果、ローカルで生成されたレジスタ
の結果値はすべてローカルで、すなわち実行パイプ24
1内で入手可能になり、実行パイプ241の外部へのア
クセスが不要になる。言い換えると、パイプ間オペラン
ドの相互依存はローカル命令スケジューラ241bによ
って解決される。プログラムの正常実行時には、レジス
タ・バッファ241d内のそれぞれのレジスタは再使用
の前に名前変更されるため、ローカル命令スケジューラ
241bによるレジスタ・バッファ241dに格納され
ているオペランド値の無効化は不要である。
【0026】大域レジスタ・ファイル290と複数のロ
ーカル・レジスタ・バッファ241d、242
d、...249dを備えた階層レジスタ・ファイル・
システムは、以下のような理由で従来の技術より優れて
いる。単一の集中レジスタ・ファイルは、大容量高速大
域メモリを多数の実行ユニットと相互接続することによ
ってきわめて広いシリコン面積を要し、入出力ポートの
多いきわめて複雑な回路を必要とするため、理想的では
ない。この拡大は、大域メモリのサイズや実行ユニット
の数が増大するに従って指数関数的に増える。
【0027】それに対して、本発明のように、実行ユニ
ットの小さなサブセットの近くに配置された少数の高速
レジスタ・バッファを専用化することにより、シリコン
面積における著しい不利を生ずることなく、最も頻繁に
アクセスされるオペランドへのアクセスの高速化が可能
になる。これは、統計的にソース・オペランドの大多数
(たとえば>90%)が、プログラム順で10行未満の
命令行しか離れていない他の命令によって生成されるた
めである。したがって、単一の大域レジスタ・ファイル
の代わりに、ローカル・レジスタ・バッファ241d、
242d、...249dが大量オペランド・アクセス
を効率的に処理し、DDFプロセッサ200の回路全体
が複雑化しない。その結果、階層レジスタ・ファイル・
システムは容易に拡張可能である。前記の階層レジスタ
・ファイル構成は、複数の実行ユニットを有する他のプ
ロセッサ・アーキテクチャ、たとえば複数の実行ユニッ
トを有する単一のパイプライン・プロセッサにも同様に
適用可能であることに留意されたい。
【0028】実行パイプ241内の命令の1つまたは複
数のソース・オペランドがローカル・レジスタ・バッフ
ァ241d内に見つからない場合(その確率は低い)、
実行パイプ241がアービタ260に対してパイプ間オ
ペランド要求を行う。パイプ間オペランド相互依存の解
決を行うアービタ260は、必要なソース・オペランド
を持っている実行パイプの識別子を求める要求を出す。
オペランド値が別の実行パイプにある場合、そのソース
・オペランドを持っている実行パイプ、たとえばパイプ
242の識別子を大域命令スケジューラ230から受け
取ると、アービタ260はパイプ間バイパス25
1、...259のうちの適切な1つを介してそのソー
ス・オペランドの転送を開始する。通例、パイプ間バイ
パスは類似したクラスの実行ユニットを有する実行パイ
プを相互接続するために必要なものである。たとえば、
実行パイプ241、242、...249の第1の対と
第2の対が、それぞれ浮動小数点実行パイプと整数実行
パイプであるとすれば、第1のバイパスが浮動小数点実
行パイプの対を相互接続し、第2のバイパスが整数実行
パイプの対を相互接続することができる。
【0029】したがって、アービタ260の主たる機能
は、パイプ間オペランド値トラフィックを調整すること
である。ある種の実施形態では、アービタ260は、た
とえば大域命令スケジューラ230に問い合わせること
によって、必要なソース・オペランド値のある場所(実
行パイプ)を判断することもできる。
【0030】ソース・オペランド値がどの実行パイプ2
41、242、...249にも見つからない場合(そ
の確率はさらに低い)、大域レジスタ・ファイル290
へのアクセス要求が出される。要求されたレジスタ・オ
ペランド値は、大域レジスタ・ファイル290から実行
パイプ241に転送される。必要なソース・オペランド
値をその命令がすでにすべて入手していれば、これでそ
の命令と実行パイプ241の実行ユニットとのマッチを
行うことができるようになる。
【0031】同一パイプ241内から、パイプ間バイパ
ス251を介して他の実行パイプ242、...249
から、または大域レジスタ・ファイル290から、実行
パイプ241内の各命令のソース・オペランドがすべて
取り出されると、ローカル命令スケジューラ241bは
その命令を実行ユニット241cのうちの空き実行ユニ
ットとのマッチを行い、その実行ユニットに命令をディ
スパッチする。実行パイプ241のローカル・レジスタ
・バッファ241dを使用することにより、実行パイプ
241内で生成されたレジスタ値へのローカル・アクセ
スを高速化することができる。最後に、命令は実行パイ
プ241内で実行を完了し、リタイアされる。実行パイ
プ241によって生成された結果のオペランド値は、次
に大域レジスタ・ファイル290に書き込まれる。さら
に、ローカル命令スケジューラ241bは実行の完了を
大域命令スケジューラ230に通知し、それによって命
令の処理が完了する。
【0032】分散データ・フロー(DDF)プロセッサ
200には、従来のデータ・フロー・プロセッサ100
より優れたいくつかの利点がある。利点のいくつかは、
大域命令スケジューラ230とローカル命令スケジュー
ラ241b、242b、...249bによってスケジ
ューリングを単純化する階層多重レベル・スケジューリ
ングによるものである。また、DDFプロセッサ200
の複数の先取りバッファ221、222、...229
と複数の実行パイプ241、242、...249によ
って実現される、本質的な並列性と同時性による利点も
ある。
【0033】前述のように、大域命令スケジューラ23
0は実行パイプ241、242、...249への命令
の分配だけを行うため、大域命令スケジューラ230の
制御回路は従来の集中命令スケジューラ130よりも単
純である。さらに、各実行パイプをビジーにしておくの
に必要な命令の数は、集中命令スケジューラ130をビ
ジーにしておくために必要な命令数と比較して少ないた
め、ローカル命令スケジューラ241b、242
b、...249bの制御回路はそれに対応して単純で
ある。したがって、DDFプロセッサ200は容易に拡
張可能であり、比較的簡単に、すなわち、大域命令スケ
ジューラ230の回路の複雑さが指数関数的に増すこと
なく、追加の実行パイプを付加することができる。
【0034】また、DDFプロセッサ200の複数先取
りバッファおよび複数実行パイプ・アーキテクチャは、
マルチタスク、システム例外/トラップ処理、たとえば
命令分岐予測技法のような先取り実行など、ソフトウェ
アとシステムの最適化技法とにも役立つ。たとえばDD
Fプロセッサ200は、各タスクを先取りバッファ22
1、222、...229の個別の1つに分離し、実行
パイプ241、242、...249の個別の1つで個
々のタスクを並行して実行することにより、マルチタス
クを行うことができる。マルチタスクをサポートするた
めに複数組のプロセッサ状態が必要になる可能性がある
が、実行ユニット241c、242c、...249c
それぞれの専用のローカル・レジスタ・バッファ241
d、242d、...249dや、データの共有と複数
実行タスク/パスの間の連絡のためのパイプ間バイパス
251、...259などのハードウェアはすでに存在
している。
【0035】同様に、DDFプロセッサ200では、そ
れぞれの累積確率に基づいて個別の実行パイプでの実行
のために複数の計算パスを選択することによって、先取
り実行を行うことができる。先取り実行は、マルチタス
クの場合と同様、選択された各パスを先取りバッファ2
21、222、...229の個別の1つに分離し、個
々のタスクを実行パイプ241、242、...249
の1つで並行して実行することによって行われる。
【0036】これらのマルチタスクや先取り実行などの
最適化技法によって、プロセッサ200では同時に複数
のコンテキストを実現することができ、それによって、
従来の単一パイプライン・アーキテクチャでは通常、必
要悪である、コンテキスト切換えが減少する。コンテキ
スト切換えオーバーヘッドの減少によって、特にタスク
またはプログラムがページ・フォルトなどの待ち時間の
短いイベントを待っているとき、プロセッサ200の全
体の使用効率が向上して有利である。
【0037】複数実行パイプ・アーキテクチャのハード
ウェア上の利点としては、実行パイプ241、24
2、...239の実行ユニット間で必要な制御および
クロック同期が減少することと、より非同期的なアーキ
テクチャに伴う回路の単純さがある。たとえば、各バイ
パスを介したパイプ間連絡が同期化されると同時に、個
々の実行パイプがそれぞれの固有のクロック速度と固有
の同期またはクロック方法で動作することができる。さ
らに、様々な実行パイプのクロック速度をそれぞれの機
能に応じて最適化することができる。
【0038】本発明の精神から逸脱することなく、他の
変更も可能である。たとえば、上記の分散データ・フロ
ー・アーキテクチャは、パイプライン化など他のソフト
ウェア技法およびハードウェア技法と組み合わせて実施
することができる。したがって、本発明の範囲は以下の
請求の範囲によって決定されるものとする。
【図面の簡単な説明】
【図1】 プロセッサの従来のデータ・フロー・アーキ
テクチャを示すブロック図である。
【図2】 本発明に従った、プロセッサの分散データ・
フロー・アーキテクチャを示すブロック図である。
【符号の説明】
210 命令キャッシュ/メモリ 221 先取りバッファ 230 大域命令スケジューラ 241a ローカル命令バッファ 241b ローカル命令スケジューラ 241c 実行ユニット 241d ローカル・レジスタ・バッファ 251 パイプ間バイパス 260 アービタ 290 大域レジスタ・ファイル/メモリ

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令を命令の小グループに分ける
    大域命令スケジューラと、 前記大域命令スケジューラに結合され、各実行パイプが
    命令の前記小グループのうちの対応する1つを受け取
    り、各実行パイプが命令の前記対応する小グループをス
    ケジューリングするローカル命令スケジューラを有する
    複数の実行パイプとを備えた分散データ・フロー(DD
    F)プロセッサ。
  2. 【請求項2】 前記実行パイプのうちの2つに接続さ
    れ、前記2つの実行パイプ間でオペランド値を転送する
    パイプ間バイパスをさらに備えた請求項1に記載のDD
    F。
  3. 【請求項3】 複数の命令を前記複数の実行パイプに分
    配する大域命令スケジューラを備えた、前記複数の実行
    パイプを有する分散データ・フロー・プロセッサと共に
    使用して有用な命令スケジューリング・システム。
  4. 【請求項4】 前記大域命令スケジューラに結合され、
    前記各実行パイプ内の命令をスケジューリングする複数
    のローカル命令スケジューラをさらに備えた請求項3に
    記載の命令スケジューリング・システム。
  5. 【請求項5】 分散データ・フロー・プロセッサと共に
    使用して有用な複数の実行パイプであって、前記実行パ
    イプのそれぞれが、 前記各実行パイプ内の命令をスケジューリングするロー
    カル命令スケジューラと、 前記ローカル命令スケジューラに結合され、前記スケジ
    ュールされた命令を実行する実行ユニットとを備えた実
    行パイプ。
  6. 【請求項6】 前記実行ユニットに接続され、前記実行
    ユニットによって生成されたオペランド値を格納するレ
    ジスタ・バッファをさらに備えた請求項5に記載の実行
    パイプ。
  7. 【請求項7】 複数の実行パイプを有するプロセッサと
    共に使用して有用なアービタであって、 前記実行パイプのうちの2つの間でのレジスタ・オペラ
    ンド値の転送を指示する要素を備えたアービタ。
  8. 【請求項8】 複数の実行パイプを有するプロセッサと
    共に使用して有用なパイプ間バイパスであって、 前記実行パイプのうちの2つに結合され、前記2つの実
    行パイプ間でレジスタ・オペランド値を転送する要素を
    備えた、パイプ間バイパス。
  9. 【請求項9】 少なくとも第1および第2の実行パイプ
    を有する分散データ・フロー・プロセッサにおいて命令
    をスケジューリングする方法であって、 複数の命令を前記第1および第2の実行パイプに分配す
    るステップと、 前記命令のうちの少なくとも2つを前記第1の実行パイ
    プ内で実行するためにスケジューリングするステップと
    を含む方法。
  10. 【請求項10】 複数の実行ユニットを有するプロセッ
    サのための階層レジスタ・ファイル・システムであっ
    て、 前記実行ユニットの第1のサブセットに結合され、実行
    ユニットの前記第1のサブセットによって生成された第
    1のオペランド値を格納する第1の複数のローカル・レ
    ジスタ・バッファと、 前記実行ユニットの第2のサブセットに結合され、実行
    ユニットの前記第2のサブセットによって生成された第
    2のオペランド値を格納する第2の複数のローカル・レ
    ジスタ・バッファとを備えたシステム。
  11. 【請求項11】 前記第1の複数のローカル・レジスタ
    ・バッファから前記第1のオペランド値と制御情報を実
    行ユニットの前記第2のサブセットに転送する要素をさ
    らに備えた請求項10に記載の階層レジスタ・ファイル
    ・システム。
  12. 【請求項12】 複数の実行ユニットを有するプロセッ
    サにおいて階層レジスタ・ファイル・システムを使用す
    る方法であって、 前記実行ユニットの第1のサブセットによって生成され
    た第1のオペランド値を格納する第1の複数のローカル
    ・レジスタ・バッファを用意するステップと、 前記実行ユニットの第2のサブセットによって生成され
    た第2のオペランド値を格納する第2の複数のローカル
    ・レジスタ・バッファを提供するステップとを含む方
    法。
  13. 【請求項13】 前記第1の複数のローカル・レジスタ
    ・バッファから前記第1のオペランド値と制御情報を実
    行ユニットの前記第2のサブセットに転送する要素を提
    供するステップとをさらに含む請求項12に記載の方
    法。
JP31851695A 1994-11-14 1995-11-14 プロセッサ・アーキテクチャにおける分散制御のための装置および方法 Expired - Lifetime JP3771957B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/339,518 US5592679A (en) 1994-11-14 1994-11-14 Apparatus and method for distributed control in a processor architecture
US08/339518 1994-11-14

Publications (2)

Publication Number Publication Date
JPH08212070A true JPH08212070A (ja) 1996-08-20
JP3771957B2 JP3771957B2 (ja) 2006-05-10

Family

ID=23329376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31851695A Expired - Lifetime JP3771957B2 (ja) 1994-11-14 1995-11-14 プロセッサ・アーキテクチャにおける分散制御のための装置および方法

Country Status (3)

Country Link
US (1) US5592679A (ja)
JP (1) JP3771957B2 (ja)
KR (1) KR960018961A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100383001B1 (ko) * 2000-08-04 2003-05-09 주식회사 하이닉스반도체 엠씨유의 온-보드 프로그램 방법
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
US7373485B2 (en) 2004-09-01 2008-05-13 National University Corporation Nagoya University Clustered superscalar processor with communication control between clusters
WO2008072334A1 (ja) 2006-12-14 2008-06-19 Fujitsu Limited コンパイル方法及びコンパイラ
JP2010282668A (ja) * 2010-09-27 2010-12-16 Fujitsu Ltd プロセッサ装置

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US5898849A (en) * 1997-04-04 1999-04-27 Advanced Micro Devices, Inc. Microprocessor employing local caches for functional units to store memory operands used by the functional units
US6161167A (en) * 1997-06-27 2000-12-12 Advanced Micro Devices, Inc. Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group
US6088786A (en) * 1997-06-27 2000-07-11 Sun Microsystems, Inc. Method and system for coupling a stack based processor to register based functional unit
US6345312B1 (en) 1997-08-28 2002-02-05 International Business Machines Corporation Selectively dummying a data pipe transparent to a writer application
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6370415B1 (en) 1998-04-10 2002-04-09 Medi-Physics Inc. Magnetic resonance imaging method
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US6304953B1 (en) * 1998-07-31 2001-10-16 Intel Corporation Computer processor with instruction-specific schedulers
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6442678B1 (en) * 1998-12-31 2002-08-27 Intel Corporation Method and apparatus for providing data to a processor pipeline
US6618802B1 (en) * 1999-09-07 2003-09-09 Hewlett-Packard Company, L.P. Superscalar processing system and method for selectively stalling instructions within an issue group
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
JP2002230065A (ja) * 2001-02-02 2002-08-16 Toshiba Corp システムlsi開発装置およびシステムlsi開発方法
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US7240347B1 (en) * 2001-10-02 2007-07-03 Juniper Networks, Inc. Systems and methods for preserving the order of data
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US7543142B2 (en) 2003-12-19 2009-06-02 Intel Corporation Method and apparatus for performing an authentication after cipher operation in a network processor
US7512945B2 (en) * 2003-12-29 2009-03-31 Intel Corporation Method and apparatus for scheduling the processing of commands for execution by cryptographic algorithm cores in a programmable network processor
US7529924B2 (en) * 2003-12-30 2009-05-05 Intel Corporation Method and apparatus for aligning ciphered data
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US8468530B2 (en) * 2005-04-07 2013-06-18 International Business Machines Corporation Determining and describing available resources and capabilities to match jobs to endpoints
WO2007027671A2 (en) * 2005-08-29 2007-03-08 Searete Llc Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US7923341B2 (en) * 2007-08-13 2011-04-12 United Solar Ovonic Llc Higher selectivity, method for passivating short circuit current paths in semiconductor devices
JP2011008732A (ja) * 2009-06-29 2011-01-13 Fujitsu Ltd プライオリティ回路、演算処理装置及び演算処理方法
US20110276784A1 (en) * 2010-05-10 2011-11-10 Telefonaktiebolaget L M Ericsson (Publ) Hierarchical multithreaded processing
US9348587B2 (en) * 2010-07-09 2016-05-24 Hyperion Core, Inc. Providing code sections for matrix of arithmetic logic units in a processor
US9514094B2 (en) * 2012-07-10 2016-12-06 Maxeler Technologies Ltd Processing data sets using dedicated logic units to prevent data collision in a pipelined stream processor
US9286068B2 (en) * 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9513920B2 (en) * 2014-05-29 2016-12-06 Mill Computing, Inc. Computer processor employing split-stream encoding
US11256511B2 (en) * 2019-05-20 2022-02-22 International Business Machines Corporation Instruction scheduling during execution in a processor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594660A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
JP2693651B2 (ja) * 1991-04-30 1997-12-24 株式会社東芝 並列プロセッサー
US5471633A (en) * 1993-09-30 1995-11-28 Intel Corporation Idiom recognizer within a register alias table
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
KR100383001B1 (ko) * 2000-08-04 2003-05-09 주식회사 하이닉스반도체 엠씨유의 온-보드 프로그램 방법
US7373485B2 (en) 2004-09-01 2008-05-13 National University Corporation Nagoya University Clustered superscalar processor with communication control between clusters
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
JPWO2006114874A1 (ja) * 2005-04-21 2008-12-11 富士通株式会社 プロセッサ装置
JP4952580B2 (ja) * 2005-04-21 2012-06-13 富士通株式会社 プロセッサ装置
WO2008072334A1 (ja) 2006-12-14 2008-06-19 Fujitsu Limited コンパイル方法及びコンパイラ
JP2010282668A (ja) * 2010-09-27 2010-12-16 Fujitsu Ltd プロセッサ装置

Also Published As

Publication number Publication date
JP3771957B2 (ja) 2006-05-10
US5592679A (en) 1997-01-07
KR960018961A (ko) 1996-06-17

Similar Documents

Publication Publication Date Title
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
US8516222B1 (en) Virtual architectures in a parallel processing environment
US8145884B2 (en) Apparatus, method and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
CN110249302B (zh) 在处理器核上同时执行多个程序
US6463527B1 (en) Spawn-join instruction set architecture for providing explicit multithreading
US7809926B2 (en) Systems and methods for reconfiguring on-chip multiprocessors
KR101638225B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US5485626A (en) Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
KR101966712B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
Byrd et al. Multithreaded processor architectures
AU2019392179B2 (en) Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems
US7840914B1 (en) Distributing computations in a parallel processing environment
US20060161921A1 (en) Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
WO1998043193A9 (en) Spawn-join instruction set architecture for providing explicit multithreading
CA2071481A1 (en) Cluster architecture for a highly parallel scalar/vector multiprocessor system
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
Sakai et al. Super-threading: Architectural and software mechanisms for optimizing parallel computation
JP4784792B2 (ja) マルチプロセッサ
Kavi et al. Multithreaded systems
Ziavras Processor design based on dataflow concurrency
Lankamp Developing a reference implementation for a microgrid of microthreaded microprocessors
Golla et al. A dynamic scheduling logic for exploiting multiple functional units in single chip multithreaded architectures
Biedermann et al. Virtualizable Architecture for embedded MPSoC
Kwak A performance study of multithreading

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060213

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100217

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100217

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110217

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120217

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120217

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140217

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term