JPH10254699A - 浮動小数点演算システム - Google Patents
浮動小数点演算システムInfo
- Publication number
- JPH10254699A JPH10254699A JP9356470A JP35647097A JPH10254699A JP H10254699 A JPH10254699 A JP H10254699A JP 9356470 A JP9356470 A JP 9356470A JP 35647097 A JP35647097 A JP 35647097A JP H10254699 A JPH10254699 A JP H10254699A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- stack
- instructions
- virtual
- 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
Links
- 238000000034 method Methods 0.000 claims description 36
- 238000012545 processing Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 22
- 230000008439 repair process Effects 0.000 description 6
- 238000013479 data entry Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/30181—Instruction operation extension or modification
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
小数点交換演算を簡単化させた浮動小数点演算システム
及び方法を提供する。 【解決手段】 本発明浮動小数点演算システムによれ
ば、命令ユニットが複数個の命令を発生し、デコードユ
ニットが該複数個の命令を受取る複数個のデコーダを有
している。デコードユニットは複数個の命令をデコード
し且つ該命令のうちの何れかが浮動小数点交換命令を包
含する浮動小数点命令を含んでいるか否かを決定する。
論理ユニットが参照テーブルへ結合しており且つデコー
ドユニットにおける複数個のデコーダと結合している複
数個の論理装置を有している。デコードユニットから受
取った各浮動小数点交換命令に対し、論理ユニットがア
ップデートしたテーブルを発生し且つ物理レジスタの内
容を不変のまま維持する。制御ユニットが論理ユニット
からアップデートされたテーブルを受取り且つアップデ
ートしたテーブルで参照テーブルをアップデートする。
Description
ステム及び方法に関するものであって、更に詳細には、
プロセサにおける浮動小数点演算システム及び方法に関
するものである。本発明は、整数及び浮動小数点演算の
両方を包含する広い範囲の適用場面に対して使用するこ
とが可能なものであるが、本発明は、特に、浮動小数点
演算に対して有用なものであり、その様な場合に特に注
意を払って説明する。
動小数点ユニットを使用することにより、数学的演算能
力を次世代レベルとさせている。この様なマイクロプロ
セサは、インテルコーポレーションからのx86ファミ
リーのプロセサを包含している。命令スケジューリング
及びパイプライン型実行などの特徴によって、浮動小数
点ユニットは、二つの浮動小数点命令を単一のクロック
で実行することが可能である。例えば、該ユニットに組
込まれているものは洗練された八段パイプライン構成で
ある。最初の四つの状態は整数パイプラインと類似して
おり、一方最後の四つの段階は二段浮動小数点実行、丸
め、及びレジスタファイルへの結果の書込み、及びエラ
ー報告から構成されている。更に、加算、乗算、除算な
どの通常の浮動小数点機能はより高速の実行とするため
のハードワイヤード構成とされている。
キテクチャの特徴のうちの一つは、スタックとしての浮
動小数点レジスタの構成であり、それは、直接的なレジ
スタ参照を行うことが不可能であることを意味してい
る。従って、ほとんどのアクセスは、オペランドとし
て、トップオブスタック即ちスタックのトップを使用せ
ねばならない。例えば、何れのオペランドもトップオブ
スタック(TOS)、即ちスタックのトップ(上部)に
ない場合には、最初に、交換演算(処理)を行って、該
オペランドのうちの一つをスタックのトップ即ち上部に
配置させねばならない。
ならば、ほとんどのその他の命令と異なり、交換演算は
2個のレジスタを読取り且つ書込むからである。交換を
行うためには、スタックの物理レジスタ内のデータビッ
トを動き回さねばならない。1個のオペランドがスタッ
クのトップにある場合であっても、3個のレジスタの全
データビットが移動されねばならず、即ち、トップオブ
スタックレジスタ、トップオブスタックレジスタと交換
されるべきスタックレジスタ、一時レジスタである。一
時レジスタの代わりに、二つの位置を同時的に書込む技
術を使用することが可能であり、それはレジスタ間での
付加的な書込みを必要とする。従って、交換演算におい
て計算は存在しないが、その演算を実施するために二つ
のクロックが使用される。更に、その演算を完了するた
めには一時レジスタも必要とされる。従って、交換演算
を実行する従来の技術は、時間がかかり過ぎ且つ多数の
データ線を必要としている。
鑑みなされたものであって、上述した如き従来技術の欠
点を解消し、改良した浮動小数点演算システム及び方法
を提供することを目的とする。本発明の別の目的とする
ところは、必要とされるクロック数を減少させ且つ浮動
小数点交換演算を簡単化させた浮動小数点演算システム
及び方法を提供することである。
ジスタ、物理レジスタ、該仮想レジスタを該物理レジス
タへマッピングする参照テーブルを有する命令を処理す
るシステムが提供される。該システムは、複数個の命令
を発生する命令ユニットと、該命令ユニットからの複数
個の命令を受取り、該命令をデコードし且つ命令がオペ
ランドレジスタを一つの位置から別の位置へ移動させる
か否かを決定するデコードユニットと、該参照テーブル
及びデコードユニットへ結合されており、該デコードユ
ニットから受取った各交換命令に対して該参照テーブル
をアップデートさせる論理ユニットとを有しており、該
物理レジスタは、各交換命令に対して同一の内容を維持
する。
想レジスタ、該仮想レジスタのうちの一つに対してスタ
ックのトップとして指摘するスタックポインタ、物理レ
ジスタ、該仮想レジスタを該物理レジスタへマッピング
する参照テーブルを有しており、浮動小数点命令を処理
するシステムであって、複数個の命令を発生する命令ユ
ニット、該命令ユニットからの複数個の命令を受取り、
該命令をデコードし且つ命令が浮動小数点交換命令を包
含する浮動小数点命令を含んでいるか否かを決定するデ
コードユニット、該参照テーブル及びデコードユニット
へ結合されており該デコードユニットから受取った各浮
動小数点交換命令に対して該参照テーブルをアップデー
トさせる論理ユニット、を有しており、該物理レジスタ
が各浮動小数点交換命令に対して同一の内容を維持する
システムが提供される。
想レジスタ、該仮想レジスタのうちの一つに対してスタ
ックのトップとして指摘するスタックポインタ、物理レ
ジスタ、該仮想レジスタを該物理レジスタへマッピング
する参照テーブル、該参照テーブルにおけるエントリが
物理レジスタの位置を指摘する参照テーブルを有してお
り、浮動小数点命令を処理するシステムであって、複数
個の命令を発生する命令ユニット、該命令ユニットから
の複数個の命令を受取る複数個のデコーダを有してお
り、該複数個の命令をデコードし且つ該命令のうちの何
れか一つが浮動小数点交換命令を包含する浮動小数点命
令を含んでいるか否かを決定するデコードユニット、該
参照テーブルへ結合されており且つ該デコードユニット
における該複数個のデコーダへ結合されている複数個の
論理装置を包含しており、該デコードユニットからの各
浮動小数点交換命令に対してアップデートしたテーブル
を発生し、該各浮動小数点交換命令に対する物理レジス
タが同一のまま残存する論理ユニット、該論理ユニット
からアップデートされたテーブルを受取り且つ該アップ
デートされたテーブルで該参照テーブルをアップデート
する制御ユニット、を有するシステムが提供される。
想レジスタ、該仮想レジスタのうちの一つに対してスタ
ックのトップとして指摘するスタックポインタ、物理レ
ジスタ、該仮想レジスタを該物理レジスタへマッピング
する参照テーブルであって該参照テーブルにおけるエン
トリが物理レジスタの位置を指摘する参照テーブル、を
使用して浮動小数点命令を処理する方法において、命令
ユニットから命令を発生し、該命令をデコードし且つ該
命令がデコードユニットにおける浮動小数点交換命令を
包含する浮動小数点命令を含むものであるか否かを決定
し、且つ該命令が浮動小数点交換命令である場合に該参
照テーブルをアップデートし且つ該物理テーブルの内容
を維持する、上記各ステップを有する方法が提供され
る。
想レジスタ、スタックポインタ、物理レジスタ、該仮想
レジスタを該物理レジスタへ参照するマップであって該
マップ内のエントリが物理レジスタ位置を指摘するマッ
プ、を使用して浮動小数点命令を処理する方法におい
て、命令が浮動小数点交換命令であるか否かを決定し、
該命令が浮動小数点交換命令である場合には該物理レジ
スタの内容を維持しながら該スタック、仮想レジスタ、
マップをアップデートし、該命令がプッシュ命令である
か否かを決定し、該命令がプッシュ命令である場合には
該マップの内容を維持しながら、該スタック、スタック
ポインタ、仮想レジスタ、物理レジスタをアップデート
し、該命令がポップ命令であるか否かを決定し、該命令
がポップ命令である場合には該マップ、仮想レジスタ、
物理レジスタの内容を維持しながら、該スタック及びス
タックポインタをアップデートし、該命令が浮動小数点
交換命令、プッシュ命令、ポップ命令のうちの何れか一
つでない場合に該命令が浮動小数点レジスタ命令である
か否かを決定し、且つ該命令が浮動小数点レジスタ命令
である場合に該物理レジスタを参照するための該マップ
を使用して該命令を処理する、上記各ステップを有する
方法が提供される。
想レジスタ、スタックポインタ、物理レジスタ、該仮想
レジスタを該物理レジスタへ参照するマップであって該
マップ内のエントリが物理レジスタ位置を指摘するマッ
プを使用して、浮動小数点演算を実行するシステムにお
いて、命令が浮動小数点交換命令であるか否かを決定す
る手段、該命令が浮動小数点交換命令である場合に、該
物理レジスタの内容を維持しながら、該スタック、仮想
レジスタ、マップをアップデートする手段、該命令がプ
ッシュ命令であるか否かを決定する手段、該命令がプッ
シュ命令である場合に、該マップの内容を維持しなが
ら、該スタック、スタックポインタ、仮想レジスタ、物
理レジスタをアップデートする手段、該命令がポップ命
令であるか否かを決定する手段、該命令がポップ命令で
ある場合に、該マップ、仮想レジスタ、物理レジスタの
内容を維持しながら、該スタック及びスタックポインタ
をアップデートする手段、該命令が浮動小数点交換命
令、プッシュ命令、ポップ命令の何れか一つでない場合
に該命令が浮動小数点レジスタ命令であるか否かを決定
し、且つ該命令が浮動小数点レジスタ命令である場合に
該物理レジスタを参照する該マップを使用して該命令を
処理する、システムが提供される。
想レジスタ、該仮想レジスタのうちの一つをスタックの
トップとして指摘するスタックポインタ、物理レジス
タ、該仮想レジスタを該物理レジスタへマッピングする
参照テーブルであって該参照テーブルの内容が物理レジ
スタ番号を有している参照テーブル、を使用して、浮動
小数点命令を処理する方法において、参照テーブルエラ
ー信号が発生したか否かを決定し、該参照テーブルエラ
ー信号が発生しなかった場合に命令を解析してパーセル
を発生し、該パーセルが発行されたか否かを決定し、該
パーセルが発行されている場合にメモリ内の所定の位置
において該参照テーブルを保存し、該パーセルが浮動小
数点交換命令であるか否かを決定し、該パーセルが浮動
小数点交換命令である場合に、該参照テーブルをアップ
デートし且つ該物理レジスタを不変のまま維持する、上
記各ステップを有する方法が提供される。
スタ、物理レジスタ、該仮想レジスタを該物理レジスタ
へマッピングする参照テーブルを有する、命令を処理す
るシステムにおいて、複数個の命令を発生する命令ユニ
ット、該命令ユニットからの複数個の命令を受取り、該
命令をデコードし且つ一つの命令がオペランドレジスタ
を一つの位置から別の位置へ移動させるか否かを決定す
るデコードユニット、該参照テーブル及び該デコードユ
ニットへ結合しており、該デコードユニットから受取っ
た各交換命令に対して該参照テーブルをアップデート
し、該物理レジスタが該各交換命令に対して同一の内容
を維持する論理ユニット、を有するシステムが提供され
る。
ることの可能なシステムアーキテクチャを示している。
図1のシステムアーキテクチャは、L1キャッシュ及び
L2キャッシュの両方へ接続しているバスインターフェ
ース12へ接続している外部バスを有している。L1キ
ャッシュは、ブランチターゲットバッファ(RTB)1
8へ接続している命令キャッシュ16と、データキャッ
シュ22の両方を有している。命令キャッシュ16はフ
ェッチ/デコードユニット20へ接続しており、該ユニ
ット20はイッシュ(issue)即ち発行ユニット2
4へ接続している。発行ユニット24はメモリ棚26へ
接続すると共に演算論理ユニット(ALU)(28,3
0,32)及び浮動小数点ユニット(FPU)(34,
36)へ接続している。本発明は、就中、システムアー
キテクチャのフェッチ/デコードユニット20及び発行
ユニット24に焦点を当てるものである。
常、三つのフェーズ、即ちイッシュフェーズ(issu
e phase)即ち発行フェーズ、エクセキュートフ
ェーズ(execute phase)即ち実行フェー
ズ、リタイヤフェーズ(retire phase)即
ち回収フェーズで処理される。整数命令フローに類似し
ているこれらのフェーズを包含する浮動小数点命令のフ
ローを図2に示してある。発行フェーズは、命令を「順
番」に処理し且つフェッチ(fetch)42、パース
(parse)44、デコード(decode)46、
スワップ(swap)48、発行(issue)50を
包含している。実行フェーズは、命令を「順番外」に処
理し且つスケジュール(schedule)52、オペ
ランドフェッチ(operand fetch)54、
実行(execute)56、棚置き(shelve)
58を包含している。回収(retire)フェーズ
は、命令を「順番」に処理し且つ完了(complet
e)60、回収(retire)64、検索(retr
ieve)66、書戻し(writeback)68を
包含している。これら三つのフェーズの段はパイプライ
ンで処理される。
性のある部分については以下の三つの文献に詳細に記載
されており、これらの文献を引用により本明細書に取込
む。 (1)Popescu et al.米国特許第5,4
87,156号「逐次的に割り当てられ且つフェッチし
た順番で格納される命令の独立的にフェッチし、発行し
且つアップデートする演算を有するプロセサアーキテク
チャ(PROCESSOR ARCHITECTURE
HIVING INDEPENDENTLY FET
CHING ISSUING AND UPDATIN
G OPERATIONS OF INSTRUCTI
ONS WHICH ARE SEQUENTIALL
Y ASSIGNED AND STORED IN
ORDER FETCHED)」、1990年12月5
日、(2)Val Popescu et al.「メ
タフローアーキテクチャ(The MetaflowA
rchitecture)」、IEEEマイクロ、19
91年6月、(3)Gurindar S. Sohi
「高性能インタラプト可能マルチ機能ユニットパイプラ
イン型コンピュータ用命令発行論理(Instruct
ion Issue Logic for High−
Performance, Interruptibl
e, Multiple Functional Un
it,Pipelined Computers)」、
IEEE・トランズアクションズ・オン・コンピュータ
ズ、Vol.39、No.3、1990年3月。
命令フェッチステージ(段階)期間中に、キャッシュラ
インが命令キャッシュから命令フェッチバッファ内に読
込まれる。命令フェッチ段階はブランチターゲットキャ
ッシュと関連して動作し、それは命令キャッシュからの
次のフェッチアドレスを予測する。発行フェーズの命令
パース(解析)段階44は命令のタイプ及びその境界を
検知し且つ適宜の命令バイトを命令デコード段階へパス
する。命令デコード段階46において、パース(解析)
段階44からの命令バイトが、例えば、マイクロコント
ロールROMに加えて、4個のデコードへ並列的に供給
される。これらのデコーダは、例えば、x86命令バイ
トを「パーセル(parcel)」と呼ばれるRISC
演算へ翻訳する。次いで、これらのパーセルは命令発行
段階へ供給される。しかしながら、パーセルが命令発行
段階へ供給される前に、本発明の浮動小数点命令フロー
が、浮動小数点交換(FXCH)命令をサポートするス
ワップ段階48を包含しており、それはデェスティネー
ション(宛先)の内容をスタックトップレジスタとスワ
ップする。命令発行段階50は、それがロード/ストア
命令である場合には、メモリ棚と並列している命令棚内
にその命令を棚置きする。
いて、ALU又はFPUがオペランドの入手可能性及び
その年代に基づいて命令を選択する。全てのオペランド
が使用可能である最も古い命令が最初に選択される。命
令が実行のためにスケジュールされた後に、そのオペラ
ンドが結果棚か又はセイン(sane)レジスタファイ
ルの何れかからフェッチされる。結果棚は、その命令を
リタイヤ即ち回収させる前に、命令の結果を一時的に格
納するメモリ構造である。セインレジスタファイルは、
プログラマに対して見ることの可能な物理的レジスタフ
ァイルである。図1の例示的なシステムアーキテクチャ
において示したように、3個のALUと2個のFPUを
包含する5個の実行ユニットが存在している。ALU1
は全ての演算処理を行うことが可能であり且つALU2
は乗算及び除算を除く全ての演算処理を行うことが可能
である。ALU3はメモリ操作に対する間接的処置を解
決するために使用され、即ちそれはメモリ操作に対する
全てのアドレス計算を行う。FPU1は加算、整数から
浮動小数点への変換及びその逆、整数への丸め、減算及
びマルチメディア命令を扱うことが可能である。FPU
2は除算、平方根、乗算及び超越関数を扱うことが可能
である。従って、クロック毎に、浮動小数点ユニットに
対して、最大で2個の浮動小数点命令を発行することが
可能である。実行フェーズの最後の段階は棚置き(sh
elve)段階58である。実行フェーズは順番外で実
行されるが、次のフェーズである回収フェーズは順番通
りに実行される。従って、棚置き段階58において、コ
ミットされていない順番外に実行された命令の結果は結
果棚内に格納される。結果棚からのデータは従属命令に
よって使用することが可能である。
pletion)、回収(retire)、検索(re
trieve)、書戻し(writeback)を包含
している。完了フェーズ60において、命令の完了が検
知され且つ回収段階64がクロックサイクル当たりに回
収されるべき命令の数を決定する。命令が回収される
と、結果が検索段階66において結果棚から読取られ
る。次いで、結果棚からの結果は書戻し段階68におい
てプログラマが見ることの可能なレジスタファイルへコ
ミットされる。
で発行フェーズに焦点を当てたものであり、本発明の浮
動小数点演算システムについて更に詳細に説明する。
ように、従来技術において浮動小数点交換命令が実行さ
れる毎に、物理レジスタの実際のデータビットが動き回
され、多数のデータ線(ワイヤ)及びクロックを必要と
している。この問題を解消するために、本発明は、物理
レジスタの位置に対してポイント即ち指摘する浮動小数
点交換(FXCH)マップを使用している。従って、多
数のデータビットを動かす代わりに、FXCHマップの
みをシャッフル即ちあちこちと動かすものであり、それ
は著しく少ない数のクロック及びワイヤを必要とするに
過ぎないものである。一例を図6A−6Dに示してあ
る。
タック、各々がデータを示す8個のエントリを有する仮
想レジスタ、番号0乃至7によってアドレスされる8個
のデータ格納位置を有する物理レジスタを具備するレジ
スタファイル、及び各々が物理レジスタ番号を表わす3
ビットデータを有する8個のエントリを具備するFXC
Hマップを示している。スタックポインタが仮想レジス
タのうちの一つに対してトップオブスタック(TOS)
即ちスタックのトップ(上部)としてポイント即ち指摘
する。スタック及び仮想レジスタは物理レジスタではな
く、物理レジスタ内のデータの順番を異なる態様で示す
ものに過ぎない。実際の物理データはFXCHマップ及
び物理レジスタにおいてのみ格納されている。FXCH
マップは、物理レジスタの8個のレジスタを表わすため
に3ビットデータを格納している。レジスタ当たり80
ビットより大きなデータを格納することの可能な物理レ
ジスタは、例えばレジスタ、メモリなどの任意の適宜の
格納装置とすることが可能である。従来技術では、単
に、スタック、物理レジスタ、物理レジスタのうちの一
つをトップオブスタック(TOS)即ちスタックのトッ
プ(上部)としてポイント即ち指摘するスタックポイン
タを有するに過ぎず、それを図9A及び9Bに示してあ
る。
期状態を示しており、8個のスタック要素(300A)
が左側においてST(0)乃至ST(7)として示して
あり、それぞれデータエントリD0乃至D7を有してい
る。8個の仮想レジスタ302Aは、それぞれデータエ
ントリD0乃至D7で示してある。トップオブスタック
(TOS)301は、仮想レジスタのうちの一つをポイ
ント即ち指摘している。この場合には、TOS301は
初期的に仮想レジスタ「0」をポイントしている。8個
の物理レジスタ306AがデータエントリD0乃至D7
で示してある。FXCHマップ304Aは、仮想レジス
タ302Aと物理レジスタ306Aとの間に示されてい
る。FXCHマップ304Aは8個のエントリ0−7を
有しており、それは仮想レジスタを物理レジスタ位置に
対してマッピングしている。従って、初期的には、上述
したエントリが仮定される。
ば、ST(0)とST(3)とを交換即ちスワップする
場合には、本発明に従って、レジスタは図6Bに示した
ように変更される。特に、スタック300B及び仮想レ
ジスタ302Bにおいて、D3とD0とがスワップされ
る。従って、トップオブスタック(TOS)301は未
だに仮想レジスタ「0」をポイントしており、それは今
の状態ではD0を収容している。物理レジスタ位置
「3」をFXCHマップエントリ番号0に配置させ且つ
物理レジスタ位置「0」をFXCHマップエントリ番号
3に配置させることによって、FXCHマップ304B
がアップデート即ち更新される。物理レジスタ306B
の内容は不変のままである。従って、スタック300
B、仮想レジスタ302B、FXCHマップは変化した
が、物理レジスタ306Bは同一のままである。従っ
て、この命令の後に、トップオブスタックの内容を検索
するために、FXCHマップを最初にチェックして、ど
の物理レジスタがアクセスされるべきであるかを決定す
る。この場合には、TOS301はD3を収容する仮想
レジスタ「0」に対してポイント即ち指摘しており且つ
FXCHマップの対応するエントリ「0」はD3を有す
るものとして物理レジスタ「3」に対してポイント即ち
指摘している。
した従来技術における例と比較する。図6B及び9B
は、両方共、同一の初期状態(図6A及び9A)から開
始した同一の浮動小数点交換命令からの結果を示してい
る。この場合に、図9Bの物理レジスタ602B内のデ
ータの順番は図6Bの仮想レジスタ302B内のデータ
の順番と同一であり、且つ両方の例のスタックポインタ
は同一のレジスタ番号をポイントしている。しかしなが
ら、両者の差は、本発明の仮想レジスタは実際のレジス
タではなく、それらは単に物理レジスタの中のデータを
観察する一つの態様であり、本発明においては物理レジ
スタは変化していない。本発明において変化している唯
一の物理的なデータはFXCHマップにおけるものであ
り、それらは、エントリ当たり単に3個のビットを有す
るに過ぎず、物理レジスタ内のレジスタ当たり80個を
超えるビットと対比される。本発明の利点は、80個を
超えるビットの代わりに単に3個のビットが移動される
に過ぎないというにおいて明らかである。
ている。この場合には、ST(0)がST(6)と交換
される。従って、図6Bに示したレジスタ状態から継続
して、図6Cにおけるスタック300Cは、ST(0)
がD6を収容し且つST(6)がD3を収容するように
変化される。その他のスタックエントリは図6Bにおけ
るものと同一のままである。仮想レジスタ302Cはス
タック300Cと同じに変化され、TOS301はその
内容としてD6を有する仮想レジスタ「0」に対してポ
イントしている。FXCHマップ304Cが再度アップ
デート即ち更新される。この場合には、FXCHマップ
の0番目の位置(エントリ番号0)がアップデートされ
て物理レジスタ位置6に対してポイントし且つFXCH
マップの6番目の位置が物理レジスタ位置3に対してポ
イントすべくアップデートされる。この場合にも、物理
レジスタは不変のままである。
を示している。この場合には、ST(0)がST(1)
と交換される。上述した二つのFXCHの例と同一のス
テップに従って、スタック300D、仮想レジスタ30
2D、FXCHマップ304Dにおける変化を図6Dに
示してある。
ように、唯一の物理データの移動はFXCHマップにお
いて発生し、該マップは、本実施例においては、エント
リ当たり3個のビットを有するに過ぎず、それはレジス
タ当たり80を超えるビットを移動させることと対比さ
れる(少なくとも二つの物理レジスタ又は一時レジスタ
が使用される場合には3個の物理レジスタを交換を行う
場合に必要とされるので160を超えるビットの移動が
必要となる)。さらなる例については後に説明する。
する。図3は、本発明の一実施例を示した概略ブロック
図である。図3を参照すると、命令パーサ(parse
r)106が命令キャッシュ104から一つ又はそれ以
上の命令を検索する。命令パーサ106は該命令を「パ
ーセル(parcel)」と呼ばれる4個の個別的なR
ISC演算(RISC OPS)に分解する。これら4
個のパーセルはパーセルレジスタ(108A,108
B,108C,108D)内に格納される。各パーセル
レジスタはそのパーセルを対応するデコーダ(110
A,110B,110C,110D)へ送り、そこで、
該パーセルはデコードされて、そのパーセルが浮動小数
点交換命令を有するものであるか否かを決定し、更に、
そのオペランドレジスタを決定する。次いで、デコード
された命令は対応する論理ユニット(112A,112
B,112C,112D)へ送られる。
ック情報を受取り且つ浮動小数点交換命令が処理される
たびにアップデートされる現在又は既存のFXCHマッ
プを受取る。FXCHマップは、命令が浮動小数点レジ
スタを使用することを使用たびにルックアップテーブル
として使用される。なぜならば、FXCHマップは、上
述した例において説明したように、どこに物理データが
存在するかのキーを保持しているからである。論理ユニ
ットがFXCH命令を受取ると、論理ユニットは、単
に、FXCHマップをアップデートし且つ物理レジスタ
は変化されることはない。各アップデートされたFXC
Hマップは次のパーセルを処理するために次の論理ユニ
ットへ送られる。注意すべきことであるが、論理ユニッ
ト1(112A)から開始して論理ユニット4(112
D)までを全て1クロックにおいて順番に、パーセルレ
ジスタ1−4からの最大4個のパーセルを処理すること
が可能である。論理ユニット(112A,112B,1
12C,112D)は、更に、浮動小数点交換マップを
使用することにより浮動小数点レジスタを具備する命令
に対して、正しいオペランドST(Y)を獲得する。該
オペランドは、図3に示したように発行段階である次の
段階へ送られる。
れたFXCHマップ即ち「新しいマップ」及び論理ユニ
ット1(112A)前の現在のFXCHマップがマルチ
プレクサ114へ入力される。マルチプレクサ114は
マルチプレクサ114のセレクタとして作用する発行信
号に従って発行された最後のパーセルを処理した論理ユ
ニットの新しいマップを出力する。例えば、パーセルが
発行されない場合には、「古いマップ」(論理ユニット
1の既存のマップ)が選択され、1個のパーセルのみが
発行される場合には、論理ユニット1の新しいマップが
選択され、二つのパーセルが発行される場合には、論理
ユニット2の新しいマップが選択される、等々である。
注意すべきことであるが、例えば、二つのパーセルが発
行され且つ論理ユニット1が浮動小数点交換命令を処理
したが論理ユニット2は処理しなかった場合には、論理
ユニット2の新しいマップはマルチプレクサ114にお
いて未だに選択されている。なぜならば、この場合にお
ける論理ユニット2の新しいマップは論理ユニット1の
新しいマップと同一だからであり、即ち、FXCHマッ
プは論理ユニット2内において既存のマップから新しい
マップへ変化させていなかったからである。従って、ど
の論理ユニットも浮動小数点交換命令を受取らなかった
場合には、「古い」マップ(論理ユニット1の前)が4
個の論理ユニットのうちの各々から出力され且つどの一
つ又は複数個のパーセルが発行されたかに拘らずに、該
マルチプレクサから出力される。マルチプレクサ114
が新しいマップを選択すると、それは浮動小数点交換F
XCHマップレジスタ102へ出力され且つ別のマルチ
プレクサ122を介して物理的にアップデートされる。
マルチプレクサ122は、推測(speculativ
e)ユニット124からの「フラッシュ信号」に従っ
て、マルチプレクサ114からの出力(新しいマップ)
とバックアップ状態RAM116の出力(修復値)との
間で選択を行う。
理ユニット(112A,112B,112C,112
D)の各々から既存のFXCHマップ入力を受取る。こ
れらはマルチプレクサ114を参照して上述したのと同
様に発行される命令(パーセル)の数に従ってRAM1
16内に保存される。この場合に、発行用信号は、更
に、バックアップ状態RAM116に対する書込みイネ
ーブル信号としても作用し、従って、どの一つ又はそれ
以上のパーセルが発行されるかに依存して、論理ユニッ
トからの対応する既存の一つ又はそれ以上のマップが保
存される。バックアップ状態RAM内に既存のマップを
保存する理由は、「推測実行(speculative
execution)」と呼ばれるもののためであ
り、それは、例えば、上掲した米国特許第5,487,
156号及び「メタフローアーキテクチャ」の文献の両
方に詳細に記載されている。
命令などの制御依存性に起因するストールをできるだけ
多く回避し、候補命令の安定な供給を可能とすることに
よりパイプラインを満杯状態に維持するものである。こ
れを行うために、ブランチ即ち分岐がBTB18(図1
参照)によって推測され且つ分岐後の命令が、実際の分
岐が行われる前に処理されて、候補命令の安定なプール
即ち蓄えを維持する。そうでない場合には、該処理は、
分岐命令が処理されるまでストールし、貴重な時間を浪
費することとなる。しかしながら、分岐予測を有する発
行は、分岐予測が不正確な場合の状態である。従って、
誤った分岐後に処理された命令は使用不可能なものとな
る。この状態を矯正するために、バックアップ状態RA
Mが論理ユニットからの既存のマップを格納し、各既存
のマップは該マップを適用することの可能なパーセルの
識別(ID)に対応している。
正は、好適には、本発明においては、推測ユニット12
4から読取りアドレス(R)をバックアップ状態RAM
116へ送り且つID発生器118からの書込みアドレ
ス(W)を送ることによって実行される。ID発生器
は、各パーセルに対して独特のIDを発生する。この場
合には、ID発生器118は、発行用信号を受取り且つ
バックアップ状態RAM116へ書込みアドレスを出力
し、それは新しいマップがそのアドレスから開始して連
続的に書込まれる箇所の参照アドレスである。ID発生
器については、例えば、上掲した米国特許第5,48
7,156号及び「メタフローアーキテクチャ」の文献
に詳細に記載されている。
ーが検知される場合には、読取りアドレスがバックアッ
プ状態RAM116へ送られて、最後に有効なFXCH
マップ即ち「修復値」を探し出し且つフラッシュ信号が
マルチプレクサ122へ送られる。バックアップ状態R
AM116は該修復値をマルチプレクサ122へ出力
し、マルチプレクサ122はその修復値を浮動小数点交
換マップレジスタ102へ出力する。
及び4Bのフローチャートを参照して説明する。図4A
を参照すると、初期化ステップ202の後に、フラッシ
ュ信号がステップ204において受取られたか否かを決
定する。フラッシュ信号が受取られていない場合には、
次の命令がステップ208においてパース即ち解析され
る。注意すべきことであるが、ステップ206は1クロ
ックにおいて最大で4個のパーセルまで考慮する。ステ
ップ210は、問題の命令が2個のパーセルを発生する
命令であるか否かを決定する。例えば、命令がオペラン
ドとしてメモリ位置に対する一つの参照とレジスタに対
する一つの参照とを有する場合には、同一の命令が二つ
のパーセルレジスタ内にコピーされる。一つのコピーが
該メモリからのロードを取扱い且つ2番目のコピーがロ
ードされた値及び該レジスタに関して動作する。従っ
て、その命令が2個のパーセルを発生するような種類の
ものでない場合には、その命令はパーサから除去され且
つレジスタi(i番目の繰返しに依存)をデコードする
ためにコピーされる(ステップ210及び216)。し
かしながら、その命令が2個のパーセルを発生する場合
には、第一のパーセルに対して、その命令はそれをパー
サから除去することなしにデコードレジスタiへコピー
する(ステップ210,212,214)。第二パーセ
ルに対しては、その命令はパーサから除去され且つデコ
ードレジスタiへコピーされる(ステップ210,21
2,216)。
と、一つ又はそれ以上のパーセルがステップ218にお
いて発行されたか否かが決定される。そうでない場合に
は、本プロセスは終了する(ステップ232)。少なく
とも1個のパーセルが発生される場合には、対応する論
理ユニットへ入力された既存のマップが位置IDにおい
てバックアップ状態RAM内に書込まれる(ステップ2
18及び220)。
るための交換命令であり且つ好適には、トップオブスタ
ック即ちスタックの上部ST(0)をST(j)と交換
するための浮動小数点交換命令である場合には、FXC
Hマップがアップデートされる(ステップ222及び2
24)。問題のパーセルが浮動小数点交換命令ではない
場合には、FXCHマップはアップデートされない。し
かしながら、問題のパーセルが浮動小数点レジスタを有
している場合には、FXCHマップを使用して、各オペ
ランドの適宜の物理レジスタ番号を決定する(ステップ
226及び228)。ステップ224及び228の各々
の後に、次のIDを使用して次のパーセルが検索される
(ステップ230)。
が発生すると、パーセルK(それは、推測ユニットにお
けるエラーから発生する第一パーセルである)及び爾後
のパーセルがフラッシュ即ち廃棄される(図4Bにおけ
るステップ234)。次いで、修復値が位置Kにおいて
バックアップ状態RAMから読出され、FXCHマップ
を修復値の内容、即ち、エラーが発生する前のFXCH
マップの内容へ設定する(ステップ236及び23
8)。
動小数点命令におけるレジスタをアップデートする別の
プロセスについて図5を参照して説明する。図5は、F
XCH,PUSH,POP命令を含む異なるタイプの命
令を取扱うためのフローチャートを示している。この場
合には、図5のフローチャートは、図4Aのステップ2
22,224,226,228を置換することが可能で
ある。従って、図4Aのステップ220はステップ25
2へ接続され且つ図5のステップ270は図4Aのステ
ップ230へ接続される。
命令がFXCH命令である場合には、スタック、仮想レ
ジスタ、FXCHマップがアップデートされるが、物理
レジスタは不変のまま止まる(例えば、図6B−6D,
7B,8B,8E,8H参照)(ステップ250,25
2,254,256)。問題の命令がプッシュ(PUS
H)命令である場合には、スタック、仮想レジスタ、ス
タックポインタ、物理レジスタがアップデートされる
が、FXCHマップは不変のまま止まる(例えば、図7
A,8C,8D参照)(ステップ258及び260)。
問題の命令がポップ(POP)命令である場合には、ス
タック及びスタックポインタがアップデートされるが、
仮想レジスタ、物理レジスタ、FXCHマップは不変の
まま止まる(例えば、図7D及び8F参照)(ステップ
262及び264)。問題の命令が上述したものの何れ
でもないが、それが浮動小数点レジスタを包含する場合
には、FXCHマップを使用して、正しい物理レジスタ
からオペランドを獲得する(例えば、図7C及び8G参
照)(ステップ266及び268)。
ンプル命令について検討する。図7A−7DはPUS
H,FXCH,ADD,POP命令を示しており、且つ
図6Dに示したレジスタ状態から継続している。図6D
のレジスタ状態から開始して、図7Aは、D8をスタッ
クのトップ即ち上部へ挿入するためのプッシュ即ちPU
SH命令に対してアップデートしたレジスタを示してい
る。スタック400AはST(7)からD7を除去し、
D8に対して場所を開ける。スタックポインタはデクリ
メントし且つ現在はD8を収容している仮想レジスタ
「7」に対してポイントしている。FXCHマップ40
4Aは変化していないが、物理レジスタ「7」はD8へ
上書きされている。
(0)をST(5)と交換するためのFXCH命令に対
してアップデートしたレジスタを示している。この命令
は、スタック400Bにおいて反映されているように、
ST(0)とST(5)の内容をスワップする。仮想レ
ジスタ402B内において、仮想レジスタ「7」(TO
S)と仮想レジスタ「4」(ST(5))の内容がスワ
ップされている。FXCHマップ404Bもアップデー
トされており、従ってエントリ4及び7がスワップされ
て、仮想レジスタ「7」を物理レジスタ「4」へマップ
し且つ仮想レジスタ「4」を物理レジスタ「7」へマッ
プし、一方物理レジスタ406Bは不変のまま維持して
いる。
ST(0)の内容をST(7)の内容と加算させるAD
D命令を示している。ST(0)の内容はスタック40
0Cにおいて(D4+D3)へ変化しており且つ仮想レ
ジスタ「7」(TOS)の内容も(D4+D3)へ変化
している。FXCHマップ404Cは変化していない
が、物理レジスタ「4」はこの加算を反映して変化して
いる。図7Dは図7CにおけるADD演算からの加算結
果を除去するためのPOP即ちポップ命令を示してい
る。この場合には、スタック400Dは、TOSから
(D4+D3)を除去することによりST(7)におい
て空のスロットが形成されていることを示している。ス
タックポインタ(TOS)は仮想レジスタ「7」から仮
想レジスタ「0」へ1だけインクリメントされている
が、仮想レジスタ402Dは変化していない。POP命
令は、FXCHマップ404D又は物理レジスタ406
Dを変化させていない。
理レジスタを変化させた命令は図7A及び7Cにおける
プッシュ(push)及び加算(add)命令のみであ
る。FXCHもポップ(POP)も何れの命令も物理レ
ジスタを変化させていない。図8A−8HはPOP及び
ADD命令を含むより多様なサンプルを示している。図
8Aは図6A及び7Aと同様の初期状態を示している。
図8BはST(0)とST(6)とを交換するための別
のFXCH命令を示している。従って、スタック500
B、仮想レジスタ502B、FXCHマップ504Bは
アップデートされる。図8C及び8Dは図7C及び7D
に類似したPUSH命令を示しており、且つその結果が
示されている。次に、図8EはST(0)とST(7)
とを交換するためのFXCH命令を示している(図8D
のPUSH命令の後)。この場合には、TOS501は
仮想レジスタ「6」にあるので、ST(7)は仮想レジ
スタ「5」に位置されている。従って、図8Dの仮想レ
ジスタにおけるD5及びD9は図8Eにおいてスワップ
される。又、FXCHマップ504は5と0とをスワッ
ピングすることによって変化される。
するPOP命令を示している。スタックにおいて、PO
P命令はトップオブスタック即ちスタックの上部におけ
るデータを除去し且つ空のスロットが形成される。仮想
レジスタにおいては、スタックポインタが仮想レジスタ
「6」から「7」へポイントするために1だけインクリ
メントするが、エントリD5は除去されない。又、FX
CHマップ504F及び物理レジスタ506Fは変化し
ない。
へ加算される場合のADD命令を示している。図8Fを
参照すると、ST(2)はD1の値を有しており且つト
ップオブスタックはD8の値を有している。従って、ト
ップオブスタックは、現在、(D1+D8)を有してお
り且つST(2)は同一のまま止まる。このことは、仮
想レジスタ502Fにおいても反映されている。FXC
Hマップ504Gは変化することがないが、物理レジス
タ「7」は新しい番号がエンタされるので(D1+D
8)へ変化する。
8)を収容するトップオブスタックとD9を収容するS
T(6)とを交換するための別のFXCH命令を示して
いる(図8G参照)。この命令は、トップオブスタック
である仮想レジスタ「7」とトップオブスタックから六
つ下側である仮想レジスタ「5」とをスワップさせる。
FXCHマップ504Hは、0と7とをスワッピングす
ることによってアップデートされ、一方物理レジスタは
同一のまま止まる。従って、例えば、浮動小数点レジス
タST(6)を必要とする何らかのその後の命令は、正
しいオペランドに対し仮想レジスタ「5」を物理レジス
タ「7」へマップするFXCHマップ504Hを参照す
る。
演算のために必要とされるクロック数は、仮想レジスタ
及び、例えば、アップデートされる8個の物理レジスタ
番号を表わす3ビットを含むFXCHマップ又はルック
アップテーブルを使用することによって著しく減少され
ている。仮想レジスタ(プログラマによって見られる)
はFXCHマップによって物理レジスタに対してマッピ
ングされているので、物理レジスタの実際のデータビッ
トはあちこちと動かす必要はなく、それにより時間が節
約され且つ複雑なハードウエア配線は節約される。
詳細に説明したが、本発明は、これら具体例にのみ限定
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。例えば、本発明は、整数交換演算(操作)などのそ
の他の演算即ち処理へ適用することも可能である。
アーキテクチャを示した概略ブロック図。
た概略図。
実施例を示した概略ブロック図。
実施する処理の流れを示したフローチャート。
実施する処理の流れを示したフローチャート。
施する処理の流れを示したフローチャート。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
した概略図。
図。
図。
Claims (29)
- 【請求項1】 スタック、仮想レジスタ、前記仮想レジ
スタのうちの一つをスタックのトップとして指し示すス
タックポインタ、物理レジスタ、前記仮想レジスタを前
記物理レジスタへマッピングする参照テーブルを有して
おり、命令を処理するシステムにおいて、 命令を発生する命令ユニット、 前記命令ユニットから命令を受取り、前記命令をデコー
ドし且つ交換命令を含む命令のタイプを決定するデコー
ドユニット、 前記参照テーブル及びデコードユニットへ結合されてお
り、前記デコードユニットから受取った各交換命令に対
して前記参照テーブルをアップデートする論理ユニッ
ト、を有しており、前記物理レジスタが前記各交換命令
に対して同一の内容を維持することを特徴とするシステ
ム。 - 【請求項2】 請求項1において、前記命令ユニット
が、 命令キャッシュ、 前記キャッシュへ結合している命令パーサ、 前記命令パーサへ結合されており且つ解析した命令を受
取る複数個のパーセルレジスタ、を有することを特徴と
するシステム。 - 【請求項3】 請求項1において、前記命令が浮動小数
点命令を包含しており且つ前記論理ユニットが前記命令
の何れかのオペランドを得るために前記参照テーブルを
参照することを特徴とするシステム。 - 【請求項4】 請求項1において、前記命令が浮動小数
点交換命令を包含していることを特徴とするシステム。 - 【請求項5】 請求項1において、前記命令が整数命令
を包含していることを特徴とするシステム。 - 【請求項6】 スタック、仮想レジスタ、前記仮想レジ
スタのうちの一つをスタックのトップとして指摘するス
タックポインタ、物理レジスタ、前記仮想レジスタを前
記物理レジスタへマッピングする参照テーブルを有して
おり、浮動小数点命令を処理するシステムにおいて、 複数個の命令を発生する命令ユニット、 前記命令ユニットから前記複数個の命令をそれぞれ受取
る複数個のデコーダを有しており、前記複数個の命令を
デコードし且つ前記命令のうちの何れか一つが浮動小数
点交換命令を包含する浮動小数点命令を含むものである
か否かを決定するデコードユニット、 前記参照テーブルへ結合しており且つ前記デコードユニ
ットにおける前記複数個のデコーダへそれぞれ結合して
いる複数個の論理装置を有しており、前記デコードユニ
ットから受取った各浮動小数点交換命令に対してアップ
デートしたテーブルを発生させ、前記物理レジスタが前
記各交換命令に対して同一の内容を維持する論理ユニッ
ト、 前記論理ユニットからアップデートされたテーブルを受
取り且つ前記アップデートされたテーブルで前記参照テ
ーブルをアップデートさせる制御ユニット、を有するこ
とを特徴とするシステム。 - 【請求項7】 請求項6において、更に、前記論理ユニ
ット及び前記制御ユニットへ結合されているメモリを有
しており、前記メモリは、前記制御ユニットからの制御
信号に従って優先度参照テーブルで前記参照テーブルを
アップデートさせることを特徴とするシステム。 - 【請求項8】 請求項7において、更に、前記制御ユニ
ット及び前記メモリへ結合しているマルチプレクサを有
しており、前記マルチプレクサは、前記制御ユニットか
らの制御信号に従って、前記メモリからの前記優先度参
照テーブル及び前記論理ユニットからのアップデートさ
れたテーブルのうちの一つで前記参照テーブルをアップ
デートさせることを特徴とするシステム。 - 【請求項9】 請求項6において、前記命令ユニット
が、 命令キャッシュ、 前記キャッシュへ結合している命令パーサ、 前記命令パーサへ結合しており且つ解析された命令を受
取る複数個のパーセルレジスタ、を有していることを特
徴とするシステム。 - 【請求項10】 請求項6において、前記論理ユニット
が浮動小数点交換命令以外の浮動小数点命令に対して前
記参照テーブルを参照することを特徴とするシステム。 - 【請求項11】 スタック、仮想レジスタ、前記仮想レ
ジスタのうちの一つに対してスタックのトップとして指
摘するスタックポインタ、物理レジスタ、前記仮想レジ
スタを前記物理レジスタに対してマッピングする参照テ
ーブルを使用して命令を処理する方法において、 命令ユニットから命令を発生し、 前記命令をデコードし且つ前記命令がデコードユニット
における交換命令を含むものであるか否かを決定し、 前記命令が交換命令である場合に、前記参照テーブルを
アップデートし且つ前記物理レジスタの内容を不変に維
持する、上記各ステップを有することを特徴とする方
法。 - 【請求項12】 請求項11において、前記命令を発生
するステップが、前記命令を解析するステップを有して
いることを特徴とする方法。 - 【請求項13】 請求項11において、更に、前記参照
テーブルを使用して浮動小数点命令を実行するステップ
を有していることを特徴とする方法。 - 【請求項14】 請求項11において、前記命令が浮動
小数点交換命令を包含していることを特徴とする方法。 - 【請求項15】 請求項11において、前記命令が整数
命令を包含していることを特徴とする方法。 - 【請求項16】 請求項11において、前記参照テーブ
ルをアップデートするステップが、 各浮動小数点交換命令に対して、アップデートしたテー
ブルを発生し且つ前記物理レジスタの内容を維持し、 前記アップデートしたテーブルで前記参照テーブルをア
ップデートする、上記各ステップを有することを特徴と
する方法。 - 【請求項17】 請求項11において、更に、制御信号
に従って優先度参照テーブルで前記参照テーブルをアッ
プデートするステップを有することを特徴とする方法。 - 【請求項18】 請求項17において、前記優先度参照
テーブルで前記参照テーブルをアップデートするステッ
プが、 前記参照テーブルを前記アップデートしたテーブルか又
は前記優先度参照テーブルの何れかでアップデートする
かを決定し、 前記決定するステップに従って前記参照テーブルをアッ
プデートする、上記各ステップを有することを特徴とす
る方法。 - 【請求項19】 スタック、仮想レジスタ、スタックポ
インタ、物理レジスタ、前記仮想レジスタを前記物理レ
ジスタへ参照させるマップを使用して浮動小数点命令を
処理する方法において、 命令が浮動小数点交換命令であるか否かを決定し、 前記命令が浮動小数点交換命令である場合には、前記物
理レジスタの内容を不変のまま維持しながら、前記スタ
ック、仮想レジスタ及びマップをアップデートさせる、
上記各ステップを有することを特徴とする方法。 - 【請求項20】 請求項19において、更に、 前記命令がプッシュ命令であるか否かを決定し、 前記命令がプッシュ命令である場合には、前記マップの
内容を維持しながら、前記スタック、スタックポイン
タ、仮想レジスタ、物理レジスタをアップデートし、 前記命令がポップ命令であるか否かを決定し、 前記命令がポップ命令である場合には前記マップの内
容、仮想レジスタ、物理レジスタを維持しながら、前記
スタック及びスタックポインタをアップデートし、 前記命令が浮動小数点交換命令、プッシュ命令、ポップ
命令のうちの何れでもない場合に前記命令が浮動小数点
レジスタ命令であるか否かを決定し、 前記命令が浮動小数点レジスタ命令である場合に前記物
理レジスタを参照するために前記マップを使用して前記
命令を処理する、上記各ステップを有することを特徴と
する方法。 - 【請求項21】 スタック、仮想レジスタ、スタックポ
インタ、物理レジスタ、前記仮想レジスタを前記物理レ
ジスタへ参照するマップを使用して浮動小数点演算を実
行するシステムにおいて、 命令が浮動小数点交換命令であるか否かを決定する手
段、 前記命令が浮動小数点交換命令である場合に、前記物理
レジスタの内容を不変のまま維持しながら前記スタッ
ク、仮想レジスタ、マップをアップデートする手段、を
有することを特徴とするシステム。 - 【請求項22】 請求項21において、更に、 前記命令がプッシュ命令であるか否かを決定する手段、 前記命令がプッシュ命令である場合に、前記マップの内
容を維持しながら、前記スタック、スタックポインタ、
仮想レジスタ、物理レジスタをアップデートする手段、 前記命令がポップ命令であるか否かを決定する手段、 前記命令がポップ命令である場合には、前記マップ、仮
想レジスタ、物理レジスタの内容を維持しながら、前記
スタック及びスタックポインタをアップデートする手
段、 前記命令が浮動小数点交換命令、プッシュ命令、ポップ
命令の何れか一つでない場合に前記命令が浮動小数点レ
ジスタ命令であるか否かを決定する手段、 前記命令が浮動小数点レジスタ命令である場合に前記物
理レジスタを参照するために前記マップを使用して前記
命令を処理する手段、を有することを特徴とするシステ
ム。 - 【請求項23】 スタック、仮想レジスタ、前記仮想レ
ジスタのうちの一つをスタックのトップとして指摘する
スタックポインタ、物理レジスタ、前記仮想レジスタを
前記物理レジスタへマッピングする参照テーブルであっ
てその内容が物理レジスタ番号を有している参照テーブ
ルを使用して、浮動小数点命令を処理する方法におい
て、 参照テーブルエラー信号が発生したか否かを決定し、 命令を解析して前記参照テーブルエラー信号が発生しな
かった場合にパーセルを発生し、 前記パーセルが発行されているか否かを決定し、 前記パーセルが発行されている場合に前記参照テーブル
をメモリ内の所定の位置に保存し、 前記パーセルが浮動小数点交換命令であるか否かを決定
し、 前記パーセルが浮動小数点交換命令である場合に前記参
照テーブルをアップデートし且つ前記物理レジスタを不
変に維持する、上記各ステップを有することを特徴とす
る方法。 - 【請求項24】 請求項23において、前記参照テーブ
ルをアップデートするステップが、前記浮動小数点交換
命令のオペランドに従って前記参照テーブル内の物理レ
ジスタ番号をスワッピングするステップを包含している
ことを特徴とする方法。 - 【請求項25】 請求項23において、更に、 前記パーセルが浮動小数点交換命令でない場合に前記パ
ーセルが浮動小数点レジスタを有しているか否かを決定
し、 前記アップデートステップをスキップし且つ前記参照テ
ーブルを使用して命令オペランドを獲得する、上記各ス
テップを有することを特徴とする方法。 - 【請求項26】 仮想レジスタ、物理レジスタ、前記仮
想レジスタを前記物理レジスタへマッピングする参照テ
ーブルを包含する命令を処理するシステムにおいて、 複数個の命令を発生する命令ユニット、 前記命令ユニットから前記複数個の命令を受取り、前記
命令をデコードし且つ命令が二つのオペランドレジスタ
の内容をスワップするか否かを決定するデコードユニッ
ト、 前記参照テーブル及びデコードユニットへ結合されてお
り、前記デコードユニットから受取った各交換命令に対
して前記参照テーブルをアップデートし、前記物理レジ
スタが各交換命令に対して同一の内容を維持する論理ユ
ニット、を有することを特徴とするシステム。 - 【請求項27】 請求項26において、更に、前記物理
レジスタの内容を観察する一つの態様を示すスタック及
び前記仮想レジスタのうちの一つに対してスタックのト
ップとして指摘するスタックポインタを有しており、前
記仮想レジスタが前記物理レジスタの内容を観察する別
の態様を示していることを特徴とするシステム。 - 【請求項28】 請求項26において、前記命令が浮動
小数点交換命令を包含していることを特徴とするシステ
ム。 - 【請求項29】 請求項27において、前記命令が整数
交換命令を包含していることを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US77558396A | 1996-12-31 | 1996-12-31 | |
US08/775583 | 1996-12-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10254699A true JPH10254699A (ja) | 1998-09-25 |
JP3841131B2 JP3841131B2 (ja) | 2006-11-01 |
Family
ID=25104852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35647097A Expired - Lifetime JP3841131B2 (ja) | 1996-12-31 | 1997-12-25 | 浮動小数点演算システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US6035391A (ja) |
EP (1) | EP0851343B1 (ja) |
JP (1) | JP3841131B2 (ja) |
DE (1) | DE69734093D1 (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6230262B1 (en) | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
US6122656A (en) | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6240503B1 (en) | 1998-11-12 | 2001-05-29 | Advanced Micro Devices, Inc. | Cumulative lookahead to eliminate chained dependencies |
US6523106B1 (en) * | 1998-12-21 | 2003-02-18 | Intel Corporation | Method and apparatus for efficient pipelining |
US6338134B1 (en) | 1998-12-29 | 2002-01-08 | International Business Machines Corporation | Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data |
US6564312B1 (en) * | 1999-06-15 | 2003-05-13 | Koninklijke Philips Electronics N.V. | Data processor comprising an arithmetic logic unit |
US6339823B1 (en) * | 1999-07-20 | 2002-01-15 | Ip-First, L.L.C. | Method and apparatus for selective writing of incoherent MMX registers |
US6581155B1 (en) * | 1999-08-25 | 2003-06-17 | National Semiconductor Corporation | Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same |
US6343296B1 (en) * | 1999-09-03 | 2002-01-29 | Lucent Technologies Inc. | On-line reorganization in object-oriented databases |
US6584907B2 (en) * | 2000-03-17 | 2003-07-01 | Ensign-Bickford Aerospace & Defense Company | Ordnance firing system |
US7496734B1 (en) * | 2000-04-28 | 2009-02-24 | Stmicroelectronics, Inc. | System and method for handling register dependency in a stack-based pipelined processor |
WO2002069180A1 (en) * | 2001-02-21 | 2002-09-06 | United States Postal Service | Systems and methods for processing items in an item delivery system |
WO2002069195A1 (en) * | 2001-02-21 | 2002-09-06 | United States Postal Service | Systems and methods for producing and managing a tracking label in a an item delivery system |
WO2002069245A1 (en) * | 2001-02-21 | 2002-09-06 | United States Postal Service | Improved tracking label |
US7143937B2 (en) * | 2001-02-21 | 2006-12-05 | United States Postal Service | Systems and methods for utilizing a tracking label in an item delivery system |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7210026B2 (en) | 2002-06-28 | 2007-04-24 | Sun Microsystems, Inc. | Virtual register set expanding processor internal storage |
US7203820B2 (en) * | 2002-06-28 | 2007-04-10 | Sun Microsystems, Inc. | Extending a register file utilizing stack and queue techniques |
US7185186B2 (en) * | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US7043626B1 (en) | 2003-10-01 | 2006-05-09 | Advanced Micro Devices, Inc. | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming |
US20070192573A1 (en) * | 2006-02-16 | 2007-08-16 | Guillermo Savransky | Device, system and method of handling FXCH instructions |
US8914616B2 (en) * | 2011-12-02 | 2014-12-16 | Arm Limited | Exchanging physical to logical register mapping for obfuscation purpose when instruction of no operational impact is executed |
US9201656B2 (en) | 2011-12-02 | 2015-12-01 | Arm Limited | Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers |
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
MA44821A (fr) | 2016-02-27 | 2019-01-02 | Kinzinger Automation Gmbh | Procédé d'allocation d'une pile de registres virtuels dans une machine à pile |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
GB9112754D0 (en) * | 1991-06-13 | 1991-07-31 | Int Computers Ltd | Data processing apparatus |
US5522051A (en) * | 1992-07-29 | 1996-05-28 | Intel Corporation | Method and apparatus for stack manipulation in a pipelined processor |
US5367650A (en) * | 1992-07-31 | 1994-11-22 | Intel Corporation | Method and apparauts for parallel exchange operation in a pipelined processor |
US5551004A (en) * | 1993-05-28 | 1996-08-27 | Sgs-Thomson Microelectronics, Inc. | Structure which renders faulty data of a cache memory uncacheable in order that a partially functional cache memory may be utilized |
US5826094A (en) * | 1993-09-30 | 1998-10-20 | Intel Corporation | Register alias table update to indicate architecturally visible state |
US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
US5499352A (en) * | 1993-09-30 | 1996-03-12 | Intel Corporation | Floating point register alias table FXCH and retirement floating point register array |
US5613132A (en) * | 1993-09-30 | 1997-03-18 | Intel Corporation | Integer and floating point register alias table within processor device |
US5696955A (en) * | 1994-06-01 | 1997-12-09 | Advanced Micro Devices, Inc. | Floating point stack and exchange instruction |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
US5634118A (en) * | 1995-04-10 | 1997-05-27 | Exponential Technology, Inc. | Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation |
-
1997
- 1997-12-12 EP EP97310050A patent/EP0851343B1/en not_active Expired - Lifetime
- 1997-12-12 DE DE69734093T patent/DE69734093D1/de not_active Expired - Lifetime
- 1997-12-25 JP JP35647097A patent/JP3841131B2/ja not_active Expired - Lifetime
-
1999
- 1999-02-23 US US09/255,353 patent/US6035391A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69734093D1 (de) | 2005-10-06 |
EP0851343B1 (en) | 2005-08-31 |
EP0851343A3 (en) | 2000-03-22 |
US6035391A (en) | 2000-03-07 |
EP0851343A2 (en) | 1998-07-01 |
JP3841131B2 (ja) | 2006-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3841131B2 (ja) | 浮動小数点演算システム | |
JP3977016B2 (ja) | 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ | |
JP3628379B2 (ja) | 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置 | |
JP3751049B2 (ja) | パイプラインプロセッサおよびその動作方法 | |
JP3597540B2 (ja) | 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置 | |
US6253287B1 (en) | Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions | |
EP0401992B1 (en) | Method and apparatus for speeding branch instructions | |
US8769539B2 (en) | Scheduling scheme for load/store operations | |
US5835747A (en) | Hierarchical scan logic for out-of-order load/store execution control | |
WO1993022722A1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
US6018798A (en) | Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle | |
WO1996012228A1 (en) | Redundant mapping tables | |
JP2000029701A (ja) | 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 | |
JP3678443B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ | |
US6112296A (en) | Floating point stack manipulation using a register map and speculative top of stack values | |
JP3866921B2 (ja) | ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム | |
JP3866920B2 (ja) | 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ | |
US6405303B1 (en) | Massively parallel decoding and execution of variable-length instructions | |
JP3866513B2 (ja) | データストリーミングのためのコンピュータのプロセッサ及び方法 | |
CN115374923A (zh) | 基于risc-v扩展的通用神经网络处理器微架构 | |
US6205541B1 (en) | System and method using selection logic units to define stack orders | |
US5708788A (en) | Method for adjusting fetch program counter in response to the number of instructions fetched and issued | |
US5768553A (en) | Microprocessor using an instruction field to define DSP instructions | |
US6185674B1 (en) | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor | |
US6175909B1 (en) | Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051108 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060607 |
|
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: 20060704 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060801 |
|
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: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130818 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |