JP3547740B2 - 命令高速解読パイプラインプロセッサ - Google Patents
命令高速解読パイプラインプロセッサ Download PDFInfo
- Publication number
- JP3547740B2 JP3547740B2 JP51654993A JP51654993A JP3547740B2 JP 3547740 B2 JP3547740 B2 JP 3547740B2 JP 51654993 A JP51654993 A JP 51654993A JP 51654993 A JP51654993 A JP 51654993A JP 3547740 B2 JP3547740 B2 JP 3547740B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- instruction
- processing unit
- central processing
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 11
- 238000012360 testing method Methods 0.000 claims 7
- 238000010586 diagram Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
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)
Description
本発明は一般的には、コンピュータのスループットの改善に係り、さらに詳しくいえば、命令解読の計画において、中央処理装置における命令の解読を加速することに関する。
発明の背景
今日のコンピュータの設計において、パイプライン構造が用いられ続けてきた。この構造は組み立てラインに類似している。これは命令の順序の実行を仕事の順序に分割する(すなわち、命令のフェッチング,命令の解読,実行,結果の記憶)。これらの全てのタスクについて、資源の専用ステーションが提供される。命令がパイプラインを流れるにしたがって、それらのタスクがそのステーションで、順次実行されるであろう。各々の命令は後続の命令に従われており、そのステーションがあきさえすれば、直ちにそこが占有される。異なった命令の開始までの遅れ時間、およびパイプライン構造におけるその終了は、コンパクトにされており、その結果、コンピュータのスループットが増加させられている。
パイプラインコンピュータにおける能率的でないステーションは、ボトルネックとなる。ボトルネックステーションは命令の速度を記述しているものであるからコンピュータのスループットを記述している。もしボトルネックステーションが加速されれば、パイプラインコンピュータのスループットは増加するであろう。
パイプラインコンピュータにおける共通のボトルネックは、均一でない長さをもつオプコード(オプションコードまたは命令コード)の命令の解読である。
コンピュータの命令は通常は、オプコードをもっており、そのオプコードからの命令に対応する処理を指令する信号が発生させられる。コンピュータにおけるオプコードのサイズは、通常そのデータパスの幅、換言すればそのハードウェア(数学論理ユニット,バス,デコーダその他)に依存している。もし、オプコードがnビットの長さをもっていれば、それは2のn乗の異なったビットの組み合わせに解読されることができ、そしてコンピュータは2のn乗セットの異なったタイプの命令をもつことになるであろう。典型的に最も多くの今日のコンピュータデザインにおいては、nは8の倍数である(すなわち、1バイト)。
しかしながら、コンピュータの命令のセットがそのデータパスを拡張することなしに、拡張させるべきであるような機会がある。そのようなことは、コンピュータを高級化してより多くの命令を取り扱おうとするが、そのときそのハードウェアについて実質的な変化を行わなかった場合である。そのような場合がおこると1またはそれ以上のバイトが、通常オプコードに付加される。
従来技術のコンピュータにおいては、マルチバイトのオプコードの解読は、命令が解読されるときに、一時に1つずつ各バイトが検査されることによって行われる。各々のバイトの検査は1サイクルが必要であった。この従来技術のアプローチにおける欠点は、マルチバイトのオプコードの解読が、マルチサイクルが必要であって、それがパイプラインにおけるボトルネックを形成し、スループットを減少させることである。
発明の要約
今日のコンピュータにおける命令の長さは、特にCISC(コンプレックス命令セットコンピューティング)コンピュータにおいては、少なくともコンピュータのデータパスの幅、またはそれ以上である。これらのコンピュータにおける命令は、しばしばセグメントでフェッチされる。これらの命令の実行は、全てのセグメントがフェッチされ、そしてアセンブルされてから開始される。
本発明によれば、命令のセグメントがフェッチされ、そして組み立てられるときの時間を利用することに関する。この期間において、部分的な命令の解読が行われる。部分的な解読により得られた情報が、それからその命令の引き続く処理を加速するために用いられる。
本発明はCPUであって、命令をフェッチするための第1の手段、第1の手段によってフェッチされた命令を解読するための第2の手段、および前記第2の手段によって解読された命令を実行するための第3の手段を含んでいるものに向けられている。そのコンピュータは第1の手段による命令のフェッチングと同時にその命令におけるビットのサブセットと、前記命令の処理を加速するための情報を検査し、第4の手段で与える。
【図面の簡単な説明】
図1は本発明が具体化されているコンピュータシステムのブロック図である。
図2は命令がフェッチされたときに、どのようにして試験されるかを示す概略図である。
図3は命令の解読の前に1つのオプコードのセグメントを検査するための好ましい実施形態における論理を示す流れ図である。
図4は好適な実施形態における拡張キューの実施例を示すブロック図である。
図5は好適な実施形態におけるプリフェッチキューの構成を図解したブロック図である。
好適な実施例の説明
図1は本発明が具体化されているコンピュータシステム100の略図的なブロック図を示している。コンピュータシステム100は、メモリ11で、その中に命令とデータが蓄積されているものを含んでいる。コンピュータシステムは同様に、命令とデータをメモリ11からフェッチするマイクロプロセッサ(CPU)12を含んでいる。命令とデータは2バイトの幅のバス13を介してフェッチされる。それらはそれからCPU12によって処理される。処理の結果、発生した全てのデータは蓄積され、もし必要ならばバス13を介してメモリ11に戻される。
メモリとバスの設計は、通常利用される一般的な技術であるから、バス13の説明とメモリ11の説明の両方は不必要であると思われる。
コンピュータシステム100の各々の命令は1つのオプコードをもっている。命令のうち、いくつかのものはさらに付加的なオプコードと、オペランドまたは命令のオペランドのアドレスを規定するところの1または2以上の固定フィールドをもっている。コンピュータシステム100の命令のオプコードは、1バイト,2バイトまたは3バイトの長さである。しかしながら、もしオプコードが2倍以上の長さであれば第1のバイトは1つの“拡張コード”である。1つの拡張コードはバイトであって、それは“ED",“DD"“FD"または“CB"の16進の値をもっている。これはCPU12に対応するオプコードが1バイト長以上に拡張したことを知らしめる。(一方4つの特定の16進の命令は、拡張コード上に指定され、それは16進値以外のものを使用することもできる。)命令のオプコードが拡張コードをもつときに、オプコードは少なくとも2バイトとなる。
同様にして、もし1つのオプコードが3バイトの長さであれば、各々の最初の2バイトは拡張コードである。2つの拡張コードは、16の異なった方法(なぜならば、各々の拡張コードは4つの異なった値をもつからであり)16通りの組み合わせが可能であって、引き続く次の6つの組み合わせが好適な実施形態において利用される:ED−CB,DD−CB,FD−CB,ED−ED,ED−DDおよびED−FDである。この6つの組み合わせのみを利用する理由は、他の組み合わせ、すなわち、それは本発明においての利用を制限するものではないが、それらは現在は不必要であるが、それらはさらに将来起こりうるであろう命令のセットの拡張のために準備されているものである。
オプコードは同様にして、さらにmバイトに拡張されることができる。オプコードのm−1バイトの各々は拡張コードである。
命令は、命令プリフェッチユニット14の制御のもとでCPU12によってフェッチされる。命令フェッチユニット14(それはプリフェッチキューを十分に包含するものであり、それは以後図2を参照して説明されるであろう。)の命令は1バイトまたは2バイトのセグメントでフェッチされる。
命令の各々のバイトがCPU12に到達したときに、それは内部命令フェッチバス17を介して命令プリフェッチユニット14によって受信される。各々の命令のバイトは、プリフェッチキューの期間中で、組み立てられる。
1つの命令の実行は、それがプリフェッチキューから再生させられ、そのオプコードが命令デコータ15に送られた時間から開始する。命令デコーダ15は1バイトの幅をもっている。それは1バイトのオプコードを1CPUサイクルにおいて解読する。本発明によらなければ、2バイトのオプコードをデコーダすることは、命令デコーダ15に2CPUサイクルかかり、そして3バイトのオプコードの解読には3CPUサイクルが必要になるであろう。
命令デコーダ15は、1つの実行論理16へ制御信号を発生するためには、1つの命令のオプコードを解読する。オペランドがもし命令中に存在すれば、オペランドは直接に実行論理16に命令デコーダ15をバイパスして送られるであろう。実行論理16は、論理と演算制御であって、命令デコーダ15からの信号に応答するオプコードによって規定される。
デコーダと命令論理の設計は、よく知られたものであるから、命令デコーダ15と実行論理16の説明は不必要だと思われる。
図2を参照して、命令がフェッチされたときにどのようにして試験されるかを図解したブロック図が示されている。
命令のバイトがメモリ11からCPU12に到達すると、それらは1つの8ビットの幅のプリフェッチキュー201であって、それは円形の循環バッファの中につくられたものに蓄積される。前記プリフェッチキュー201は、8個の入口の深さをもっている。1つのプリフェッチキューカウンタ207が、プリフェッチキュー201の第1のあいている入口を識別する。
プリフェッチキューカウンタ207からの出力は、プリフェッチキュー201に命令バイトの記憶を制御するキュー入力イネイブル論理504に印加される。2つの2バイトの命令がフェッチされたときに、第1のバイトは命令フェッチバス17の上位バイトで、第2のバイトはその下位バイトにくる。1バイトの命令がフェッチされたときには、それは命令フェッチバス17の上位バイトの位置に到達するであろう。前記キュー入力イネイブル論理17は、各々の到達したバイトをプリフェッチキュー201の第1のあいている入口に印加して記憶する。1バイトの命令が蓄積されているときに、プリフェッチキューカウンタ207は更新される。
1つのQ−サイズカウンタ202がプリフェッチキュー201の中に蓄積されているバイト数を記録するために用いられる。1バイトの命令がプリフェッチキュー201に蓄積されたときに、前記Q−サイズカウンタ202は、1だけカウントアップされる。これとは反対に、1つの命令がプリフェッチキュー201から命令デコーダ15によって処理されるために再生されたときにQ−サイズカウンタ202が、その命令のバイトの数によって減算される。
命令フェッチバス17は同様に、エスケープデコーダ203に接続されている。前記エスケープデコーダ203は、上位の1バイト幅のデコーダ203aと下位の1バイト幅のデコーダ203bで構成されている。このデコーダ203aは、上位の命令フェッチバス17に接続され、下位のデコーダ203bは、下位の命令フェッチバス17に接続されている。各々の命令バイトがCPU12によってフェッチされると、各命令は同時にいずれかの高い次数のデコーダ203aまたは低い次数のデコーダ203bによって受信される。各々のデコーダ203a,203bは命令の入力したバイトが拡張コードかどうか検査するように動作する。
高い、または低い拡張デコーダ203a,203bは4ビットを出力する。拡張デコーダ203が1つの拡張コードに当たったときに、4つの出力ビットのうちの1つが、拡張コードの値に依存する4つのうちの1つの出力ビットを指定するだろう。例えば、入ってきた命令バイトが、“ED"に等しければ、第1の出力ビットがセットされ、もし入ってきたバイトが“DD"に等しければ第2の出力ビットがセットされ、もし入ってきたバイトが“FD"に等しければ第3の出力ビットがセットされ、そしてもし入ってきたバイトが“CB"ならば4番目のビットがセットされるであろう。
前記拡張デコーダ203の4ビットの出力は、4ビットの幅の拡張キュー204に蓄積され、この拡張キュー204は、サーキュラーバッファとして設けられている。前記拡張キュー203は、8の入力の深さをもっており、それはプリフェッチキュー201の入力と同じである。各々のプリフェッチキュー201の入力は、拡張キュー203に対応する計数部を有する。バイトがプリフェッチキュー201に蓄積されたり、再生されたときに、拡張キュー203の対応する入口が加算されたり、または減算されたりする。プリフェッチキューカウンタ207は、第1のプリフェッチキュー201におけるあき入口を指示し、同様にして拡張キュー204の対応する入口を指示する。
プリフェッチキュー201は、引き続く命令の最初のバイトであって、デコードされ実行されるべきものを含んでおり、その入口を指し示すために3ビットのデコーダキューカウンタ208が設けられている。前記デコーダキューカウンタ208は、対応する拡張キュー204の中の計数部の入口を指し示す。
拡張キュー204が、拡張デコーダ203a,203bからの入力を受けるのであるから、拡張キュー204の各々の入口は、命令バイトのプリフェッチキュー201中の対応する入口の命令バイトが拡張であるかどうかという情報を含んでいる。拡張キューは4ビットQ1−Esc出力、および4ビットQ2−Esc出力に出力する。次の引き続く命令の最初の命令(デコーダキューカウンタ208によって指し示されているように)が1つの拡張コードであるときに、エスケープコードの値に依存するQ1−Esc出力中の1ビットはセットされる。次に引き続く命令中の第2のバイトが拡張コードであるときは、つまりエスケープコードにしたがうQ2−Esc出力中の1ビットがセットされるだろう。
拡張キュー204から出力する前記Q1−Esc出力および前記Q2−Esc出力は、拡張コード/シーケンス分析器206に結合されている。前記拡張コード/シーケンス分析器206は、前記Q1−Escおよび前記Q2−Esc信号をその3つの出力の1つを:すなわちQ1out−En,Q2out−EnおよびQ3out−Enのうちの1つをセットするために用いる。これらの3つの信号は、次に引き続く命令中の最初の3バイトのうちの1つを命令デコーダ15に入力することを可能にする。もし次の引き続く命令が1バイトのオプコードをもっていたならば、Q1out−Enがセットされて、次の引き続く命令の第1バイトを命令デコーダ15に入力することを可能にする。もし次の引き続く命令デコーダが2バイトのオプコードをもっていたならば、Q2out−Enは第2番目のバイトを命令デコーダ15に入力することを可能にするためにセットされる。
そしてもし次の引き続く命令が3バイトのオプコードであれば、命令デコーダ15に第3番目の3バイトを入力可能にするようにQ3out−Enはセットされる。
1つのEsc−Info信号は、拡張コード/シーケンス分析器206から命令デコーダ15へ出力する出力信号である。この信号は1つの拡張コードまたは1つのオプコードを分析することによって得られた他の情報として命令デコーダに与える。
命令デコーダ15に適当なバイトを送り出すこと、そして拡張コードを飛び越すことによって、次の命令が、オプコードが2以上のバイトをもっているときでも1サイクルでデコードできる。その結果として対応する命令の処理が加速される。
さて、拡張コード/シーケンス分析器206の動作は、図3と次の表を参照して説明されるであろう。
表1の第1行を参照すると“拡張なし(No Escape)”条件は命令が1バイトのオフコードであることからQ1−Escコードのビットのうちのいずれもセットされないことを意味している。Q2−Escは無関係(Don't care)である。
表1の第2行において、前記“拡張コード”の条件は(1)Q1−EscのEDビットがセットされ、そしてQ2−Escのビットのどれもセットされていないか;(2)Q1−Esc中のDDビットまたはFDビットがセットされているが;しかしQ2−Esc中のCBビットがセットされていないか;または(3)Q1−Esc中のCBビットがセットされているかどうかを意味する。この条件は、次の引き続く命令のオプコードが、たった1つの拡張コードをもつことを意味している。
表1の第3行において、前記“拡張シーケンス(Escape Sequence)”条件が(1)Q1−Esc中のEDビットがセットされ、そしてQ2−Esc中の4つのビットのいずれかがセットされているか;または(2)Q1−EscコードのDDビットまたはFDビットがセットされている;そして、Q2−Esc中のCBビットがセットされているかを意味する。この条件は、オプコードは有効な3バイトのオプコードであることを意味する。
次に、第3図を参照する。301のブロックにおいて拡張コード/シーケンス分析器206が、Q1out−Enを“1"に、Q2out−enを“0"に、そしてQ3out−enを“0"に初期化する。この方法では、プリフェッチキュー201は空であり、そして、1バイトのオプコードをもった命令がCPU12に入力するときに、その命令は、直接に命令デコーダ15に渡され、そして第1のバイトが解読される。
決定ブロック302において、Q−サイズカウンタ202の値が、プリフェッチキュー201が空であるかどうかを決定するためにチェックされる。もしQ−サイズカウンタ202の値が0で、プリフェッチキュー201が空で、そして拡張コード/シーケンス分析器206はブロック302のループでフェッチされるべき1バイトの命令を待つためにブロック302上でループする。
命令の1バイトがCPU12によってフェッチされ、プリフェッチキュー201に蓄積されたときに、前記Q−サイズカウンタ202は加算される。前記拡張コード/シーケンス分析器206は、ブロック302から決定ブロック303への“Yes"の経路にしたがう。
決定ブロック303で表1の“No Escape"の条件が満足しているかどうかを決定させる。もし、“No Escape"の条件が満足されていれば、次の命令は1バイトの幅であり、そして拡張コード/シーケンス分析器206はブロック304に入る。
ブロック304において拡張コード/シーケンス分析器206は、実行論理16が次の引き続く命令を受け入れる準備ができるまで待つ。実行論理16が準備できるときには、命令の実行が始まる。Q1out−enが初期化されないので、プリフェッチキュー201中の第1のバイトは、命令デコーダ15にゲートされるであろう。
オプコードが命令デコーダ15によって解読されたのちには、命令の長さがわかるだろう。ブロック312において、前記Q−サイズカウンタ202は、全ての命令の長さと等しいバイトの数だけ(全てのオプコードと定数と、もしあるならば、フィールド)の命令の数だけ減少させられる。前記デコーダキューカウンタ208は、それが引き続く命令のスタートを指し示すように強制され、それが次の引き続く命令となる。
前記拡張コード/シーケンス分析器206は、ブロック303からのブロック305に入り、“No Escape"条件に合わないときに入る。前記手段で次の引き続く命令の第1バイトが拡張コードである。なぜならば、オプコードは少なくとも2バイトをもっているので、前記拡張コード/シーケンス分析器206は、ブロック305において、Q−サイズカウンタ202が、2またはより以上高く加算されるまで待っている。
前記Q−サイズカウンタ202が、2またはそれ以上であるときに、前記拡張コード/シーケンス分析器206は、決定ブロック306に入る。決定ブロック306において、拡張コード/シーケンス分析器206は、拡張コードの3つの条件のうちどれか1つが満たされるかどうかをチェックする。もし、これらの3つの条件の1つが満たされたならば、次のシーケンシャル命令は、2バイトコードである。前記拡張コード/シーケンス分析器206は、ブロック307に入る。
ブロック307において、前記拡張コード/シーケンス分析器206が、Q2out−enとをセットしQ1out−enをリセットする。実行論理16が次の引き続く命令を受け入れる準備ができているときには、実行が開始される。Q2out−enがセットされるので、プリフェッチキュー201からの第2のバイトが命令デコーダ15にゲートされる。命令が命令デコーダ15に送られたあとに、ブロック312が入力されるだろう。ブロック312において、前記Q−サイズカウンタ202は、全命令(オプコード、定数、フィールドがもしあればそれを含む)の長さに等しい数だけを減少する。デコーダキューカウンタ208はまた次の命令のスタート点を指示するように調整される。
もし、“拡張コード”のテーブル1に示されているどの1つの条件も満たさないときは、前記拡張コード/シーケンス分析器206は、決定ブロック308に入る。ブロック308において、それは“拡張シーケンス”の表1に示されている2つの条件をチェックする。もし、これらの2つの条件が満たされなければ、206はコンピュータ100が不法なオプコードの取り扱いの処理を実行するためにEsc−inf線を介してブロック309へ行く。
“拡張シーケンス”の2つのうちの1つの条件が満たされていれば、引き続く命令のオプコードは3バイトであるはずである。拡張コード/シーケンス分析器206は、それからブロック310に入る。ブロック310において、拡張コード/シーケンス分析器206は、Q−サイズカウンタ202が3に等しいか、またはそれ以上(すなわち、それがプリフェッチキュー201が少なくとも3バイトをもつまで)待つ。
Q−サイズカウンタ202の値が3に等しいか、またはそれ以上のとき、前記拡張コード/シーケンス分析器206は、ブロック311に入る。ブロック311において、拡張コード/シーケンス分析器206が、Q3out−enをセットし、Q1out−enをリセットする。
エクゼキューション論理16が次のシーケンシャル命令を待ち受けているときに、実行が始められる。Q3out−enがセットされた以後、引き続く命令からの第3のバイトが命令デコーダ15にゲートされて入力される。オプコードを解読すると、前記命令デコーダ15は、デコーダ命令の長さがわかるであろう。ブロック312において、Q−サイズカウンタ202は、全ての命令の長さ(全命令は全てのオプコードと定数と、もしあるならばフィールド)に等しいバイト数だけ減算される。前記デコーダキューカウンタ208は、それが次の命令のスタート位置を指示するように調整される。
要するに、要約すれば、命令が解読されるときには、多数のバイトのオプコードの命令の拡張コードがバイパスされて、関係するオプコードバイトだけが解読される。このような命令を解読することは、マルチバイトのオプコードであっても、たった1つのCPUクロックサイクルかかるだけで、命令の処理が加速されるわけである。
プリフェッチキュー201と拡張キュー204の各々の構成には、いくつかの方法がある。1つの方法はバッファのまわりにラップを用いることである。他の方法はシフトレジスタを用いることである。
図4は、好適な実施形態における拡張キュー204の構成を図示した略図的な図である。
この好適な実施形態の拡張キュー204は、8つの入口の深さをもった4ビットの幅のキューである。それは行あたり4つのセルをもった8行のマトリックスで構成される。セルの各行は、高次の拡張デコーダ203aまたは下位の拡張デコーダ203bのどちらか4つの出力ビットを記憶するために使われる。
各々のセル401は、Dタイプのフリップ−フロップ402で構成し、その入力がマルチプレクサ403の出力に接続されている。各々のマルチプレクサ403は、2つの入力をもっている。1つの入力は高次の拡張デコーダ203aからの1ビットに接続されており、他の入力は下位の拡張デコーダ203bに対応するものに接続されている。たとえば、マルチプレクサ403aは、1つの入力で下位のデコーダ203bの出力EDビットに接続されており、他の入力は高次のデコーダ203aの出力EDビットに接続されている。
前記各々のマルチプレクサ403の選択された入力404は、キュー入力イネイブル論理504によって制御される。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207の出力を受けるために接続されていて、それがプリフェッチキュー201と拡張キュー204の両方の各々の第1のあきエントリーを指示する。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207を解読することによって、マトリックス中のセルの行を選択するように動作する。このマトリックスは第1の拡張キュー204のあきエントリーで構成する。この行は、高次の拡張デコーダ203a,下位のエスケープデコーダ203bのいずれかの出力を記憶するために選択される。
拡張キュー204の出力は、拡張キュー出力イネイブル論理209によって、制御されるであろう。拡張キュー出力イネイブル論理209は、デコーダキューカウンタ208に接続されて、デコーダキューカウンタ208は、次に続く命令の最初の部分に相当する拡張キュー204とプリフェッチキュー201との両方の入力を指し示す。
拡張キュー出力イネイブル論理209は、16個の出力信号406(1,a),406(1,b),・・・406(8,a),406(8,b)の中の2つの信号が作用するためにデコーダキューカウンタ208の値を分析する。16個の信号は、お互いに8つのペアをつくるように組織される。例えば、406(8,a)と406(8,b)の信号は、2つのトリステイトゲイト経由で接続され、407a,407bの信号は、図2に示されている拡張キュー204のセルの行の出力に接続されている。
ある時刻に、前記拡張キュー出力イネイブル論理209が、前記デコーダキューカウンタ208の値に依存しているが、対応するキューエントリーをゲートするために8組の信号のうちの上側の信号406(1,a)を活性化するだろう。この入口からの出力は、Q1−Esc信号である。同じ時点に、前記拡張キュー出力イネイブル論理は、次の入力をゲートするための出力信号の次の組の中の下側の信号の1つ、406(i+1,a)を活性化する。この次の入口からの出力はQ2−Esc信号になる。
図5は、プリフェッチキュー201の構造を図解している。
前記プリフェッチキュー201は、拡張キュー204と同様な方法で構成されている。拡張キュー204と同様に、プリフェッチキュー201は、マトリックスで構成されているが、マトリックスは8行と8列のセルをもっている。
各々のセル501は、Dタイプフリップ−フロップ502で構成し、その入力がマルチプレクサ503に接続されている。各々のマルチプレクサ503は、2つの入力をもっている。1つの入力は命令フェッチバス17の高次のバイトからの1ビットの出力に接続されており、他の入力は対応する命令フェッチバス17の下位の1ビットの出力に接続されている。
各々のマルチプレクサ503の選択された入力は、キュー入力イネイブル論理504によって制御されて、その論理は、プリフェッチキューカウンタ207に接続されている。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207を解読することによって、プリフェッチキュー201の最初のあき入口を形成するマトリックス中のセルの列を選択するように動作する。この列は、命令フェッチバス17中の高次、または下位の出力を記憶するために選ばれる。
プリフェッチキュー201の出力は、拡張コード/シーケンス分析器206によって制御される。拡張コード/シーケンス分析器206は、3ビットのデコーダキューカウンタ505からの出力を受け入れ、そのカウンタ505は、拡張キュー204および次の引き続く命令の最初の部分に相当するプリフェッチキュー201の入力部を指示する。それは同様に、拡張キュー204からのQ1−escおよびQ2−esc出力信号を受ける。これからの信号により、拡張コード/シーケンス分析器206は、その3つの出力信号Q1out−en,Q2out−en,Q3out−enの1つの信号を活性化し、命令デコーダ15の次の引き続く命令の最初の部分(先頭部)から適切なバイトを選択するように動作する。
本発明は、バス13の幅をもち、キューの深さをもつような特定の具体例と特定の構成について説明を行った。しかしながら、それらの構成および過程は、本発明の範囲内で種々の変形や修正が可能であり、本発明の範囲は添付された請求の範囲によってのみ限定されるものである。
Claims (24)
- 中央処理装置(CPU)であって、
CPUの命令をフェッチするための第1の手段と、
前記第1の手段によってフェッチされたCPUの命令をデコードするための第2の手段と、
前記第2の手段によってデコードされたCPUの命令を実行するための第3の手段と、および
前記第1の手段によってCPUの1つの命令をフェッチすると同時に、前記CPUの命令のビットの第1のサブセットを試験するための第4の手段であって、前記第2の手段によって前記CPUの命令のデコードを加速するようにビットの前記第1のサブセットに基づいて少なくとも1つの信号を発生するための手段を含み、ここにおいて、前記第2の手段によってデコードされるべき前記命令の第2のサブセットを選択するための前記少なくとも1つの信号に応答する手段をさらに含む第4の手段と、
を含む中央処理装置(CPU)。 - 請求項1記載のCPUにおいて、前記第1の手段は命令を記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記少なくとも1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
- 請求項2記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
- 請求項3記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
- 請求項3記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
- 請求項1記載のCPUにおいて、前記第2の手段はmビットのデコードが可能であり、前記CPUはnビットのオプコードを持つ命令を有し、mはnよりも小さく、そして、ここにおいて、前記第4の手段は前記第2の手段によってデコードされるべき前記オプコード中のmビットを識別するために命令の前記nビットのオプコード中のビットの前記第1のサブセットを試験するように作動する中央処理装置(CPU)。
- 請求項6記載のCPUにおいて、前記第1の手段は命令を記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記少なくとも1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
- 請求項7記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
- 請求項8記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
- 請求項8記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
- 異なった長さのオプコードを持つ命令を処理するための中央処理装置(CPU)であって、
セグメント中のCPUの命令をフェッチするための第1の手段であって、前記セグメントをCPUの命令にアセンブルするための手段を含む第1の手段と、
前記第1の手段でアセンブルされたCPUの命令をデコードするための第2の手段と、
前記第2の手段によってデコードされた前記CPUの命令を実行するための第3の手段と、そして
前記第1の手段は、前記第2の手段によって前記CPUの命令がデコードされる前に、前記CPUの命令の少なくともビットの第1のサブセットを試験するための第4の手段を含み、そして前記第2の手段によって前記CPUの命令のデコードを加速するように少なくとも1つの信号を発生するための手段を含み、ここにおいて、前記CPUの命令は前記第3の手段を制御するための情報を含むビットの第2のサブセットを個々に含み、ここにおいて、前記第4の手段は前記第2の手段によってデコードされるべき前記命令のビットの前記第2のサブセットを識別するための前記少なくとも1つの信号に応答する手段を含む中央処理装置(CPU)。 - 請求項11記載のCPUにおいて、ビットの前記第1のサブセットは、前記命令オプコードを拡張するためのエスケープコードを形成する中央処理装置(CPU)。
- 請求項11記載のCPUにおいて、前記第1の手段はフェッチされた命令のセグメントを記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
- 請求項13記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
- 請求項14記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
- 請求項14記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
- パイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法であって、前記CPUはメモリから命令をフェッチするための手段、フェッチされたCPUの命令をデコードするためのデコーダおよび前記デコーダの結果に応答してCPUの命令を実行するための手段を有し、前記方法は、
対応するCPUの命令のフェッチと同時にCPUの命令のオプコード中のビットの第1のサブセットを試験するステップと、
ビットの前記第1のサブセットに基づいて少なくとも1つの信号を発生するステップと、および
前記1つの信号を用いる前記命令のデコードを加速するステップであって、前記CPUの命令のビットの前記第1のサブセットに基づいてデコーダによってデコードされるべき前記CPUの命令からビットの第2のサブセットを選択するステップを含む加速ステップと、
を含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。 - 請求項17記載の方法において、前記試験ステップは、ビットの前記第1のサブセットが予め定められた値に対応するかどうかを識別するステップを含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。
- 請求項18記載の方法において、前記識別ステップは、ビットの前記第1のサブセットをデコードするステップを含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。
- CPUの命令をフェッチするための第1の手段、前記第1の手段によってフェッチされたCPUの命令をデコードするための第2の手段、前記第2の手段によってデコードされたCPUの命令を実行するための第3の手段を有する中央処理装置(CPU)であって、ここにおいて、前記CPUの命令の各々は、エスケープビットのサブセット、前記第3の手段を制御するための情報を含む制御ビットのサブセット、前記CPUの命令のデコードを加速するための手段を有し、前記中央処理装置(CPU)は、
前記第1の手段によって新しいCPUの1つの命令をフェッチすると同時に、前記新しい命令のエスケープビットのサブセットを試験するための手段と、
エスケープビットの前記サブセットに基づいて少なくとも1つの信号を発生するための手段と、および
前記第2の手段によってデコードされるべき前記新しいCPUの命令の制御ビットのサブセットを識別するための前記1つの信号に応答する手段と、
を含む中央処理装置(CPU)。 - 請求項20記載のCPUにおいて、エスケープビットの前記サブセットは、命令オプコードを拡張するためのエスケープコードを形成する中央処理装置(CPU)。
- 請求項20記載のCPUにおいて、フェッチされた命令を記憶するための第1のキュウイング手段と前記1つの信号を記憶するための第2のキュウイング手段を含む中処理装置(CPU)。
- 請求項22記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
- 請求項23記載のCPUにおいて、前記試験手段は、デコーダを含む中央処理装置(CPU)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US85817892A | 1992-03-25 | 1992-03-25 | |
US858,178 | 1992-03-25 | ||
PCT/US1993/001250 WO1993019416A1 (en) | 1992-03-25 | 1993-02-11 | Fast instruction decoding in a pipeline processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07507888A JPH07507888A (ja) | 1995-08-31 |
JP3547740B2 true JP3547740B2 (ja) | 2004-07-28 |
Family
ID=25327674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51654993A Expired - Lifetime JP3547740B2 (ja) | 1992-03-25 | 1993-02-11 | 命令高速解読パイプラインプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (2) | US5592635A (ja) |
EP (1) | EP0650612B1 (ja) |
JP (1) | JP3547740B2 (ja) |
KR (1) | KR950701099A (ja) |
DE (1) | DE69326066T2 (ja) |
WO (1) | WO1993019416A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2682469B2 (ja) * | 1994-09-20 | 1997-11-26 | 日本電気株式会社 | 命令コード符号化方式 |
US5752269A (en) * | 1995-05-26 | 1998-05-12 | National Semiconductor Corporation | Pipelined microprocessor that pipelines memory requests to an external memory |
US6684322B1 (en) * | 1999-08-30 | 2004-01-27 | Intel Corporation | Method and system for instruction length decode |
US7376814B1 (en) | 1999-09-07 | 2008-05-20 | Nxp B.V. | Method for forming variable length instructions in a processing system |
GB2374950B (en) * | 2001-04-23 | 2005-11-16 | Imagination Tech Ltd | Expanded functionality of processor operations within a fixed width instruction encoding |
DE10255937B4 (de) * | 2002-11-29 | 2005-03-17 | Advanced Micro Devices, Inc., Sunnyvale | Ordnungsregelgesteuerte Befehlsspeicherung |
US7917734B2 (en) * | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US7353339B2 (en) * | 2003-12-24 | 2008-04-01 | Intel Corporation | Adaptive caching |
US7558900B2 (en) * | 2004-09-27 | 2009-07-07 | Winbound Electronics Corporation | Serial flash semiconductor memory |
US8281109B2 (en) * | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
US11157285B2 (en) * | 2020-02-06 | 2021-10-26 | International Business Machines Corporation | Dynamic modification of instructions that do not modify the architectural state of a processor |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3657705A (en) * | 1969-11-12 | 1972-04-18 | Honeywell Inc | Instruction translation control with extended address prefix decoding |
US3656123A (en) * | 1970-04-16 | 1972-04-11 | Ibm | Microprogrammed processor with variable basic machine cycle lengths |
US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US4363091A (en) * | 1978-01-31 | 1982-12-07 | Intel Corporation | Extended address, single and multiple bit microprocessor |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4346437A (en) * | 1979-08-31 | 1982-08-24 | Bell Telephone Laboratories, Incorporated | Microcomputer using a double opcode instruction |
US4325118A (en) * | 1980-03-03 | 1982-04-13 | Western Digital Corporation | Instruction fetch circuitry for computers |
CA1174370A (en) * | 1980-05-19 | 1984-09-11 | Hidekazu Matsumoto | Data processing unit with pipelined operands |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4890218A (en) * | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US5057837A (en) * | 1987-04-20 | 1991-10-15 | Digital Equipment Corporation | Instruction storage method with a compressed format using a mask word |
JP2635057B2 (ja) * | 1987-11-04 | 1997-07-30 | 株式会社日立製作所 | マイクロプロセッサ |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
DE69030905T2 (de) * | 1989-08-28 | 1998-01-29 | Nec Corp | Mikroprozessor mit Pipeline-Predecodereinheit und -Hauptdecodereinheit |
DE69123629T2 (de) * | 1990-05-04 | 1997-06-12 | Ibm | Maschinenarchitektur für skalaren Verbundbefehlssatz |
EP0459232B1 (en) * | 1990-05-29 | 1998-12-09 | National Semiconductor Corporation | Partially decoded instruction cache and method therefor |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
-
1993
- 1993-02-11 DE DE69326066T patent/DE69326066T2/de not_active Expired - Lifetime
- 1993-02-11 WO PCT/US1993/001250 patent/WO1993019416A1/en active IP Right Grant
- 1993-02-11 JP JP51654993A patent/JP3547740B2/ja not_active Expired - Lifetime
- 1993-02-11 EP EP93905898A patent/EP0650612B1/en not_active Expired - Lifetime
-
1994
- 1994-07-15 US US08/276,060 patent/US5592635A/en not_active Expired - Lifetime
- 1994-09-26 KR KR1019940703328A patent/KR950701099A/ko not_active Application Discontinuation
-
1997
- 1997-01-06 US US08/778,614 patent/US5734854A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO1993019416A1 (en) | 1993-09-30 |
US5592635A (en) | 1997-01-07 |
US5734854A (en) | 1998-03-31 |
DE69326066D1 (de) | 1999-09-23 |
KR950701099A (ko) | 1995-02-20 |
DE69326066T2 (de) | 2000-03-30 |
EP0650612B1 (en) | 1999-08-18 |
JPH07507888A (ja) | 1995-08-31 |
EP0650612A4 (en) | 1995-03-13 |
EP0650612A1 (en) | 1995-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5507028A (en) | History based branch prediction accessed via a history based earlier instruction address | |
US5131086A (en) | Method and system for executing pipelined three operand construct | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
US5513330A (en) | Apparatus for superscalar instruction predecoding using cached instruction lengths | |
US6675235B1 (en) | Method for an execution unit interface protocol and apparatus therefor | |
US5450605A (en) | Boundary markers for indicating the boundary of a variable length instruction to facilitate parallel processing of sequential instructions | |
JP3547740B2 (ja) | 命令高速解読パイプラインプロセッサ | |
US5463746A (en) | Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes | |
US20040064683A1 (en) | System and method for conditionally executing an instruction dependent on a previously existing condition | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
JP3182438B2 (ja) | データプロセッサ | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
US6499100B1 (en) | Enhanced instruction decoding | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
EP1039375A1 (en) | Method and apparatus for implementing zero overhead loops | |
US7519799B2 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
US6654874B1 (en) | Microcomputer systems having compressed instruction processing capability and methods of operating same | |
US20200387375A1 (en) | Instruction demarcator | |
US6757815B2 (en) | Single array banked branch target buffer | |
JPH07306785A (ja) | 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法 | |
US5799164A (en) | Method and apparatus for prefetching instructions at an improved rate based on dispatched control transfer instruction states | |
US9612841B1 (en) | Slice-based intelligent packet data register file | |
JPH0756755A (ja) | プロセッサの制御方法 | |
KR100631318B1 (ko) | 파이프라인 아키텍처를 갖는 프로세서에서 조건 점프 명령을 처리하기 위한 방법 및 명령어 디코더 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20031208 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040203 |
|
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: 20040323 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040415 |
|
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: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090423 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090423 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100423 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110423 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110423 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120423 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120423 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 9 |