JPH07507888A - 命令高速解読パイプラインプロセッサ - Google Patents

命令高速解読パイプラインプロセッサ

Info

Publication number
JPH07507888A
JPH07507888A JP5516549A JP51654993A JPH07507888A JP H07507888 A JPH07507888 A JP H07507888A JP 5516549 A JP5516549 A JP 5516549A JP 51654993 A JP51654993 A JP 51654993A JP H07507888 A JPH07507888 A JP H07507888A
Authority
JP
Japan
Prior art keywords
instruction
instructions
decoding
pipeline
processor
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
JP5516549A
Other languages
English (en)
Other versions
JP3547740B2 (ja
Inventor
チャン、ステファン、エイチ.
Original Assignee
ザイログ,インコーポレイテッド
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 ザイログ,インコーポレイテッド filed Critical ザイログ,インコーポレイテッド
Publication of JPH07507888A publication Critical patent/JPH07507888A/ja
Application granted granted Critical
Publication of JP3547740B2 publication Critical patent/JP3547740B2/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 or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel 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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 発明の名称 命令高速解読バイブラインプロセッサ 技術の分野 本発明は一般的には、コンピュータのスルーブツトの改善に係り、さらに詳しく いえば、命令解読の計画において、中央処理装置における命令の解読を加速する ことに関する。
発明の背景 今日のコンピュータの設計において、バイブライン構造が用いられ続けてきた。
この構造は組み立てラインに類似している。これは命令の順序の実行を仕事の順 序に分割する(すなわち、命令のフエツチング、命令の解読、実行、結果の記憶 )。これらの全てのタスクについて、資源の専用ステーションが提供される。
命令がバイブラインを流れるにしたがって、それらのタスクがそのステーション で、順次実行されるであろう。各々の命令は後続の命令に従われており、そのス テーションがあきさえすれば、直ちにそこが占有される。異なった命令の開始ま での遅れ時間、およびバイブライン構造におけるその終了は、コンパクトにされ ており、その結果、コンピュータのスルーブツトが増加させられている。
バイブラインコンピュータにおける能率的でないステーションは、ボトルネック となる。ボトルネックステーションは命令の速度を記述しているものであるから コンピュータのスルーブツトを記述している。もしボトルネックステーションが 加速されれば、バイブラインコンピュータのスルーブツトは増加するであろう。
バイブラインコンピュータにおける共通のボトルネックは、均一でない長さをも つオブラート(オプションコードまたは命令コード)の命令の解読である。
コンピュータの命令は通常は、オブラートをもっており、そのオブラートからの 命令に対応する処理を指令する信号が発生させられる。コンピュータにおけるオ ブラートのサイズは、通常そのデータバスの幅、換言すればそのハードウェア( 数学論理ユニット、バス、デコーダその他)に依存している。もし、オブラート がnビットの長さをもっていれば、それは2のn乗の異なったビットの組み合わ せに解読されることができ、そしてコンピュータは2のn乗セットの異なったタ イプの命令をもつことになるであろう。典型的に最も多くの今日のコンピュータ デザインにおいては、nは8の倍数である(すなわち、1バイト)。
しかしながら、コンピュータの命令のセットがそのデータバスを拡張することな しに、拡張させるべきであるような機会がある。そのようなことは、コンピュー タを高級化してより多くの命令を取り扱おうとするが、そのときそのハードウェ アについて実質的な変化を行わなかった場合である。そのような場合がおこると 1またはそれ以上のバイトが、通常オブラートに付加される。
従来技術のコンピュータにおいては、マルチバイトのオブラートの解読は、命令 が解読されるときに、一時に1つずつ各バイトが検査されることによって行われ る。各々のバイトの検査はlサイクルが必要であった。この従来技術のアプロー チにおける欠点は、マルチバイトのオブラートの解読が、マルチサイクルが必要 であって、それがバイブラインにおけるボトルネックを形成し、スルーブツトを 減少させることである。
発明の要約 今日のコンピュータにおける命令の長さは、特にCl5C(コンプレックス命令 セットコンピユーテイング)コンピュータにおいては、少なくともコンピュータ のデータバスの幅、またはそれ以上である。これらのコンピュータにおける命令 は、しばしばセグメントでフェッチされる。これらの命令の実行は、全てのセグ メントがフェッチされ、そしてアセンブルされてから開始される。
本発明によれば、命令のセグメントがフェッチされ、そして組み立てられるとき の時間を利用することに関する。この期間において、部分的な命令の解読が行わ れる。部分的な解読により得られた情報が、それからその命令の引き続く処理を 加速するために用いられる。
本発明は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”の1 6進の値をもっている。これはCPU 12に対応するオブコードが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バイトのオブコードをI CPUサイクルにお いて解読する。本発明によらなければ、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は命令の入力したバイトが拡張コードかどう か検査するように動作する。
高い、または低い拡張デコーダ203 a、203 bは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が設けられている。前記デコーダキューカウンタ2 08は、対応する拡張キュー204の中の計数部の入口を指し示す。
拡張キュー204が、拡張デコーダ203a、203bからの人力を受けるので あるから、拡張キュー204の各々の入口は、命令バイトのブリフェッチキュー 201中の対応する人口の命令バイトが拡張であるかどうかという情報を含んで いる。拡張キューは4ビットQl−Esc出力、および4ビットQ2−Esc出 力に出力する。次の引き続く命令の最初の命令(デコーダキューカウンタ208 によって指し示されているように)が1つの拡張コードであるときに、エスケー プコードの値に依存するQl−Esc出力中の1ビツトはセットされる。次に引 き続(命令中の第2のバイトが拡張コードであるときは、つまりエスケープコー ドにしたがうQ2−Esc出力中の1ビツトがセットされるだろう。
拡張キュー204から出力する前記Ql−Esc出力および前記Q2−Esc出 力は、拡張コード/シーケンス分析器206に結合されている。前記拡張コード /シーケンス分析器206は、前記Ql−Escおよび前記Q2−Esc信号を その3つの出力の1つを:すなわちQlout−En、Q2out−Enおよび Q3out−Enのうちの1つをセットするために用いる。これらの3つの信号 は、次に引き続(命令中の最初の3バイトのうちの1つを命令デコーダ15に入 力することを可能にする。もし次の引き続(命令が1バイトのオブコードをもっ ていたならば、Qlout−Enがセットされて、次の引き続く命令の第1バイ トを命令デコーダ15に入力することを可能にする。
もし次の引き続く命令デコーダが2バイトのオプコードをもっていたならば、Q 2out−Enは第2番目のバイトを命令デコーダ15に入力することを可能に するためにセットされる。
そしてもし次の引き続く命令が3バイトのオブコードであれば、命令デコーダ1 5に第3番目の3バイトを入力可能にするようにQ3out−Enはセットされ る。
1つのEsc−Info信号は、拡張コード/シーケンス分析器206から命令 デコーダ15へ出力する出力信号である。この信号は1つの拡張コードまたは1 つのオブコードを分析することによって得られた他の情報として命令デコーダに 与える。
命令デコーダ15に適当なバイトを送り出すこと、そして拡張コードを飛び越す ことによって、次の命令が、オブコードが2以上のバイトをもっているときでも 1サイクルでデコードできる。その結果として対応する命令の処理が加速される 。
さて、拡張コード/シーケンス分析器206の動作は、図3と次の表を参照して 説明されるであろう。
表1の第1行を参照すると“拡張なしくNo Escape)″条件は命令が1 バイトのオブコードであることがらQl−Escコードのビットのうちのいずれ もセットされないことを意味している。Q2−EsCは無関係(Don’ t  care)である。
表1の第2行において、前記“拡張コード“の条件は(1)Ql−EscのED ビットがセットされ、そしてQ2−Escのビットのどれもセットされていない か; (2)Ql−Esc中のDDビットまたはFDビットがセットされている が;しかしQ2−Esc中のCBビットがセットされていないか;または(3) Ql−Esc中のCBビットがセットされているかどうかを意味する。この条件 は、次の引き続く命令のオブコードが、たった1つの拡張コードをもつことを意 味している。
表1の第3行において、前記“拡張シーケンス(Escape 5equenc e)″条件が(1)Ql−Esc中のEDビットがセットされ、モしてQ2−E sc中の4つのビットのいずれかがセットされているか;または(2)Ql−E scコードのDDビットまたはFDビットがセットされている;そして、Q2− Esc中のCBビットがセットされているかを意味する。この条件は、オプコー ドは有効な3バイトのオブコードであることを意味する。
次に、第3図を参照する。301のブロックにおいて拡張コード/シーケンス分 析器206が、Qlout−Enを“1″に、Q2out−enをO1′に、そ してQ3out−enを”0″に初期化する。この方法では、ブリフェッチキュ ー201は空であり、そして、1バイトのオブコードをもった命令がCPUI2 に入力するときに、その命令は、直接に命令デコーダ15に渡され、そして第1 のバイトが解読される。
決定ブロック302において、Q−サイズカウンタ202の値が、ブリフェッチ キュー201が空であるかどうかを決定するためにチェックされる。もしQ−サ イズカウンタ202の値がOで、プリフェッチキュー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が準備で きるときには、命令の実行が始まる。Qlout−enが初期化されないので、 ブリフェッチキュー201史の第1のバイトは、命令デコーダ15にゲートされ るであろう。
オブコードが命令デコーダ15によって解読されたのちには、命令の長さがわか るだろう。ブロック312において、前記Q−サイズカウンタ202は、全ての 命令の長さと等しいバイトの数だけ(全てのオブコー ドと定数と、もしあるな らば、フィールド)の命令の数だけ減少させられる。前記デコーダキューカウン タ208は、それが引き続く命令のスタートを指し示すように強制され、それが 次の引き続く命令となる。
前記拡張コード/シーケンス分析器206は、ブロック303からのブロック3 05に入り、”No ESCape”条件に合わないときに入る。前記手段で次 の引き続く命令の第1バイトが拡張コードである。
なぜならば、オブコードは少なくとも2バイトをもっているので、前記拡張コー ド/シーケンス分析器206は、ブロック305において、Q−サイズカウンタ 202が、2またはより以上高(加算されるまで待っている。
前記Q−サイズカウンタ202が、2またはそれ以上であるときに、前記拡張コ ード/シーケンス分析器206は、決定ブロック306に入る。決定ブロック3 06において、拡張コード/シーケンス分析器206は、拡張コードの3つの条 件のうちどれか1つが満たされるかどうかをチェックする。もし、これらの3つ の条件の1つが満たされたならば、次のシーケンシャル命令は、2バイトコード である。前記拡張コード/シーケンス分析器206は、ブロック307に入る。
ブロック307において、前記拡張コード/シーケンス分析器206が、Q2o ut−enとをセットしQlout−enをリセットする。実行論理16が次の 引き続く命令を受け入れる準備ができているときには、実行が開始される。Q2 out−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バイトであるはずである。拡張コード/シーケンス分析器2 06は、それからブロック310に入る。ブロック310において、拡張コード /シーケンス分析器206は、Q−サイズカウンタ202が3に等しいか、また はそれ以上(すなわち、それがブリフェッチキュー201が少なくとも3バイト をもつまで)待つ。
Q−サイズカウンタ202の値が3に等しいか、またはそれ以上のとき、前記拡 張コード/シーケンス分析器206は、ブロック311に入る。ブロック311 において、拡張コード/シーケンス分析器206が、Q3out−enをセット し、Qlout−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のあきエントリ ーで構成する。この行は、高次の拡張デコーダ203 a *下位のエスケープ デコーダ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)を活性化するだろう。こ の入口からの出力は、Ql−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の選択された人力は、キュー人力イネイブル論理5 04によって制御されて、その論理は、ブリフェッチキューカウンタ207に接 続されている。前記キュー人力イネイブル論理504は、ブリフェッチキューカ ウンタ207を解読することによって、ブリフェッチキュー201の最初のあき 入口を形成するマトリックス中のセルの列を選択するように動作する。この列は 、命令フェッチバス17中の高次、または下位の出力を記憶するために選ばれる 。
ブリフェッチキュー201の出力は、拡張コード/シーケンス分析器206によ って制御される。拡張コード/シーケンス分析器206は、3ビツトのデコーダ キューカウンタ505からの出力を受け入れ、そのカウンタ505は、拡張キュ ー204および次の引き続(命令の最初の部分に相当するブリフェッチキュー2 01の入力部を指示する。それは同様に、拡張キュー204からのQl−esc およびQ2−esc出力信号を受ける。これらからの信号により、拡張コード/ シーケンス分析器206は、その3つの出力信号Qlout−en、Q2out −en、Q3out−enの1つの信号を活性化し、命令デコーダ15の次の引 き続く命令の最初の部分(先頭部)から適切なバイトを選択するように動作する 。
本発明は、バス13の幅をもち、キューの深さをもつような特定の具体例と特定 の構成について説明を行った。しかしながら、それらの構成および過程(t1本 発明の範囲内で種々の変形や修正が可能であり、本発明の範囲は添付された請求 の範囲によってのみ限定されるものである。
IG l 酬 F/G、3゜

Claims (31)

    【特許請求の範囲】
  1. 1.中央処理装置(CPU)であって:命令をフェッチするための第1の手段、 前記第1の手段によってフェッチされた命令をデコードするための第2の手段、 前記第2の手段によってデコードされた命令を実行するための第3の手段、およ び 第4の手段であって、1つの命令を前記第1の手段でフェッチングすると同時に それを試験するものであって、その命令の中の第1のサブセットが少なくとも前 記命令の処理を加速するような信号を発生するものを含んでいる命令高速解読パ イプラインプロセッサ。
  2. 2.請求項1記載のCPUであって、 前記第1の手段は命令を記憶するための第1のキュウイング手段と前記第4の手 段は前記第2のキュウイング手段を前記少なくとも1つの信号を蓄積するための ものを含む命令高速解読パイプラインプロセッサ。
  3. 3.請求項2記載のCPUにおいて前記第1のキュウイング手段と前記第2のキ ュウイング手段は同じ数のエントリーを持っている命令高速解読パイプラインプ ロセッサ。
  4. 4.請求項3記載のCPUにおいて前記第4の手段はデコーダを含む命令高速解 読パイプラインプロセッサ。
  5. 5.請求項3記載のCPUにおいて前記第1の手段,前記第2の手段および前記 第3の手段はパイプライン構造で組織されている命令高速解読パイプラインプロ セッサ。
  6. 6.請求項1記載のCPUであって、前記第4の手段はさらに少なくとも前記第 2の手段によってデコードされるべき前記命令中の第2のサブセットを選択する ための少なくとも1つの信号に応答する手段をさらに含んでいる命令高速解読パ イプラインプロセッサ。
  7. 7.請求項6記載のCPUにおいて、前記第1の手段は第1のキュウイング手段 であって、命令を記憶し、そして第4の手段は前記第2のキュウイング手段であ って、少なくとも1つの信号を蓄積する手段を含む命令高速解読パイプラインプ ロセッサ。
  8. 8.請求項7記載のCPUにおいて、前記第1のキュウイング手段と前記第2の キュウイング手段は同じ数の入口を持つ命令高速解読パイプラインプロセッサ。
  9. 9.請求項8記載のCPUにおいて、前記第4の手段はデコーダを含む命令高速 解読パイプラインプロセッサ。
  10. 10.請求項8記載のCPUにおいて、前記第1の手段において、前記第2の手 段と前記第3の手段は、パイプライン構造をしている命令高速解読パイプライン プロセッサ。
  11. 11.請求項6記載のCPUにおいて、前記第2の手段は、mビットのデコーデ ィングが可能であり、前記CPUはnビットのオプコードを含み、mはnよりも 小さく、そしてここにおいて前記第4の手段は前記第1のビットの差を前記nビ ットのオプコード中の第1のサプセットを前記第2の手段によってデコードされ る前記オプコード中のmビットをアイデンティファイする命令高速解読パイプラ インプロセッサ。
  12. 12.請求項11記載のCPUにおいて、前記第1の手段は第1のキュウイング 手段であって、前記命令を蓄積し、前記第2のキュウイング手段であって、少な くとも1つの信号を蓄積するものを含む命令高速解読パイプラインプロセッサ。
  13. 13.請求項12記載のCPUであって、前記第1のキュウイング手段と前記第 2のキュウイング手段は同じ数の入口を持つ命令高速解読パイプラインプロセッ サ。
  14. 14.請求項13記載のCPUにおいて、前記第4の手段はデコーダを含む命令 高速解読パイプラインプロセッサ。
  15. 15.請求項13記載のCPUにおいて、前記第1の手段、前記第2の手段およ び前記第3の手段はパイプライン構造に組織されている命令高速解読パイプライ ンプロセッサ。
  16. 16.異なった長さのオプコードを持つ命令を処理するためのCPUであって: セグメント中の命令をフェッチするものであって、前記セグメントを命令に組み 立てることができる手段も含む第1の手段と、 前記第1の手段によって組み立てられた命令を解読する第2の手段と、 前記第2の手段によって解読された命令を実行する第3の手段と、および 前記第1の手段は第4の手段を検査するための第4の手段を含み、それは前記第 2の手段でデコーダする前に、少なくとも第1の前記命令の第1のサブセットを 検査し、そして少なくとも前記命令の解読を加速する信号を前記第2の手段によ って発生させる手段を含む前記第1の手段と、 命令高速解読パイプラインプロセッサ。
  17. 17.請求項16記載のCPUにおいて、前記命令の各々は第2のビットのサブ セットであって、前記第3の手段のための情報を含み、そしてここにおいて前記 第4の手段は前記少なくとも前記サブセットのビットを特定化するための信号を 含む命令高速解読パイプラインプロセッサ。
  18. 18.請求項17記載のCPUにおいて、前記第1のビットのサブセットは前記 オプコードを拡張するためのエスケープコードを形成する命令高速解読パイプラ インプロセッサ。
  19. 19.請求項17記載のCPUにおいて、前記第1の手段は第1のキュウイング 手段であって、フェッチされた命令を記憶し、そして前記第4の手段は前記第1 の信号を蓄積するための第2のキュウイング手段を含む命令高速解読パイプライ ンプロセッサ。
  20. 20.請求項19記載のCPUにおいて、前記第1のキュウイング手段と前記第 2のキュウイング手段は同じ数の入口を持つ命令高速解読パイプラインプロセッ サ。
  21. 21.請求項20記載のCPUにおいて、前記第4の手段はデコーダを含む命令 高速解読パイプラインプロセッサ。
  22. 22.請求項20記載のCPUにおいて、前記第1の手段は前記第2の手段およ び前記第3の手段は、パイプライン構造で組織されている命令高速解読パイプラ インプロセッサ。
  23. 23.パイプライン方式のCPU装置におけるスループットを改善する方法であ り、前記CPUはメモリから命令をフェッチするための手段、フェッチされた命 令を解読するためのデコーダおよび前記デコーダの結果に応答して命令を実行す る手段であって:対応する命令の同時フェッチに関連して命令中のオプコードの 第1のサプセットを試験し、前記第1のサプセットのビットに基づく信号を発生 し、および 前記命令は前記1つの信号は前記命令の処理を加速する パイプラインプロセッサの命令高速解読方法。
  24. 24.請求項23記載の方法において、前記加速ステップは1つのサブセットを 選択して、前記デコーダに基づいて前記第1のサプセットを分析する手段を含む パイプラインプロセッサの命令高速解読方法。
  25. 25.請求項24記載の方法において、前記試験手段は前記第1のサプセットの ビットが予め定められた値に対応するかどうかを検査するステップを含むパイプ ラインプロセッサの命令高速解読方法。
  26. 26.請求項25記載の方法において、前記アイデンティファイステップは前記 第1のサプセットのビットをデコードするステップを含むパイプラインプロセッ サの命令高速解読方法。
  27. 27.命令をフェッチするための第1の手段を含み、前記第2の手段は前記第1 の手段にフェッチされた命令をデコードし、前記第3の手段は前記第2の手段に よってデコードされた命令を実行する、ここにおいて各々の命令はコントロール ビットであって、前記第3の手段を制限するための情報を含むサプセットを持ち 、前記命令は命令の加速する手段を持つ、以下を含む中央処理装置(CPU)に おいて: 前記検査手段は、第1の手段による新しい命令のフェッチングと同時に新しいイ ンストラクションのサプセットのエスケープビットをフェッチし、 そして少なくとも前記エスケープビットのサプセットに従う信号を発生し、およ び 前記第1の信号で前記新しい命令に従う手段を持つ命令高速解読パイプラインプ ロセッサ。
  28. 28.請求項27記載のCPUにおいて、前記サプセットは前記命令オプコード を拡張するためのエスケープコードを持つ命令高速解読パイプラインプロセッサ 。
  29. 29.請求項27記載のCPUにおいて、前記第1のキュウイング手段は、命令 を蓄積し、そして前記キュウイング手段は前記1つの信号を蓄積する命令高速解 読パイプラインプロセッサ。
  30. 30.請求項29記載のCPUにおいて、前記第1のキュウイング手段と前記第 2のキュウイング手段は同じ数のエントリー数を持つ命令高速解読パイプライン プロセツサ。
  31. 31.請求項30記載のCPUにおいて、前記検査手段はデコーダを含んでいる 命令高速解読パイプラインプロセッサ。
JP51654993A 1992-03-25 1993-02-11 命令高速解読パイプラインプロセッサ Expired - Lifetime JP3547740B2 (ja)

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 true JPH07507888A (ja) 1995-08-31
JP3547740B2 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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
JP3547740B2 (ja) 2004-07-28
KR950701099A (ko) 1995-02-20
DE69326066T2 (de) 2000-03-30
EP0650612B1 (en) 1999-08-18
EP0650612A4 (en) 1995-03-13
EP0650612A1 (en) 1995-05-03

Similar Documents

Publication Publication Date Title
US5131086A (en) Method and system for executing pipelined three operand construct
US5822602A (en) Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US5463746A (en) Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US4305124A (en) Pipelined computer
US20040064683A1 (en) System and method for conditionally executing an instruction dependent on a previously existing condition
JPH07507888A (ja) 命令高速解読パイプラインプロセッサ
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JP2000330787A (ja) 命令ループを実行するコンピュータシステムおよび命令ループ実行方法
US4747045A (en) Information processing apparatus having an instruction prefetch circuit
EP0322769A2 (en) Data processing apparatus suitable for high speed processing
US7356673B2 (en) System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form
US20030046515A1 (en) System and method for processing complex computer instructions
JPH0193825A (ja) プリフェッチキュー制御方式
KR100631318B1 (ko) 파이프라인 아키텍처를 갖는 프로세서에서 조건 점프 명령을 처리하기 위한 방법 및 명령어 디코더
US6546479B1 (en) Reduced instruction fetch latency in a system including a pipelined processor
JPH02157939A (ja) 命令処理方法及び命令処理装置
JPS63240634A (ja) 情報処理装置
US20040148490A1 (en) Multiple register load using a Very Long Instruction Word
JPH0752402B2 (ja) データ処理装置
JPH06175848A (ja) 中央演算処理装置の高速分岐処理方式
JP2925820B2 (ja) マイクロプロセッサ
JPH0462637A (ja) マイクロプロセッサ
JPH035833A (ja) マイクロプロセッサ
JPS63163533A (ja) マイクロコンピユ−タ
KR20010002479A (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 Request for written amendment filed

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