JP2000207208A - Condition executing processor and compiling processing method of the processor - Google Patents

Condition executing processor and compiling processing method of the processor

Info

Publication number
JP2000207208A
JP2000207208A JP11006900A JP690099A JP2000207208A JP 2000207208 A JP2000207208 A JP 2000207208A JP 11006900 A JP11006900 A JP 11006900A JP 690099 A JP690099 A JP 690099A JP 2000207208 A JP2000207208 A JP 2000207208A
Authority
JP
Japan
Prior art keywords
instruction
execution
condition
instructions
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11006900A
Other languages
Japanese (ja)
Other versions
JP3367438B2 (en
Inventor
Takashi Miyamoto
敬士 宮本
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

Abstract

PROBLEM TO BE SOLVED: To obtain a condition processing executing device which can execute instructions in parallel even though the instructions have dependence relation by generating and executing a program, while making different condition execution registers correspond to mutually exclusively executable code parts in the program. SOLUTION: One basic block structures a control flow graph represented as one node of a graph (SD1). A node called a 'dominator' is determined from the control flow graph and a part sandwiched between 'dominators' is extracted (SD2). It is checked whether or not the part sandwiched between the 'dominators' satisfies condition (SD3). Different condition execution registers are made to correspond to respective code parts (SD4). Nodes are all unified into one node (basic block)(SD5). It is determined whether or not there is an unsolved part sandwiched between 'dominators' (SD6), and an extracting processing for code parts which are exclusively executed is completed.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、複数の命令の依存
関係を解析して並列処理可能か否かを判定し、可能であ
れば並列処理を実行し、かつ条件実行レジスタと呼ばれ
るレジスタを有し、各命令に条件実行レジスタを対応さ
せてこの条件実行レジスタの値が予め定められた値の時
にのみ当該命令を実行させる条件実行処理装置およびこ
の条件実行処理装置上で実行するプログラムを得るため
に、入力プログラム(原始プログラム)の意味解析を行
うとともに実行形式プログラムを生成するコンパイル処
理方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention analyzes the dependency of a plurality of instructions to determine whether parallel processing is possible, executes parallel processing if possible, and has a register called a condition execution register. Then, a condition execution register is made to correspond to each instruction, and a condition execution processing device for executing the instruction only when the value of the condition execution register is a predetermined value and a program to be executed on the condition execution processing device are obtained. In addition, the present invention relates to a compiling method for performing a semantic analysis of an input program (a source program) and generating an executable program.

【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 An example of a conventional conditional execution processing apparatus is described in Reference 1: David A. Paterson.
terson) and John L. Hennes
sy), Compiler Architecture: a Q
uantitative Approach ”(Morgan Kaufmann Publishers, In
c.) Published, 1996) Section 4.6 “Hardware Support for
Extracting More Parallelism '' and Section 4.1, `` Instru
ction-Level Parallelism: Concepts and Challenges ''
Is disclosed.

【0003】この文献1に開示される第1の従来例につ
いて説明する。第1の従来例による条件実行処理装置と
しては、条件転送(conditional move)命令を有する装
置が示されている。この装置では、3個のレジスタをオ
ペランドとして持つ条件転送命令に対して、第1のレジ
スタの値を第2にレジスタに転送する動作を、第3のレ
ジスタの値がある条件を満たす場合に限り実行する。す
なわち文献1に示されている例を引用して説明すると、
「CMOVZ R2,R3,R1」という条件転送命令に対して、レジ
スタR1の値がゼロに等しい場合にレジスタR3の値をレジ
スタR2に転送するという動作が、条件実行処理装置にお
いて実行される。
[0003] A first conventional example disclosed in this document 1 will be described. As a condition execution processing device according to the first conventional example, a device having a conditional transfer (conditional move) instruction is shown. In this device, in response to a condition 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. Execute. In other words, referring to the example shown in Document 1,
In response to the condition transfer instruction “CMOVZ R2, R3, R1”, an operation of transferring the value of the register R3 to the register R2 when the value of the register R1 is equal to zero is executed in the condition execution processing device.

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

【0005】このような条件実行機能(この例では条件
転送命令)が条件実行処理装置に備えられている目的
は、複数の命令を同時に実行する機会を増やすことであ
る。すなわち、仮に条件実行機能がなければ、条件判断
の機能をif-else構造のようなプログラムの実行制御の
移動によって実現せざるを得ないが、一般にプログラム
の実行制御の移動は複数命令の同時実行を行うための解
析を妨げる効果を持つため、これにより並列実行を含ん
だ高性能なプログラムが書かれることが妨げられる。な
お、当然ながら、この条件実行処理装置上で実行するプ
ログラムを生成するためのコンパイル処理方法は、高性
能なプログラムを生成するために、この条件実行機能を
用いたプログラムを生成する必要がある。
The purpose of providing such a condition execution function (in this example, a condition transfer instruction) in the condition execution processor is to increase the chances of simultaneously executing a plurality of instructions. In other words, if the condition execution function is not provided, the condition judgment function must be realized by moving the execution control of the program like an if-else structure. This has the effect of impeding the analysis to perform, and thus prevents writing high-performance programs that include parallel execution. Of course, in the compile processing method for generating a program to be executed on the conditional execution processing device, it is necessary to generate a program using the 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.)発行)に開示されて
いる。
[0006] Next, an example of a conventional compiling method is described in Literature 2: "Roading Adams and Sue Gray", "Usaging Conditional Compilation".
Execution To Exploit Instruction Level Concurrency (Using Conditio
nal Execution to Exploit Instruction Level Concurr
ency) ”(Software-Practice and Experience)
Journal, 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 explanation, only the part related to the present invention out of the technique disclosed in Document 2 will be described. In a compiling method according to a second conventional example, a processing device on which a generated program is executed is
It analyzes the dependencies of a plurality of instructions to determine whether they can be executed at the same time and if possible, executes them at the same time. It has a register called a condition execution register. It is assumed that a condition execution processing device is capable of executing 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, an operation of "executing the instruction only when the value of the condition execution register is" predetermined value "" will be described with reference to an example shown in Reference 2. The instruction “T B2 LD R20, 8 (SP)” executes the load instruction “LD R20, 8 (SP)” when the value of the condition execution register B2 is T (representing True). Indicates to execute. The “T” is a Boolean 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 has been determined. That is,
If the value of the condition execution register (B2 in this case) is a "predetermined value" (in this case, a constant called T),
The 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 for generating a high-performance program using a condition execution function, called a conditional compaction, is performed. First, according to the method of the conventional compiler technology, the entire program is divided into units called basic blocks, and then a control flow graph is constructed in which one basic block is represented as one node of the graph. Further, a basic block in which the last instruction included in the basic block is a conditional branch instruction is extracted from the basic blocks constituting the program.

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

【0011】[0011]

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

【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 code portions executed exclusively. This program has a double if-then-else structure, and as a result
Code parts 101, 1 constituting n part and else part
02, 103 and 104 are executed exclusively from each other.
That is, only one of the code portions 101, 102, 103, and 104 is executed, and two or more code portions are not executed together. Therefore, if there is an appropriate conditional execution instruction function that makes use of this exclusive execution characteristic, there is no dependency between instructions belonging to different code parts in the sense that instructions belonging to different code parts can be executed simultaneously. .

【0013】しかしながら、第1の従来例の条件実行処
理では、条件実行において判断に用いられるレジスタに
ついてはそれが保持する値に関して何ら制約が存在しな
いため、これらの命令のオペランドが同一のレジスタを
使用していればレジスタ間の依存関係を認め命令の同時
実行が不可能であると判定せざるを得なくなり、高性能
な動作が得られなくなる。この高性能な動作が得られな
くなる場合について、図9を参照して説明する。図9
は、図8のコードに対して、第1の従来例の条件実行処
理装置の動作に基づいて作成されたコードの例(ただし
複数命令の同時実行のための命令の実行タイミングの決
定の前)である。
However, in the conditional execution process of the first conventional example, since there is no restriction on the value held by the register used for the determination in the conditional execution, the operands of these instructions use the same register. If so, the dependency between the registers must be recognized to determine that simultaneous execution of instructions is impossible, and a high-performance operation cannot be obtained. The case where the high-performance operation cannot be obtained will be described with reference to FIG. FIG.
Is an example of a code created based on the operation of the first conventional example of the conditional execution processing device with respect to the code of FIG. 8 (but before determining the execution timing of instructions for simultaneous execution of a plurality of instructions). It 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へ
の書き込みであることから依存関係があると判断し、こ
れらの命令を同時に実行することができない。
To briefly explain the code notation in this example, first, one line of the code corresponds to one instruction. Then tmp1, tmp2, tmp3, tmp4, tmp5, c1, c2, c
3, r1, r2, r3, r4, and r10 all indicate registers of the condition execution processing device. Therefore, the instructions 201, 202, 203,
204 are code portions 101, 102, 10 respectively
3 and 104, the instructions originally belong to different code portions, and do not have any mutual dependency. However, the condition execution processing device according to the first conventional example determines that there is a dependency because these instructions are writing to the same register r10, and cannot execute these instructions simultaneously.

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

【0016】そこで本発明は、上述した事情に鑑みてな
されたもので、複数の命令にそれぞれ対応した条件実行
レジスタが異なる場合に、それら命令間に依存関係があ
るにも関わらず、これらの命令を並列実行することがで
きる条件処理実行装置および当該装置におけるコンパイ
ル処理方法を提供することを目的としている。
Accordingly, the present invention has been made in view of the above circumstances, and when the condition execution registers corresponding to a plurality of instructions are different, these instructions are not related to each other even though there is a dependency between the instructions. And a compile processing method in the apparatus.

【0017】[0017]

【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、複数の命令の依存関係
を解析し同時に実行可能か否かを判定して可能であれば
同時に実行し、かつ条件実行レジスタと呼ばれるレジス
タを有し、各命令に条件実行レジスタを対応させてこの
条件実行レジスタの値があらかじめ定められた値の場合
にのみ当該命令を実行させることが可能な条件実行処理
装置において、任意の時点において、「あらかじめ定め
られた値」を保持する条件実行レジスタの数が高々1個
であるように制御する機構を有し、複数の命令におい
て、各命令に対応している条件実行レジスタが異なる場
合には、命令間に依存関係がある等通常の解析のもとで
は同時に実行可能ではないと判定される原因がある場合
であっても、これらの命令を同時に実行することを特徴
とする。
In order to achieve the above object, according to the first aspect of the present invention, the dependence of a plurality of instructions is analyzed to determine whether or not they can be executed at the same time. And a condition execution register, which has a register called a condition execution register, and allows a condition execution register to correspond to each instruction and execute the instruction only when the value of the condition execution register is a predetermined value. The processing device has a mechanism for controlling the number of condition execution registers holding a “predetermined value” at any time to be at most one, and a plurality of instructions correspond to each instruction. If the condition execution registers are different, even if there is a cause that it is determined that they cannot be executed simultaneously under normal analysis, And executes decree simultaneously.

【0018】請求項2に記載の発明では、入力プログラ
ム(原始プログラム)の意味解析を行って、これを多者
択一型条件実行処理装置上で実行するプログラムに変換
するコンパイル処理方法おいて、プログラム内の互いに
排他的に実行されるコード部分を解析して抽出し、各コ
ード部分を構成する命令に対してそれぞれ1個の条件実
行レジスタを対応づけ、当該条件実行レジスタが「あら
かじめ定められた値」の場合に当該命令を実行させるよ
うな出力コードを生成することを特徴としている。
According to a second aspect of the present invention, there is provided a compile processing method for performing semantic analysis of an input program (original program) and converting it into a program to be executed on a multiple-choice conditional execution apparatus. The code portions executed exclusively in the program are analyzed and extracted, and one condition execution register is associated with each instruction constituting each code portion. In the case of "value", an output code for executing the instruction is generated.

【0019】[0019]

【発明の実施の形態】以下、図面を参照して本発明の実
施の形態について説明する。 <第1の実施の形態> (1)構成 先ず図1および図2を参照して第1の実施の形態につい
て説明する。図1は第1の実施の形態による条件実行処
理装置の構成を示す機能ブロック図、図2は依存性解析
部304の構成を示す機能ブロック図である。図1に示
すように、条件実行処理装置301は、メモリ307に
貯えられているプログラムを読み出して、プログラムを
構成する命令を実行して演算を行い、その演算結果をメ
モリ307、汎用レジスタファイル308、および条件
実行レジスタファイル309に書き込む装置であって、
命令フェッチ部302、命令デコード部303、依存性
解析部304、命令実行部305、および結果書き込み
部306を備える。
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. 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 a memory 307, executes an instruction constituting the program, performs an operation, and stores the operation result in the memory 307, 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 decode 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 an instruction stored in the memory 307, and decodes the instruction
Analyzes the internal structure of the read instruction to analyze the type of the instruction and the contents of the instruction operand, and the instruction execution unit 305 executes the instruction according to the instruction execution timing determined by the dependency analysis unit 304 to execute the operation. Then, the result writing unit stores the operation result in the memory 307, 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 contents of the instruction operands analyzed by the above. As shown in FIG. 2, the instruction execution timing includes a condition execution register comparison unit 401, an operand comparison unit 402, and an instruction execution timing determination unit 403. .

【0021】ここで、図2を参照して依存解析部304
の構成について説明する。この図において、条件実行レ
ジスタ比較部401は、依存解析を行おうとしている複
数の命令の中で条件実行命令である命令群について、そ
の条件レジスタの比較を行う。オペランド比較部402
は、条件実行レジスタ以外のオペランドについて比較を
行う。命令実行タイミング決定部403は、条件実行レ
ジスタ比較部401およびオペランド比較部402の解
析結果に基づいて、各命令を実行するタイミングを決定
する。
Here, with reference to FIG.
Will be described. In this figure, a condition execution register comparison unit 401 compares the condition registers of a group of instructions that are condition execution instructions among a plurality of instructions to be subjected to dependency analysis. Operand comparison unit 402
Compares the operands other than the condition execution register. The instruction execution timing determination unit 403 determines the timing at which each instruction is executed 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 in the first embodiment will be described. Since the condition execution processing device having the above 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. 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 an instruction execution timing for an instruction group in which the processing of the instruction decoding unit 303 has been completed and the type of the operand has been analyzed.
To do so, it is necessary to analyze the dependencies of instructions belonging to these instruction groups with respect to combinations of all two instructions.

【0023】そこで、最初に全ての命令組み合わせにつ
いて、未処理のものを選択し(ステップSA1)、その
内で各命令の条件実行レジスタが同一であるかどうかを
調べる(ステップSA2)。そして、両方の命令とも条
件実行レジスタが対応付けられている場合、すなわち両
方の命令とも条件実行命令である場合で、かつその条件
実行レジスタが異なると、各命令はプログラム内の互い
に排他的に実行されるコード部分に属するから、ステッ
プSA3に処理を進め、これらの命令間には依存性が無
いと判定する。
First, unprocessed ones are selected for all the instruction combinations (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 a conditional execution register, that is, if both instructions are conditional execution instructions and the condition execution registers are different, each instruction is executed exclusively in the program. Therefore, 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, if 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 whether or not both instructions have a dependency by a conventional dependency analysis method. Thereafter, in step SA5, it is determined whether or not all combinations of instructions have been checked. If not, the determination result is "NO", and the process returns to step SA1. 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, the operation of writing a value 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, sets the value of the condition execution register to a value to be written, and then proceeds to step SB2. In step SB2, it is checked whether or not the value to be written to the condition execution register is equal to a "predetermined value". Here, if they are equal, the determination result is “YES”, and the process proceeds to Step SB3 to change the values of all the condition execution registers other than the condition execution register to values other than the “predetermined value”. I do. This ensures that the number of condition execution registers that hold the "predetermined value" is at most one. Accordingly, in the description of the operation of the dependency analysis unit 304, if the condition execution registers of the two instructions are different, it is impossible that both instructions are 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) Compile Processing Method Next, a program compile processing method executed on the conditional execution processing device according to the first embodiment will be described. First, with reference to FIG. 5, the overall compile process in the first embodiment will be described. In the compiling process shown in FIG. 5, first, a semantic analysis is performed on the input program by a conventional method to generate a data format inside the compiler called an intermediate code (step SC).
1). Next, in step SC2, an output code is generated for the intermediate code. Since this processing is also performed by a conventional method, the generated output code does not include a conditional execution instruction. In step SC3, the output code is analyzed to extract code portions to be executed exclusively from each other. In step SC4, different condition execution registers correspond to the code portions to be executed exclusively from each other. As a result, an output code using the conditional execution instruction is generated.

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

【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」に示されている。
[0028] The "ruler (dominato)"
"r)" is a concept generally known in the compiler technical field, for example, Reference 3: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman .Ullman, 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, there are generally a plurality of portions sandwiched between the “rulers” extracted in 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)
For each node other than the "ruler", there must be one edge flowing into each node. (B) For each node other than the "ruler" and having two or more outflow edges, The constituent instruction is a branch instruction only.

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

【0031】こうした処理が可能なのは、「支配者」同
士に挟まれた部分のノードは、分岐命令のみのノードを
除いてすべて互いに排他的に実行されるコード部分であ
り、しかもすべて条件実行命令を用いて書き変えられて
おり、ノードをすべて統合しても正しく実行されるから
である。次いで、ステップSD6では、「支配者」同士
に挟まれた部分で未解析のものがあるか否かを判断し、
未解析のものが存在する場合には判断結果が「YES」
となり、上記ステップSD3〜SD5の処理を繰り返
し、未解析のものが無くなったら判断結果が「NO」と
なり、排他的に実行されるコード部分の抽出処理を完了
する。
Such processing is possible because the nodes in the portion sandwiched between the "rulers" are all code portions that are executed exclusively from each other except for the node containing only the branch instruction. This is because it is correctly rewritten using all the nodes, and even if all the nodes are integrated, it is executed correctly. Next, in Step SD6, it is determined whether or not there is an unanalyzed part between the “rulers”.
If there is an unanalyzed one, the judgment result is “YES”
Then, the processing of steps SD3 to SD5 is repeated, and when there is no unanalyzed data, the determination result is "NO", and the extraction processing of the code part to be executed exclusively 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" Is controlled to be at most one,
Even if the contents of the condition execution register corresponding to the condition execution instruction are different, the instructions are processed in parallel, so the program must be created by associating different condition execution registers with the code parts that can be executed mutually exclusively in the program. Execution by the conditional execution processing device enables high-performance execution.

【0033】また、この第1の実施の形態によれば、件
実行処理装置の上で実行するプログラムを自動的に生成
するコンパイル処理方法において、プログラム内の互い
に排他的に実行できるコード部分を自動的に解析し、こ
れらのコード部分に異なる条件実行レジスタを自動的に
対応させたコードを生成することができる為、プログラ
ム内の互いに排他的に実行できるコード部分が同時に実
行できるようなプログラムとして自動的に生成され、高
性能な実行が可能になる。
According to the first embodiment, in a compile processing method for automatically generating a program to be executed on a subject execution processing device, a code portion that can be executed exclusively in the program is automatically executed. Code that automatically associates these code parts with different conditional execution registers can be generated automatically, so that code parts that can be executed exclusively in a program can be executed simultaneously. , 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. The second shown in FIG.
The second embodiment is different from the first embodiment in that the general-purpose register and the condition execution register file 30 are different from the first embodiment.
2 has been 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, the operation related to the writing of the condition execution register is the first operation.
This is exactly the same as the first embodiment, and the same operation as the first embodiment is performed for the condition execution register portion 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 the condition execution registers holding the "predetermined value" is at most one.
And execute the instructions in parallel even if the contents of the condition execution registers corresponding to the condition execution instructions are different. By creating a program corresponding to the program and executing the program by the condition execution processing device, high-performance execution is possible.

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

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

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

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

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

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

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

【図7】 第2の実施の形態の構成を示すブロック図で
ある。
FIG. 7 is a block diagram illustrating 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 Conditional execution processing device according to the first embodiment 302 Instruction fetch unit 303 Instruction decode 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 Unit 902 General-purpose Register and Condition Execution Register File

Claims (2)

【特許請求の範囲】[Claims] 【請求項1】 複数の命令の依存関係を解析し同時に実
行可能か否かを判定して可能であれば同時に実行し、か
つ条件実行レジスタと呼ばれるレジスタを有し、各命令
に条件実行レジスタを対応させてこの条件実行レジスタ
の値があらかじめ定められた値の場合にのみ当該命令を
実行させることが可能な条件実行処理装置において、 任意の時点において、「あらかじめ定められた値」を保
持する条件実行レジスタの数が高々1個であるように制
御する機構を有し、複数の命令において、各命令に対応
している条件実行レジスタが異なる場合には、命令間に
依存関係がある等通常の解析のもとでは同時に実行可能
ではないと判定される原因がある場合であっても、これ
らの命令を同時に実行することを特徴とする条件実行処
理装置。
An instruction is analyzed to determine whether or not it can be executed at the same time. If possible, the instruction is executed at the same time. A register called a condition execution register is provided. Correspondingly, in a condition execution processing device capable of executing the instruction only when the value of the condition execution register is a predetermined value, a condition for holding a "predetermined value" at any time It has a mechanism to control the number of execution registers to be at most one. If a plurality of instructions have different condition execution registers corresponding to each instruction, ordinary instructions such as a dependency between instructions A condition execution processing device which executes these instructions at the same time, even if there is a cause determined to be impossible to execute simultaneously under analysis.
【請求項2】 上記請求項1に記載の条件実行処理装置
上で実行するプログラムを得るために、入力プログラム
(原始プログラム)の意味解析を行って、これを多者択
一型条件実行処理装置上で実行するプログラム(コー
ド)に変換するコンパイル処理方法おいて、 プログラム内の互いに排他的に実行されるコード部分を
解析して抽出し、各コード部分を構成する命令に対して
それぞれ1個の条件実行レジスタを対応づけ、当該条件
実行レジスタが「あらかじめ定められた値」の場合に当
該命令を実行させるような出力コードを生成することを
特徴とするコンパイル処理方法。
2. A multi-choice conditional execution device for performing semantic analysis of an input program (primitive program) in order to obtain a program to be executed on the conditional execution device according to claim 1. In the compile processing method for converting into a program (code) to be executed on the above, mutually exclusive code portions in the program are analyzed and extracted, and one instruction is included in each code portion. A compile processing method in which a condition execution register is associated, and an output code is generated to execute the instruction when the condition execution register has a "predetermined value".
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 true JP2000207208A (en) 2000-07-28
JP3367438B2 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
JP3367438B2 (en) 2003-01-14

Similar Documents

Publication Publication Date Title
US20090113404A1 (en) Optimum code generation method and compiler device for multiprocessor
JPH10228382A (en) Compiling system
JP2001166949A (en) Method and device for compiling source code by using symbolic execution
JP2004295398A (en) Compiler, method for compiling and program developing tool
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US20100199269A1 (en) Program optimization device and program optimization method
JP2002024029A (en) Compiler, compiling method and computer readable recording medium with compile program recorded thereon
US20050028148A1 (en) Method for dynamic recompilation of a program
EP3152658B1 (en) Data-dependent control flow reduction
JP2007304840A (en) Compilation method, debugging method, compilation program, and debugging program
JP2002259135A (en) Method for optimizing program and compiler using thereof
Ferreira et al. A run-time modulo scheduling by using a binary translation mechanism
JP2001166946A (en) Method and device for compiling source code by flattening hierarchy
JP4045802B2 (en) Program processing apparatus, program processing method, storage medium, and computer program
JP2008276735A (en) Program code converter and program code conversion method
JP4462676B2 (en) Program conversion device, compiler device, and computer-readable recording medium recording program conversion program
JP3367438B2 (en) Conditional execution processing device
JP3196625B2 (en) Parallel compilation method
KR100345401B1 (en) Method and apparatus for binary program translation
JPH1196018A (en) Compiling device, its method and computer-readable recording medium recording compiling execution program
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
JP3018783B2 (en) Compilation method
JP2004139369A (en) Analysis method for pointer pointing constant address domain

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