JP2007500406A - オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ - Google Patents

オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ Download PDF

Info

Publication number
JP2007500406A
JP2007500406A JP2006533521A JP2006533521A JP2007500406A JP 2007500406 A JP2007500406 A JP 2007500406A JP 2006533521 A JP2006533521 A JP 2006533521A JP 2006533521 A JP2006533521 A JP 2006533521A JP 2007500406 A JP2007500406 A JP 2007500406A
Authority
JP
Japan
Prior art keywords
register
instruction
operand
redirect
field
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
JP2006533521A
Other languages
English (en)
Other versions
JP4991299B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2007500406A publication Critical patent/JP2007500406A/ja
Application granted granted Critical
Publication of JP4991299B2 publication Critical patent/JP4991299B2/ja
Anticipated expiration legal-status Critical
Active legal-status Critical Current

Links

Images

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
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/3824Operand accessing
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

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)
  • Executing Machine-Instructions (AREA)

Abstract

データプロセッサ(200)はパイプライン実行ユニット(120)を備える。その実行の結果、オペランドレジスタの内容がデスティネーションレジスタに記憶されることになる第1の命令が、命令のクラスのうちの1つであるかどうかが判定される。第1の命令の実行が完了する前に、デスティネーションレジスタを参照する第2の命令が受信される。パイプライン実行ユニット(120)内で第2の命令をストールさせることなく、第2の命令が、オペランドレジスタの内容を使用して実行される。

Description

本発明は、一般にデータプロセッサに関し、より詳細にはパイプラインデータプロセッサに関する。
データプロセッサの中には、より高い性能を得るためにパイプライン処理と呼ばれる技術を使用しているものがある。パイプライン処理は、命令処理タスクを、小さなモジュールのサブタスクに分割する技術であり、このサブタスクのそれぞれが、パイプラインサイクルと呼ばれる特定の非常に短い(atomic)期間に実行されうる。タスクをこのような小さなサイクルに分割することによって、データプロセッサは、ある命令の実行中に別の命令をフェッチしながら、第3の命令の結果をレジスタファイルにライトバックすることができる。このようにすれば、命令を個々に完了させるには数サイクルを要しても、全体のスループットを1パイプラインサイクルあたり1命令に近づけることができる。
最新のマイクロプロセッサは、この例の3ステージパイプラインよりも高度なパイプラインを備えている。例えば、5ステージパイプラインは、フェッチ、デコード、オペランドへのアクセス、実行、およびライトバックの各ステージを有しうる。パイプラインが長くなるのに伴い、データ処理命令がより複雑になるものの、スループットはほぼ1サイクルあたり1命令に保たれる。
しかし、特定の命令のシーケンスが発生すると問題が生じる。特定の命令のシーケンスにより、パイプライン依存関係と呼ばれる現象が生じることがある。ある命令が、前の命令の実行の結果が利用可能になるまで実行できない場合、オペランド依存関係と呼ばれるタイプのパイプライン依存関係が発生する。例えば、次の命令のシーケンスを考える。
ADD R2, R0, R1
ADD R3, R1, R2
上記シーケンスでは、第1のレジスタが結果のデスティネーションであり、第2のレジスタと第3のレジスタが入力オペランドを記憶している。R2は第1のADD命令のデスティネーションレジスタであるため、第2のADD命令の実行は、第1のADD命令の結果に依存しており、第1のADD命令の結果がわかるまで行うことができない。
別のタイプの依存関係にロード依存関係と呼ばれるものがある。例えば、次の命令のシーケンスを考える。
MOV R0, (R1)
ADD R3, R0, R2
このシーケンスでは、1番目の命令は、レジスタR1に記憶されているアドレスが指すメモリの内容を、レジスタR0にロードする。ADD命令が正しく実行されるかどうかは、レジスタR0の新しい値が利用可能かどうかに依存することが明らかである。
マイス・ジョンソンらは、米国特許第4,734,852号に、バイパス経路を使用して、先のメモリロード操作の結果を、まずレジスタファイルのデスティネーションレジスタにライトしてその後レジスタファイルからリードしなくても、後続の命令に転送できる方法を開示している。このため、新しいレジスタ値がかなり早い時点で利用可能となり、ロード依存関係後に発生するパイプラインのストール時間をできるだけ短縮できる。
しかし、実行パイプラインが深いデータプロセッサの中には、結果を生成するパイプラインの各ステージからパイプラインの入力へのバイパス経路を追加して、新しい命令を早く発行できるように中間結果を転送するには、相当の回路領域の追加を要するものがある。このことは、オペランドが、例えば64ビット長をとりうる浮動小数点実行ユニットにおいて特に当てはまる。更に、命令がパイプラインの終端に達するまで結果が利用できないものがある。
したがって、回路領域の大きな追加を行わなくても、依存関係による悪影響を低減させる別の可能性を利用することが望ましい。本発明の上記の望ましい特徴および性質、およびほかの望ましい特徴および性質は、添付の図面と上記の技術分野と背景技術を併せて読めば、下記の詳細な説明と添付の特許請求の範囲から明らかとなるであろう。
パイプライン実行ユニットを備えたデータプロセッサに使用する方法を提供する。その実行の結果、オペランドレジスタの内容がデスティネーションレジスタに記憶されることになる第1の命令が、命令のクラスのうちの1つであるかどうかが判定される。第1の命令の実行が完了する前に、デスティネーションレジスタを参照する第2の命令が受信される。パイプライン実行ユニット内で第2の命令をストールさせることなく、第2の命令が、オペランドレジスタの内容を使用して実行される。
また、発行論理回路、レジスタファイル、パイプライン実行ユニットおよびリダイレクト論理回路を備えたデータプロセッサが提供される。発行論理回路は、それぞれがオペコード、第1のオペランドのための第1のオペランドレジスタ識別子、およびデスティネーションレジスタのためのデスティネーションレジスタ識別子を少なくとも含む第1の命令と第2の命令とを順番に供給するための出力を備える。レジスタファイルは、読出しアドレス入力および読出しデータ出力を備えた読出しポート、および書込みポートを備える。パイプライン実行ユニットは、発行論理回路の出力と結合された第1の入力、レジスタファイルの読出しデータ出力に結合された第2の入力、およびレジスタファイルの書込みポートに結合された出力を備える。リダイレクト論理回路は、第2の命令の第1のオペランドレジスタ識別子を第1の命令の第1のオペランドレジスタ識別子で選択的に置換するため、発行論理回路の出力に結合された第1の入力と、レジスタファイルの読出しデータ出力に結合された第2の入力と、レジスタファイルの読出しアドレス入力に結合された出力とを備える。
以下、図面を参照して本発明を記載する。図面において同じ参照符号は類似する要素を参照している。
以下の詳細な説明は、本来例示的なものに過ぎず、本発明または本発明の用途および利用を限定することを意図したものではない。更に、上記の技術分野、背景技術、発明の開示、あるいは以下の詳細な説明に明示または暗示した理論により拘束されることを意図するものではない。
図1は、従来技術で公知のデータプロセッサのパイプライン実行ユニット100のブロック図である。実行ユニット100は浮動小数点ユニットであり、加算ユニット120、乗算ユニット130、および浮動小数点レジスタファイル150を有する。発行論理回路110は、加算ユニット120と乗算ユニット130に命令を発行する役目を担っている。一般に、命令112などの命令は、“OP CODE”で示すオペコードフィールド、“Rs”で示す第1のオペランドレジスタ識別子、“Rt”で示す第2のオペランドレジスタ識別子、および“Rd”で示すデスティネーションレジスタ識別子を有する。この命令セットの特定の命令の一部では、Rtフィールドがなかったり、任意選択で即値オペランドフィールドが存在することがあるが、このような異なる命令は後述するリダイレクションメカニズムの動作に影響を及ぼすことがないため、これ以上触れることはしない。
実行ユニット100は、単一発行(single issue)の実行ユニットであり、このため、発行ロジック110は、1パイプラインサイクルにつき1命令を発行し、命令の種類に基づいて、この命令を加算ユニット120、乗算ユニット130のいずれかに供給する。加算ユニット120は、整合ステージ122、加算ステージ124、および正規化ステージ126の3つのパイプラインステージを有する。乗算ユニット130も、ブースの符号化ステージ132、乗算アレイステージ134、および最終加算および丸めステージ136の3つのステージを有する。
加算ユニット120または乗算ユニット130に発行された命令は、それぞれのパイプラインを下っていき、各パイプラインサイクルが終了すると1ステージずつ進む。入力オペランドは、次のようにして、選択されたユニットの第1のステージに供給される。命令112のRsフィールドとRtフィールドが、発行ロジック110によってバイパス回路140とレジスタファイル150の両方に出力される。オペランド依存関係が存在しない場合、オペランドRsとRtは、レジスタファイル150から、バイパス回路140を介してバス160,170に戻される。直前のパイプラインステージで完了したばかりの命令に基づきオペランド依存関係が存在する場合、オペランドRsとRtは、バイパス回路140によって受け取られ、適切なオペランドバスに転送される。未だ完了していない前の命令との間に1つ以上の依存関係が存在する場合、発行ロジック110は、新しい命令が依存しているその前の命令が処理を完了するまで、新しい命令の発行をストールさせる。この場合、依存関係を生じさせた前の命令が最終的に完了すると、その結果が、バイパス回路140を介して、バス160および170に渡され、ストールされていた新しい命令が発行可能になる。これと並行して、バイパス回路140は新しい値をレジスタファイル150にライトする。
先頭の2つのパイプラインステージの一方において、命令に基づくオペランド依存関係が存在する場合、前の命令が完了するまで、新しい命令の発行がストールされる。このストールの結果、ハードウェアが遊休状態となり、有益な作業を実行していないことになる。この種のストールの発生回数を低減させるか、あるいはストールが発生した場合でもこれを是正することが望ましいと考えられる。
例えば、加算ユニット120の整合ステージは、それぞれオペランドバス160,170を介して、第1のオペランド値と第2のオペランド値を受け取るための入力を有する。これらの値、OP CODE、デスティネーションレジスタ指定子Rd、およびデコードまたは一部デコードされたほかのさまざまなフィールドが、パイプラインステージを進んでいく。ある命令が正規化ステージ126で処理されると、バイパス回路140の入力に供給される。バイパス回路140は、パイプラインサイクルを節約するため、前の命令の結果と後続の命令の入力とをつなぐ経路となるために追加されており、これがなければ、レジスタファイル150のデスティネーションレジスタに結果をライトして、その後これをリードすることが必要となる。
図2は、本発明に係るデータプロセッサのパイプライン実行ユニット200のブロック図である。図1と同様に、実行ユニット200は、浮動小数点ユニットであるが、整数、ベクトルなどほかのどのような種類の実行ユニットであってもよい。実行ユニット200は図1の実行ユニット100と似ているが、リダイレクト論理回路210を有する点が異なり、これは、実行ユニット200のほかの構成要素と連携して、オペランド依存関係の原因となる可能性のある命令のクラスが、パイプラインをストールさせないように阻止する。リダイレクト論理回路210は、通常はレジスタ依存関係の原因となる数種類の命令を検出して、正しい結果を与えるレジスタ識別子で置換することによって、この命令を修正する。
第1の種類の命令は、レジスタ間の転送命令であり、この後に、このレジスタ間の転送命令のデスティネーションレジスタをオペランドレジスタとして使用する別の命令がくるものである。例えば、次の命令のシーケンスを考える。
MOV R1, R0
ADD R3, R2, R1
上記において、第1の命令はレジスタR0の内容をレジスタR1に移動する転送オペレーションであり、第2の命令は、R1の内容をR2の内容に加算して、この合計をレジスタR3に格納する加算オペレーションである。公知のシステムでは、このシーケンスにより、レジスタファイル、バイパス回路140のいずれかでMOV命令の結果が利用可能になるまで、ADD命令の発行が阻止される依存関係が発生する。実行ユニット200は、第2のオペランドに0の値を使用する同等の加算オペレーションを実行することによって、加算ユニット120を使用してMOV命令を実際に実行する。このため、通常であれば、正規化ステージ126がバイパス回路140に結果を供給するまで、第2の命令を待機させる必要がある。しかし、実行ユニット200では、リダイレクト論理回路210により、ADD命令のR1の内容がR0の内容で置換され、R0の内容が第2のオペランドとしてR0の内容を使用して、ADD命令が直ちに発行される。このようにして、ADD命令が正しく実行される。
第2の命令の種類は、オペランドの1つが0であるADD命令であり、この後に、この加算命令のデスティネーションレジスタをオペランドレジスタとして使用する別の命令が続くものである。例えば、次の命令のシーケンスを考える。
ADD R2, R1, R0
ADD R4, R3, R2
第1のADD命令は、R0の内容をR1の内容に加算して、この合計をレジスタR2に格納する加算オペレーションであり、第2の命令は、R2の内容をR3の内容に加算して、この合計をレジスタR4に格納する加算オペレーションである。公知のシステムでは、このシーケンスにより、第1のADD命令の結果が利用可能になるまで、第2のADD命令の発行が阻止される依存関係が発生する。しかし、実行ユニット200では、R1(R0)=0の場合、リダイレクト論理回路210により、第2のADD命令のR2の内容がR0(R1)の内容で置換され、R0(R1)の内容を第2のオペランドとして使用して、第2のADD命令が直ちに発行される。
第3の命令の種類は、オペランドの1つが1である乗算命令であり、この後に、この乗算命令のデスティネーションレジスタをオペランドレジスタとして使用する別の命令がくるものである。例えば、次の命令のシーケンスを考える。
MUL R2, R1, R0
ADD R4, R3, R2
第1の命令は、レジスタR0の内容にレジスタR1の内容を掛けて、この積をレジスタR2に記憶する乗算オペレーションであり、第2の命令は、R2の内容をR3の内容に加算して、この合計をレジスタR4に格納する加算オペレーションである。公知のシステムでは、このシーケンスにより、MUL命令の結果が利用可能になるまで、ADD命令の発行が阻止される依存関係が発生する。しかし、実行ユニット200では、R1(R0)=1の場合、リダイレクト論理回路210により、ADD命令のR2の内容がR0(R1)の内容で置換され、R0(R1)の内容を第2のオペランドとして使用して、ADD命令が直ちに発行される。
これらの命令シーケンスのすべてにおいて、公知の実行ユニットは、第1の命令の結果が転送可能になるまで、第2の命令の発行をストールさせる。しかし、実行ユニット200は、実際に参照されているレジスタをあるレジスタで置換する条件を認識して、命令を発行可能にする。このような実行ユニットを使用しているデータプロセッサは、コードの所定のセクションを短時間で処理するか、あるいは命令を発行するコンパイラに課す制約を少なくする。
実行ユニット200は、更にほかのレジスタ置換を実行して、参照されたレジスタをあるレジスタで置換し、結果の符号ビットを強制的に変更することによって、発行可能なほかの命令を識別することにより、パイプラインのストールを防止する。実行ユニット200では、オペランドが2種類の形式のうちの一方で処理される。1番目の形式は、IEEEの通常(32ビット)の浮動小数点形式であり、1つの符号ビット、8つの指数部ビットおよび23の小数部ビットによって数値を表現する。2番目の形式は、IEEEの倍精度(64ビット)形式であり、1つの符号ビット、11の指数部ビットおよび52の小数部ビットによって数値を表現する。これらの数値は符号ビットを明示的に有するため、以下のシーケンスの第2の命令は、R0=0でかつR1の符号ビットが負の場合、
ADD R2, R1, R0
ADD R4, R3, R2
第2のオペランドにR1を使用し、負の数を示すように結果の符号ビットを1に設定することによって発行できる。
この特徴により、ほかの命令を、リダイレクト論理回路210が対応する命令の組に追加することができる。このような命令には、数値の絶対値をとるABSと、数値の符号ビットを否定すなわち変更するNEGがある。この2つの命令に対し、リダイレクト論理回路210は、オペランドが適切に置換されると、符号ビットの値を変更するメカニズムを実装する。リダイレクト論理回路210が符号ビットの値を変更する命令には、このほか、被減数(すなわち式A−BのA)が0である減算命令と、一方のオペランドが負の値である乗算命令がある。減数(すなわち、式A−BのB)が0である減算命令は、0にADDする命令と同等であり、この場合、リダイレクト論理回路210は、符号ビットを変更せず、デスティネーションオペランドを第1のオペランドで置換する。1つのオペランドが0である乗算命令の結果は0となり、この場合、リダイレクト論理回路210は、デスティネーションレジスタを0のオペランドレジスタで置換する。ここに挙げた命令は、すべてを網羅するものではない点に留意されたい。ここに記載した原理に従って、リダイレクト論理回路210が対応する命令の組に、データプロセッサの特定の命令セットに固有なほかの命令を追加してもよい。
次に、上に記載したメカニズムの実装の詳細の一部を図3に示し、この図は、図2のリダイレクト論理回路210の一部をブロック図、一部を論理図で示している。リダイレクト論理回路210は、通常、リダイレクト検出論理回路300、第1のリダイレクトレジスタ310、第2のリダイレクトレジスタ320、比較器の組330、マルチプレクサの組340を有する。リダイレクト論理回路300は、バス160,170に接続された入力と、出力とを備える。リダイレクト論理回路300の機能は、前述のようなレジスタ置換に適した条件を検出して、第1のリダイレクトレジスタ310にエントリを作成し、次の命令に対する依存関係を検出し、適切なレジスタ置換を行わせることにある。実行ユニット200において、バス160,170は、バイパス論理回路から返されるオペランドRsおよびRtの値のほかに、オペランドのさまざまな状態を示すため、バイパス論理回路140によってデコードされた信号も伝える。例えば、バイパス論理回路140は、数値の指数部フィールドと小数部フィールドが0であること、または指数部フィールドが、その数値の形式において1の値を表すのに使用する所定値であることを検出するハードウェアを備える。例えば、通常、値0を表すのは、指数部フィールドと小数部フィールドがいずれも0の場合である。しかし、実行ユニット200により、小数部フィールドの値に関わらず、0の指数部フィールドのみによって0を表すことが可能となる。値1は、0の小数部フィールドと、所定値(通常形式では127、倍精度形式では1023)の指数部フィールドによって表される。リダイレクト論理回路300は、この情報とOP CODEフィールドの組み合わせから、0を足す加算と1による乗算を検出することができる。
第1のリダイレクトレジスタ310は、レジスタ指定子フィールドRs,Rt,Rdを受け取るための入力、リダイレクト検出論理回路300の出力に接続された入力、および出力を備える。第2のリダイレクトレジスタ320は、レジスタ310の出力に接続された入力と、3つの出力を備える。各リダイレクトレジスタは、“S”で示す符号ビットフィールド、“V”で示す有効ビットフィールド、“MATCH”で示すレジスタ識別子照合フィールドおよび“SUBST”で示す置換フィールドの各フィールドを有する。第1のリダイレクトレジスタ310の出力は、パイプラインが進んだことを示すクロック(図示せず)と同期して、第2のリダイレクトレジスタ320にシフトされる。
比較器の組330は、4つの比較器332,334,336,338を有する。比較器332は、レジスタ指定子フィールドRsを受け取るための第1の入力、第2のリダイレクトレジスタ320のMATCHフィールドに接続された第2の入力、第2のリダイレクトレジスタ320のVフィールドに接続された制御入力、および出力を備える。比較器334は、レジスタ指定子フィールドRsを受け取るための第1の入力、第1のリダイレクトレジスタ310のMATCHフィールドに接続された第2の入力、第1のリダイレクトレジスタ310のVフィールドに接続された制御入力、および出力を備える。比較器336は、レジスタ指定子フィールドRtを受け取るための第1の入力、第2のリダイレクトレジスタ320のMATCHフィールドに接続された第2の入力、第2のリダイレクトレジスタ320のVフィールドに接続された制御入力、および出力を備える。比較器338は、レジスタ指定子フィールドRtを受け取るための第1の入力、第1のリダイレクトレジスタ310のMATCHフィールドに接続された第2の入力、第1のリダイレクトレジスタ310のVフィールドに接続された制御入力、および出力を備える。
各比較器は、現在の命令のオペランドを1〜2つ前の命令のオペランドレジスタの値で置換するべきかどうかを決定する。このため、比較器332は、2つ前の命令のデスティネーションレジスタ識別子Rdが、現在の命令の第1のオペランドレジスタ識別子Rsと同じであるかどうかを検出する。比較器334は、2つ前の命令のデスティネーションレジスタ識別子Rdが、現在の命令の第2のオペランドレジスタ識別子Rtと同じであるかどうかを検出する。比較器332は、1つ前の命令のデスティネーションレジスタ識別子Rdが、現在の命令の第1のオペランドレジスタ識別子Rsと同じであるかどうかを検出する。比較器338は、1つ前の命令のデスティネーションレジスタ識別子Rdが、現在の命令の第2のオペランドレジスタ識別子Rtと同じであるかどうかを検出する。
マルチプレクサ340の組は、マルチプレクサ342,344を有する。マルチプレクサ342は、Rsを受け取るための第1の入力、第2のリダイレクトレジスタ320のSUBSTフィールドに接続された第2の入力、第1のリダイレクトレジスタ310のSUBSTフィールドに接続された第3の入力、比較器332,334の出力に接続された制御入力、および新規(NEW)Rsを供給するための出力を備える。マルチプレクサ344は、Rtを受け取るための第1の入力、第1のリダイレクトレジスタ310のSUBSTフィールドに接続された第2の入力、第2のリダイレクトレジスタ320のSUBSTフィールドに接続された第3の入力、比較器336,338の出力に接続された制御入力、および新規(NEW)Rtを供給するための出力を備える。
マルチプレクサ342,344の両方は、適切な入力を選択して、それぞれNEW Rs値、NEW Rt値として供給する多重化および論理回路を有する。リダイレクトレジスタ310,320のいずれも有効なエントリを有さない場合、マルチプレクサ342,344は、RsおよびRtを選択して、それぞれNEW Rs、NEW Rtとして供給する。リダイレクトレジスタ310,320の一方のみが有効なエントリを有する場合、マルチプレクサ342,344は、Rs,Rtの一方が、対応するMATCHフィールドの内容と等しければ、その有効なリダイレクトエントリに対応するほうのSUBST値を、それぞれNEW Rs、NEW Rtとして供給する。リダイレクトレジスタ310,320の両方が有効なエントリを有する場合、マルチプレクサ342,344は、Rs,Rtの少なくとも一方が、対応するMATCHフィールドの内容と等しければ、その有効なリダイレクトエントリに対応するSUBST値を、それぞれNEW Rs、NEW Rtとして供給する。リダイレクトレジスタ310,320の両方が有効なエントリを有し、MATCHフィールドの値が等しい場合、マルチプレクサ342,344は最後に発行された命令を優先する、すなわち、これらのマルチプレクサは、リダイレクトレジスタ310のSUBSTフィールドによって供給される入力を選択する。
発行論理回路110では、通常の依存関係チェックは、通常の依存関係チェック回路(図示せず)と並行して行われる点に留意されたい。ここに記載したパイプラインストール低減技術は、通常の依存関係チェックを無効にするように動作する。通常の依存関係チェック回路は、前に発行されたが、まだ完了していない命令間の依存関係、RsオペランドとRtオペランドの間の依存関係を検出する、“rs_stall”と“rt_stall”で示す2つの信号をそれぞれ出力する。図2,3には図示されていないが、リダイレクト論路回路にある追加の論理回路は、比較器342の出力または比較器344の出力のいずれかが真の場合に、“kill_rs_stall”で示す信号を生成し、比較器346の出力か比較器348の出力が真の場合に、“kill_rt_stall”で示す信号を生成する。kill_rs_stallとゲート演算したrs_stallが真の場合、または、kill_rt_stallとゲート演算したrt_stallが真の場合、発行論理回路110は、次に命令112の発行をストールする。
図に示した実施形態では、実行ユニット200が単一発行であるため、リダイレクト論理回路210が加算ユニット120と乗算ユニット130によって共有される点に留意されたい。スーパースカラの実装では、ロジックが複雑になるものの、検出および置換の原理は変わらない。
別の実施態様では、パイプライン実行ユニットが2つのステージを有していても、3を超えるステージを有していてもよい。ここに開示したメカニズムを利用するには、命令に必要なオペランド識別子は1つのみである。更に、オペランドの情報が既存のオペランドバスを介して供給されない別の実施形態では、リダイレクト検出論理回路が、オペランドを直接調べて、0であるか、1であるかなどの特定の条件を検出してもよい。
上記の詳細な説明で少なくとも1つの代表的な実施形態を示したが、膨大な数の変形例が存在することを理解されたい。また、この少なくとも1つの代表的な実施形態は例に過ぎず、いかなる形であれ本発明の範囲、利用可能性または構成を限定することを意図するものではないことも理解されたい。上記の詳細な説明は、当業者にとって、少なくとも1つの代表的な実施形態を実装するうえで有用な道標となる。添付の特許請求の範囲とその法的均等物に規定されている本発明の範囲から逸脱することなく、各種要素の機能および構成を様々に変更することができることを理解すべきである。
従来技術で公知のデータプロセッサのパイプライン実行ユニットのブロック図である。 本発明に係るデータプロセッサのパイプライン実行ユニットのブロック図である。 図2のリダイレクト論理回路の一部をブロック図、一部を論理図で示す図である。

Claims (10)

  1. パイプライン実行ユニット(120)を備えたデータプロセッサ(200)に使用する方法であって、
    その実行の結果、オペランドレジスタの内容がデスティネーションレジスタに記憶されることになる第1の命令が、命令のクラスのうちの1つであるかどうかを判定するステップと、
    前記第1の命令の実行が完了する前に、前記デスティネーションレジスタを参照する第2の命令を受け取るステップと、
    前記パイプライン実行ユニット(120)内で前記第2の命令をストールさせることなく、前記オペランドレジスタの内容を使用して前記第2の命令を実行するステップとを有する方法。
  2. 前記オペランドレジスタを、前記実行するステップの前に、以前に前記デスティネーションレジスタと関連付けられていた前記第2の命令のオペランド識別子フィールドと関連付けるステップを更に有する請求項1に記載の方法。
  3. 前記関連付けるステップは、
    前記デスティネーションレジスタのレジスタ識別子を、リダイレクトレジスタ(310)の照合フィールドに記憶するステップと、
    前記オペランドレジスタのレジスタ識別子を、前記リダイレクトレジスタ(310)の置換フィールドに記憶するステップとを更に有する請求項2に記載の方法。
  4. 前記実行するステップは、
    前記第2の命令のオペランドレジスタ識別子と前記照合フィールドの内容を比較して、照合信号を供給するステップと、
    前記照合フィールドの前記内容に応じて、前記オペランドレジスタ識別子または前記オペランドレジスタを前記置換フィールドの内容で置換して、新しいレジスタ識別子を供給するステップと、
    前記新しいレジスタ識別子を使用して前記第2の命令を実行するステップとを更に有する請求項3に記載の方法。
  5. パイプライン実行ユニット(120)を備えたデータプロセッサ(200)に使用する方法であって、
    実行の結果、オペランドレジスタの内容がデスティネーションレジスタに記憶されることになる第1の命令が、命令のクラスのうちの1つであるかどうかを判定するステップと、
    前記第1の命令が前記命令のクラスのうちの1つである場合に、前記デスティネーションレジスタと関連付けられているデスティネーションレジスタ識別子をリダイレクトレジスタの照合フィールドに、オペランドと関連付けられているオペランドレジスタ識別子を前記リダイレクトレジスタの置換フィールドに、および有効ビットを前記リダイレクトレジスタの有効フィールドに記憶するステップと、
    前記第1の命令の実行が完了する前に第2の命令を受け取るステップと、
    前記有効ビットが所定の論理状態にある場合に、前記第2の命令の第1のオペランドレジスタ識別子と前記照合フィールドの内容を比較するステップと、
    前記第1のオペランドレジスタ識別子が前記照合フィールドの前記内容と一致する場合、前記パイプライン実行ユニット(120)内で前記第2の命令をストールさせることなく、前記置換フィールドが示すレジスタの内容を使用して前記第2の命令を実行するステップとを有する方法。
  6. 前記第1の命令が前記命令のクラスのうちの1つである場合に、前記第1の命令の符号ビットを前記リダイレクトレジスタの符号フィールドに更に記憶するステップと、
    前記リダイレクトレジスタの前記符号ビットに応じて、前記第2の命令の実行の結果の符号ビットを選択的に変更するステップとを更に有する請求項5に記載の方法。
  7. 前記有効ビットが前記所定の論理状態にある場合に、前記第2の命令の第2のオペランドレジスタ識別子と前記照合フィールドの前記内容を比較するステップと、
    前記第1のオペランドレジスタ識別子または前記第2のオペランドレジスタ識別子のいずれかが前記照合フィールドの前記内容と一致する場合、前記パイプライン実行ユニット(120)内で前記第2の命令をストールさせることなく、前記置換フィールドが示す前記レジスタの前記内容を使用して前記第2の命令を実行するステップとを更に有する請求項5に記載の方法。
  8. それぞれがオペコード、第1のオペランドのための第1のオペランドレジスタ識別子、およびデスティネーションレジスタのためのデスティネーションレジスタ識別子を少なくとも含む第1の命令と第2の命令とを順番に供給するための出力を備えた発行論理回路(110)と、
    読出しアドレス入力および読出しデータ出力を備えた読出しポート、および書込みポートを備えたレジスタファイル(150)と、
    前記発行論理回路(110)の前記出力と結合された第1の入力、前記レジスタファイル(150)の前記読出しデータ出力に結合された第2の入力、および前記レジスタファイル(150)の前記書込みポートに結合された出力を備えたパイプライン実行ユニット(120)とを備えたデータプロセッサ(200)であって、前記データプロセッサは、
    前記第2の命令の前記第1のオペランドレジスタ識別子を前記第1の命令の前記第1のオペランドレジスタ識別子で選択的に置換するため、前記発行論理回路(110)の前記出力に結合された第1の入力と、前記レジスタファイル(150)の前記読出しデータ出力に結合された第2の入力と、前記レジスタファイル(150)の前記読出しアドレス入力に結合された出力とを備えたリダイレクト論理回路(210)を備えるデータプロセッサ(200)。
  9. 前記第1の命令の実行の結果、前記第1の命令の前記デスティネーションレジスタが、前記第1の命令の前記第1のオペランドレジスタの前記内容を格納するようになると判定された場合に、前記リダイレクト論理回路(210)は、前記第2の命令の前記第1のオペランドレジスタ識別子を前記第1の命令の前記第1のオペランドレジスタ識別子で置換する請求項8に記載のデータプロセッサ(200)。
  10. 前記リダイレクト論理回路(210)は、
    出力端子を有するリダイレクト検出論理回路(300)と、
    前記発行論理回路(110)の前記出力に結合され、かつ前記パイプライン実行ユニット(120)のステージと関連付けられており、前記リダイレクト検出論理回路(300)の前記出力端子に結合された有効フィールド、前記デスティネーションレジスタ識別子を受け取るための照合フィールド、ならびに前記第1のオペランドレジスタ識別子および第2のオペランドレジスタ識別子のうちの選択されたほうを受け取るための置換フィールドを少なくとも有する第1のリダイレクトレジスタ(310)と、
    前記第2の命令の前記第1のオペランドレジスタ識別子を受け取るための第1の入力端子、前記第1のリダイレクトレジスタ(310)の前記照合フィールドに結合された第2の入力端子、前記第1のリダイレクトレジスタ(310)の前記有効フィールドに結合された制御入力端子、および出力端子を備えた第1の比較器(334)と、
    前記第1のオペランドレジスタ識別子を受け取るための第1の入力端子、前記第1のリダイレクトレジスタ(310)の前記置換フィールドに結合された第2の入力端子、前記第1の比較器(334)の前記出力端子に結合された制御入力端子、および前記第2の命令の前記第1のオペランドに対して新しいレジスタ識別子を供給する出力端子を備えた第1のマルチプレクサ(342)とを備える請求項9に記載のデータプロセッサ(200)。
JP2006533521A 2003-06-12 2004-06-02 オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ Active JP4991299B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/461,129 2003-06-12
US10/461,129 US7290121B2 (en) 2003-06-12 2003-06-12 Method and data processor with reduced stalling due to operand dependencies
PCT/US2004/017092 WO2004111838A2 (en) 2003-06-12 2004-06-02 Method and data processor for reduced pipeline stalling

Publications (2)

Publication Number Publication Date
JP2007500406A true JP2007500406A (ja) 2007-01-11
JP4991299B2 JP4991299B2 (ja) 2012-08-01

Family

ID=33511189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006533521A Active JP4991299B2 (ja) 2003-06-12 2004-06-02 オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ

Country Status (8)

Country Link
US (1) US7290121B2 (ja)
JP (1) JP4991299B2 (ja)
KR (1) KR101183270B1 (ja)
CN (1) CN100380317C (ja)
DE (1) DE112004001040B4 (ja)
GB (1) GB2418508B (ja)
TW (1) TWI343543B (ja)
WO (1) WO2004111838A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US7272751B2 (en) * 2004-01-15 2007-09-18 International Business Machines Corporation Error detection during processor idle cycles
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
WO2008006400A1 (en) * 2006-07-11 2008-01-17 Freescale Semiconductor, Inc. Microprocessor and method for register addressing therein
US7565513B2 (en) * 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
DE102008045767A1 (de) 2008-09-04 2010-03-11 Continental Teves Ag & Co. Ohg Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung
US8977837B2 (en) * 2009-05-27 2015-03-10 Arm Limited Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US9354881B2 (en) 2011-12-27 2016-05-31 Intel Corporation Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers
US9519944B2 (en) 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
US9875107B2 (en) 2015-01-19 2018-01-23 International Business Machines Corporation Accelerated execution of execute instruction target
CN104915183B (zh) * 2015-06-23 2018-10-16 北京玉华骢科技股份有限公司 一种多发射流水线的前馈探测电路
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US20210096877A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Collapsing bubbles in a processing unit pipeline
CN111124500B (zh) * 2019-12-12 2022-03-08 浪潮(北京)电子信息产业有限公司 一种指令执行方法、装置、设备及存储介质
US11714652B2 (en) * 2021-07-23 2023-08-01 Advanced Micro Devices, Inc. Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001523854A (ja) * 1997-11-17 2001-11-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ
JP2002520729A (ja) * 1998-07-14 2002-07-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド リネームタグのスワッピングにより転送を行なうレジスタリネーミング

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
GB9112754D0 (en) 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
JPH06156382A (ja) * 1992-11-28 1994-06-03 Sanshin Ind Co Ltd 船舶推進機の前後進切換装置
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US5893928A (en) 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US5872986A (en) * 1997-09-30 1999-02-16 Intel Corporation Pre-arbitrated bypassing in a speculative execution microprocessor
US6857060B2 (en) * 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001523854A (ja) * 1997-11-17 2001-11-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ
JP2002520729A (ja) * 1998-07-14 2002-07-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド リネームタグのスワッピングにより転送を行なうレジスタリネーミング

Also Published As

Publication number Publication date
US20040255099A1 (en) 2004-12-16
TW200508967A (en) 2005-03-01
US7290121B2 (en) 2007-10-30
KR101183270B1 (ko) 2012-09-14
WO2004111838A3 (en) 2005-10-27
GB2418508B (en) 2007-03-14
DE112004001040B4 (de) 2012-05-31
CN1806227A (zh) 2006-07-19
CN100380317C (zh) 2008-04-09
KR20060029614A (ko) 2006-04-06
WO2004111838A2 (en) 2004-12-23
DE112004001040T5 (de) 2006-06-08
JP4991299B2 (ja) 2012-08-01
GB2418508A (en) 2006-03-29
GB0526204D0 (en) 2006-02-01
TWI343543B (en) 2011-06-11

Similar Documents

Publication Publication Date Title
JP4991299B2 (ja) オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ
US6862677B1 (en) System and method for eliminating write back to register using dead field indicator
US5134693A (en) System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US6085312A (en) Method and apparatus for handling imprecise exceptions
KR101048234B1 (ko) 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템
US20130290680A1 (en) Optimizing register initialization operations
US8762444B2 (en) Fast condition code generation for arithmetic logic unit
US8555041B2 (en) Method for performing a return operation in parallel with setting status flags based on a return value register test
US7228403B2 (en) Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US7010676B2 (en) Last iteration loop branch prediction upon counter threshold and resolution upon counter one
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
GB2375855A (en) Locking source registers in a pipelined data processing apparatus
JP2001243071A (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6990569B2 (en) Handling problematic events in a data processing apparatus
US6851044B1 (en) System and method for eliminating write backs with buffer for exception processing
US20060179286A1 (en) System and method for processing limited out-of-order execution of floating point loads
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
EP1050800A1 (en) A pipelined execution unit
US7991816B2 (en) Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units
US8285765B2 (en) System and method for implementing simplified arithmetic logic unit processing of value-based control dependence sequences

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100430

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100602

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120312

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: 20120411

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120507

R150 Certificate of patent or registration of utility model

Ref document number: 4991299

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250