JP3607476B2 - マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置 - Google Patents

マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置 Download PDF

Info

Publication number
JP3607476B2
JP3607476B2 JP33721997A JP33721997A JP3607476B2 JP 3607476 B2 JP3607476 B2 JP 3607476B2 JP 33721997 A JP33721997 A JP 33721997A JP 33721997 A JP33721997 A JP 33721997A JP 3607476 B2 JP3607476 B2 JP 3607476B2
Authority
JP
Japan
Prior art keywords
integer
floating
instruction
point
floating point
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 - Fee Related
Application number
JP33721997A
Other languages
English (en)
Other versions
JPH10228378A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPH10228378A publication Critical patent/JPH10228378A/ja
Application granted granted Critical
Publication of JP3607476B2 publication Critical patent/JP3607476B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Information Transfer Systems (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般的に共有データパスを介して整数データ及び浮動小数点データを転送するマイクロプロセッサ並びに方法に係わり、特に、共有データパスを有し、統合された整数ユニット及び浮動小数点ユニットに夫々整数データ及び浮動小数点データを通信する複数のパイプライン段を有するマイクロプロセッサに関する。
【0002】
【従来の技術】
整数命令及び実数命令を別個に処理することにより、1サイクル当たりに実行されるプログラム命令数の測定から分かるように、典型的に処理スループットが低下する。スループットの低下する原因は、実数を処理する際に要求される複雑さ及び精度が整数の場合よりも増大するためである。さらに、実数及び整数は異なる内部機械語表記の形式により表現される。浮動小数点表記は実数を表現するため使用され、他のフォーマットでも構わないが、典型的には符号ビット、指数部及び小数部を含む。2の補数表記及び1の補数表記が整数を表現するため使用され、他のフォーマットでも構わないが、典型的には符号ビット及び大きさを含む。このように表記に差異があるため、効率的なマイクロプロセッサ設計はより複雑化する。
【0003】
マイクロプロセッサの典型的な中央処理装置(CPU)は、整数命令を実行する整数ユニット(IU)とも称される算術論理装置(ALU)と、汎用レジスタの組とを含むが、場合によっては専用ハードウェアが整数乗算及び除算のため使用される。加算又は減算のような単純な整数演算命令は、典型的に単一のマシンサイクル内に完了される。
【0004】
“MIPS R4200”, Microprocessor Report, May 1993, pp. 6−7、並びに、“R4200 MICROPROCESSOR, R4200 Preliminary Datasheet Rev. 1.4”, MIPS Computers, Inc., August 1994, pp. 1−37 に記載されているように、整数表記の差異にも係わらず、整数ユニットが浮動小数点命令を実行するため使用され得る。浮動小数点表現と整数表現との間の変換は必要ないが、浮動小数点演算の処理は整数ユニット演算よりも処理時間が長いので性能が低下する。
【0005】
Colwell 他に発行された米国特許第5,179,680 号、イシダ他に発行された米国特許第5,226,166 号、及び、イシダ他に発行された米国特許第5,293,500 号明細書に開示されているように、専用浮動小数点ユニット(FPU)は、整数命令と並列に浮動小数点命令を実行するため選択的に利用され得る。しかし、この種の浮動小数点ユニットは、整数ユニットと浮動小数点ユニットとの間で浮動小数点型オペランド及び浮動小数点型結果を通信するため別個のデータパスを必要とする。さらに、浮動小数点ユニットの命令の処理は、整数ユニットの命令の処理と同期させる必要があるので、演算上の複雑さ及び遅延が更に追加される。
【0006】
【発明が解決しようとする課題】
上記の如く、従来技術のマイクロプロセッサは、混在する整数命令と実数命令とを処理するため整数データ及び浮動小数点データを通信する際に、性能が低下し、或いは、演算の複雑さ及び遅れが増加するという欠点がある。
本発明は、上記従来技術の欠点を解決するため、共通データパスシステムを介して整数データ及び浮動小数点データを通信するマイクロプロセッサ並びにその方法の提供を目的とする。
【0007】
【課題を解決するための手段】
本発明の一実施例は、命令を同時に実行するマイクロプロセッサである。命令には、整数演算を実行する整数命令と、実数演算を実行する浮動小数点命令とが含まれる。命令パイプラインは複数の命令を同時に実行するため連続的な段を有する。複数の連続的な段の中の各段は、複数の命令の中の別々の命令に基づいて同時に動作する。本発明において、整数命令及び浮動小数点命令はパイプライン内に混在させてもよい。整数ユニットは整数命令を実行し、各整数命令毎に整数型結果を形成する。浮動小数点ユニットは浮動小数点命令を実行し、各浮動小数点命令毎に浮動小数点型結果を形成する。データパスは命令パイプライン内の連続的な段の間でデータを通信するため整数ユニットと浮動小数点ユニットとにより共有される。
【0008】
本発明の他の実施例は、プログラム命令のパイプライン処理のためのマイクロプロセッサである。各プログラム命令は、整数プログラム命令又は浮動小数点プログラム命令のいずれかにより構成される。回路は、複数のプログラム命令を同時に処理し、少なくとも一つの整数型オペランドから整数型結果を形成するため整数命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を形成するため浮動小数点命令を実行し、整数型結果及び少なくとも一つの整数型オペランドを整数ユニットに通信し、浮動小数点型結果及び少なくと一つの浮動小数点型オペランドを浮動小数点ユニットに通信するため設けられている。
【0009】
本発明の他の実施例は、整数値及び浮動小数点値を、マイクロプロセッサ内の共有データパスを介して夫々整数ユニット及び浮動小数点ユニットに通信する方法である。各整数値は、少なくとも一つの整数型オペランド又は整数型結果により構成される。各浮動小数点値は、少なくとも一つの浮動小数点型オペランド又は浮動小数点型結果により構成される。上記方法は命令をマイクロプロセッサに供給する段階を含む。命令は、整数命令又は浮動小数点命令のいずれかである。命令は、命令のタイプに依存して、整数ユニット又は浮動小数点ユニットのいずれかの実行のため発行される。一般的に言うと、発行された命令が整数命令であるならば、整数型結果を形成するため整数ユニットを用いて実行される。しかし、発行された命令が整数乗算の場合、整数乗算は浮動小数点乗算装置により実行され、発行された命令が整数除算の場合、整数除算は浮動小数点除算装置により実行される。発行された命令が浮動小数点命令であるならば、浮動小数点型結果を形成するため浮動小数点ユニットを用いて実行される。整数型結果又は浮動小数点型結果は、共有データパスを介して通信される。
【0010】
【発明の実施の形態】
以下の詳細な説明では本発明の最良の実施モードを説明するが、当業者は、本発明の最良の実施モードの説明から本発明の他の実施例を容易に理解できる。本発明は他の異なる実施の形態が可能であり、幾つかの実施の形態の細部は本発明の精神及び範囲から逸脱することなく、種々の明らかな観点に関して変更することが可能である。以下の添付図面及び詳細な説明は、本質的に本発明の例示であり、本発明はこれらの例に限定されないことに注意すべきである。
【0011】
I. マイクロプロセッサ
図1は本発明の共有データパスを組み込むマイクロプロセッサ9の機能的なブロック図である。マイクロプロセッサ9は、複合形の整数ユニット/浮動小数点ユニットコントローラ(IU/FPC)10と、独立した浮動小数点ユニット(FPU)22とを含む。好ましくは、マイクロプロセッサ9は、SPARC(登録商標)アーキテクチャ仕様に準拠した縮小命令セットコンピュータ(RISC)設計を利用し、マイクロプロセッサ9が多数のプログラム命令を並列的に処理することを可能にさせる論理命令パイプライン11を有する単一命令発行プロセッサである。“SPARC”は、カリフォルニア州メンロパークのSPARCインターナショナル社の登録商標である。SPARC(登録商標)のRISCアーキテクチャ仕様に関する一般的な情報は、参考のため引用した“The SPARC Architecture Manual ”, Version 8, SPARC International, Inc., 1992 から得られる。新しいプログラム命令は、各マシンサイクル中に命令パイプライン11内に受けられ、処理が終了するまで連続的なサイクル毎に一段ずつ進む。その結果として、各プログラム命令の処理は、命令パイプライン11内に既に存在する他のプログラム命令と時間的に重なり合うので、処理スループットが増加する。
【0012】
RISC設計は、一般的に、利用可能なプログラム命令を、メモリにアクセスするロード命令及びストア命令と、算術命令と、論理命令とに制限する。マイクロプロセッサ9の場合に、プログラム命令フォーマットは、32ビットずつのメモリの境界に従って、即ち、32ビットメモリバウンダリに基づいて並べられ、演算コード(オペコード)フィールド及びレジスタアドレスフィールドからなる均一配置を利用する。さらに、マイクロプロセッサ9は、命令及びプログラムデータを、プログラム命令を格納する命令キャッシュ(図示しない)と、プログラムデータを格納するデータキャッシュ(図示しない)とに分割するため、Harvard (Aiken) メモリアーキテクチャを採用する。
【0013】
図1及び2を参照するに、整数命令及び浮動小数点命令は、マイクロプロセッサ9内に統合された独立した機能的ユニット、即ち、整数ユニット/浮動小数点ユニットコントローラ10内に統合され整数命令を処理する整数ユニット(IU)27と、浮動小数点命令を処理する浮動小数点ユニット(FPU)22によって夫々処理される。整数ユニット/浮動小数点ユニットコントローラ10内に統合された浮動小数点コントローラ28が整数ユニット/浮動小数点ユニットコントローラ10と浮動小数点ユニット22との間の浮動小数点命令のディスパッチ、同期及び終了を制御するとしても、浮動小数点ユニット22は整数ユニット/浮動小数点ユニットコントローラ10とは別個の機能的ユニットとして浮動小数点演算を実行する。整数ユニット27は、整数命令を実行する汎用レジスタ(図示しない)を含み、ロードメモリアドレス及びストアメモリアドレスを計算し、プログラムカウンタ(PC)(図示しない)を保持することにより、マイクロプロセッサ9の全体的な動作を制御する。
【0014】
図2に示される如く、整数ユニット27は、論理命令パイプライン11の最初の7段の論理段、即ち発行(ISSUE)段12と、フェッチ(FETCH)段13と、デコード(DECODE)段14と、実行(EXECUTE)段15と、メモリ(MEMORY)段16と、遅延(DEFER)段17と、書込(WRITE)段18とを含む。浮動小数点コントローラ28は、命令パイプライン11の最後の5段の論理段、即ち、メモリ(MEMORY)段16と、遅延(DEFER)段17と、書込(WRITE)段18と、浮動小数点遅延(FP DEFER)段19と、浮動小数点書込(FP WRITE)段20とを含む。図2において27’−28’で示されているメモリ段16と、遅延段17と、書込段18とからなる論理段は、整数ユニット27と浮動小数点コントローラ28の両方の処理の一部をなす。
【0015】
浮動小数点ユニット22は三つの独立したサブユニットにより構成される。浮動小数点算術論理装置(FP−ALU)23は、浮動小数点の加算、減算、比較及び変換命令を実行する。浮動小数点乗算器(FP−MUL)24は浮動小数点の乗算を実行する。浮動小数点除算/平方根ユニット(FP−DIV/SQRT)25は、浮動小数点の除算及び平方根計算を実行する。上記実施例において、浮動小数点算術論理装置23及び浮動小数点乗算器24は、オペランドのタイプとは無関係に約3.5マシンサイクル内に浮動小数点型結果を生成し、浮動小数点除算/平方根ユニット25は約25マシンサイクル内に浮動小数点型結果を生成する。
【0016】
II. 命令パイプライン
9段の論理命令パイプライン11は、多数のプログラム命令を同時に実行するため整数ユニット/浮動小数点ユニットコントローラ10内に統合される。命令パイプライン11は、処理スループットを増加するため同期的な形で整数命令及び浮動小数点命令の並列処理を可能にさせる。データ値は一時的停止又は遅れを生ずることなく転送され得るので、オペランド、結果及びバイパスデータパスは、マイクロプロセッサ9にオペランドタイプとは関係なく1サイクル当たり略1命令を完了させる。さらに、整数命令及び浮動小数点命令の各命令は、入力として少なくとも1個のオペランドを要求し、中間的な値を計算する場合があり、出力として結果を発生する。これらの値は全て、特定のパイプライン段に依存して、オペランド、結果又はバイパスデータパスと共に転送され得る。以下、命令パイプライン11の段を説明する。
【0017】
(1)発行(ISSUE)段12
発行段は、デコード(DECODE)段14又は実行(EXECUTE)段15からプログラムカウンタ(PC)(図示しない)を介して命令仮想アドレスIVA[31:2]を受け、命令仮想アドレスIVA[31:2]を命令キャッシュ(図示しない)に送出することにより、プログラム命令を発行する。
【0018】
(2)フェッチ(FETCH)段13
フェッチ段は、プログラム命令ルックアップを実行し、命令キャッシュ(図示しない)からプリフェッチバッファ(図示しない)に32ビットプログラム命令の対ID[63:0]を受けることにより、プログラム命令をフェッチする。これにより、分岐プログラム命令の場合の1サイクルのペナルティーが回避される。
【0019】
(3)デコード(DECODE)段14
デコード段は、一対の整数型オペランドを生成するため、フェッチ段13からプログラム命令を受け、二つの整数型オペランド%rs1及び%rs2を生成することにより単一プログラム命令をデコードする。上記オペランドは、整数ユニットレジスタファイル21から読み出されるか、或いは、実行(EXECUTE)段15、メモリ(MEMORY)段16、遅延(DEFER)段17若しくは書込(WRITE)段18から転送される。整数ユニットレジスタファイル21は、整数型オペランドを一時的に格納するため使用される。
【0020】
(4)実行(EXECUTE)段15
実行段はプログラム命令を実行し整数計算を行う。実行段15は、整数ユニット算術論理装置(IU−ALU)(図示しない)と、32ビットの左右両方向シフタ(図示しない)とを含む。シフタ及び整数ユニット算術論理装置は、整数算術命令を実行するが、浮動小数点乗算器24は整数乗算を行う。特に、整数ユニット算術論理装置は、加算命令と、ブーリアンAND(論理積)、OR(論理和)及びXOR(排他的論理和)命令とを行う。命令仮想アドレスIVA[31:0]は、プログラムカウンタ(PC)へディスパッチされ、データ仮想アドレスDVA[31:0]はデータキャッシュにディスパッチされる。実行段15は、以下に詳述するように、全ての浮動小数点命令を浮動小数点ユニット22に発行する。
【0021】
(5)メモリ(MEMORY)段16
メモリ段は、プログラム命令実行段からの結果を格納し、又は、命令パイプライン11、浮動小数点ユニット22及びデータキャッシュとの間で64ビットのデータを受け、64ビットのデータを送出することにより、整数ユニットロード命令、整数ユニットストア命令、浮動小数点ユニットロード命令、若しくは、浮動小数点ユニットストア命令を行う。ロード命令中に、全てのデータがストア整列装置によって並べられ、空きが生じたときデータキャッシュに書き込むためストア・データ・ホールディング・レジスタ(図示しない)に通知される。
【0022】
(6)遅延(DEFER)段17
遅延段は、間違ったロード命令の結果として整数ユニットレジスタファイル21に送られた書込データを削除する機会を与えることにより、命令実行の同時性を補助する。
(7)書込(WRITE)段
書込段は、遅延段17から整数型結果を受け、その整数型結果を整数ユニットレジスタファイル21に書き込むことにより、整数型結果を書き出す。また、浮動小数点除算及び平方根命令が特別の浮動小数点除算又は平方根ホールディングスロット(図示しない)に送られる。
【0023】
(8)浮動小数点遅延(FP−DEFER)段19
浮動小数点遅延段は、算術演算及び乗算演算を含む全ての浮動小数点命令の終了を同期させる。さらに、通知された浮動小数点除算及び平方根命令が完了される。算術、論理及び乗算命令は、命令パイプライン11と同期して4サイクルで終了し、一方、除算及び平方根命令は略25サイクルで終了する。
【0024】
(9)浮動小数点書込(FP−WRITE)段20
浮動小数点書込段は浮動小数点型結果を書き出す。浮動小数点レジスタファイル26に通知されたあらゆる浮動小数点書込命令が書き込まれ、又は、あらゆる間違いのある浮動小数点命令が浮動小数点誤りキューに挿入される。また、浮動小数点状態レジスタが更新される。
【0025】
整数命令の実行と浮動小数点命令の実行との間で同時性を達成し、命令処理スループットを増加させるため、マイクロプロセッサ9は、整数ユニット/浮動小数点ユニットコントローラ11と浮動小数点ユニット22との間で整数データ及び浮動小数点データを通信する共有データパスを利用する。整数ユニット27と浮動小数点ユニット22は共に、命令パイプライン11の種々の段のレジスタの間でオペランド及び結果を転送するため、バイパスパスを含むデータパスを必要とする。後述するように、上記データパスの中の特定のセクションは、メモリ段16から書込段18までの間で共有される。
【0026】
浮動小数点命令は、以下の通りデコード段14から浮動小数点書込段20までで処理される。全ての浮動小数点命令は、デコード段14において構造上及びオペランドの障害が試験される。浮動小数点命令オペランドは、実行段15において浮動小数点レジスタから集められる。浮動小数点コントローラ(FPC)28は、デコード段17から書込段20までの間で動作し、浮動小数点命令及びオペランドの浮動小数点ユニット22へのディスパッチ、並びに、浮動小数点ユニット22からの浮動小数点型結果の受け取りを調整することにより、浮動小数点ユニット22の動作を制御する。浮動小数点命令は、浮動小数点ユニット22によりメモリ段16から実行されはじめ、約3.5サイクル経過後に浮動小数点遅延段19で終了する。但し、浮動小数点除算及び平方根命令は、約25サイクルで終了する。浮動小数点型結果は、浮動小数点書込段20において浮動小数点レジスタファイルに書き込まれる。浮動小数点レジスタファイル、又は、3エントリ形浮動小数点誤りキューのいずれかが、浮動小数点書込段20の間に、浮動小数点状態レジスタ(FSR)と共に書き込まれる。
【0027】
浮動小数点コントローラ28は、1サイクルにつき1個の浮動小数点命令を発行する。全ての浮動小数点コピー命令及びロード命令はメモリ段16で終了するが、浮動小数点型結果は、以下に説明するように浮動小数点遅延段19まで共有データパスを用いる命令パイプライン11の中でパイプライン化される。浮動小数点算術論理装置23及び浮動小数点乗算器24用の浮動小数点命令は、オペランド若しくは結果の異常又は正常とは無関係に、浮動小数点遅延段19で終了し、一方、浮動小数点除算/平方根ユニット25は、メモリ段16、遅延段17及び書込段18の間でパイプライン化される。その後、これらの命令は、浮動小数点除算/平方根ホールディングスロット(図示しない)に入れられる。
【0028】
上記の如く、浮動小数点型オペランドは、実行段15の間に集められ、浮動小数点命令実行はメモリ段16の間に始まる。浮動小数点ユニット22は、32ビット(シングルワード)又は64ビット(ダブルワード)のいずれの値でも動作し得るので、浮動小数点ユニット22内のデータパスは64ビット幅である。シングルワードオペランドは、レジスタ番号に従ってオペランド及び迂回データパス上に並べられる。特に、浮動小数点レジスタ%f0(図示しない)に送られたシングルワードはビット[63:32]を使用し、一方、浮動小数点レジスタ%f25(図示しない)から読み出されたシングルワードはビット[31:0]を使用する。2個の異なる32ビット値は1個の64ビットオペランドを形成するため結合することができるので、第2浮動小数点型オペランド(ビット[63:32])のためのバイパスデータパスは、第1浮動小数点型オペランド(ビット[31:0])のためのバイパスデータパスとは別個である。整数ストア命令及び浮動小数点ストア命令の両方のためのデータは実行段15で集められるので、整数ユニット27及び浮動小数点ユニット22は、図3を参照して詳述するように第2オペランド[31:0]のための32ビットバイパスデータパスを共有することが可能である。
【0029】
III. 共有オペランドデータパス
上記の如く、整数命令は典型的に実行段15中の1サイクルで終了する。しかし、その結果は3段後方にある書込段18まで格納されない。浮動小数点命令は、典型的に、メモリ段16から始まり浮動小数点遅延段19で終了する3.5サイクルで完了する。その結果として、整数命令処理及び浮動小数点命令処理は、(図2に示される如く)メモリ段16と、遅延段17と、書込段18とからなる3段の間で重なり合う。
【0030】
【実施例】
図3は整数ユニット27及び浮動小数点ユニット22のための共有データパスの図である。図3に示された回路を通じて命令パイプラインにより使用されるデータパスは、9本の別々のデータパスであるが、それらは重なり合う。同図に示された全てのラインは32ビット幅である。5本のデータパスが整数命令を処理するため使用され、4本のデータパスが浮動小数点命令を処理するため使用される。本発明の好ましい実施例において、命令パイプラインの各段で回路内に存在するデータは、整数データ又は浮動小数点データのいずれかである。
【0031】
A.整数演算及び論理命令用のデータパス
第1マルチプレクサ(MUX1)30は第1整数型オペランドに対する入力データを選択する。第2マルチプレクサ(MUX2)32は第2整数型オペランドに対するデータを選択する。入力パスは各オペランドに対し同じであり、図の明瞭さの便宜のため図3から省かれている第2マルチプレクサ(MUX2)32のための入力パス及び後述する関連したバイパス回路についての説明は行わない。入力データは、バイパスパスからのデータと、実行中の命令の二つのオペランドフィールドからのデータとを含む。
【0032】
デコード段14の間に第1マルチプレクサ(MUX1)30の入力は、ライン34を介した整数ユニットレジスタファイル21からの32ビット値、処理されている整数命令の選択されたフィールドにより指定されるようなライン36上の直接又は零オペランド、又は、最後に発生された整数型結果を含むライン38上のバイパス整数型オペランドを含む。バイパス回路については以下に詳述する。制御ライン(図示しない)は、ライン42を介して第3マルチプレクサ(MUX3)40に転送される第1マルチプレクサ(MUX1)30の入力を選択する。第3マルチプレクサ(MUX3)40は、入力として第1マルチプレクサ(MUX1)30の出力又はデータキャッシュ(図示しない)からのデータを取る。データキャッシュからのデータはライン41を介して到達し、ロード整列装置43によって処理される。ロード整列装置43は、整数ユニット算術論理装置50により要求される選択されたワードバウンダリ及びバイトバウンダリに基づいてデータキャッシュからのデータを並べ、そのデータをライン84を介して第3マルチプレクサ(MUX3)40に転送する。第3マルチプレクサ(MUX3)40は、選択された第1整数型オペランドを転送し、そのオペランドは第1実行レジスタ44に格納される。同様に、第2マルチプレクサ(MUX2)32は、ライン480を用いて第4マルチプレクサ(MUX4)46を経由して第2実行レジスタ48へ転送する第2整数型オペランドを選択する。
【0033】
実行段15の間に、整数型オペランドは第1実行レジスタ44及び第2実行レジスタ48からフェッチされ、整数ユニット算術論理装置(IU ALU)50は2個の整数型オペランドに関して算術又は論理演算を行う。演算の整数型結果は、常にライン52を介して第5マルチプレクサ(MUX5)54に転送され、第1メモリレジスタ56に格納されるが、ライン58を介して第1整数型オペランドバイパスパスに送られても良い。第1整数型オペランドバイパスパスは、第6マルチプレクサ(MUX6)60に至るライン5上に整数ユニット算術論理装置50の出力を含む。デコード段14の間に処理されている命令が、実行段15において更新された直後の整数ユニットレジスタファイル21からのオペランドであって、未だ整数ユニットレジスタファイル21に書き直されていないオペランドを必要とするならば、このオペランドは、上記のデコード段回路に返送される。このパスは、第6マルチプレクサ(MUX6)60を第1マルチプレクサ(MUX1)30に接続するライン38として示されている。
【0034】
メモリ段16の間に、整数型結果は、第1メモリレジスタ56からライン64を介して第7マルチプレクサ(MUX7)62に転送され、次に、ライン68を介して第8マルチプレクサ(MUX8)66に送られる。メモリ段16の間の整数型結果が第1整数型オペランドとして必要であるならば、ライン70を介して整数型結果を第9マルチプレクサ(MUX9)72に転送し、次に、ライン74を介して第6マルチプレクサ(MUX6)60に送ることにより、第1整数型オペランドバイパスパスを介して転送される。整数型結果は、常に、第1遅延レジスタ76に書き込まれる。
【0035】
書込段18の間に、整数型結果は、ライン80を用いて第1遅延レジスタ76から第10マルチプレクサ(MUX10)78を通して整数ユニットレジスタファイル21まで転送される。書込段18中の整数型結果が第1整数型オペランドとして必要であるならば、整数型結果をライン82を介して第9マルチプレクサ(MUX9)72に転送することによって、第1整数型オペランドバイパスパスにより転送される。
【0036】
B. 整数ロード命令用のデータパス
命令パイプラインによって処理される命令が整数ロード命令(即ち、データキャッシュからの整数データによる整数ユニットレジスタファイル21内のレジスタのロード)であるとき、オペランド発生処理は算術又は論理命令に対する処理と略同じである。しかし、算術又は論理演算を行う代わりに、整数ユニット算術論理装置50は、選択されたレジスタにロードされるべきデータのアドレスを計算する。アドレス及びレジスタ情報は、ライン34及び第2整数型オペランド用のライン(図示しない)を介して命令から得られた直後のオペランドである。
【0037】
デコード段14の間に、整数型オペランドが上記の如く決められる。実行段15の間に、整数ユニット算術論理装置は、ロードされるべきデータのデータキャッシュ内アドレスを計算する。このアドレスは図3に示されないパスを介してデータキャッシュに転送される。メモリ段16の間に、ロード整列装置43は、整数ユニット算術論理装置により計算されたアドレスによってアドレス指定されたデータをライン41を介してデータキャッシュから受容し、このデータをライン86を介して第8マルチプレクサ(MUX8)66に転送する。データは、次に、第1遅延レジスタ76に格納される。書込段18の間に、データは、ライン80を介して、第10マルチプレクサ(MUX10)78を経由して整数ユニットレジスタファイル21内の選択されたレジスタに転送される。
【0038】
C. 整数ストア命令用のデータパス
命令パイプラインにより処理される命令が整数ストア命令であるとき(即ち、整数ユニットレジスタファイル21のレジスタからの整数データをデータキャッシュ内のデータ格納場所に格納するとき)、オペランド発生処理は、算術又は論理命令の処理とほぼ同様である。しかし、算術又は論理演算を行う代わりに、整数ユニット算術論理装置50は、データキャッシュに格納されるデータのアドレスを計算する。アドレス及びレジスタ情報は、ライン34及び第2整数型オペランド用のライン(図示しない)を介して命令から得られた直後のオペランドである。
【0039】
デコード段14の間に、整数型オペランドが上記の如く決められる。実行段15の間に、整数ユニット算術論理装置は、ストアされるべきデータのデータキャッシュ内アドレスを計算する。このアドレスは、ライン88を介して整数ユニットレジスタファイル21内の選択されたレジスタから受けられ、第5マルチプレクサ(MUX5)54により転送され、第1メモリレジスタ56に格納される。メモリ段16の間に、このデータは、ライン6を介して第7マルチプレクサ(MUX7)62を通過し、ライン70を介してストア整列装置90まで転送される。ストア整列装置90はロード整列装置43の逆の動作を行う。ストア整列装置90は、データキャッシュの要求に従ってデータを並べる。データは、次に、第1ストアデータレジスタ92に格納される。書込段18の間に、データは、ライン94を介して、データキャッシュ内の指定された格納場所に転送される。
【0040】
D. 整数ストアデータバイパス用のデータパス
本発明は、後続の命令による即時使用のためパイプライン内の命令処理の中間結果をパイプラインの前段に返送する能力を提供する。例えば、値“A”が実行段15の間に計算される状況を想定する。計算された値“A”は、パイプラインの前方の段の命令によりオペランドとして必要とされる可能性があるときには、実行段の次の段において依然として命令パイプライン内に在り、整数ユニットレジスタファイル21内のレジスタに格納されていない。転送能力が設けられていないならば、命令パイプラインは更新された値“A”が整数ユニットレジスタファイルに書き込まれ得るまで遅延される必要がある。そうしなければ、“A”をひつようとする命令の処理は最後に計算された“A”の値を利用できない。転送能力は、計算されたデータを必要に応じて命令パイプラインの前方の段に返送することにより上記の問題を回避する。
【0041】
整数ユニットファイル21に書き込まれるべき整数データは、2通りの場合に命令パイプラインに返送される。第1の場合はメモリ段16の間に生じる。データが第8マルチプレクサ(MUX8)66に到達したとき、データはライン96を介して第11マルチプレクサ(MUX11)98に転送される。第11マルチプレクサ(MUX11)98は、データがライン100及び102を介して第2メモリレジスタ104に転送されるべきであるか否かを制御する。データが第2メモリレジスタ104に渡された後、データは、第7マルチプレクサ(MUX7)62を介して、第9マルチプレクサ(MUX9)72までのライン70から始まるバイパスパスに転送される。第2メモリレジスタ104へのデータのロードは、第1メモリレジスタ56へのデータのロードと同じクロックサイクルの間に行われる。第2の場合は遅延段17の間に生じる。データが第10マルチプレクサ(MUX10)78に到達したとき、データはライン106を介して第12マルチプレクサ(MUX12)108に転送される。第12マルチプレクサ(MUX12)108はデータが第11マルチプレクサ(MUX11)98を通って第2メモリレジスタ(MUX2)104まで至るバイパスパスに合流すべきか否かを制御する。
【0042】
E. 整数乗算及び除算命令用のデータパス
本発明において、整数乗算命令及び整数除算命令の実行は整数ユニット算術論理装置50によって行われない。その代わりに、整数型オペランドが以下の方法で浮動小数点ユニット22の浮動小数点乗算器24及び浮動小数点除算/平方根ユニット25に転送される。メモリ段16の間に、オペランドデータは第8マルチプレクサ(MUX8)66を介して転送され、ライン96により第11マルチプレクサ(MUX11)98に送られる。オペランドデータは、次に、乗算命令又は除算命令のどちらが処理されているかに依存して、ライン100を介して浮動小数点ユニット22の適当なセクションに転送される。また、オペランドデータは、遅延段17の間に、第1遅延レジスタ76から第10マルチプレクサ(MUX10)78を通過し、ライン106を介して第12マルチプレクサ(MUX12)108に転送される。オペランドデータは、次に、ライン100を介して浮動小数点ユニット22の適当なセクションに転送される。次に、浮動小数点ユニットは要求された演算を実行する。整数型結果は浮動小数点ユニットからライン110及び112を介して整数ユニットに送られる。ライン110は整数型結果のビット0からビット31までを伝達し、ライン112は整数型結果のビット32からビット63までを伝達する。ビット0乃至31は、第14マルチプレクサ(MUX14)114及び第15マルチプレクサ(MUX15)116を介して第12マルチプレクサ(MUX12)108に転送される。第12マルチプレクサ(MUX12)108から結果データは、第11マルチプレクサ(MUX11)98を通過し、ライン100及び102を介して第2メモリレジスタ104に転送される。整数型結果の下位32ビットは第7マルチプレクサ(MUX7)62を通過し、ライン70から始まるバイパスパス内で使用され、或いは、第8マルチプレクサ(MUX8)66、第1遅延レジスタ76及び第10マルチプレクサ(MUX10)78を経由して、ライン80を介して整数ユニットレジスタファイルに出力される。整数型結果のビット32乃至64は、第16マルチプレクサ(MUX16)118、第17マルチプレクサ(MUX17)120、第18マルチプレクサ(MUX18)122及び第19マルチプレクサ(MUX19)124を介して転送される。第19マルチプレクサ(MUX19)124は、整数型結果のビット32乃至63をライン126及び128を介して第3メモリレジスタ130に転送する。
【0043】
整数乗算演算及び整数除算演算の結果の一部分は、“Yレジスタ”(図3には図示されない)と称されるレジスタに格納される。Yレジスタは、整数乗算演算又は整数除算演算からの64ビット結果の中の上位32ビットを保持する。Yレジスタは第13マルチプレクサ(MUX13)134までのライン132に接続される。Yレジスタは、参考のため引用した“the SPARC Architecture Manual, Version 8”, SPARC International, Inc., 1992に詳細に説明されている。
【0044】
F. オペランド2個の浮動小数点命令用のデータパス
オペランド2個の浮動小数点命令には、浮動小数点加算、浮動小数点減算、浮動小数点乗算、浮動小数点平方根、整数から浮動小数点への変換、及び、浮動小数点から整数への変換のような命令が含まれる。浮動小数点ユニット22は、実行段15の間に浮動小数点命令を受けるマイクロプロセッサアーキテクチャ内の別個の処理装置である。しかし、浮動小数点型オペランドは、図3に示された回路によって完成される。同図には第2浮動小数点型オペランド用のパスだけが示されている。オペランド発生パスは第1浮動小数点型オペランド用の発生パスと同様である。
【0045】
第2浮動小数点型オペランドは、実行段15の間に浮動小数点レジスタファイル26からフェッチされる。第2浮動小数点型オペランド用のデータの中の64ビットまでが、ビット0乃至31を伝達するライン136と、ビット32乃至63を伝達するライン138とを介して到達する。第2浮動小数点型オペランドが32ビットシングルワードからなる場合に、使用されているレジスタのレジスタ番号に依存して、ビット0乃至31又はビット32乃至63のいずれか一方が使用される。ビット0乃至31は、第14マルチプレクサ(MUX14)114と、第15マルチプレクサ(MUX15)116と、第12マルチプレクサ(MUX12)108と、第11マルチプレクサ(MUX11)98とを通過し、ライン100を介して浮動小数点ユニット22に転送される。或いは、第2浮動小数点型オペランドデータのビット0乃至31は、メモリ段16、遅延段17、書込段18又は浮動小数点遅延段19の間に命令パイプラインから生ずる場合がある。第2浮動小数点型オペランドデータは、メモリ段16の間にライン96を介して第8マルチプレクサ(MUX8)6から、遅延段17の間にライン106を介して第1遅延レジスタ76及び第10マルチプレクサ(MUX10)78から、書込段18の間にライン156を介して第1書込レジスタ154から、浮動小数点遅延段19の間にライン160を介して第1浮動小数点レジスタ156からオペランド発生パスに転送される。他方、第2浮動小数点型オペランドのビット32乃至63が、メモリ段16、遅延段17、書込段18又は浮動小数点遅延段19の間に命令パイプラインから生ずる場合がある。この第2浮動小数点型オペランドは、メモリ段16の間にライン140を介して第13マルチプレクサ(MUX13)134から、遅延段17の間にライン144を介して第2遅延レジスタ142から、書込段18の間にライン148を介して第2書込レジスタ146から、浮動小数点遅延段19の間にライン152を介して第2浮動小数点レジスタ150からオペランド発生パスに転送される。
【0046】
オペランド2個の浮動小数点命令の処理結果は、浮動小数点ユニット22からライン110及び112に返される。結果の中のビット0乃至31はライン110上で受けられ、ビット32乃至63はライン112上で受けられる。ビット0乃至31は第20マルチプレクサ(MUX20)162に転送され、浮動小数点レジスタファイル26に書き込まれる。ビット32乃至63は第21マルチプレクサ(MUX21)164に転送され、浮動小数点レジスタファイル26に書き込まれる。
【0047】
G. オペランド1個の浮動小数点命令用のデータパス
オペランド1個の浮動小数点命令には、浮動小数点移動(FPMOV)、浮動小数点否定(FPNEG)、浮動小数点絶対値(FPABS)及び変換演算(例えば、整数から倍精度浮動小数点への変換)のような命令が含まれる。浮動小数点ユニット22は上記命令を処理するため使用されず、第2浮動小数点型オペランドだけが単一オペランドとして使用される。
【0048】
第2浮動小数点型オペランドは、実行段15の間に浮動小数点レジスタファイル26からフェッチされる。第1浮動小数点型オペランド用のデータの32ビットが、ビット0乃至31を伝達するライン136、又は、ビット32乃至63を伝達するライン138を介して到達する。32ビットオペランドに対し二つの並列したデータパスがあることに注意する必要がある。ビット0乃至31として指定されたデータは、第14マルチプレクサ(MUX14)114と、第15マルチプレクサ(MUX15)116と、第12マルチプレクサ(MUX12)108と、第11マルチプレクサ(MUX11)98とを通過し、ライン100を介して第2メモリレジスタ104に転送される。他方、ビット32乃至63として指定されたデータは、第16マルチプレクサ(MUX16)118と、第17マルチプレクサ(MUX17)120と、第18マルチプレクサ(MUX18)122と、第19マルチプレクサ(MUX19)124とを通過し、ライン126及び128を介して第3メモリレジスタ130に転送される。かくして、実行段15の間に、第2浮動小数点型オペランドの32ビットデータは、第2メモリレジスタ104又は第3メモリレジスタ130のいずれか一方にロードされ、両方にロードされることはない。上記メモリレジスタから、データが適当なデータパスに流れる。第2メモリレジスタ104がロードされた場合、データは第22マルチプレクサ(MUX22)166を介して浮動小数点コピー装置168に転送される。浮動小数点コピー装置168は単一オペランドに関して要求された演算を行う。その結果は、メモリ段16の間に第8マルチプレクサ(MUX8)6から第1遅延レジスタ76に、遅延段17の間に第1遅延レジスタ76から第10マルチプレクサ(MUX10)78を介して第1書込レジスタ154に、書込段18の間に第1書込レジスタ154から第1浮動小数点遅延レジスタ158に、浮動小数点書込段20の間に第1浮動小数点レジスタ156から第20マルチプレクサ(MUX20)162を介して浮動小数点レジスタファイル26に伝達される。同様に、第3メモリレジスタ130がロードされた場合、データは第22マルチプレクサ(MUX22)166を介して浮動小数点コピー装置168に転送される。浮動小数点コピー装置168は単一オペランドに基づいて要求された演算を行う。その結果は、メモリ段16の間に第13マルチプレクサ(MUX13)134から第2遅延レジスタ142に、遅延段17の間に第2遅延レジスタ142から第2書込レジスタ146に、書込段18の間に第2書込レジスタ146から第2浮動小数点遅延レジスタ150に、浮動小数点書込段20の間に第2浮動小数点レジスタ150から第21マルチプレクサ(MUX21)164を介して浮動小数点レジスタファイル26に伝達される。
【0049】
H. 浮動小数点ロード命令用のデータパス
命令パイプラインによって処理される命令が浮動小数点ロード命令(即ち、データキャッシュからの浮動小数点データによる浮動小数点レジスタファイル26内のレジスタのロード)であるとき、オペランド発生処理は固定小数点算術命令に対する処理と略同じである。アドレス及びレジスタ情報は、ライン34及び第2オペランド用のライン(図示しない)を介して命令から得られた直後のオペランドである。
【0050】
デコード段14の間にオペランドが上記の如く決められる。実行段15の間に、整数ユニット算術論理装置は、ロードされるべき浮動小数点データのデータキャッシュ内アドレスを計算する。このアドレスは図3に示されないパスを介してデータキャッシュに転送される。メモリ段16の間に、ロード整列装置43は、整数ユニット算術論理装置により計算されたアドレスによってアドレス指定された浮動小数点データの32ビットのシングルワード又は浮動小数点データの64ビットのダブルワードをライン41を介してデータキャッシュから受容し、この浮動小数点データをライン86及び170を介して転送する。第2浮動小数点データが32ビットのシングルワードからなるならば、使用されるレジスタのレジスタ番号に依存して、ビット0乃至31又はビット32乃至63のいずれか一方が使用される。浮動小数点データのビット0乃至31は、ライン86を介して第8マルチプレクサ(MUX8)66に転送される。浮動小数点データのビット32乃至63は、ライン170を介して第13マルチプレクサ(MUX13)に転送される。データのビット0乃至31は、第1遅延レジスタ76に格納される。遅延段17の間に、データのビット0乃至31は、第10マルチプレクサ(MUX10)78を介して第1書込レジスタ154に転送される。書込段18の間に、データのビット0乃至31は第1浮動小数点遅延レジスタ158に転送される。最後に、浮動小数点書込段20の間に、データのビット0乃至31は第20マルチプレクサ(MUX20)162に転送され、次いで、浮動小数点レジスタファイル26に書き込まれる。同様に、データのビット32乃至63が第2遅延レジスタ142に格納される。遅延段17の間に、データのビット32乃至63は、第2書込レジスタ146に転送される。書込段18の間に、データのビット32乃至63は第2浮動小数点遅延レジスタ150に転送される。最後に、浮動小数点書込段20の間に、データのビット32乃至63は第21マルチプレクサ(MUX21)164に転送され、次いで、浮動小数点レジスタファイル26に書き込まれる。
【0051】
I. 浮動小数点ストア命令用のデータパス
命令パイプラインにより処理される命令が浮動小数点ストア命令であるとき(即ち、浮動小数点レジスタファイル26のレジスタからの浮動小数点データをデータキャッシュ内のデータ格納場所に格納するとき)、オペランド発生処理は、浮動小数点算術命令の処理とほぼ同様である。従って、整数ユニット算術論理装置50は、第1オペランド及び第2オペランドを使用してアドレスを計算する。アドレス及びレジスタ情報は、ライン34及び第2オペランド用のライン(図示しない)を介して命令から得られた直後のオペランドである。ストアデータは命令内の第3オペランドであるが、第14マルチプレクサ(MUX14)114と、第16マルチプレクサ(MUX16)118と、第15マルチプレクサ(MUX15)116と、第17マルチプレクサ(MUX170)120と、第12マルチプレクサ(MUX12)108と、第18マルチプレクサ(MUX18)122と、第11マルチプレクサ(MUX11)98と、第19マルチプレクサ(MUX19)124等を用いる第2浮動小数点型オペランドパスのデータパス内に形成される。浮動小数点データは浮動小数点レジスタファイルから取得される。
【0052】
デコード段14の間にオペランドが上記の如く決められる。実行段15の間に、整数ユニット算術論理装置は、ストアされるべき浮動小数点データのデータキャッシュ内アドレスを計算する。このアドレスは、ライン136及び138を介して浮動小数点レジスタファイル26内の選択されたレジスタから受けられる。浮動小数点データは、32ビットを有するシングルワード、又は、64ビットを有するダブルワードである。浮動小数点データのビット0乃至31は、第14マルチプレクサ(MUX14)114と、第15マルチプレクサ(MUX15)116と、第12マルチプレクサ(MUX12)108と、第11マルチプレクサ(MUX11)98とを通過し、ライン100及び102を介して転送され、第2メモリレジスタ104に格納される。浮動小数点データのビット32乃至63は、第16マルチプレクサ(MUX16)118と、第17マルチプレクサ(MUX170)120と、第18マルチプレクサ(MUX18)122と、第19マルチプレクサ(MUX19)124とを通過し、ライン126及び128を介して転送され、第3メモリレジスタ130に格納される。メモリ段16の間に、このデータのビット0乃至31は、第2メモリレジスタ104から第7マルチプレクサ(MUX7)62を通過しライン70を介してストア整列装置90に転送される。ストア整列装置90はロード整列装置43の逆の動作を行う。ストア整列装置90は、データキャッシュの要求に従って浮動小数点データを並べる。データのビット32乃至63は、第3メモリレジスタ130からライン172を介してストア整列装置90に転送される。遅延段17の間に、データのビット0乃至31は第1ストアデータレジスタ92に格納され、データのビット32乃至63は第2ストアデータレジスタ174に格納される。データがストアデータレジスタに格納された後、データは、データキャッシュが利用可能になるか、又は、後続のストア(及びそのデータ)が到達するまで、ストアデータレジスタ内に留まる。
【0053】
上記の如く本発明の種々の実施例が具体的に示されているが、当業者であれば、請求項に記載されているような本発明の範囲及び精神を逸脱することなく、形式及び詳細に関して種々の変更をなし得ることがわかるであろう。
【0054】
【発明の効果】
上記の如く、本発明によれば、データパスは命令パイプライン内の連続的な段の間でデータを通信するため整数ユニットと浮動小数点ユニットとにより共有されるので、混在する整数命令と実数命令とを処理するため整数データ及び浮動小数点データを通信する際の性能の低下、演算の複雑さ、及び、演算の遅れが回避される利点が得られる。
【図面の簡単な説明】
【図1】本発明の共有データパスを組み込むマイクロプロセッサの機能的なブロック図である。
【図2】命令パイプラインのブロック図である。
【図3】共有データパスの構成図である。
【符号の説明】
9 マイクロプロセッサ
10 整数ユニット/浮動小数点ユニットコントローラ
11 命令パイプライン
12 発行段
13 フェッチ段
14 デコード段
15 実行段
16 メモリ段
17 遅延段
18 書込段
19 浮動小数点遅延段
20 浮動小数点書込段
21 整数ユニットレジスタファイル
22 浮動小数点ユニット
23 浮動小数点算術論理装置
24 浮動小数点乗算器
25 浮動小数点除算/平方根ユニット
26 浮動小数点レジスタファイル
27 整数ユニット
28 浮動小数点コントローラ

Claims (36)

  1. 複数の連続的な処理段を有する命令パイプライン内で、整数演算を行う整数命令及び浮動小数点演算を行う浮動小数点命令が混在した命令を同時に処理する処理装置において、
    上記命令パイプライン内の浮動小数点命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を生成する浮動小数点ユニットと、
    上記命令パイプライン内の整数命令を実行し、少なくとも一つの整数型オペランドから整数型結果を生成する、上記浮動小数点ユニットとは独立して整数演算を実行する整数ユニットと、
    上記浮動小数点ユニット及び上記整数ユニットにより共有され、上記命令パイプライン内の連続的な段の処理中に上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と
    からなる処理装置。
  2. 上記通信手段に接続され、上記整数ユニットにより形成された整数型結果を格納する第1のレジスタファイルを更に有する請求項1記載の処理装置。
  3. 上記通信手段に接続され、上記浮動小数点ユニットにより形成された浮動小数点型結果を格納する第2のレジスタファイルを更に有する請求項1記載の処理装置。
  4. 上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて加算演算、減算演算及び変換演算を行う浮動小数点算術論理装置を含む請求項1記載の処理装置。
  5. 上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて乗算演算を行う浮動小数点乗算器を含む請求項1記載の処理装置。
  6. 上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて除算演算及び平方根演算を行う浮動小数点除算及び平方根ユニットを含む請求項1記載の処理装置。
  7. 上記通信手段は、上記整数ユニット及び上記浮動小数点コントローラと統合されている請求項1記載の処理装置。
  8. 上記整数ユニットは、整数命令及び浮動小数点命令用の命令アドレスを発行する手段を含む請求項1記載の処理装置。
  9. 上記整数ユニットは、整数命令及び浮動小数点命令をフェッチする手段を含む請求項1記載の処理装置。
  10. 上記整数ユニットは、少なくとも一つの整数型オペランドを生成するため整数命令をデコードする手段を含む請求項1記載の処理装置。
  11. 上記整数ユニットは、整数命令から生じた整数型オペランドに基づいて整数演算を実行し、浮動小数点命令及び浮動小数点型オペランドを上記浮動小数点ユニットにディスパッチする手段を含む請求項1記載の処理装置。
  12. 整数命令の実行の結果を格納する手段を更に有する請求項1記載の処理装置。
  13. 整数型結果の上記第1のレジスタファイルへの格納を取り消す手段を更に有する請求項2記載の処理装置。
  14. 整数型結果を上記第1のレジスタファイルに書き込む手段を更に有する請求項2記載の処理装置。
  15. 上記浮動小数点コントローラは、
    上記浮動小数点ユニットによる浮動小数点命令の実行の終了を同期させる手段と、
    浮動小数点型結果を上記第2のレジスタファイルに書き込む手段とを含む請求項3記載の処理装置。
  16. 上記通信手段は、整数算術及び論理命令の整数型オペランド並びに整数型結果を通信する第1のデータパス手段を含む請求項1記載の処理装置。
  17. 上記通信手段は、整数ロード命令の整数型オペランド及び整数型結果を通信する第2のデータパス手段を含む請求項1記載の処理装置。
  18. 上記通信手段は、整数ストア命令の整数型オペランド及び整数型結果を通信する第3のデータパス手段を含む請求項1記載の処理装置。
  19. 上記通信手段は、整数型オペランド及び整数型結果を上記命令パイプライン内の先行する段に通信する第4のデータパス手段を含む請求項1記載の処理装置。
  20. 上記通信手段は、整数型オペランド及び整数型結果を上記命令パイプライン内の先行する段に通信する第5のデータパス手段を含む請求項1記載の処理装置。
  21. 上記通信手段は、オペランド1個の浮動小数点命令の少なくとも1個の浮動小数点型オペランドと浮動小数点型結果とを通信する第6のデータパス手段を含む請求項1記載の処理装置。
  22. 上記通信手段は、オペランド2個の浮動小数点命令の少なくとも2個の浮動小数点型オペランドと浮動小数点型結果とを通信する第7のデータパス手段を含む請求項1記載の処理装置。
  23. 上記通信手段は、浮動小数点ロード命令の浮動小数点型オペランド及び浮動小数点型結果を通信する第8のデータパス手段を含む請求項1記載の処理装置。
  24. 上記通信手段は、浮動小数点ストア命令の浮動小数点型オペランド及び浮動小数点型結果を通信する第9のデータパス手段を含む請求項1記載の処理装置。
  25. 整数ユニット及び浮動小数点ユニットを含み、整数演算を行う整数命令と浮動小数点演算を行う浮動小数点命令とが混在した場合に命令を同時に処理する処理システムにおいて、
    上記整数ユニット及び上記浮動小数点ユニットは、上記整数命令と上記浮動小数点命令とを同時に実行可能なように互いに分離独立して構成されるとともに、
    上記整数ユニット及び上記浮動小数点ユニットにより共有され、上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と、
    整数型オペランドを受ける第1のレジスタ手段と、
    上記整数型結果を格納する第1のレジスタファイルと、
    上記浮動小数点型結果を格納する第2のレジスタファイルと、
    を備えることを特徴とする処理システム
  26. 上記第3のレジスタ手段に接続され、整数データを受容し、上記整数データを上記整数型結果に並べ、上記整数型結果を上記第3のレジスタ手段に格納するロード整列手段を更に有する請求項25記載の処理システム
  27. 上記第1のレジスタファイルから上記第2のレジスタ手段に整数型オペランドを転送する手段と、
    上記第2のレジスタ手段に接続され、上記整数型オペランドを受容し、上記整数型オペランドを上記整数型結果に並べるストア整列手段と、
    上記整数型結果を受ける第4のレジスタ手段と、
    上記第4のレジスタ手段から上記第1のレジスタファイルに上記整数型結果を転送する手段とを更に有する請求項25記載の処理システム
  28. 整数乗算命令若しくは整数除算命令の実行によって得られる整数型結果、又は、浮動小数点コピー命令の実行によって得られる浮動小数点型結果を受ける第5のレジスタ手段と、
    上記第2のレジスタ手段から上記第5のレジスタ手段に、整数型結果、整数型オペランド、浮動小数点型オペランド又は浮動小数点型結果を転送する第2のバイパス手段と、
    上記第3のレジスタ手段から上記第2のバイパス手段に、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を転送する第3のバイパス手段とを更に有する請求項25記載の処理システム
  29. 整数型オペランドを上記浮動小数点ユニットに転送する手段と、
    上記浮動小数点ユニットから整数型結果を受ける手段と、
    上記整数型結果を上記第3のバイパス手段に転送する手段とを更に有する請求項28記載の処理システム
  30. 浮動小数点型オペランド及び浮動小数点型結果を格納する第2のレジスタファイルと、
    上記第2のレジスタファイルから浮動小数点型オペランドを受け、上記浮動小数点型オペランドを上記浮動小数点ユニットに転送し、上記浮動小数点型オペランドを上記第5のレジスタ手段に転送する手段と、
    上記浮動小数点ユニットから上記浮動小数点型結果を受け、上記浮動小数点型結果を上記第5のレジスタ手段に転送する手段と、
    上記第5のレジスタ手段から上記浮動小数点型結果を受け、上記第5のレジスタ手段から上記浮動小数点型オペランドを受ける第6のレジスタ手段と、
    上記第6のレジスタ手段から上記第3のバイパス手段に上記浮動小数点型オペランド又は上記浮動小数点型結果を転送する第4のバイパス手段と、
    上記第6のレジスタ手段から上記浮動小数点型結果を受ける第7のレジスタ手段と、
    上記第7のレジスタ手段から上記第4のバイパス手段に上記浮動小数点型オペランド又は上記浮動小数点型結果を転送する第5のバイパス手段と、
    上記第7のレジスタ手段又は上記浮動小数点ユニットから上記浮動小数点型結果を受け、上記浮動小数点型結果を上記第2のレジスタファイルに格納する手段とを更に有する請求項29記載の処理システム
  31. 上記第3のレジスタ手段及び上記第5のレジスタ手段に接続されている浮動小数点コピー装置を更に有する請求項30記載の処理システム
  32. マイクロプロセッサ内の共有データパスを介して整数ユニットと浮動小数点ユニットと浮動小数点コントローラとの間で、混在した整数型オペランド、整数型結果、浮動小数点型オペランド及び浮動小数点型結果を通信する方法において、
    整数乗算及び整数除算を含む整数命令、又は、浮動小数点コピー命令を含む浮動小数点命令のいずれかの実行の命令を、上記命令が浮動小数点コピー命令、又は、整数乗算命令若しくは整数除算命令以外の整数命令であるとき上記整数ユニットに発行し、上記命令が整数乗算命令若しくは整数除算命令、又は、浮動小数点コピー命令以外の浮動小数点命令であるとき上記浮動小数点ユニットに発行する段階と、
    上記命令が整数乗算命令又は整数除算命令であるとき、上記共有データパスを介して上記整数型オペランドを受ける段階と、
    上記命令が浮動小数点命令であるとき、上記共有データパスを介して上記浮動小数点型オペランドを受ける段階と、
    上記発行された命令が整数命令であるとき整数型結果を生成するため、又は、上記発行された命令が浮動小数点コピー命令であるとき浮動小数点型結果を形成するため、上記発行された命令を上記整数ユニットにより実行する段階と、
    上記発行された命令が浮動小数点命令であるとき浮動小数点型結果を形成するため、又は、上記発行された命令が整数乗算命令若しくは整数除算命令であるとき整数型結果を生成するため、上記発行された命令を上記浮動小数点ユニットにより実行する段階と、
    上記共有データパスを介して上記整数型結果及び上記浮動小数点型結果を選択的に通信する段階とからなる方法。
  33. 上記通信手段は、
    整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を転送するデータパスを含むこと
    を特徴とする請求項1に記載の処理装置。
  34. 上記通信手段は、
    整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を選択して上記浮動小数点ユニット又は上記整数ユニットに供給する選択回路を備えること
    を特徴とする請求項1に記載の処理装置。
  35. 前記選択回路は、マルチプレクサであること
    を特徴とする請求項34に記載の処理装置。
  36. 複数の連続的な処理段を有する命令パイプライン内で、整数演算を行う整数命令及び浮動小数点演算を行う浮動小数点命令が混在した命令を同時に処理する処理装置において、
    上記命令パイプライン内の浮動小数点命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を生成する浮動小数点ユニットと、
    上記命令パイプライン内の整数命令を実行し、少なくとも一つの整数型オペランドから整数型結果を生成する整数ユニットと、
    上記浮動小数点ユニット及び上記整数ユニットにより共有され、上記命令パイプライン内の連続的な段の処理中に上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と
    を備える処理装置。
JP33721997A 1996-12-10 1997-12-08 マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置 Expired - Fee Related JP3607476B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US767953 1991-09-30
US3237496P 1996-12-10 1996-12-10
US08/767,953 US5887160A (en) 1996-12-10 1996-12-17 Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US032374 1996-12-17

Publications (2)

Publication Number Publication Date
JPH10228378A JPH10228378A (ja) 1998-08-25
JP3607476B2 true JP3607476B2 (ja) 2005-01-05

Family

ID=26708335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33721997A Expired - Fee Related JP3607476B2 (ja) 1996-12-10 1997-12-08 マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置

Country Status (3)

Country Link
US (1) US5887160A (ja)
JP (1) JP3607476B2 (ja)
KR (1) KR100507415B1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6591361B1 (en) * 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US7757066B2 (en) * 2000-12-29 2010-07-13 Stmicroelectronics, Inc. System and method for executing variable latency load operations in a date processor
US6963961B1 (en) * 2001-07-09 2005-11-08 Lsi Logic Corporation Increasing DSP efficiency by independent issuance of store address and data
US20060095723A1 (en) * 2001-11-05 2006-05-04 Moyer William C Method and apparatus for interfacing a processor to a coprocessor
EP1365319B1 (en) * 2002-04-01 2017-07-05 QUALCOMM Incorporated Risc processor supporting one or more uninterruptible co-processors
US6944746B2 (en) * 2002-04-01 2005-09-13 Broadcom Corporation RISC processor supporting one or more uninterruptible co-processors
GB2395298B (en) * 2002-09-17 2007-02-14 Micron Technology Inc Flexible results pipeline for processing element
CN1761941A (zh) * 2003-03-19 2006-04-19 皇家飞利浦电子股份有限公司 多处理器系统中的类型转换单元
US7290121B2 (en) * 2003-06-12 2007-10-30 Advanced Micro Devices, Inc. Method and data processor with reduced stalling due to operand dependencies
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
TWI278910B (en) * 2005-08-09 2007-04-11 Powerchip Semiconductor Corp System and method for wafer visual inspection
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8127262B1 (en) * 2008-12-18 2012-02-28 Xilinx, Inc. Communicating state data between stages of pipelined packet processor
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
EP2866138B1 (en) * 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
WO2020190800A1 (en) 2019-03-15 2020-09-24 Intel Corporation Dynamic memory reconfiguration

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4851990A (en) * 1987-02-09 1989-07-25 Advanced Micro Devices, Inc. High performance processor interface between a single chip processor and off chip memory means having a dedicated and shared bus structure
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JPH0769821B2 (ja) * 1988-03-04 1995-07-31 日本電気株式会社 情報処理装置におけるバイパスライン制御方式
US4901267A (en) * 1988-03-14 1990-02-13 Weitek Corporation Floating point circuit with configurable number of multiplier cycles and variable divide cycle ratio
US5083263A (en) * 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
US5159680A (en) * 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US5109495A (en) * 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5204828A (en) * 1989-02-10 1993-04-20 Intel Corporation Bus apparatus having hold registers for parallel processing in a microprocessor
US5210841A (en) * 1990-01-30 1993-05-11 Advanced Micro Devices, Inc. External memory accessing system
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors

Also Published As

Publication number Publication date
KR19980063924A (ko) 1998-10-07
US5887160A (en) 1999-03-23
JPH10228378A (ja) 1998-08-25
KR100507415B1 (ko) 2005-12-06

Similar Documents

Publication Publication Date Title
JP3607476B2 (ja) マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置
USH1291H (en) Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
EP1406165B1 (en) Decoupled architecture processor with loop pipeline
US5185872A (en) System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
EP1385085B1 (en) High performance risc microprocessor architecture
US5923871A (en) Multifunctional execution unit having independently operable adder and multiplier
US5418736A (en) Optimized binary adders and comparators for inputs having different widths
US5559977A (en) Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
US6157994A (en) Microprocessor employing and method of using a control bit vector storage for instruction execution
US5940311A (en) Immediate floating-point operand reformatting in a microprocessor
US6668316B1 (en) Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
US5983336A (en) Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups
EP0829045B1 (en) Coordinating the issue of instructions in a parallel instruction processing system
JPH10116268A (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
US5590351A (en) Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5787026A (en) Method and apparatus for providing memory access in a processor pipeline
US6175911B1 (en) Method and apparatus for concurrently executing multiplication and iterative operations
JP3578883B2 (ja) データ処理装置
US6233672B1 (en) Piping rounding mode bits with floating point instructions to eliminate serialization
US6092184A (en) Parallel processing of pipelined instructions having register dependencies
KR19990067773A (ko) 산술 또는 논리 연산의 수행과 동시에 조건 코드 비트를 발생하는 방법 및 시스템
US6012139A (en) Microprocessor including floating point unit with 16-bit fixed length instruction set

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040527

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20040527

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20040609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040820

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040820

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041007

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081015

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20081015

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20081015

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091015

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091015

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101015

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101015

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121015

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121015

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 9

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees