JP3367438B2 - Conditional execution processing device - Google Patents

Conditional execution processing device

Info

Publication number
JP3367438B2
JP3367438B2 JP00690099A JP690099A JP3367438B2 JP 3367438 B2 JP3367438 B2 JP 3367438B2 JP 00690099 A JP00690099 A JP 00690099A JP 690099 A JP690099 A JP 690099A JP 3367438 B2 JP3367438 B2 JP 3367438B2
Authority
JP
Japan
Prior art keywords
execution
instruction
register
condition
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP00690099A
Other languages
Japanese (ja)
Other versions
JP2000207208A (en
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP00690099A priority Critical patent/JP3367438B2/en
Publication of JP2000207208A publication Critical patent/JP2000207208A/en
Application granted granted Critical
Publication of JP3367438B2 publication Critical patent/JP3367438B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】本発明は、複数の命令の依存
関係を解析して並列処理可能か否かを判定し、可能であ
れば並列処理を実行し、かつ条件実行レジスタと呼ばれ
るレジスタを有し、各命令に条件実行レジスタを対応さ
せてこの条件実行レジスタの値が予め定められた値の時
にのみ当該命令を実行させる条件実行処理装置に関す
る。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention analyzes the dependency relationship of a plurality of instructions to determine whether or not parallel processing is possible, executes parallel processing if possible, and has a register called a condition execution register. However, the present invention relates to a condition execution processing device that associates a condition execution register with each instruction and executes the instruction only when the value of the condition execution register is a predetermined value.
It

【0002】[0002]

【従来の技術】従来の条件実行処理装置の一例として
は、文献1:デビッド・A・パターソン(David A. Pat
terson)およびジョン・L・ヘネシー(John L. Hennes
sy)著「コンパイラ・アーキテクチャ:ア・クオンティ
テイティブ・アプローチ(Compiler Architecture: a Q
uantitative Approach)」(モルガン・カウフマン・パ
ブリッシャーズ社(Morgan Kaufmann Publishers, In
c.)発行、1996年)の第4.6節「Hardware Support for
Extracting More Parallelism」および第4.1節「Instru
ction-Level Parallelism: Concepts and Challenges」
に開示されている。
2. Description of the Related Art As an example of a conventional condition execution processing device, Reference 1: David A. Paterson (David A. Paterson)
terson and John L. Hennes
sy) "Compiler Architecture: a Q
uantitative Approach ”(Morgan Kaufmann Publishers, In
c.) Issued, 1996) Section 4.6 “Hardware Support for
Extracting More Parallelism "and Section 4.1" Instru
ction-Level Parallelism: Concepts and Challenges ''
Is disclosed in.

【0003】この文献1に開示される第1の従来例につ
いて説明する。第1の従来例による条件実行処理装置と
しては、条件転送(conditional move)命令を有する装
置が示されている。この装置では、3個のレジスタをオ
ペランドとして持つ条件転送命令に対して、第1のレジ
スタの値を第2にレジスタに転送する動作を、第3のレ
ジスタの値がある条件を満たす場合に限り実行する。す
なわち文献1に示されている例を引用して説明すると、
「CMOVZ R2,R3,R1」という条件転送命令に対して、レジ
スタR1の値がゼロに等しい場合にレジスタR3の値をレジ
スタR2に転送するという動作が、条件実行処理装置にお
いて実行される。
A first conventional example disclosed in Document 1 will be described. As a condition execution processing device according to the first conventional example, a device having a conditional move instruction is shown. In this device, in response to a conditional transfer instruction having three registers as operands, the operation of transferring the value of the first register to the second register is performed only when the value of the third register satisfies a certain condition. Run. That is, to explain by citing the example shown in Document 1,
For the conditional transfer instruction "CMOVZ R2, R3, R1", the operation of transferring the value of register R3 to register R2 when the value of register R1 is equal to zero is executed in the conditional execution processing device.

【0004】さらに、この条件実行処理装置は、複数の
命令に対して各命令のオペランド間の依存性(例えば、
一方の命令が作成するデータを他方の命令が使用する場
合など)を解析し、互いに依存性の無い命令について
は、命令を実行する回路に空き(その時点において他命
令の実行のために使用されていないこと)がある限り同
時に実行することができる。この場合、先に例として示
した条件転送命令についても、各オペランドについて同
様な依存性の解析が行われる。
Further, the conditional execution processing device has a dependency between operands of each instruction for a plurality of instructions (for example,
Analyze the data created by one instruction when the other instruction is used), and for the instructions that do not depend on each other, the circuit that executes the instruction is free (used at that time for the execution of other instructions). Not) can be done at the same time as long as there is. In this case, the same dependency analysis is performed for each operand even for the conditional transfer instruction described above as an example.

【0005】このような条件実行機能(この例では条件
転送命令)が条件実行処理装置に備えられている目的
は、複数の命令を同時に実行する機会を増やすことであ
る。すなわち、仮に条件実行機能がなければ、条件判断
の機能をif-else構造のようなプログラムの実行制御の
移動によって実現せざるを得ないが、一般にプログラム
の実行制御の移動は複数命令の同時実行を行うための解
析を妨げる効果を持つため、これにより並列実行を含ん
だ高性能なプログラムが書かれることが妨げられる。な
お、当然ながら、この条件実行処理装置上で実行するプ
ログラムを生成するためのコンパイル処理方法は、高性
能なプログラムを生成するために、この条件実行機能を
用いたプログラムを生成する必要がある。
The purpose of providing such a condition execution function (condition transfer instruction in this example) in the condition execution processing device is to increase the chances of simultaneously executing a plurality of instructions. That is, if there is no conditional execution function, the function of conditional judgment must be realized by moving the execution control of the program like the if-else structure, but in general, the transfer of the execution control of the program is executed by the simultaneous execution of multiple instructions. This has the effect of hindering the parsing to do so that it prevents writing high performance programs that include parallel execution. Naturally, the compile processing method for generating a program to be executed on this conditional execution processing device needs to generate a program using this conditional execution function in order to generate a high performance program.

【0006】次に、従来のコンパイル方法の一例が、文
献2:ロッド・アダムス(Rod Adams)およびスー・グ
レイ(Sue Gray)著「ユージング・コンディショナル・
エグゼキューション・トゥー・エクスプロイト・インス
トラクション・レベル・コンカレンシ(Using Conditio
nal Execution to Exploit Instruction Level Concurr
ency)」(ソフトウェア・プラクティス・アンド・エク
スペリエンス(Software−Practice and Experience)
誌掲載、1995年9月、ジョン・ウィリー・アンド・サン
ズ社(John Wiley & Sons, Inc.)発行)に開示されて
いる。
Next, an example of a conventional compiling method is described in Reference 2: Rod Adams and Sue Gray, "Using Conditional."
Execution to Exploit Instruction Level Concurrency (Using Conditio
nal Execution to Exploit Instruction Level Concurr
ency ”(Software-Practice and Experience)
Published in a magazine, September 1995, published by John Wiley & Sons, Inc.).

【0007】この文献2の開示の技術について、第2の
従来例として簡単に説明する。なお、説明の都合上、文
献2の開示の技術のうちこの発明に関わる部分のみ取り
出して説明する。第2の従来例におけるコンパイル方法
は、生成するプログラムが実行される処理装置として、
複数の命令の依存関係を解析して同時に実行可能か否か
を判定して可能であれば同時に実行し、条件実行レジス
タと呼ばれるレジスタを有し、各命令に条件実行レジス
タを対応させてこの条件実行レジスタの値があらかじめ
定められた値の場合にのみ当該命令を実行させることが
可能な条件実行処理装置を仮定している。
The technique disclosed in Document 2 will be briefly described as a second conventional example. For convenience of description, only the part of the technique disclosed in Document 2 related to the present invention will be described. The compiling method in the second conventional example is as a processing device in which a program to be generated is executed.
It analyzes the dependencies of multiple instructions and determines whether they can be executed at the same time. If possible, they are executed at the same time, and there is a register called the condition execution register. It is assumed that the condition execution processing device can execute the instruction only when the value of the execution register is a predetermined value.

【0008】ここで、「条件実行レジスタの値が”あら
かじめ定められた値”の場合にのみ当該命令を実行」と
いう動作について、文献2に示されている例を引用して
説明する。「T B2 LD R20, 8(SP)」という命令は、「条
件実行レジスタB2の値がT(True(真)を表す)である
場合に、「LD R20, 8(SP)」というロード命令を実行す
ることを示す。この「T」とは第2の従来例の条件実行
処理装置で用いられるBoolean型の値であり、同処理装
置での表現方法が確定している定数である。すなわち、
条件実行レジスタ(この場合B2)の値が「あらかじめ定
められた値」(この場合Tという定数)である場合に、
当該命令(この場合「LD R20, 8(SP)」)を実行するこ
とになる。
Here, the operation of "execute the instruction only when the value of the condition execution register is a" predetermined value "" will be described with reference to the example shown in Document 2. The instruction "T B2 LD R20, 8 (SP)" is the load instruction "LD R20, 8 (SP)" when the value of the conditional execution register B2 is T (representing True). Indicates to execute. The "T" is a Boolean type value used in the condition execution processing device of the second conventional example, and is a constant for which the expression method in the processing device is fixed. That is,
If the value of the condition execution register (B2 in this case) is a "predetermined value" (constant T in this case),
The relevant instruction (in this case, "LD R20, 8 (SP)") will be executed.

【0009】第2の従来例におけるコンパイル方法で
は、条件コンパクション(conditionalcompaction)と
呼ばれる、条件実行機能を用いた高性能なプログラムを
生成するための処理が行われる。まず、従来のコンパイ
ラ技術の方法に従い、プログラム全体を基本ブロックと
呼ばれる単位に分割し、次に一つの基本ブロックがグラ
フの一つのノードとして表現される制御フローグラフを
構築する。さらに、プログラムを構成する基本ブロック
の中から、基本ブロックに含まれる最後の命令が条件分
岐命令である基本ブロックを抽出する。
In the compiling method of the second conventional example, a process called conditional compaction for generating a high performance program using a conditional execution function is performed. First, according to the method of the conventional compiler technique, the entire program is divided into units called basic blocks, and then a basic flow block is constructed to represent a control flow graph as one node of the graph. Further, from the basic blocks constituting the program, a basic block whose last instruction included in the basic block is a conditional branch instruction is extracted.

【0010】次に、これらの基本ブロックについて、最
後の命令である条件分岐命令の分岐先の基本ブロック、
およびプログラム実行時にこの条件分岐命令に関して分
岐を行わない場合に制御が移行する基本ブロックを制御
フローグラフにより解析し、各々の基本ブロックについ
てこれに含まれる各命令に条件実行レジスタを対応させ
ることによって条件実行命令とし、これらをもともと条
件分岐命令が最後の命令であった基本ブロックに移動す
ることにより、高性能なプログラムを生成する方法であ
る。すなわち、第2の従来例は、条件分岐命令を用いる
ことにより、プログラム内の広い範囲においてコードの
移動を可能にし、その結果同時に実行できる命令を増や
しプログラムの性能を高めるものである。
Next, for these basic blocks, the basic block to which the conditional branch instruction, which is the last instruction, branches,
By analyzing the basic block to which control is transferred when a branch is not performed for this conditional branch instruction at the time of program execution by the control flow graph and making each conditional instruction included in each basic block correspond to the conditional execution register This is a method for generating a high-performance program by using execution instructions and moving them to the basic block where the conditional branch instruction was the last instruction originally. That is, in the second conventional example, by using a conditional branch instruction, it is possible to move the code in a wide range in the program, and as a result, the number of instructions that can be executed simultaneously is increased and the performance of the program is improved.

【0011】[0011]

【発明が解決しようとする課題】ところで、上述した第
1の従来例による条件実行処理装置では、複数の命令に
対して各命令のオペランド間の依存性を解析する場合
に、条件実行命令において判断に用いられるレジスタ
(前述の例におけるレジスタR1)についてはそれが保持
する値に関して何ら制約が存在しないため、もともとの
入力プログラムにおいて、互いに排他的に実行されるコ
ード部分が多数ある場合に、本来並列実行を含んだ高性
能な動作が可能となるべきであるにも関わらず、そのよ
うなコードを生成することが不可能となる場合がある。
By the way, in the condition execution processing apparatus according to the first conventional example described above, when analyzing the dependency between the operands of each instruction with respect to a plurality of instructions, the determination is made in the condition execution instruction. For the register used for (register R1 in the above example), there is no restriction on the value that it holds, so if there are many code parts that are mutually exclusive in the original input program, it is essentially parallel. While it should be possible to perform high performance operations, including execution, it may not be possible to generate such code.

【0012】このような場合について、図8を参照して
説明する。図8は排他的に実行されるコード部分が多数
あるプログラムの一例である。このプログラムは二重の
if−then−else構造をなし、その結果the
n部およびelse部を構成するコード部分101、1
02、103、104は、互いに排他的に実行される。
すなわちコード部分101、102、103、104の
うちどれが一つのみが実行され、2個以上のコード部分
がともに実行されることはない。従って、この排他的な
実行という特性を生かすような適切な条件実行命令機能
があれば、異なるコード部分に属する命令を同時に実行
できるという意味において、異なるコード部分に属する
命令間に依存関係は存在しない。
Such a case will be described with reference to FIG. FIG. 8 is an example of a program having a large number of exclusively executed code portions. This program has a double if-then-else structure, resulting in the
Code portions 101 and 1 constituting the n-part and the else-part
02, 103, and 104 are mutually exclusive.
That is, only one of the code portions 101, 102, 103, 104 is executed, and no two or more code portions are executed together. Therefore, there is no dependency between instructions belonging to different code portions in the sense that instructions belonging to different code portions can be executed simultaneously if there is an appropriate conditional execution instruction function that makes use of this characteristic of exclusive execution. .

【0013】しかしながら、第1の従来例の条件実行処
理では、条件実行において判断に用いられるレジスタに
ついてはそれが保持する値に関して何ら制約が存在しな
いため、これらの命令のオペランドが同一のレジスタを
使用していればレジスタ間の依存関係を認め命令の同時
実行が不可能であると判定せざるを得なくなり、高性能
な動作が得られなくなる。この高性能な動作が得られな
くなる場合について、図9を参照して説明する。図9
は、図8のコードに対して、第1の従来例の条件実行処
理装置の動作に基づいて作成されたコードの例(ただし
複数命令の同時実行のための命令の実行タイミングの決
定の前)である。
However, in the condition execution processing of the first conventional example, since there is no restriction on the value held by the register used for judgment in the condition execution, the operands of these instructions use the same register. If so, it is unavoidable to recognize the dependency relationship between the registers and judge that the simultaneous execution of instructions is impossible, so that a high-performance operation cannot be obtained. A case where this high-performance operation cannot be obtained will be described with reference to FIG. Figure 9
Is an example of code created based on the operation of the condition execution processing device of the first conventional example with respect to the code of FIG. 8 (however, before execution timing determination of instructions for simultaneous execution of a plurality of instructions). Is.

【0014】この例におけるコードの表記について簡単
に説明すると、まず、コードの1行が1個の命令に相当
する。次にtmp1、tmp2、tmp3、tmp4、tmp5、c1、c2、c
3、r1、r2、r3、r4、r10はすべて条件実行処理装置のレ
ジスタを示す。そこで、命令201、202、203、
204は、それぞれコード部分101、102、10
3、104から生成されたコードであるから、もともと
異なるコード部分に属する命令間であり、互いに依存関
係は存在しない。しかし、第1の従来例による条件実行
処理装置は、これらの命令が同一レジスタであるr10へ
の書き込みであることから依存関係があると判断し、こ
れらの命令を同時に実行することができない。
The code notation in this example will be briefly described. First, one line of code corresponds to one instruction. Then tmp1, tmp2, tmp3, tmp4, tmp5, c1, c2, c
3, r1, r2, r3, r4 and r10 all represent registers of the condition execution processing unit. Therefore, the commands 201, 202, 203,
204 are code portions 101, 102, 10 respectively.
Since the codes are generated from Nos. 3 and 104, they are instructions that originally belong to different code parts, and there is no dependency between them. However, the condition execution processing device according to the first conventional example cannot judge that these instructions are executed at the same time, because these instructions are written to r10 which is the same register, and it is determined that there is a dependency relationship.

【0015】つまり、第1の従来例の条件実行処理に基
づいて命令の実行タイミングの決定を行うと、本来依存
性がない2個の命令を並列に実行するように命令の実行
タイミングを決定することができないため、高性能な動
作が不可能となるのである。また、上述の第2の従来例
のコンパイル処理方法は、条件分岐命令を用いることに
より、プログラム内の広い範囲においてコードの移動を
可能にし、その結果複数の命令を同時に実行する可能性
を高めこれによりプログラムの性能を高める効果がある
ものの、第2の従来例では、多者択一的な条件実行レジ
スタが考慮されていないため、第1の従来例と同様な課
題が存在している。
That is, when the instruction execution timing is determined based on the conditional execution processing of the first conventional example, the instruction execution timing is determined so that two instructions that are originally independent of each other are executed in parallel. Therefore, high performance operation is impossible. In addition, the above-described second conventional compilation processing method enables the movement of the code in a wide range in the program by using the conditional branch instruction, thereby increasing the possibility of executing a plurality of instructions at the same time. Although this has the effect of improving the performance of the program, the second conventional example does not consider the multi-selective condition execution register, and therefore has the same problem as the first conventional example.

【0016】そこで本発明は、上述した事情に鑑みてな
されたもので、複数の命令にそれぞれ対応した条件実行
レジスタが異なる場合に、それら命令間に依存関係があ
るにも関わらず、これらの命令を並列実行することがで
きる条件処理実行装置を提供することを目的としてい
る。
Therefore, the present invention has been made in view of the above-described circumstances, and when the condition execution registers corresponding to a plurality of instructions are different, these instructions have a dependency relationship even though the instructions have a dependency relationship. The purpose is to provide a condition processing execution device that can execute in parallel.
It

【0017】[0017]

【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、複数の命令の依存関係
を解析し同時に実行可能か否かを判定して可能であれば
同時に実行し、かつ条件実行レジスタと呼ばれるレジス
タを有し、各命令に条件実行レジスタを対応させてこの
条件実行レジスタの値があらかじめ定められた値の場合
にのみ当該命令を実行させることが可能な条件実行処理
装置において、前記条件実行レジスタの値を書き込むべ
き値に設定した後、この書き込むべき値が「あらかじめ
定められた値」に等しいかどうかを調べ、双方の値が等
しいならば、当該条件実行レジスタ以外のすべての条件
実行レジスタの値を「あらかじめ定められた値」以外の
値とする書き込み手段と、複数の命令において、各命令
に対応している条件実行レジスタが異なる場合には、
れらの命令間には依存性が無いと判定して各命令実行タ
イミングを決定する依存性解析手段とを備えたことを特
徴とする。
In order to achieve the above object, according to the invention described in claim 1, the dependency relationship of a plurality of instructions is analyzed to determine whether or not they can be simultaneously executed, and if possible, they are simultaneously executed. Conditional execution that has a register called a conditional execution register and can execute an instruction only when the conditional execution register is associated with each instruction and the value of this conditional execution register is a predetermined value In the processor , write the value of the conditional execution register.
After setting this value, the value to be written is
Check if they are equal to the "determined value", and both values are equal
If it is correct, all conditions other than the relevant condition execution register
Change the value of the execution register to a value other than "predetermined value"
Writing means to a value in the plurality of instructions, when conditional execution register corresponds to each instruction are different, this
It is determined that there is no dependency between these instructions, and each instruction execution
And dependency analysis means for determining the iming .

【0018】請求項2に記載の発明は、入力プログラム
(原始プログラム)の意味解析を行って、これを多者択
一型条件実行処理装置上で実行するプログラム(コー
ド)に変換するコンパイル処理であって、プログラム内
の互いに排他的に実行されるコード部分を解析して抽出
し、各コード部分を構成する命令に対してそれぞれ1個
の条件実行レジスタを対応づけることにより、条件実行
命令を使用する出力コードを生成するコンパイル処理を
行うことを特徴とする請求項1に記載の条件実行処理装
置である。
The invention according to claim 2 is a compiling process for performing a semantic analysis of an input program (source program) and converting it into a program (code) to be executed on a multi-choice type conditional execution processing device. there was extracted by analyzing each other code portions are executed exclusively in the program, the correspondence Rukoto one conditional execution register respectively instructions constituting each code portion, condition execution
A compile process that produces output code that uses the instructions
A conditional execution processing apparatus according to claim 1, characterized in that.

【0019】[0019]

【発明の実施の形態】以下、図面を参照して本発明の実
施の形態について説明する。 <第1の実施の形態> (1)構成 先ず図1および図2を参照して第1の実施の形態につい
て説明する。図1は第1の実施の形態による条件実行処
理装置の構成を示す機能ブロック図、図2は依存性解析
部304の構成を示す機能ブロック図である。図1に示
すように、条件実行処理装置301は、メモリ307に
貯えられているプログラムを読み出して、プログラムを
構成する命令を実行して演算を行い、その演算結果をメ
モリ307、汎用レジスタファイル308、および条件
実行レジスタファイル309に書き込む装置であって、
命令フェッチ部302、命令デコード部303、依存性
解析部304、命令実行部305、および結果書き込み
部306を備える。
BEST MODE FOR CARRYING OUT THE INVENTION Embodiments of the present invention will be described below with reference to the drawings. <First Embodiment> (1) Configuration First, a first embodiment will be described with reference to FIGS. 1 and 2. FIG. 1 is a functional block diagram showing the configuration of the condition execution processing device according to the first embodiment, and FIG. 2 is a functional block diagram showing the configuration of the dependency analysis unit 304. As shown in FIG. 1, the condition execution processing device 301 reads a program stored in the memory 307, executes the instructions constituting the program to perform an operation, and outputs the operation result to the memory 307 and the general-purpose register file 308. , And a device for writing to the condition execution register file 309,
An instruction fetch unit 302, an instruction decoding unit 303, a dependency analysis unit 304, an instruction execution unit 305, and a result writing unit 306 are provided.

【0020】命令フェッチ部302は、メモリ307に
貯えられている命令を読み出し、命令デコード部303
は読み出された命令の内部構造を解析して命令の種類と
命令オペランドの内容を解析し、命令実行部305は依
存性解析部304によって決定された命令実行タイミン
グに従って命令を実行して演算を行い、結果書き込み部
は演算結果を、メモリ307、汎用レジスタファイル3
08および条件実行レジスタファイル309にそれぞれ
書き込む。依存解析部304は、命令デコード部303
によって解析された命令オペランドの内容に基づき、命
令実行タイミングを決定するものであり、図2に示すよ
うに、条件実行レジスタ比較部401、オペランド比較
部402および命令実行タイミング決定部403から構
成される。
The instruction fetch unit 302 reads out the instructions stored in the memory 307, and the instruction decoding unit 303.
Analyzes the internal structure of the read instruction to analyze the type of the instruction and the content of the instruction operand, and the instruction execution unit 305 executes the instruction in accordance with the instruction execution timing determined by the dependency analysis unit 304 to perform an operation. Then, the result writing unit stores the calculation result in the memory 307 and the general-purpose register file 3.
08 and the condition execution register file 309, respectively. The dependency analysis unit 304 includes an instruction decoding unit 303.
The instruction execution timing is determined on the basis of the content of the instruction operand analyzed by, and is composed of a condition execution register comparison unit 401, an operand comparison unit 402, and an instruction execution timing determination unit 403, as shown in FIG. .

【0021】ここで、図2を参照して依存解析部304
の構成について説明する。この図において、条件実行レ
ジスタ比較部401は、依存解析を行おうとしている複
数の命令の中で条件実行命令である命令群について、そ
の条件レジスタの比較を行う。オペランド比較部402
は、条件実行レジスタ以外のオペランドについて比較を
行う。命令実行タイミング決定部403は、条件実行レ
ジスタ比較部401およびオペランド比較部402の解
析結果に基づいて、各命令を実行するタイミングを決定
する。
Here, referring to FIG. 2, the dependency analysis unit 304
The configuration of will be described. In this figure, the condition execution register comparison unit 401 compares the condition registers of an instruction group that is a condition execution instruction among a plurality of instructions for which dependency analysis is to be performed. Operand comparison unit 402
Compares the operands other than the condition execution register. The instruction execution timing determination unit 403 determines the timing to execute each instruction based on the analysis results of the condition execution register comparison unit 401 and the operand comparison unit 402.

【0022】(2)動作 次に、第1の実施の形態における動作について説明す
る。上記構成による条件実行処理装置では、依存解析部
304の動作および条件実行レジスタファイル309へ
の値書き込みの動作に特徴を備えているので、以下、図
3および図4を参照して依存解析部304の動作および
条件実行レジスタ309への値書き込みの動作について
説明する。まず、図3は依存解析部304の動作を示す
フローチャートである。依存解析部304では、命令デ
コード部303の処理が終わりオペランドの種類が解析
された命令群について命令実行タイミングを決定する。
そのためには、これらの命令群に属する命令について全
ての2命令の組み合わせに関してそれらの依存関係を解
析しなければならない。
(2) Operation Next, the operation of the first embodiment will be described. Since the condition execution processing device having the above-described configuration is characterized by the operation of the dependency analysis unit 304 and the operation of writing a value to the condition execution register file 309, the dependency analysis unit 304 will be described below with reference to FIGS. 3 and 4. And the operation of writing a value to the condition execution register 309 will be described. First, FIG. 3 is a flowchart showing the operation of the dependency analysis unit 304. The dependency analysis unit 304 determines the instruction execution timing for the instruction group in which the processing of the instruction decoding unit 303 ends and the type of the operand is analyzed.
To this end, it is necessary to analyze the dependency relationships of all the two instruction combinations for the instructions belonging to these instruction groups.

【0023】そこで、最初に全ての命令組み合わせにつ
いて、未処理のものを選択し(ステップSA1)、その
内で各命令の条件実行レジスタが同一であるかどうかを
調べる(ステップSA2)。そして、両方の命令とも条
件実行レジスタが対応付けられている場合、すなわち両
方の命令とも条件実行命令である場合で、かつその条件
実行レジスタが異なると、各命令はプログラム内の互い
に排他的に実行されるコード部分に属するから、ステッ
プSA3に処理を進め、これらの命令間には依存性が無
いと判定する。
Therefore, first, for all instruction combinations, unprocessed ones are selected (step SA1), and it is checked whether the condition execution registers of the respective instructions are the same (step SA2). If both instructions are associated with the conditional execution registers, that is, both instructions are conditional execution instructions, and if the conditional execution registers are different, the instructions execute mutually exclusive in the program. Since it belongs to the code portion to be processed, the process proceeds to step SA3, and it is determined that there is no dependency between these instructions.

【0024】一方、条件実行レジスタが同一であるか、
あるいは少なくとも一方の命令が条件実行命令でない場
合は、ステップSA4に処理を進め、従来の依存性解析
の方法によって、両方の命令に依存性があるかどうかを
判定する。この後、ステップSA5では、すべての命令
の組み合わせについて調べ終えたかどうかを判断し、調
べ終えていない時には判断結果が「NO」となって、上
述したステップSA1に処理を戻すが、調べ終えた時に
は判断結果が「YES」となり、次にステップSA6に
処理を進めて、従来の命令スケジューリングの方法に従
って各命令実行タイミングを決定する。
On the other hand, whether the condition execution registers are the same,
Alternatively, if at least one of the instructions is not a conditional execution instruction, the process proceeds to step SA4, and it is determined by the conventional dependency analysis method whether or not both instructions have a dependency. After that, in step SA5, it is determined whether or not all combinations of instructions have been checked. If the check has not been completed, the determination result is "NO", and the process returns to step SA1 described above, but when the check is finished, The result of the determination is "YES", and the process proceeds to step SA6 to determine the instruction execution timing according to the conventional instruction scheduling method.

【0025】次に、図4を参照して条件実行レジスタフ
ァイル309への値書き込み動作について説明する。条
件実行レジスタファイル内のある条件実行レジスタに値
を書き込む場合、まずステップSB1に処理を進め、当
該条件実行レジスタの値を書き込むべき値に設定した
後、ステップSB2に処理を進める。ステップSB2で
は、条件実行レジスタに書き込むべき値が、「予め定め
られた値」に等しいかどうかを調べる。ここで、両者が
等しいならば、判断結果は「YES」となり、ステップ
SB3に処理を進めて、当該条件実行レジスタ以外のす
べての条件実行レジスタの値を「予め定められた値」以
外の値とする。これにより、「予め定められた値」を保
持する条件実行レジスタは高々1個となることが保証さ
れる。従って、前述の依存解析部304の動作の説明に
おいて、2命令の条件実行レジスタが異なれば両方の命
令が同時に実行されることは有り得ないから、直ちに命
令依存性は無いと判定できるのである。
Next, a value writing operation to the condition execution register file 309 will be described with reference to FIG. When writing a value to a certain condition execution register in the condition execution register file, the process first proceeds to step SB1, the value of the condition execution register is set to a value to be written, and then the process proceeds to step SB2. In step SB2, it is checked whether or not the value to be written in the condition execution register is equal to the "predetermined value". Here, if the two are equal, the determination result is "YES", the process proceeds to step SB3, and the values of all condition execution registers other than the condition execution register are set to values other than the "predetermined value". To do. This guarantees that at most one condition execution register holds the "predetermined value". Therefore, in the above description of the operation of the dependency analysis unit 304, if the condition execution registers of two instructions are different, both instructions cannot be executed at the same time, and it can be immediately determined that there is no instruction dependency.

【0026】(3)コンパイル処理方法 次に、第1の実施の形態による条件実行処理装置上で実
行するプログラムコンパイル処理方法について説明す
る。先ず図5を参照して、第1の実施の形態におけるコ
ンパイル処理の全般について説明する。図5に示すコン
パイル処理では、まず入力プログラムに対して従来の方
法によって意味解析を行い、中間コードと呼ばれるコン
パイラ内部のデータ形式を生成する(ステップSC
1)。次いで、ステップSC2では、この中間コードに
対して出力コードを生成する。この処理もやはり従来の
方法によって行われるため、生成された出力コードには
条件実行命令が含まれない。そして、ステップSC3で
は、この出力コードを解析し、互いに排他的に実行され
るコード部分を抽出し、続くステップSC4では、互い
に排他的に実行される各コード部分に対して異なる条件
実行レジスタを対応させることにより、条件実行命令を
使用する出力コードを生成する。
(3) Compilation Processing Method Next, a program compilation processing method executed on the conditional execution processing apparatus according to the first embodiment will be described. First, with reference to FIG. 5, an overall compilation process according to the first embodiment will be described. In the compiling process shown in FIG. 5, first, the input program is subjected to semantic analysis by a conventional method to generate a data format inside the compiler called intermediate code (step SC).
1). Next, in step SC2, an output code is generated for this intermediate code. Since this processing is also performed by the conventional method, the generated output code does not include the conditional execution instruction. Then, in step SC3, the output code is analyzed to extract the code portions that are mutually exclusively executed, and in the following step SC4, different condition execution registers are associated with the code portions that are mutually exclusively executed. By doing so, an output code that uses the conditional execution instruction is generated.

【0027】次に、図6を参照して、上記ステップSC
3にて行われる処理、すなわち、互いに排他的に実行さ
れるコード部分の抽出処理ついて説明する。互いに排他
的に実行されるコード部分を抽出するには、まずステッ
プSD1に処理を進め、条件実行命令が含まれない出力
コードに対して、従来のコンパイラ技術の方法に従い、
プログラム全体を基本ブロックと呼ばれる単位に分割
し、一つの基本ブロックがグラフの一つのノードとして
表現される制御フローグラフを構築する。こうして制御
フローグラフを構築すると、ステップSD2に処理を進
め、制御フローグラフから「支配者」と呼ばれるノード
を決定すると共に、「支配者」同士に挟まれた部分を抽
出する。
Next, referring to FIG. 6, the above step SC
The process performed in step 3, that is, the process of extracting code portions that are mutually exclusive will be described. In order to extract the code portions that are executed mutually exclusively, first proceed to step SD1, and for the output code that does not include the conditional execution instruction, according to the conventional compiler technology method,
The whole program is divided into units called basic blocks, and a control flow graph is constructed in which each basic block is represented as one node in the graph. When the control flow graph is constructed in this way, the process proceeds to step SD2 to determine a node called "master" from the control flow graph and to extract a portion sandwiched between "masters".

【0028】なお、ここで言う「支配者(dominato
r)」とは、コンパイラ技術分野では一般に知られた概
念であり、例えば文献3:アルフレッド・A・エイホ
(Alfred V. Aho)、ラビ・セチ(Ravi Sethi)、ジェ
フリー・D・ウルマン(Jeffrey D.Ullman)著「コンパ
イラズ:プリンシプルズ・テクニックス・アンド・ツー
ルズ(Compilers: Principles, Techniques, and Tool
s)」(アディソン・ウェズリー出版社(Addison Wesle
y Publishing Company)発行、1986年)の第10.4節「Lo
ops in Flow Graphs」に示されている。
The term "dominant (dominato)
r) ”is a generally known concept in the compiler technical field, for example, Document 3: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. .Ullman) "Compilers: Principles, Techniques, and Tool (Compilers: Principles, Techniques, and Tool)
s) "(Addison Wesle
y Publishing Company), 1986) Section 10.4 “Lo
"ops in Flow Graphs".

【0029】さて、上記ステップSD2にて抽出される
「支配者」同士に挟まれた部分は一般に複数存在する。
そこで、ステップSD3では、この「支配者」同士に挟
まれた部分が、次に示す2つの条件(イ),(ロ)をす
べて満たすかどうかを調べる。2つの条件とは、(イ)
「支配者」以外のすべてのノードについて各ノードに流
入する辺が1本であること、(ロ)「支配者」以外のノ
ードで、流出する辺が2本以上あるすべてのノードにつ
いて各ノードを構成する命令は分岐命令のみであるこ
と、である。
Now, generally, there are a plurality of portions sandwiched between the "rulers" extracted in the above step SD2.
Therefore, in step SD3, it is checked whether or not the portion sandwiched between the "rulers" satisfies all of the following two conditions (a) and (b). The two conditions are (a)
There is one edge that flows into each node for all nodes other than the "ruler". (B) For each node other than the "ruler" that has two or more edges flowing out, The instruction to be configured is only a branch instruction.

【0030】そして、これらの条件(イ),(ロ)が満
たされる場合、「支配者」同士に挟まれた分部のノード
で、流出する辺が1本であるノード同士は、すべて互い
に排他的に実行されるコード部分となる。そこでステッ
プSD4に処理を進め、各コード部分に対して異なる条
件実行レジスタを対応させることにより、各コード部分
を構成する命令を条件実行命令とした後、ステップSD
5に処理を進め、「支配者」同士に挟まれた部分におけ
る両端の「支配者」、および条件実行命令を用いて書き
変えられたノードをすべて統合し、一つのノード(基本
ブロック)とする。
When these conditions (a) and (b) are satisfied, the nodes of the subdivisions sandwiched between the "rulers" and having one outflowing edge are all mutually exclusive. Part of the code that will be executed. Therefore, the process proceeds to step SD4, and by making different condition execution registers correspond to each code part, the instructions forming each code part are made into condition execution instructions, and then step SD
5. Proceed to 5 and integrate all the "rulers" at both ends in the part sandwiched between the "rulers" and the nodes rewritten using the conditional execution instruction to form one node (basic block). .

【0031】こうした処理が可能なのは、「支配者」同
士に挟まれた部分のノードは、分岐命令のみのノードを
除いてすべて互いに排他的に実行されるコード部分であ
り、しかもすべて条件実行命令を用いて書き変えられて
おり、ノードをすべて統合しても正しく実行されるから
である。次いで、ステップSD6では、「支配者」同士
に挟まれた部分で未解析のものがあるか否かを判断し、
未解析のものが存在する場合には判断結果が「YES」
となり、上記ステップSD3〜SD5の処理を繰り返
し、未解析のものが無くなったら判断結果が「NO」と
なり、排他的に実行されるコード部分の抽出処理を完了
する。
Such processing is possible because the nodes in the part sandwiched between the "masters" are code parts that are executed exclusively with each other except for the node having only the branch instruction, and all the condition execution instructions are executed. It is rewritten by using it, and it is executed correctly even if all the nodes are integrated. Next, in step SD6, it is determined whether or not there is an unanalyzed portion between the "rulers",
If there is an unanalyzed item, the judgment result is "YES".
Then, the processes of steps SD3 to SD5 are repeated, and when there are no unanalyzed items, the determination result is "NO", and the extraction process of the code portion to be exclusively executed is completed.

【0032】以上説明したように、第1の実施の形態に
よれば、条件実行処理装置の条件実行レジスタに値を設
定する処理において、「予め定められた値」を保持する
条件実行レジスタの数は高々1個であるように制御し、
条件実行命令に対応する条件実行レジスタの内容が異な
る場合でも命令を並列処理するようにしたので、プログ
ラム内の互いに排他的に実行できるコード部分に異なる
条件実行レジスタを対応させてプログラムを作成して条
件実行処理装置で実行することにより、高性能な実行が
可能になる。
As described above, according to the first embodiment, in the process of setting a value in the condition execution register of the condition execution processing device, the number of condition execution registers holding a “predetermined value”. Control so that there is at most one,
Even if the contents of the conditional execution register corresponding to the conditional execution instruction are different, the instructions are processed in parallel, so the program can be created by associating different conditional execution registers with the code parts that can be executed mutually exclusive in the program. Execution by the condition execution processing device enables high-performance execution.

【0033】また、この第1の実施の形態によれば、件
実行処理装置の上で実行するプログラムを自動的に生成
するコンパイル処理方法において、プログラム内の互い
に排他的に実行できるコード部分を自動的に解析し、こ
れらのコード部分に異なる条件実行レジスタを自動的に
対応させたコードを生成することができる為、プログラ
ム内の互いに排他的に実行できるコード部分が同時に実
行できるようなプログラムとして自動的に生成され、高
性能な実行が可能になる。
Further, according to the first embodiment, in the compiling processing method for automatically generating the program to be executed on the case execution processing device, the code portions which can be mutually exclusive in the program are automatically executed. It is possible to generate a code that automatically associates different condition execution registers with these code parts, so that the code parts that can be executed mutually exclusive in the program can be automatically executed as a program. Are generated dynamically, and high-performance execution becomes possible.

【0034】<第2の実施の形態>次に、図7を参照し
て第2の実施の形態について説明する。図7に示す第2
の実施の形態が上述した第1の実施の形態と相違する点
は、汎用レジスタおよび条件実行レジスタファイル30
2を設けたことにある。すなわち、第2の実施の形態で
は、汎用レジスタ群と条件実行レジスタ群の両方で一つ
のレジスタファイルを構成している。しかしながら、条
件実行レジスタの書き込みに関する動作については第1
の実施の形態と全く同じであり、汎用レジスタおよび条
件実行レジスタファイル302のうち条件実行レジスタ
部分について第1の実施の形態と全く同じ動作が行われ
ることになる。
<Second Embodiment> Next, a second embodiment will be described with reference to FIG. Second shown in FIG.
The embodiment is different from the above-described first embodiment in that the general-purpose register and condition execution register file 30
2 is provided. That is, in the second embodiment, one register file is configured by both the general-purpose register group and the condition execution register group. However, regarding the operation related to the writing of the condition execution register,
The same operation as that of the first embodiment is performed for the condition execution register part of the general-purpose register and the condition execution register file 302.

【0035】[0035]

【発明の効果】本発明によれば、条件実行処理装置の条
件実行レジスタに値を設定する処理において、「予め定
められた値」を保持する条件実行レジスタの数は高々1
個であるように制御し、条件実行命令に対応する条件実
行レジスタの内容が異なる場合でも命令を並列処理する
ようにしたので、プログラム内の互いに排他的に実行で
きるコード部分に異なる条件実行レジスタを対応させて
プログラムを作成して条件実行処理装置で実行すること
により、高性能な実行が可能になる。
According to the present invention, in the process of setting a value in the condition execution register of the condition execution processing device, the number of condition execution registers holding the "predetermined value" is at most 1.
Control so that even if the contents of the conditional execution registers corresponding to the conditional execution instructions are different, the instructions are processed in parallel. By creating a corresponding program and executing it by the condition execution processing device, high-performance execution becomes possible.

【図面の簡単な説明】[Brief description of drawings]

【図1】 第1の実施の形態の構成を示すブロック図で
ある。
FIG. 1 is a block diagram showing a configuration of a first embodiment.

【図2】 依存性解析部304の構成を示すブロック図
である。
FIG. 2 is a block diagram showing a configuration of a dependency analysis unit 304.

【図3】 依存解析部304の動作を示すフローチャー
トである。
FIG. 3 is a flowchart showing the operation of the dependency analysis unit 304.

【図4】 条件実行レジスタファイル309への書き込
み動作を説明するためのフローチャートである。
FIG. 4 is a flowchart for explaining a write operation to a condition execution register file 309.

【図5】 条件実行処理装置で実行するコンパイル処理
を説明するためのフローチャートである。
FIG. 5 is a flowchart for explaining a compiling process executed by the condition execution processing device.

【図6】 互いに排他的に実行されるコード部分の抽出
処理方法を説明するためのフローチャートである。
FIG. 6 is a flowchart for explaining a method of extracting code parts that are mutually exclusively executed.

【図7】 第2の実施の形態の構成を示すブロック図で
ある。
FIG. 7 is a block diagram showing a configuration of a second embodiment.

【図8】 従来技術を説明するための図である。FIG. 8 is a diagram for explaining a conventional technique.

【図9】 従来技術を説明するための図である。FIG. 9 is a diagram for explaining a conventional technique.

【符号の説明】[Explanation of symbols]

301 第1の実施の形態による条件実行処理装置 302 命令フェッチ部 303 命令デコード部 304 依存性解析部 305 命令実行部 306 結果書き込み部 307 メモリ 308 汎用レジスタファイル 309 条件実行レジスタファイル 401 条件実行レジスタ比較部 402 オペランド比較部 403 命令実行タイミング決定部 901 第2の実施の形態による条件実行処理装置 902 汎用レジスタおよび条件実行レジスタファイ
301 Condition Execution Processing Device 302 According to First Embodiment 302 Instruction Fetch Unit 303 Instruction Decoding Unit 304 Dependency Analysis Unit 305 Instruction Execution Unit 306 Result Writing Unit 307 Memory 308 General Purpose Register File 309 Condition Execution Register File 401 Condition Execution Register Comparison Unit 402 Operand comparison unit 403 Instruction execution timing determination unit 901 Condition execution processing device 902 according to second embodiment General-purpose register and condition execution register file

Claims (2)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 複数の命令の依存関係を解析し同時に実
行可能か否かを判定して可能であれば同時に実行し、か
つ条件実行レジスタと呼ばれるレジスタを有し、各命令
に条件実行レジスタを対応させてこの条件実行レジスタ
の値があらかじめ定められた値の場合にのみ当該命令を
実行させることが可能な条件実行処理装置において、前記条件実行レジスタの値を書き込むべき値に設定した
後、この書き込むべき値が「あらかじめ定められた値」
に等しいかどうかを調べ、双方の値が等しいならば、当
該条件実行レジスタ以外のすべての条件実行レジスタの
値を「あらかじめ定められた値」以外の値とする書き込
み手段と、 複数の命令において、各命令に対応している条件実行レ
ジスタが異なる場合には、これらの命令間には依存性が
無いと判定して各命令実行タイミングを決定する依存性
解析手段と、 を備えた ことを特徴とする条件実行処理装置。
1. A method of analyzing a dependency relationship of a plurality of instructions, determining whether or not they can be executed simultaneously, executing them simultaneously if possible, and having a register called a condition execution register, each instruction being provided with a condition execution register. Correspondingly, in the condition execution processing device capable of executing the instruction only when the value of the condition execution register is a predetermined value, the value of the condition execution register is set to a value to be written.
Later, this value to be written is a "predetermined value"
If both values are equal, then
Of all condition execution registers other than the condition execution register
Write with a value other than "predetermined value"
If the condition execution register corresponding to each instruction is different between the only means and a plurality of instructions, there is no dependency between these instructions.
Dependency that determines each instruction execution timing by determining that there is no
Conditional execution processing apparatus characterized by comprising a analyzing means.
【請求項2】 入力プログラム(原始プログラム)の意
味解析を行って、これを多者択一型条件実行処理装置上
で実行するプログラム(コード)に変換するコンパイル
処理であって、プログラム内の互いに排他的に実行され
るコード部分を解析して抽出し、各コード部分を構成す
る命令に対してそれぞれ1個の条件実行レジスタを対応
づけることにより、条件実行命令を使用する出力コード
を生成するコンパイル処理を行うことを特徴とする請求
項1に記載の条件実行処理装置。
2. A compiling process for performing semantic analysis of an input program (original program) and converting it into a program (code) to be executed on a multi-choice type conditional execution processing device, wherein the compiling processes are mutually performed. extracted by analyzing the code portion to be executed exclusively, by corresponding <br/> pickled Rukoto one conditional execution register respectively instructions constituting each code portion, output using the conditional execution instruction code
The condition execution processing device according to claim 1, wherein the condition execution processing device performs a compile process for generating .
JP00690099A 1999-01-13 1999-01-13 Conditional execution processing device Expired - Fee Related JP3367438B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00690099A JP3367438B2 (en) 1999-01-13 1999-01-13 Conditional execution processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00690099A JP3367438B2 (en) 1999-01-13 1999-01-13 Conditional execution processing device

Publications (2)

Publication Number Publication Date
JP2000207208A JP2000207208A (en) 2000-07-28
JP3367438B2 true JP3367438B2 (en) 2003-01-14

Family

ID=11651117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00690099A Expired - Fee Related JP3367438B2 (en) 1999-01-13 1999-01-13 Conditional execution processing device

Country Status (1)

Country Link
JP (1) JP3367438B2 (en)

Also Published As

Publication number Publication date
JP2000207208A (en) 2000-07-28

Similar Documents

Publication Publication Date Title
US8296746B2 (en) Optimum code generation method and compiler device for multiprocessor
JP3311462B2 (en) Compile processing unit
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH10228382A (en) Compiling system
JP2001166949A (en) Method and device for compiling source code by using symbolic execution
JP4462676B2 (en) Program conversion device, compiler device, and computer-readable recording medium recording program conversion program
JP3367438B2 (en) Conditional execution processing device
JP3840149B2 (en) Compiler, arithmetic processing system, and arithmetic processing method
JP3196625B2 (en) Parallel compilation method
Li et al. Beyond data parallelism: Identifying parallel tasks in sequential programs
Karuri et al. A generic design flow for application specific processor customization through instruction-set extensions (ISEs)
JPH1196018A (en) Compiling device, its method and computer-readable recording medium recording compiling execution program
KR101276308B1 (en) Graph-based code generating apparatus and method supporting multi-output instructions
JP2008015665A (en) Program analysis method and program analyzer
JP3758991B2 (en) Method for adjusting the number of execution steps of a target program, adjusting device therefor, and recording medium storing the program
JPH10116197A (en) Program analyzing method
JP3734658B2 (en) COMPILER DEVICE AND COMPUTER-READABLE RECORDING MEDIUM RECORDING COMPILER PROGRAM
JP3018783B2 (en) Compilation method
JP5169322B2 (en) Variable optimization apparatus, variable optimization program, compiler, variable optimization method, and compilation method
JPH0561687A (en) Processing system for compiler
JP2008015963A (en) Compiler
Falk et al. Use of a Bit-true Data Flow Analysis for Processor-Specific Source Code Optimization
JPH08171554A (en) Optimizing compiler for vector operation
JP2004139369A (en) Analysis method for pointer pointing constant address domain
JPH03116241A (en) Compiler

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20021008

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

Free format text: PAYMENT UNTIL: 20071108

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20081108

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20081108

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091108

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20091108

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20101108

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20101108

Year of fee payment: 8

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

Year of fee payment: 8

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

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20111108

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20121108

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20121108

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20131108

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees