JPH1063509A - 浮動レジスタ・スピル・キャッシュ - Google Patents
浮動レジスタ・スピル・キャッシュInfo
- Publication number
- JPH1063509A JPH1063509A JP9186077A JP18607797A JPH1063509A JP H1063509 A JPH1063509 A JP H1063509A JP 9186077 A JP9186077 A JP 9186077A JP 18607797 A JP18607797 A JP 18607797A JP H1063509 A JPH1063509 A JP H1063509A
- Authority
- JP
- Japan
- Prior art keywords
- register
- precision
- spill
- registers
- data
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 3
- 238000000034 method Methods 0.000 claims description 52
- 238000004590 computer program Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 abstract description 26
- 238000010586 diagram Methods 0.000 description 18
- 238000011084 recovery Methods 0.000 description 17
- 238000005457 optimization Methods 0.000 description 7
- 238000004040 coloring Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- BBRBUTFBTUFFBU-LHACABTQSA-N Ornoprostil Chemical compound CCCC[C@H](C)C[C@H](O)\C=C\[C@H]1[C@H](O)CC(=O)[C@@H]1CC(=O)CCCCC(=O)OC BBRBUTFBTUFFBU-LHACABTQSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000002093 peripheral effect 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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/30138—Extension of register space, e.g. register cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Abstract
セッサ12を使用する浮動小数点単精度レジスタ14、
コンピュータ10の使用効率を改善するための浮動レジ
スタ・スピル・キャッシュ法20。値は、複数個の浮動
スピルスロット24を有する浮動スピル・キャッシュ2
2として使用される複数個の倍精度レジスタ16内に一
時的に保存される。値は単精度レジスタ14の一つから
スピルパッド30として使用される第2の単精度レジス
タ14に、ついでスピルパッドから、選択された浮動ス
ピルスロット24の一つに一般的にシフトされる。
Description
アーキテクチュアの分野とその効率的応用および使用に
関するものであり、より具体的には浮動小数点レジスタ
の効率的使用を改良する方法と手段に関するものであ
る。本発明による浮動レジスタ・スピル・キャッシュの
現在の主たる用途分野は、単精度演算を実行するとき
に、ある倍精度レジスタが十分使用されないことがある
スケーラブルプロセッサアーキテクチュア("SPARC")
および同様の構成を用いるコンピュータである。
ータアーキテクチュアの設計の主たる目的とする環境に
おいて、またかかるアーキテクチュアの利点を完全に活
用しようとするソフトウェアにおいて、比較的低速であ
るという意味で高価な演算である。一般的にレジスタス
ピルは、CPUのレジスタファイルからはるかに低速で非
効率的にしかアクセスできない2次記憶媒体にレジスタ
の内容を移動することを伴う。レジスタスピルは、すべ
ての利用可能なレジスタが使用中で、レジスタの内容を
メモリ位置内にストアするための命令を、生成したコー
ドに挿入する必要があるときに発生する。これは計算用
の割当てのためにレジスタを解放する目的で実行され
る。レジスタスピルには本来コストがかかるので、レジ
スタの割当てと使用に多大な努力が注がれたが、かかる
努力の主たる目標の一つはスピル・レジスタの必要性を
最小限に抑えることである。かかる努力の一例は、本発
明者に付与された米国特許第5,418,958号、名称"Alloca
tion by Decomposing, Re-Connecting and Coloring Hi
erarchical Program Regions"に見ることができる。
RCアーキテクチュア委員会が作成したマイクロプロセッ
サの仕様である。SPARC-V9は特定のチップではない。そ
うではなくて、SPARCインターナショナルからライセン
スを得た人なら誰でもマイクロプロセッサとして実現す
ることのできるアーキテクチュアの仕様である。図1は
SPARCアーキテクチュアの一側面を概略的に示してい
る。ここでコンピュータ10はマイクロプロセッサ12
を備えている。当業者には理解できるようにマイクロプ
ロセッサ12は図1の概略図の中で比率を無視して表現
され、またこの図ではマイクロプロセッサ12のごく少
数の関連ある論理的構成部品しか図示されていないが、
それは本開示に関連するコンピュータの側面をよりわか
りやすく図示するためである。コンピュータ10は一般
的に多数の通常の周辺機器、例えば、モニタ、キーボー
ドなどを備えているが、かかる周辺機器にはコンピュー
タ10との間でプログラムとデータを転送するための外
部記憶装置13も含まれる。外部記憶装置13は、フロ
ッピイディスクドライブ、ハードディスクドライブ、CD
ROMドライブなどの、きわめて多数の各種のタイプの装
置の中のいずれでもよい。さらに注意すべき点は、図1
でマイクロプロセッサ12は一体型のユニットして図示
されているが、SPARC-V9仕様はSPARC-V9アーキテクチュ
アを単一のチップ内に実現することを要求してはいな
い。
f0から%f31で指定された32個の単精度(32ビット)浮動
小数点レジスタ14と、%d0から%62で指定された32個の
倍精度(64ビット)浮動小数点レジスタ16と、を定め
る。第1の16個の倍精度レジスタ16は32個の単精度レ
ジスタ14と重なって、それぞれの倍精度レジスタが単
精度レジスタ14の2つと同じ物理的または論理メモリ
に対応し、これを使用する。例えば、%d0で指定された
倍精度浮動小数点レジスタ16は%f0と%f1で指定された
2つの単精度レジスタ14と重なる。第2の16個の倍精
度レジスタ16は単精度レジスタ14と重ならない。第
1の16個の倍精度レジスタ16は偶数のアドレス番号%d
0、%d2、%d4、・・・%d30で指定され、第2の16個の倍
精度レジスタ16は、ここでは偶数のアドレス番号%d3
2、%d34、%d36、・・・%d62で指定される。この配列はD
avid L. WeaverとTom Germondが編集し、SPARC INTERNA
TIONALの後援によってPTR Prentice Hallが発行した"Th
e SPARC Architecture Manual"(ISBN# 0-13-099227-5)
にもっと詳細に議論されている。ここで注意すべきこと
は、「単精度」と「倍精度」という用語にときどき異な
る定義がつけられることである。本書において、これら
の用語は「低精度」と「高精度」と同義語とし、低精度
と高精度がそれぞれ単精度と倍精度と定義されるか、ま
たはそれぞれ倍精度と4倍精度、などと定義されるかを
区別しない。
リ18もコンピュータ10の中に含められる。本書に使
用された用語「スタックメモリ」は「ランタイムメモ
リ」として割り当てられたメモリユニットの部分を指す
ものとする。典型的なレジスタ・スピルとスタックメモ
リ18からのリロードの一つの例は次のように表記する
ことができる。
ドのコマンドである。%spはスタックポインター位置で
あり、この例では、%sp+92は%sp+92のスタックメモリ位
置を表し、このメモリ位置は単なる例にすぎず、特別の
意味はない。%f#(#は整数を表す)は大きさが4バイ
トの単精度浮動小数点レジスタ14を定義し、上述の例
では、単精度浮動小数点レジスタ%f2は位置sp+92でメモ
リスタック18内に最初にスピルし、ついで位置sp+p2
内のデータが単精度レジスタ%f10内にリロードされるよ
うに記載されている。
度算術演算は単精度レジスタ14内のオペランドにしか
適用できない。さらに、単精度算術演算の結果は単精度
レジスタ14にしか書き込めない。したがって、単精度
算術演算だけが実行されるとき、または単精度演算に負
荷を掛ける単精度と倍精度の算術演算の組み合わせの
間、倍精度レジスタ16は十分使用されず、他方では単
精度レジスタ14の利用可能な量が不足して、過剰なレ
ジスタスピルを防止できないことがある。
単精度レジスタ14を増やすために倍精度レジスタ16
の使用を可能にする方法や手段は全く存在しない。事
実、SPARC-V9の仕様はとくに単精度データを倍精度レジ
スタ16に書き込めないようにしているので、これをあ
えて行うことはSPARC-V9の制作者の直感と意図の両方に
反することのように思われる。
コンピュータ、または本書に述べたSPARC-V9アーキテク
チュアの関連する態様を含む任意のコンピュータ内で単
精度算術演算の間の処理速度を向上させることを意図す
るものである。これは単精度データを保持するために倍
精度レジスタを使用することによって達成される。
ドがコンパイラによって生成されたとき、マイクロプロ
セッサを制御するためのコード内に最終的に実現され
る、マクロプロセッサの動作方法である。本発明の方法
は、利用可能な単精度レジスタ内にすぐに収納できる量
を超えた単精度データを収容するために利用可能であっ
て、十分使用されていない倍精度レジスタの使用を可能
にする。利用可能な単精度レジスタの隣接する対は倍精
度レジスタとしてアドレスできるので、データはそのよ
うな単精度レジスタの対から一時的保存のために倍精度
レジスタ内に移動され、マイクロプロセッサによる単精
度算術演算を完了するために要求されたときは、かかる
倍精度レジスタから上記単精度レジスタの対に移動され
る。これには通常2組の移動が必要になる。それは当初
データが保存された単精度レジスタから、そのデータを
倍精度レジスタに転送させるため単精度レジスタの特定
の隣接する対への第1の移動と、単精度レジスタの特定
の隣接する対からデータの一時的保存のために使用され
る倍精度レジスタへの第2の移動である。しかしなが
ら、以下に詳細に述べるごとく、適切な場合、2つの別
個の移動の必要性を無くすることによってさらに性能を
高めることができる。
源がもっと完全に使用され、コンピュータの性能はそれ
だけ向上する。本発明による方法はSPARC-V9仕様、かか
る仕様に従って製造されたハードウェア、およびそれに
使用するために設計されたソフトウェアと完全互換性が
ある。
明を実施するために現在判明している最良の態様および
本書に記載され、いくつかの図面に図示された好適実施
態様の工業的応用可能性に照らして当業者には明らかに
なるであろう。
発明を説明するものであり、本発明の原理を制限するも
のではない。本発明を実施するための現在知られている
最良の態様は浮動レジスタ・スピル・キャッシュ法であ
る。本発明の浮動レジスタ・スピル・キャッシュ法は図
2の流れ図に図示され、図中に一般的に参照番号20で
示されている。図3は本発明によるコンピュータ10の
資源割振りを示す、図1と同様の論理的略図である。図
3に示すごとく、本発明の方法20によれば、第2の組
の倍精度レジスタ16(偶数番号%d32から%d62で指定さ
れ、単精度レジスタ14と共通でないもの)は浮動スピ
ル・キャッシュ22である。浮動スピル・キャッシュ2
2内のこれらの倍精度レジスタ16は浮動スピル・スロ
ット24で示される。
キャッシュ22はコンパイラによってそこに値をスピル
させることのできるさらに別の媒体と見なされる。浮動
スピル・キャッシュ22の使用は単精度(浮動)レジス
タ14だけを単純に使用する場合ほど早くないが、それ
はスピル・キャッシュ22はコンピュータ10の単精度
機能単位で直接アクセスできないからである。しかしな
がらデータは、メモリスタック18に書き込み、そこか
ら回復するよりもはるかに高速に浮動スピル・キャッシ
ュ22に書き込み、そこから回復できるので、メモリス
タック18にスピルするレジスタに比較してはるかに時
間の節約になる。この点に関して、浮動値が単精度レジ
スタ14からメモリスタック18に保存されることを特
徴とする、本書で先に述べた従来の先行技術のメモリス
タック18へのスピルと同様に、本発明による浮動レジ
スタ・スピル・キャッシュ法20によれば、スピルした
浮動値は浮動スピルスロット24内に保存され、必要に
応じて同じ浮動スピルスロット24から後に回復され
る。
て、基本的浮動スピル・キャッシュ法20は「スピル」
動作26と「回復」動作28を有する。図2の例によれ
ば、一対の単精度レジスタ14と共存している倍精度レ
ジスタ16の1つはスピルパッド30で表される。図3
によれば、スピルパッド30は%d30で示される倍精度レ
ジスタ16であることが分かるが、%d0と%d30の間の倍
精度レジスタ16のどれでもそれに指定されることがで
きる。また、図2の例において、データは%d62で表され
る浮動スピルスロット24に保存され、そこから回復さ
れるが、同じ例を浮動スピル・キャッシュ22内の任意
の浮動スピルスロット24に適用することもできる。上
記の説明に照らして、それぞれの浮動スピルスロット2
4が2つの単精度レジスタ14の内容を収容する容量を
持つことが認められるだろう。この容量を完全に使用す
るために、「スピルパッド初期化」動作32はスピルパ
ッド30を特定のスピルスロット24内に含まれる値に
初期化する。上述のごとく、この例の目的のために、特
定のスピルパッド24は%d62で示されたものである。こ
れは、浮動小数点値を倍精度レジスタ16(%d62)から
倍精度レジスタ16(%d30)に移動することを意味する
fmovd %d62、%d30で表すことができる。
26内の「スピルパッドへの値の移動」動作34で、ス
ピルされる単精度レジスタ14の値がスピルパッド30
に移動される。スピルされる単精度レジスタ14が%f2
で示されるものであるこの例において、これはfmovs %f
5、%f30で表される。図3から分かるように、%f30で表
される単精度レジスタ14はスピルパッド30と一致す
る。ここで注意すべきは、スピルパッド30内の他の単
精度レジスタ14(%f31で示されるもの)はこの例のた
めに選択された特定のものに加えて、あるいはその代わ
りに使用することができる。すべてのこのような選択の
場合そうであるように、どの特定のアドレスが書き込ま
れるか、あるいは回復されるかは、それによって実行さ
れる特定の演算の必要に応じてコンピュータ10によっ
て選択される。特定の演算との関連においてどのアドレ
スが使用されるかということは、特に本書に開示された
場合をのぞいて、一般的に本発明の範囲を越えており、
且つ、かかる選択は当業者には理解されるであろう。
2で示された単精度レジスタ14の値を現在含んでいる
スピルパッド30の新しい値は、「スピルスロットへの
スピル」動作36において選択された浮動スピルスロッ
ト24(この例では%d62で示された浮動スピルスロット
24)内に移動される。これをfmovd %d30,%d62 と表す
ことができる。
に本書で説明した「スピル」動作26の結果として、
(特定の%f2浮動レジスタ14の値を含むように修正さ
れた)スピルパッド30の変更された値に対応する浮動
スピルスロット24部分だけが変更され、残りの浮動ス
ピルスロット24は「スピル」動作26の最初に含んで
いたのと同じ値を含むようにリロードされる。したがっ
て、それぞれの浮動スピルスロット24は2つの単精度
レジスタ14の値を収納する容量を確保することとがで
きる。
度レジスタ14の内容を同じ浮動スピルスロット24の
別の半分(%d62)にスピルさせる「スピル」動作26の
サンプルは、つぎのように記すことができる。
「スピル」動作26において浮動スピルスロット24の
一つに、先にスピルさせたデータを要求したときに実行
される。ここで、浮動レジスタ・スピル・キャッシュ法
20のこの基本的例を完了するために「スピル」動作2
6と「回復」動作28の両方が要求されるが、浮動レジ
スタ・スピル・キャッシュ法20は一般的に連続して実
行されないことが分かるだろう。実際、「スピル」動作
26が数回反復され、それにつづいて「回復」動作28
が数回反復されることがある。すなわち、スペースの必
要に応じてデータはスピルし、コンピュータ10がデー
タを必要とするのに応じて回復される。データを数回ス
ピルさせる必要が生じてから、スピルさせたデータのい
ずれかを回復する必要が生じることがある。
おいて、要求された特定の浮動スピルスロット24(こ
の例では%d62)の内容はスピルパッド30に移動され
る。これを fmovd %d62,%d30 と記すことができる。つ
ぎに、「スピルパッドからの回復」動作42において、
ロードされる特定の単精度レジスタ14(この例では%f
10)は、要求されたデータを含むスピルパッド30内の
単精度レジスタ14からロードされる。この例では、こ
れは%f30で示された単精度レジスタ14とする。これを
fmovs %f30,%f10と記すことができる。
らして理解できるように、本発明の現在知られている最
良の実施態様20によれば、任意の単精度レジスタ14
の値は、実際、任意の浮動スピルスロット24に個別に
スピルさせ、またそこから回復することが可能で、一方
それぞれの浮動スピルスロット24は2つの単精度レジ
スタ14に相当する全容量を保持することができるが、
個別の値を直接一つの単精度レジスタ14から一つの浮
動スピルスロット24内に移動させることはできない。
これらの目的を共に達成するために、本発明の現在知ら
れている最良の実施態様20の実例においては、単精度
レジスタ14から浮動スピルスロット24にデータをス
ピルさせるために3つの移動が要求される。状況によっ
ては、次のようにしてこの手順をさらに最適化できる:
ここでは特に検討しないプログラムデータ流れ解析その
他の手段によって、浮動スピルスロット24の半分が現
在使用状態(「生きている状態」)にないと判定できた
とき、「スピルパッド初期化」動作32を実行する必要
はなく、この動作は省略可能である。すなわち、「スピ
ルパッド初期化」動作32の目的は必要なデータを、現
在書き込まれていない浮動スピルスロット24の半分の
中に保存することだけである。その位置に特定のデータ
が存在しないとき、「スピルパッド初期化」動作32は
不要になる。かかる第1の「最適化スピル」動作26a
の例は図4に示され、データが単精度レジスタ14(%f
2)から浮動スピルスロット24(%d62)にスピルさ
れ、また浮動スピルスロット24(%d62)が後に単精度
レジスタ14の一つにリロードしなけばならないデータ
をすでに含んでいないことが分かっているとき、下記の
ように表すことができる。
く、選択された単精度レジスタ14(上の例では%f2)
は倍精度レジスタ16(上の例では%d2)と共存してい
る単精度レジスタ14のその対応する対の最初のものに
あたる。さらに「スピルパッドへの値の移動」動作34
はスピルパッド30(上の例では%f30)内の第1の単精
度レジスタ14内にデータを移動して選択された浮動ス
ピルスロット24の第1の未分割部分が使用され、次い
で図5に示す「スピルスロットへの値の移動」動作44
しか持たない第2の「最適化スピル」動作26bで、デ
ータは単精度レジスタ14から、選択された浮動スピル
スロット24に直接移動できる。これはfmovd %d2,%d62
で表すことができる。
ジスタ14のその対応する対の第2のもの(%f1または%
f31)に当たり、さらに「スピルパッドへの値の移動」
動作34がスピルパッド30(%f31)内の第2の単精度
レジスタ14内にデータを移動して、選択された浮動小
数点スピルスロット24の第2の未分割部分が使用さ
れ、スピルが行われる浮動スピルスロット24内に必要
なデータが既にないときにも、第2の最適化スピル動作
26bが適用できる。
している。図2と関連して先に述べた、第1の「回復動
作」28において、倍精度浮動スピルスロット24から
単精度レジスタ14にデータを移動すると単精度レジス
タ14の2つが再定義されることになり、このように再
定義されとくにリロードを意図したものではないどちら
の単精度レジスタ14も、その元の値を含むようにリロ
ードされることを保証することが一般的に必要で、それ
によって、「回復」動作28内で2つの別個の回復(移
動)動作が必要になる。再定義されたが、とくにリロー
ドを意図したものではない単精度レジスタ14が関連デ
ータを含んでいないことが分かったとき、その中に単一
の「スピルスロットからレジスタへの移動」動作46を
有する、「最適化回復」動作28aを使用することがで
きる。これは、浮動スピルスロット24(%d62)から倍
精度レジスタ16(%d10)に移動する場合に fmovd %d6
2,%d10で表すことができ、また単精度レジスタ14(%f
11)が必要なデータを含んでおらず、データが単精度レ
ジスタ14(%f10)内に移動されることを意図すると
き、データを単精度レジスタ14(%f11)内に移動する
ことを意図し、単精度レジスタ14(%f10)が必要なデ
ータを含んでいないときにも適用できる。
ティマイザ52とバックエンドコードジェネレータ54
を有する典型的な最適化コンパイラ48を示す。コンパ
イラ48のフロントエンド50は入力としてソース言語
プログラム56(すなわち、C言語、FORTRAN、などの
ソース言語で書かれたプログラム)を取り、ソース言語
プログラム56に対して各種の、字句、構文および意味
解析を実行する。第1の中間コード58はコードオプテ
ィマイザ52モジュールへの入力として使用され、本発
明の浮動レジスタ・スピル・キャッシュ法20が実行さ
れる特定のタイプのコンピュータ10に従って結果を最
適化するために、第1の中間コード58の改良が試みら
れる。
ード60をコードジェネレータ54に出力し、ジェネレ
ータ54は第2の中間コード60を2進プログラム62
に変換する。2進プログラム62は、この例では、図3
の外部記憶装置13である媒体内に保存され、実現され
るものである。(外部記憶装置13との関連において本
書で先に述べた形態のいずれか、またはプログラムを物
理的に保存できるほぼ任意の他の形態で実現された)2
進プログラム62は、本発明によれば、2進プログラム
62を実行したときに浮動レジスタ・スピル・キャッシ
ュ法20が実現されるように構成されている。
8は、必ずしも本発明の浮動レジスタ・スピル・キャッ
シュ法20が実行されるコンピュータ10である必要は
ないコンピュータ内で正常に動作することである。当業
者には理解できるように、通常の状況ではコードはコン
パイルされ、ついで複数の末端使用者によって実行され
る2進の形式で分配される。実際、最適化コンパイラ4
8がその中で動作するコンピュータはコンピュータ10
と同じタイプである必要はなく、あるいは最適化コンパ
イラ48がその中で動作するコンピュータは本発明の浮
動レジスタ・スピル・キャッシュ法20を実現するこの
できるタイプである必要はない。それにもかかわらず、
本発明の方法の現在知られている最良の実施態様20の
場合、本発明の方法を実行し制御するためのコードは、
SPARCアーキテクチュアを用いる同様なコンピュータで
コンパイルされ実行されることが予想され、この単純化
された例の目的のためには、関連するコードが図3に示
したコンピュータ10でコンパイルされると共に、つい
で、必要ならば実行されるものとする。
周知のごとく、コードオプティマイザ52は最適化コン
パイラ48内でいくつかの異なる機能を実行する。図8
は最適化コンパイラプロセス64のブロック図である。
最適化コンパイラプロセス64は本書における浮動レジ
スタ・スピル・キャッシュ法20の議論に関連する限り
においてコードオプティマイザ52(図7)を記述して
いる。最適化コンパイラプロセス64において、仮想レ
ジスタ干渉グラフの作成動作66は、図9のいくつかの
図に示したような仮想レジスタ干渉グラフ68を実現す
るための周知の従来の方法に従って実現される。かかる
方法は、"Method andSystem for Register Allocation
Using Multiple Interference Graphs"という名称で199
6年3月25日に提出された同時係属米国特許出願通番08/6
21,409号に詳しく論じられている、この同時係属出願は
参考文献として本書に合体されている。
ードオプティマイザ52によって複数個の仮想「ノー
ド」70が識別された直後の仮想レジスタ干渉グラフ6
8の初期状態を示している。ノード70は複数個の「エ
ッジ」72によって接続され示されている(図9の図の
中でノードを相互接続する線で表されている)。ノード
70とエッジ72の識別に関する議論は、先行技術の開
示の一部として、本書で先に参照した米国特許第5,418,
958号に含められている。要するに、ノード70はソー
スプログラム56の実行に必要なレジスタを表してい
る。図9の図の大幅に簡略化した例において、識別され
た4つのノード70(%v100から%v103で示される)と、
4つの相互連結エッジ72がある。第1の仮想レジスタ
干渉グラフ68aにおいてノード70は、ソースプログ
ラム56によって命じられた一連の単精度動作を実行す
るのに利用可能な現実の物理的単精度レジスタ14の有
無とは無関係に識別される。再度、図8のコードオプテ
ィマイザ52の図に戻って、エッジ71は仮想レジスタ
干渉グラフ68aの既知の彩色法に従って、仮想レジス
タ干渉グラフの彩色動作74で識別される。エッジ識別
決定動作76はエッジ72が残っているかを検査する。
エッジ72が残っていないとき、物理的レジスタ割当て
動作75において、コードオプティマイザ52は仮想ノ
ード70を利用可能な物理的レジスタ(この例では、単
精度レジスタ14である)に割り当てる。
2があるとき(図9の第1の仮想レジスタ干渉グラフ6
8aにあるのと同じように)、エッジ識別決定動作76
からコードオプティマイザ52の動作は仮想レジスタス
ピル動作78に進む。比較のために、図9の例におい
て、%v101で示されたノード70が、通常の仕方で、メ
モリ位置%sp+92にスピルし、コードオプティマイザ52
の動作が仮想レジスタ干渉グラフ彩色動作74に復帰し
て、図9に示すような第2の仮想レジスタ干渉グラフ6
8bを生成する。ここで注意すべきは、これらが従来の
先行技術のレジスタスピルとの関連において本書で先に
述べた例であることである。コードオプティマイザ52
において、先に本書で論じたレジスタスピルと比較し
て、単精度レジスタ14は最適化コンパイラ48の実行
の間に(必ずしも)実際にスピルするわけではない。そ
うではなくて、本書に先に開示した命令は最適化コンパ
イラ48から生じる2進プログラム62が現実にレジス
タをスピルするように挿入される。
ピルし、第2の仮想レジスタ干渉グラフ68bが仮想レ
ジスタ干渉グラフの彩色動作74で彩色された後でも、
物理レジスタ割当て動作75はまだすべてのノード70
を単精度レジスタ14にすぐに割り当てることはできな
い(なぜなら、第2の仮想レジスタ干渉グラフ68bに
見るごとく、エッジがのこっているから)。エッジ識別
決定動作76はコードオプティマイザ52の流れを仮想
レジスタスピル動作78に向ける。図9の例において、
先に論じた従来の先行技術のスピルとは異なり、仮想レ
ジスタスピル動作78のこの第2の反復は、浮動小数点
スピルスロット24%d62(図3)の第1の分割されてい
ない半分にノード70%102をスピルする、本書に先に詳
細に述べた、スピル動作26(図2)命令を挿入する。
これは残留エッジ72がない第3のレジスタ干渉グラフ
58Cに帰着し、エッジ識別決定動作76がコードオプ
ティマイザ52を終了させる。実際には、コードオプテ
ィマイザ52が本発明と無関係な他の機能を実行してい
る場合、コードオプティマイザ52はかかる他の機能を
果たしに行く。ここで言う「終わり」は単に図9の例に
示したコードオプティマイザの部分の終わりである。さ
らに理解しておかねばならないのは、コードオプティマ
イザ52は、実際の慣行では、ソースプログラム56の
2進プログラム62への変換の間に、本発明のスピル動
作26を果たすために、また本発明の回復動作28も果
たすために、本書に先に論じた命令挿入の多くの反復を
遂行している。したがって、図9との関連において図示
したコードオプティマイザ52の動作は本発明の方法の
現在知られている最良の実施態様20との関連におい
て、本書に先に論じた命令のいくつかの、最適化コンパ
イラ43による挿入の例にすぎない。
ティマイザ52は、本発明によれば、先行技術のコード
オプティマイザとそれほど違わない仕方で動作する。コ
ードオプティマイザ52は、コンベンショナルメモリス
タック18に加えて、単精度レジスタ14のスピル先の
ポテンシャル位置として浮動スピルキャッシュ22を利
用可能にするだけである。ある瞬間にどの浮動スピルス
ロット24が利用可能に成るかの問題は、すぐに利用可
能な一切かつすべての資源を追跡し続けるための従来の
先行技術の方法によって追跡される。かかる先行技術の
方法によって、コードオプティマイザ52が単精度レジ
スタ14の一つからスピルスロット24にスピルするの
が適切であると判定したとき、本発明のスピル動作26
を果たすために、図2との関連において先に記載した命
令が挿入される。同様に、スピルスロット24の一つの
中に保存されたデータがコンピュータ10によって要求
されたとき、回復動作28を果たすための命令が挿入さ
れて、その結果2進プログラム62が本発明の方法20
を完成する。図4と図5に関連して本書に先に論じた基
準が存在するとき、第1の最適化スピル動作26aまた
は第2の最適化スピル動作26bの命令が、それぞれ、
コードオプティマイザ52によって随意に挿入される。
図6に関連して本書に先に論じた基準が存在するとき、
最適化回復動作28aの命令が随意に挿入される。
例においては、単精度動作だけが遂行されるものとし
た。場合によっては、先に述べたごとく、どの単精度レ
ジスタ14および/または浮動スピルスロット24が別
のプログラム値を保持するためにすでに使用されていな
いことを追跡することは必要であるか、あるいは少なく
とも有利にはなるだろう。純粋に単精度プログラムの場
合これは問題にはならない。混合精度プログラム、マル
チタスク、マルチスレッド、などの場合、すでに使用さ
れている倍精度レジスタ16の一部に手を着ける必要が
あるだろう。倍精度レジスタ16の「第2の組」(番号
が%d32から%d62のもの)のいずれかが生きていないと
き、浮動スピルスロット24として自由に使用できる。
一例として、それぞれのスピルスロット24はその中で
の使用が自由であるプログラムの一部を詳細に述べる情
報で記載することができる。
して外部記憶装置への浮動小数点レジスタのスピルに比
較して性能が向上する。浮動スピル・キャッシュの場
合、記憶装置は関与しない。保存26および回復28動
作の両方は完全にSPARC V9 CPU内で実行される。これに
よって浮動スピル・キャッシュが利用可能なときはいつ
でもメモリシステムへの依存が解消される。依存性を解
消することによってメモリシステムは自由に他のメモリ
の読み出しまたは書き込み要求を処理できる。メモリキ
ャッシュ機構がメモリシステムによって使用されている
場合、メモリからのスピルとリロードによって生じた有
害なメモリキャッシュ状態の変更が排除される。記憶装
置の使用は必ずしも実レジスタよりも高速とは限らず、
かなり遅くなることもある。
ュ法20は既存のコンパイラ最適化システムおよび装置
にすぐに組み込み可能であり、本書に述べた利点が提供
されるので、業界にすぐに受け入れられるものと期待さ
れる。これらおよびその他の理由から、本発明の有用性
と業界の需要可能性はその範囲が広いだけでなく、長期
間持続することが期待される。
種の変更が可能である。例えば、将来的アーキテクチュ
アの設計が倍精度以上のレジスタを備えたとしても、本
発明の方法は、同様に、その最大の利点を生かすように
変更することができるであろう。
化手法を含むことができるであろう。例えば、状況によ
ってはスピルパッド30内の単精度レジスタ14の両方
をロードしてから、スピルパッド30内の値を浮動スピ
ルスロット24に移動することができる。これによって
かかる状況で要求される移動の数を大幅に減らすことが
できる。
スタ・スピル・キャッシュ法20を、コンパイルされた
プログラム以外のプログラムの中で単精度動作が遂行さ
れるアプリケーションに使用することであろう。
明細書の開示内容に従ってプログラムされた従来の汎用
コンピュータまたはマイクロプロセッサを用いて適宜実
施することができる。適切なソフトウェアコード化はソ
フトウェア技術の当業者には明らかなごとく、本発明の
開示内容を元にして熟練したプログラマによってすぐに
制作できる。本発明は、当業者には明らかなごとく、ア
プリケーション専用の集積回路を準備することによっ
て、あるいは通常の構成部品回路の適切なネットワーク
を相互接続することによっても実現できる。
ために、コンピュータをプログラムして使用させる命令
を含む記録媒体であるコンピュータプログラム製品も含
まれる。記録媒体には、フロッピディスク、光ディス
ク、CD−ROMおよび光磁気ディスクなどの各種のディス
ク、ROM、RAM、EPROM、EEPROM、磁気または光カード、
または電子的命令を保存するのに適した各種の媒体が含
まれる。
様のいくつかの例にすぎない。当業者には自明なごと
く、本発明に対して数多くの他の変更や改造が可能であ
るが、それをもって本発明の精神と範囲を逸脱すること
はできない。したがって、上記の開示は制限的なもので
はなく、添付の特許請求の範囲は、本発明の全ての範囲
を包含するものとして解釈される。
アの詳細だけを示す、既存の先行技術のSPARC-V9仕様に
よるコンピュータの論理的略図である。
様のブロック流れ図である。
す、図1の観点と同様の、論理的略図である。
る。
の一部のブロック流れ図である。
タに割り当てられたときのレジスタのいくつかの継起す
る状態を示す仮想レジスタ干渉図である。
Claims (21)
- 【請求項1】 中央処理装置(CPU)と前記CPUに接続さ
れたランダムアクセスメモリを有し、一定数の低精度レ
ジスタと一定数の高精度レジスタとを有する目的コンピ
ュータアーキテクチュア上で実行するための目的プログ
ラムをコンパイルするのに用いられるコンピュータシス
テムにおいて、 フロントエンドコンパイラと、コードオプティマイザ
と、バックエンドコードジェネレータとを有する、前記
コンピュータシステム内に置かれるコンパイラシステム
を備え、 前記コードオプティマイザが、目的プログラム内に前記
低精度レジスタから前記高精度レジスタにスピルするた
めの命令を挿入するように構成されている、前記コンピ
ュータシステム。 - 【請求項2】 前記低精度レジスタから前記高精度レジ
スタにスピルするための命令は、データを前記低精度レ
ジスタからスピルパッドに移動させる命令と、データを
前記スピルパッドから前記高精度レジスタに移動させる
命令とを含むものである請求項1に記載のコンピュータ
システム。 - 【請求項3】 前記スピルパッドが前記低精度レジスタ
の指定された一つである請求項2に記載のコンピュータ
システム。 - 【請求項4】 前記コードオプティマイザが、さらにデ
ータを前記高精度レジスタから前記低精度レジスタに回
復するための命令を前記目的プログラム内に挿入するよ
うに構成されている請求項1に記載のコンピュータシス
テム。 - 【請求項5】 前記低精度レジスタから前記高精度レジ
スタにスピルするための前記命令が、データを第1の低
精度レジスタから、選択された複数個の前記低精度レジ
スタに移動する第1の命令と、前記選択された複数個の
低精度レジスタから前記高精度レジスタの一つにデータ
を移動する第2の命令とを含む請求項1に記載のコンピ
ュータシステム。 - 【請求項6】 前記コンパイラシステムが、さらに前記
第1の命令と前記第2の命令の間に、データを前記一つ
の高精度レジスタから、前記選択された複数個の低精度
レジスタに移動し、次いで第2の低精度レジスタに移動
するための命令を挿入するものである請求項5に記載の
コンピュータシステム。 - 【請求項7】 前記低精度レジスタが、それぞれ高精度
レジスタの半分と一致するものである請求項1に記載の
コンピュータシステム。 - 【請求項8】 a)データを低精度レジスタから高精度
レジスタにスピルするステップと、 b)データを前記高精度レジスタから前記低精度レジス
タに回復するステップ、とを備えたコンピュータの動作
速度を増す方法。 - 【請求項9】 前記低精度レジスタが単精度浮動小数点
レジスタであり、 前記高精度レジスタが倍精度浮動小数点レジスタであ
る、請求項8に記載の方法。 - 【請求項10】 前記ステップaが、 データが一つの前記低精度レジスタからスピルパッドへ
移動される、スピルパッドへの値の移動動作と、 データが前記スピルパッドから浮動スピルスロットに移
動される、スピルスロットへのスピル動作と、を含むも
のである請求項8に記載の方法。 - 【請求項11】 前記スピルパッドが選択された前記低
精度レジスタの対であり、 前記浮動スピルスロットが選択された高精度レジスタで
ある、請求項10に記載の方法。 - 【請求項12】 ステップaに先立って、データが前記
浮動スピルスロットから前記スピルパッドに移動される
ものである請求項10に記載の方法。 - 【請求項13】 前記ステップaが、 データが直接低精度レジスタから高精度レジスタに移動
される、スピルスロットへの値の移動動作、を含むもの
である請求項8に記載の方法。 - 【請求項14】 前記ステップbが、 データがスピルスロットからスピルパッドに移動され
る、スピルスロットからの回復動作と、 データがスピルパッドから低精度レジスタに移動され
る、スピルパッドからの回復動作と、を含むものである
請求項8に記載の方法。 - 【請求項15】 前記スピルパッドが選択された低精度
レジスタの対であり、 前記浮動スピルスロットが選択された高精度レジスタで
ある、請求項14に記載の方法。 - 【請求項16】 前記ステップbが、 データが高精度レジスタである前記スピルスロットから
低ポイントレジスタに直接移動される、スピルスロット
からレジスタへの移動動作、を含むものである請求項8
に記載の方法。 - 【請求項17】 複数個の単精度レジスタと、 前記単精度レジスタのための一時的データ位置として動
作するように構成された複数個の倍精度レジスタと、 倍精度レジスタとしても動作することのできる単精度レ
ジスタの対を有する少なくとも1つのスピルパッドと、
を備えた割り当てられたコンピュータレジスタセット。 - 【請求項18】 前記スピルパッドが隣接する前記単精
度レジスタの対である請求項17に記載の割り当てられ
たコンピュータレジスタセット。 - 【請求項19】 データが前記複数個の単精度レジスタ
の一つから前記スピルパッドへ移動され、次いで前記ス
ピルパッドから前記倍精度レジスタの一つに移動される
ものである、請求項17に記載の割り当てられたコンピ
ュータレジスタセット。 - 【請求項20】 前記スピルパッドが隣接する前記単精
度レジスタの対である請求項19に記載の割り当てられ
たコンピュータレジスタセット。 - 【請求項21】 コンピュータ記録媒体と、前記コンピ
ュータ記録媒体内に埋め込まれ、コンピュータに目的コ
ンピュータプログラムの実効速度を最適化するようにさ
せるコンピュータプログラムコードの仕組みとを備え、
前記コンピュータプログラムコードの仕組みが、 いつ仮想レジスタをスピルさせる必要があるかを決定す
るように構成された第1のコンピュータコード装置と、 仮想レジスタを高精度レジスタにスピルするように構成
された第2のコンピュータコード装置と、を備えたコン
ピュータプログラム製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/673,521 US5901316A (en) | 1996-07-01 | 1996-07-01 | Float register spill cache method, system, and computer program product |
US08/673521 | 1996-07-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1063509A true JPH1063509A (ja) | 1998-03-06 |
Family
ID=24702997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9186077A Pending JPH1063509A (ja) | 1996-07-01 | 1997-06-27 | 浮動レジスタ・スピル・キャッシュ |
Country Status (4)
Country | Link |
---|---|
US (1) | US5901316A (ja) |
EP (1) | EP0822485B1 (ja) |
JP (1) | JPH1063509A (ja) |
DE (1) | DE69702096T2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748587B1 (en) * | 1998-01-02 | 2004-06-08 | Hewlett-Packard Development Company, L.P. | Programmatic access to the widest mode floating-point arithmetic supported by a processor |
US6170001B1 (en) * | 1998-05-27 | 2001-01-02 | Arm Limited | System for transfering format data from format register to memory wherein format data indicating the distribution of single or double precision data type in the register bank |
JP4573189B2 (ja) | 1998-10-10 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムコード変換方法 |
US6253299B1 (en) * | 1999-01-04 | 2001-06-26 | International Business Machines Corporation | Virtual cache registers with selectable width for accommodating different precision data formats |
US20020083309A1 (en) * | 2000-12-21 | 2002-06-27 | Sun Microsystems, Inc. | Hardware spill/fill engine for register windows |
US7206923B2 (en) * | 2003-12-12 | 2007-04-17 | International Business Machines Corporation | Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling |
US20090106744A1 (en) * | 2005-08-05 | 2009-04-23 | Jianhui Li | Compiling and translating method and apparatus |
US7840954B2 (en) * | 2005-11-29 | 2010-11-23 | International Business Machines Corporation | Compilation for a SIMD RISC processor |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
GB2518022B (en) * | 2014-01-17 | 2015-09-23 | Imagination Tech Ltd | Stack saved variable value prediction |
CN111435309A (zh) * | 2019-01-11 | 2020-07-21 | 中标软件有限公司 | 一种寄存器分配优化实现方法 |
US11237827B2 (en) * | 2019-11-26 | 2022-02-01 | Advanced Micro Devices, Inc. | Arithemetic logic unit register sequencing |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435753A (en) * | 1980-10-31 | 1984-03-06 | International Business Machines Corporation | Register allocation system using recursive queuing during source code compilation |
US4571678A (en) * | 1982-11-05 | 1986-02-18 | International Business Machines Corporation | Register allocation and spilling via graph coloring |
US4680701A (en) * | 1984-04-11 | 1987-07-14 | Texas Instruments Incorporated | Asynchronous high speed processor having high speed memories with domino circuits contained therein |
US4763255A (en) * | 1984-10-31 | 1988-08-09 | International Business Machines Corporation | Method for generating short form instructions in an optimizing compiler |
US4782444A (en) * | 1985-12-17 | 1988-11-01 | International Business Machine Corporation | Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering |
US5027272A (en) * | 1988-01-28 | 1991-06-25 | Weitek Corporation | Method and apparatus for performing double precision vector operations on a coprocessor |
JPH02187825A (ja) * | 1989-01-13 | 1990-07-24 | Mitsubishi Electric Corp | コンピュータ |
US5249295A (en) * | 1990-06-20 | 1993-09-28 | Rice University | Digital computer register allocation and code spilling using interference graph coloring |
EP0483967A3 (en) * | 1990-10-29 | 1993-07-21 | Sun Microsystems, Inc. | Apparatus for increasing the number of registers available in a computer processor |
US5418958A (en) * | 1992-07-15 | 1995-05-23 | Sun Microsystems, Inc. | Register allocation by decomposing, re-connecting and coloring hierarchical program regions |
US5268855A (en) * | 1992-09-14 | 1993-12-07 | Hewlett-Packard Company | Common format for encoding both single and double precision floating point numbers |
US5481706A (en) * | 1993-11-01 | 1996-01-02 | International Business Machines Corporation | System and method for creating thread-safe shared libraries |
US5590329A (en) * | 1994-02-04 | 1996-12-31 | Lucent Technologies Inc. | Method and apparatus for detecting memory access errors |
US5631859A (en) * | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
US5729748A (en) * | 1995-04-03 | 1998-03-17 | Microsoft Corporation | Call template builder and method |
-
1996
- 1996-07-01 US US08/673,521 patent/US5901316A/en not_active Expired - Lifetime
-
1997
- 1997-06-27 DE DE69702096T patent/DE69702096T2/de not_active Expired - Fee Related
- 1997-06-27 EP EP97110550A patent/EP0822485B1/en not_active Expired - Lifetime
- 1997-06-27 JP JP9186077A patent/JPH1063509A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US5901316A (en) | 1999-05-04 |
EP0822485A3 (en) | 1998-03-11 |
DE69702096T2 (de) | 2001-02-15 |
EP0822485B1 (en) | 2000-05-24 |
EP0822485A2 (en) | 1998-02-04 |
DE69702096D1 (de) | 2000-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6539541B1 (en) | Method of constructing and unrolling speculatively counted loops | |
US8412914B2 (en) | Macroscalar processor architecture | |
US7739442B2 (en) | Macroscalar processor architecture | |
US7594102B2 (en) | Method and apparatus for vector execution on a scalar machine | |
US7574588B2 (en) | Time-multiplexed speculative multi-threading to support single-threaded applications | |
US7398521B2 (en) | Methods and apparatuses for thread management of multi-threading | |
US6631514B1 (en) | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations | |
US7631305B2 (en) | Methods and products for processing loop nests | |
KR100456507B1 (ko) | 소프트웨어 데이터 프리펫치의 오버헤드 감소 방법 | |
US5889985A (en) | Array prefetch apparatus and method | |
JPH1063509A (ja) | 浮動レジスタ・スピル・キャッシュ | |
US8707016B2 (en) | Thread partitioning in a multi-core environment | |
US20030018826A1 (en) | Facilitating efficient join operations between a head thread and a speculative thread | |
US20070022413A1 (en) | Tiered Register Allocation | |
EP0924603A2 (en) | Compiler controlled dynamic scheduling of program instructions | |
JP2004240953A (ja) | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 | |
Zhuang et al. | Differential register allocation | |
Whaley | Automated empirical optimization of high performance floating point kernels | |
JP3341662B2 (ja) | 情報処理装置及び多ポートレジスタファイル | |
JPH06290057A (ja) | ループ最適化方法 | |
Adve et al. | The interaction of architecture and compilation technology for high-performance processor design | |
Li et al. | Speculative subword register allocation in embedded processors | |
WO1998006041A1 (en) | Array prefetch apparatus and method | |
CN112463723A (zh) | 一种微内核阵列的实现方法 | |
Putnam et al. | Dynamic Vectorization in the E2 Dynamic Multicore System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040610 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070529 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070829 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070903 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071204 |