JP2006012185A - Processor - Google Patents
Processor Download PDFInfo
- Publication number
- JP2006012185A JP2006012185A JP2005224048A JP2005224048A JP2006012185A JP 2006012185 A JP2006012185 A JP 2006012185A JP 2005224048 A JP2005224048 A JP 2005224048A JP 2005224048 A JP2005224048 A JP 2005224048A JP 2006012185 A JP2006012185 A JP 2006012185A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- instructions
- processor
- condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
Description
本発明は、プロセッサに関し、特に並列処理において演算器の効率的活用により性能の向上を図る技術に関するものである。 The present invention relates to a processor, and more particularly to a technique for improving performance by using an arithmetic unit efficiently in parallel processing.
近年のマイクロプロセッサ応用製品の高機能化及び高速化に伴い、高い処理性能を持つマイクロプロセッサ(以下、単に「プロセッサ」という。)が望まれている。一般に、各命令のスループットを高めるために、1つの命令をいくつかの処理単位(ここでは「ステージ」と呼ぶ)に分割し、各ステージを別々のハードウェアで実行することにより、複数の命令を並行して処理できるようにするパイプライン方式が採用されている。また、パイプライン方式のような空間的な並列処理に加えて、時間的に命令レベルでの並列処理を行うVLIW(Very Long Instruction Word)方式やスーパースカラ方式にて性能向上を図っている。 2. Description of the Related Art Along with high functionality and high speed of recent microprocessor application products, a microprocessor having high processing performance (hereinafter simply referred to as “processor”) is desired. In general, in order to increase the throughput of each instruction, one instruction is divided into several processing units (herein referred to as “stages”), and each stage is executed by separate hardware. A pipeline system that allows parallel processing is adopted. In addition to the spatial parallel processing such as the pipeline method, the VLIW (Very Long Instruction Word) method or the superscalar method that performs parallel processing at the instruction level in terms of time is intended to improve performance.
プロセッサの性能向上を妨げる主要因の1つとして分岐処理のオーバーヘッドがある。このオーバーヘッドは、上記パイプライン処理のステージ数が増すほど、命令供給のペナルティが大きくなる。また、命令並列処理を行った場合、並列度が向上すればするほど、分岐命令の頻度が増加し、オーバーヘッドが顕在化してくる。 One of the main factors that hinders improvement in processor performance is branch processing overhead. This overhead increases the penalty of instruction supply as the number of stages of the pipeline processing increases. Further, when instruction parallel processing is performed, the higher the degree of parallelism, the more frequently the branch instruction increases and the overhead becomes obvious.
そこで、このオーバーヘッドを解消する従来技術として、各命令に実行条件を示す情報を付加し、その条件が成立するときにのみ命令で示されたオペレーションを実行する、という条件付き実行方式がある。この方式では、実行時に各命令に付加された実行条件に対応する条件フラグを参照し、条件が成立しなかった場合には、その命令の実行結果を無効化する、すなわち無動作命令として実行させる。 Therefore, as a conventional technique for eliminating this overhead, there is a conditional execution method in which information indicating an execution condition is added to each instruction, and an operation indicated by the instruction is executed only when the condition is satisfied. In this method, a condition flag corresponding to an execution condition added to each instruction at the time of execution is referred to. If the condition is not satisfied, the execution result of the instruction is invalidated, that is, executed as a no-operation instruction. .
例えば、図10に示した条件分岐を含むフローの処理を、各命令に実行条件を示す情報を付加する方式で記述すると、図11のようなプログラムになる。図11において、C0及びC1は、命令に付加された条件を示しており、それに対応する条件フラグの値が真の場合にはその命令が実行され、偽の場合にはその命令は無動作命令として実行される。この例では、まず命令1(比較命令)の比較結果がC0に格納される。それと同時にC1にはC0と逆の条件が設定される。したがって、命令2と命令3のうちいずれか一方に関して、実際にオペレーションが実行され、残りの一方は無動作命令として実行される。この結果、分岐処理が不要となり、分岐処理のオーバーヘッドを解決している。
For example, if the processing of the flow including the conditional branch shown in FIG. 10 is described by a method in which information indicating the execution condition is added to each instruction, a program as shown in FIG. 11 is obtained. In FIG. 11, C0 and C1 indicate conditions added to the instruction. When the value of the corresponding condition flag is true, the instruction is executed, and when it is false, the instruction is an inoperative instruction. Run as. In this example, the comparison result of instruction 1 (comparison instruction) is first stored in C0. At the same time, a condition opposite to C0 is set for C1. Therefore, the operation is actually executed for one of the
前述の従来の条件付き実行方式では、条件が不成立の場合、当該命令は無動作命令として動作することになり、実質はオペレーションを実行しないことになる。したがって、2命令が並列に記述され、2つの演算器を使用しているにもかかわらず、実際には1つの演算器しか有効に活用できていない。その結果、プログラムに記述された並列度に対して、実効性能が低くなってしまうという問題点がある。 In the above-described conventional conditional execution method, if the condition is not satisfied, the instruction operates as a no-operation instruction, and the operation is not actually executed. Therefore, even though two instructions are described in parallel and two arithmetic units are used, only one arithmetic unit can be effectively used in practice. As a result, there is a problem that the effective performance is lowered with respect to the degree of parallelism described in the program.
本発明はかかる問題点に鑑みてなされたものであり、ハードウェアの有効利用を達成し、性能を向上させたプロセッサを提供することを目的とする。 The present invention has been made in view of such problems, and an object thereof is to provide a processor that achieves effective use of hardware and has improved performance.
上記目的を達成するために、本発明の第1の特徴を有するプロセッサは、複数の命令を供給するための命令供給手段と、前記複数の命令を各々解読するための解読手段と、前記複数の命令中に各命令を実行するか否かを示す条件を指定する実行条件情報が指定され、当該実行条件情報で指定された条件を参照して、有効なオペレーションを実行する命令又は命令の集合を決定するための命令発行制御手段と、前記複数の命令中に各命令の動作が指定され、当該指定に基づいて1つ又は複数のオペレーションを実行するための実行手段とを備えたプロセッサにおいて、前記命令発行制御手段は、前記実行条件情報で指定された条件を参照することにより、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断し、無効な命令であると判断した命令に関しては、当該命令を前記実行手段へ発行する前に当該命令自体を削除するように制御し、かつ当該命令に代えて当該命令に後続する有効な命令を前記実行手段へ発行するように制御する機能を有することとしたものである。これにより、条件付き命令の条件が不成立の場合でも、無動作命令が実行されず、実行手段中の演算器が後続の命令によって有効利用されるため、演算器の利用効率が高まり、実効性能を向上させることができる。 In order to achieve the above object, a processor having the first feature of the present invention comprises: an instruction supply means for supplying a plurality of instructions; a decoding means for decoding each of the plurality of instructions; Execution condition information specifying a condition indicating whether or not to execute each instruction is specified in the instruction, and an instruction or a set of instructions for executing a valid operation is referred to by referring to the condition specified by the execution condition information. In a processor, comprising: an instruction issuance control means for determining; and an execution means for specifying an operation of each instruction in the plurality of instructions and executing one or a plurality of operations based on the specification. The instruction issuance control means determines whether the instruction is a valid instruction that needs to be executed or an invalid instruction that does not need to be executed by referring to the condition specified by the execution condition information. With respect to an instruction determined to be an invalid instruction, control is performed to delete the instruction itself before issuing the instruction to the execution means, and a valid instruction subsequent to the instruction is substituted for the instruction. It has a function to control to issue to the execution means. As a result, even when the condition of the conditional instruction is not satisfied, the no-operation instruction is not executed, and the arithmetic unit in the execution means is effectively used by the subsequent instruction. Can be improved.
また、本発明の第1の特徴を有するプロセッサにおいて、前記実行手段は、前記命令に対応するオペレーションを実行した後で、実行結果を無効化するための実行結果無効化手段を有し、各命令について、前記実行手段へ発行する前に当該命令自体を削除するか、前記実行結果無効化手段にて実行結果を無効化するかを選択するための命令無効化方法選択手段を更に備えることとした。これにより、実行条件判定に用いる条件フラグが未確定の場合にも、プロセッサのパイプラインを停止する必要がなくなり、性能を向上させることができる。 In the processor having the first feature of the present invention, the execution means includes execution result invalidation means for invalidating the execution result after executing the operation corresponding to the instruction. The instruction invalidation method selection means for selecting whether to delete the instruction itself before issuing to the execution means or invalidate the execution result by the execution result invalidation means. . This eliminates the need to stop the processor pipeline even when the condition flag used for execution condition determination is uncertain, and can improve performance.
また、本発明の第1の特徴を有するプロセッサにおいて、前記命令無効化方法選択手段は、各条件フラグの値が確定しているか否かを示す条件フラグ有効情報を参照することによって、いずれの命令無効化方法を選択するかを決定し、前記条件フラグ有効情報は、前記解読手段において条件フラグを更新する命令であると解読された場合に当該条件フラグの確定性が偽に設定され、前記実行手段において当該命令が実行されて当該条件フラグの値が確定した際に真に設定されることとした。 Further, in the processor having the first feature of the present invention, the instruction invalidation method selecting means refers to any instruction by referring to the condition flag valid information indicating whether or not the value of each condition flag is fixed. Decide whether to select an invalidation method, and if the condition flag validity information is decoded by the decoding means as an instruction to update the condition flag, the determinism of the condition flag is set to false and the execution When the instruction is executed by the means and the value of the condition flag is fixed, the value is set to true.
また、本発明の第1の特徴を有するプロセッサにおいて、前記命令発行制御手段は、複数の命令の機能が単一の命令で実現可能であるような命令の組み合わせを検出し、それら複数の命令を単一の命令として扱うように結合する機能を更に有することとした。これにより、元々複数の演算器を使用する予定であった命令を単一の演算器で実行させるようにすることができ、演算器の利用効率が高まり、実効性能を向上させることができる。 In the processor having the first feature of the present invention, the instruction issuance control means detects a combination of instructions such that the functions of a plurality of instructions can be realized by a single instruction, and outputs the plurality of instructions. It is further provided with a function of combining such that it is handled as a single instruction. As a result, an instruction originally intended to use a plurality of arithmetic units can be executed by a single arithmetic unit, the utilization efficiency of the arithmetic units can be increased, and the effective performance can be improved.
また、本発明の第1の特徴を有するプロセッサにおいて、前記複数の命令の結合は、前記実行手段への発行前における命令の削除の後に適用されることとした。 In the processor having the first feature of the present invention, the combination of the plurality of instructions is applied after the instruction is deleted before being issued to the execution means.
また、本発明の第1の特徴を有するプロセッサにおいて、前記命令発行制御手段は、各サイクルにおいて同一の前記実行条件情報を持つ命令が連続配置されている場合には、前記解読手段によって解読された複数の命令を予め各実行条件毎に分類し、その分類毎に条件フラグを参照して、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断することとした。これにより、条件フラグの参照を最小限に抑えることができ、命令の削除の判定に要する時間を削減することができる。 In the processor having the first feature of the present invention, the instruction issuance control means is decoded by the decoding means when instructions having the same execution condition information are continuously arranged in each cycle. A plurality of instructions are classified in advance for each execution condition, and a condition flag is referenced for each classification to determine whether the instruction is a valid instruction that needs to be executed or an invalid instruction that does not need to be executed. It was decided. As a result, reference to the condition flag can be minimized, and the time required for determining instruction deletion can be reduced.
また、本発明の第1の特徴を有するプロセッサにおいて、前記複数の命令中に各命令が並列実行の境界であるか否かの並列実行境界情報が指定され、前記命令発行制御手段は、各命令の前記並列実行境界情報を参照して、当サイクルにおいて実行の対象とする命令群を検出する機能を更に有することとした。 In the processor having the first feature of the present invention, parallel execution boundary information indicating whether each instruction is a boundary for parallel execution is specified in the plurality of instructions, and the instruction issue control means Referring to the parallel execution boundary information, a function for detecting an instruction group to be executed in this cycle is further provided.
また、本発明の第1の特徴を有するプロセッサにおいて、前記命令発行制御手段は、命令内の並列実行境界情報にて検出された境界命令以前の全ての命令が実行する必要のない無効な命令として削除された場合には、当該境界命令の並列実行境界情報を無効化し、当該境界命令以降の命令の並列実行境界情報を参照することにより当サイクルの新たな並列実行境界を検出することとした。これにより、あるサイクルに配置された全ての命令が削除された場合には、そのサイクル自体をスキップして次のサイクルの命令を実行することができるようになるので、実行サイクル数を削減することができる。 Further, in the processor having the first feature of the present invention, the instruction issuance control means is an invalid instruction that does not need to be executed by all instructions before the boundary instruction detected by the parallel execution boundary information in the instruction. When deleted, the parallel execution boundary information of the boundary instruction is invalidated, and the new parallel execution boundary of the cycle is detected by referring to the parallel execution boundary information of the instruction after the boundary instruction. As a result, if all instructions placed in a cycle are deleted, the cycle itself can be skipped and the next cycle instruction can be executed, reducing the number of execution cycles. Can do.
本発明の第2の特徴を有するプロセッサは、複数の命令を供給するための命令供給手段と、前記複数の命令を各々解読するための解読手段と、有効なオペレーションを実行する命令又は命令の集合を決定するための命令発行制御手段と、前記複数の命令中に各命令の動作が指定され、当該指定に基づいて1つ又は複数のオペレーションを実行するための実行手段とを備えたプロセッサにおいて、前記命令発行制御手段は、前記解読手段にて解読された命令群の中から、複数の命令の機能が単一の命令で実現可能であるような命令の組み合わせを検出し、それら複数の命令を単一の命令として扱うように結合する機能を有することとしたものである。これにより、元々実行手段中の複数の演算器を使用する予定であった命令を単一の演算器で実行させるようにすることができ、演算器の利用効率が高まり、実効性能を向上させることができる。 A processor having the second feature of the present invention includes an instruction supply means for supplying a plurality of instructions, a decoding means for decoding each of the plurality of instructions, and an instruction or a set of instructions for executing an effective operation. A processor comprising: an instruction issuance control means for determining the operation; and an execution means for specifying the operation of each instruction in the plurality of instructions and executing one or more operations based on the specification. The instruction issuance control means detects a combination of instructions such that a function of a plurality of instructions can be realized by a single instruction from the group of instructions decoded by the decoding means, and determines the plurality of instructions. It has a function of combining them so that they are handled as a single instruction. As a result, instructions that were originally scheduled to use multiple arithmetic units in the execution means can be executed by a single arithmetic unit, so that the utilization efficiency of the arithmetic units is increased and the effective performance is improved. Can do.
また、本発明の第2の特徴を有するプロセッサにおいて、前記命令発行制御手段は、当サイクルにて実行対象にも削除対象にも結合対象にもならずに残った命令群を検出し、それらの命令群を次サイクル以降で発行の対象とするように制御する機能を更に有することとした。これにより例外の発生やコンパイル装置の不良により、あるサイクルにて発行されずに残った命令が存在しても、誤動作を引き起こすことなく正確に実行を継続することができる。 In the processor having the second feature of the present invention, the instruction issuance control means detects a group of instructions that remain in the cycle without being executed, deleted or combined, and It is further provided with a function of controlling the instruction group to be issued in the next cycle. As a result, even if there is an instruction that is not issued in a certain cycle due to the occurrence of an exception or a failure of the compiling device, the execution can be continued accurately without causing a malfunction.
本発明によれば、ハードウェアの有効利用を達成し、性能を向上させたプロセッサを提供することができる。 According to the present invention, it is possible to provide a processor that achieves effective use of hardware and improves performance.
以下、本発明に係るプロセッサ、コンパイル装置及びコンパイル方法の実施の形態について、図面を用いて詳細に説明する。 Embodiments of a processor, a compiling device, and a compiling method according to the present invention will be described below in detail with reference to the drawings.
[実施の形態1:プロセッサ]
(命令フォーマットとアーキテクチャの概要)
まず、図1(a)〜(c)を用いて、本発明に係るプロセッサが解読実行する命令の構造について説明する。図1(a)〜(c)は、本プロセッサの命令フォーマットを示す図である。本プロセッサの各命令は、32ビットの固定長であり、各命令は1ビットの並列実行境界情報(E:end bit)10を保持している。この情報は、当該命令とそれに後続する命令との間に並列実行の境界が存在するか否かを示すものである。具体的には、並列実行境界情報Eが“1”の場合にはその命令と後続命令との間に並列実行の境界が存在し、並列実行境界情報Eが“0”の場合には並列実行の境界が存在しないことになる。この情報の利用方法については後で述べる。
[Embodiment 1: Processor]
(Instruction format and architecture overview)
First, the structure of an instruction that is decoded and executed by the processor according to the present invention will be described with reference to FIGS. 1A to 1C are diagrams showing the instruction format of the processor. Each instruction of this processor has a fixed length of 32 bits, and each instruction holds 1-bit parallel execution boundary information (E: end bit) 10. This information indicates whether or not there is a parallel execution boundary between the instruction and the subsequent instruction. Specifically, when the parallel execution boundary information E is “1”, a parallel execution boundary exists between the instruction and the subsequent instruction, and when the parallel execution boundary information E is “0”, the parallel execution is performed. There will be no boundaries. A method of using this information will be described later.
また、各命令は3ビットの実行条件情報(P:predicate)11を保持している。この実行条件情報Pは、後述する図5中の8個の条件フラグC0〜C7(311)のうち当該命令を実行するか否かの条件が格納された条件フラグを指定するものである。この実行条件情報Pで指定された条件フラグの値が“1”の場合には当該命令で指定されたオペレーションを実行し、条件フラグの値が“0”の場合にはオペレーションを実行しない。 Each instruction holds 3-bit execution condition information (P: predicate) 11. The execution condition information P designates a condition flag in which a condition indicating whether or not to execute the instruction is stored among eight condition flags C0 to C7 (311) in FIG. 5 to be described later. When the value of the condition flag specified by the execution condition information P is “1”, the operation specified by the instruction is executed, and when the value of the condition flag is “0”, the operation is not executed.
各命令の命令長から並列実行境界情報Eと実行条件情報Pとを除いた28ビットの部分にてオペレーションを指定する。具体的には、“Op1”、“Op2”及び“Op3”のフィールドでは、オペレーションの種類を表すオペコードを、“Rs”のフィールドでは、ソースオペランドとなるレジスタのレジスタ番号を、“Rd”のフィールドでは、デスティネーションオペランドとなるレジスタのレジスタ番号をそれぞれ指定する。また、“imm”のフィールドでは、演算用定数オペランドを指定する。そして、“disp”のフィールドでは、変位(ディスプレースメント)を指定する。 The operation is specified by a 28-bit portion obtained by removing the parallel execution boundary information E and the execution condition information P from the instruction length of each instruction. Specifically, in the “Op1”, “Op2”, and “Op3” fields, an operation code indicating the type of operation is displayed. In the “Rs” field, the register number of the register that is the source operand is set in the “Rd” field. Specifies the register numbers of the registers that will be the destination operands. In the “imm” field, an arithmetic constant operand is designated. In the “disp” field, a displacement is specified.
次に、図2(a)及び(b)を用いて、本プロセッサのアーキテクチャの概要について説明する。本プロセッサは、静的な並列スケジューリングを前提としたプロセッサである。 Next, an outline of the architecture of the processor will be described with reference to FIGS. This processor is a processor premised on static parallel scheduling.
命令の供給は、図2(a)に示すように、毎サイクル128ビット固定長の命令供給単位(ここでは「パケット」と呼ぶ。)で4命令ずつ供給する。そして、命令の実行は、図2(b)に示すように、1サイクルで並列実行の境界までの命令(ここでは「実行単位」と呼ぶ。)を同時実行する。つまり、各サイクルにおいて並列実行境界情報Eが“1”である命令までの命令を並列実行することになる。供給されながら実行されなかった命令は、命令バッファ内に残され、次のサイクル以降で実行の対象となる。 As shown in FIG. 2A, four instructions are supplied in units of instruction supply units each having a fixed length of 128 bits (referred to herein as “packets”). As shown in FIG. 2B, the instructions are executed by executing instructions up to the boundary of parallel execution (referred to herein as “execution units”) in one cycle. That is, instructions up to the instruction whose parallel execution boundary information E is “1” are executed in parallel in each cycle. An instruction that has been supplied but not executed remains in the instruction buffer and becomes an object to be executed after the next cycle.
つまり、このアーキテクチャでは、固定長のパケット単位で命令を供給しておき、静的に求めた情報を元に、各サイクルにおいて並列度に応じた適切な数の命令を発行していく、ということになる。この手法をとることにより、通常の固定長命令のVLIW方式で発生していた無動作命令(nop命令)が全く無くなり、コードサイズを削減することができる。 In other words, in this architecture, instructions are supplied in units of fixed-length packets, and an appropriate number of instructions according to the degree of parallelism is issued in each cycle based on statically obtained information. become. By adopting this method, the no-operation instruction (nop instruction) generated in the normal fixed-length instruction VLIW method is completely eliminated, and the code size can be reduced.
(プロセッサのハードウェア構成)
図3は、本発明に係るプロセッサのハードウェア構成を示すブロック図である。本プロセッサは、2つの演算器を持つ並列実行プロセッサであり、大きく分けて、命令供給部20、解読部30、実行部40から構成される。
(Processor hardware configuration)
FIG. 3 is a block diagram showing the hardware configuration of the processor according to the present invention. This processor is a parallel execution processor having two arithmetic units, and is roughly composed of an instruction supply unit 20, a decoding unit 30, and an execution unit 40.
命令供給部20は、図示されていない外部メモリから命令群を供給し、解読部30に出力するものであり、命令フェッチ部21、命令バッファ22及び命令レジスタ23からなる。
The instruction supply unit 20 supplies an instruction group from an external memory (not shown) and outputs the instruction group to the decoding unit 30. The instruction supply unit 20 includes an instruction fetch
命令フェッチ部21は、32ビットのIA(インストラクションアドレス)バス及び128ビットのID(インストラクションデータ)バスを通じて図示されていない外部メモリから命令のブロックをフェッチし、内部の命令キャッシュに保持するとともに、PC(プログラムカウンタ)部42から出力されたアドレスに相当する命令群を命令バッファ22に供給する。
The instruction fetch
命令バッファ22は、128ビットのバッファを2個備えており、命令フェッチ部21によって供給された命令を蓄積しておくために用いられる。命令バッファ22へは、命令フェッチ部21から128ビット単位でパケットが供給される。命令バッファ22に蓄積された命令は、命令レジスタ23の適切なレジスタに出力される。
The
命令レジスタ23は、4個の32ビットレジスタ231〜234からなり、命令バッファ22から送られてきた命令を保持するためのものである。命令レジスタ23の周辺については、別の図面において更に詳細な構成を示している。
The instruction register 23 includes four 32-
解読部30は、命令レジスタ23に保持された命令を解読し、その解読結果に応じた制御信号を実行部40に出力するものであり、大きく分けて、命令発行制御部31、命令デコーダ32及び命令無効化方法選択部38からなる。
The decoding unit 30 decodes the instruction held in the instruction register 23, and outputs a control signal corresponding to the decoding result to the execution unit 40, and is roughly divided into an instruction
命令発行制御部31は、命令レジスタ23の4個のレジスタ231〜234に保持された命令に対して、命令内の実行条件情報Pと、それに対応する条件フラグとを参照することによって、条件フラグの値が偽である命令に関しては、その命令自体を実質的に削除するといった処理を行う。ただし、命令無効化方法選択部38で解読部30が選択された場合に限る。また、命令発行制御部31は、命令内の並列実行境界情報Eを参照することによって、並列実行の境界を越えた命令について、その命令の発行を無効化するといった発行に関する制御を行う。なお、命令発行制御部31については、別の図面において更に詳細な動作説明を行う。
The instruction
命令デコーダ32は、命令レジスタ23に格納された命令群を解読する装置であり、第1命令デコーダ33、第2命令デコーダ34、第3命令デコーダ35及び第4命令デコーダ36からなる。これらのデコーダ33〜36の各々は、基本的に1サイクルに1つの命令を解読し、実行部40に制御信号を与える。また、命令内に置かれた定数オペランドについては、各命令デコーダから実行部40のデータバス48に転送される。
The
命令無効化方法選択部38は、条件フラグが偽であり実行する必要のない命令を、解読部30にて無効化するのか実行部40にて無効化するのかを選択する。具体的には、後述する命令発行制御部31の条件フラグ有効情報312(図5)にて、当該命令の条件フラグが有効である、つまり確定していると示された場合には、解読部30にて無効な命令の削除を行い、そうでない場合には、実行部40の書き込み制御部46にて当該命令の実行結果の書き込みを無効化する。
The instruction invalidation
実行部40は、解読部30での解読結果に基づいて、最大2つのオペレーションを並列実行する回路ユニットであり、実行制御部41、PC部42、レジスタファイル43、第1演算器44、第2演算器45、書き込み制御部46、オペランドアクセス部47及びデータバス48,49からなる。
The execution unit 40 is a circuit unit that executes a maximum of two operations in parallel based on the decoding result of the decoding unit 30, and includes an
実行制御部41は、解読部30での解読結果に基づいて実行部40の各構成要素42〜49を制御する制御回路や配線の総称であり、タイミング制御、動作許可禁止制御、ステータス管理、割り込み制御などの回路を有する。
The
PC部42は、次に解読実行すべき命令が置かれている図示されていない外部メモリ上のアドレスを、命令供給部20内の命令フェッチ部21に出力する。
The
レジスタファイル43は、64個の32ビットレジスタ(R0〜R63)から構成される。これらのレジスタに格納された値は、命令デコーダ32での解読結果に基づいて、データバス48を経由して第1演算器44及び第2演算器45に転送され、そこで演算が施され、又はそこを単に通過した後に、データバス49を経由してレジスタファイル43又はオペランドアクセス部47に送られる。
The
第1演算器44及び第2演算器45は、それぞれ2個の32ビットデータに対して算術論理演算を行うALUや乗算器と、シフト演算を行うバレルシフタとを内部に有し、実行制御部41による制御の下で演算を実行する。
Each of the
書き込み制御部46は、ある命令を実行部40にて無効化することが命令無効化方法選択部38にて選択された場合のみ、当該命令の条件フラグの内容が偽であったとき、当該命令の実行結果をレジスタファイル43に書き込まないように制御を行う。これにより、当該命令に関しては、無動作命令(nop命令)を実行した場合と同等の結果となる。
Only when the instruction invalidation
オペランドアクセス部47は、レジスタファイル43と図示されていない外部メモリとの間でオペランドの転送を行う回路である。具体的には、例えば、命令内で、オペコードとして“ld”(ロード)が置かれていた場合には、外部メモリに置かれていた1ワード(32ビット)のデータがオペランドアクセス部47を経てレジスタファイル43の指定されたレジスタにロードされ、また、オペコードとして“st”(ストア)が置かれていた場合には、レジスタファイル43の指定されたレジスタの格納値が外部メモリにストアされる。
The operand access unit 47 is a circuit that transfers operands between the
上記PC部42、レジスタファイル43、第1演算器44、第2演算器45、書き込み制御部46及びオペランドアクセス部47は、図示されるように、データバス48(L1バス、R1バス、L2バス、R2バス)及びデータバス49(D1バス、D2バス)で接続されている。なお、L1バス及びR1バスは第1演算器44の2つの入力ポートに、L2バス及びR2バスは第2演算器45の2つの入力ポートに、D1バス及びD2バスは第1演算器44及び第2演算器45の出力ポートにそれぞれ接続されている。
The
(命令レジスタ23の周辺の構成と命令発行制御部31の動作)
図4は、命令レジスタ23の周辺の構成を示すブロック図である。図中、破線の矢印は制御信号を表す。
(The peripheral configuration of the instruction register 23 and the operation of the instruction issuance control unit 31)
FIG. 4 is a block diagram showing a configuration around the instruction register 23. In the figure, broken arrows represent control signals.
命令レジスタ23は、Aレジスタ231、Bレジスタ232、Cレジスタ233及びDレジスタ234の4個の32ビットレジスタからなる。命令レジスタ23には、命令バッファ22から命令が供給される。
The instruction register 23 includes four 32-bit registers, an
第1〜第4命令デコーダ33,34,35,36は、各々32ビットの命令を入力とし、それを解読して、その命令の動作に関する制御信号を出力するとともに、命令内に配置された定数オペランドを出力する。図4の50及び51は、各々実行が確定した命令の定数オペランドである。
The first to
また、第2〜第4命令デコーダ34,35,36には、制御信号として1ビットの無動作命令フラグが入力される。このフラグを“1”にセットすると、そのデコーダは出力として無動作命令に相当する制御信号を出力する。つまり、無動作命令フラグをセットすることにより、その命令デコーダのデコードを無効化することができる。
Further, a 1-bit no-operation instruction flag is input to the second to
そして、命令発行制御部31は、命令レジスタ23に格納された命令内の情報を参照して、並列実行の境界以降の命令のデコードを無効化するための無動作命令フラグの生成と、実行条件が真であり、かつ実行部40でオペレーションを実行すべき有効な命令を選択するための実行命令セレクタ371,372の制御と、それに対応した制御信号を選択するための実行命令セレクタ373,374の制御とを行う。
Then, the instruction
図5は、本プロセッサの命令発行制御部31とその周辺回路の構成を示したものである。命令発行制御部31は、まず各命令内の並列実行境界情報Eを参照し、このサイクルでどこまでの命令を発行するのかを決める。そして、このサイクルで発行されない命令に対応する命令デコーダの無動作命令フラグを“1”にセットすることにより、そのデコーダの出力を無動作命令に相当する制御信号にする。この無動作命令フラグの生成は、図5の命令発行制御部31の右半部に示されたような簡単な論理回路(ORゲート)314,315で実現することができる。それと同時に、どれだけの命令が発行されずに残ったのかの情報を命令バッファ22に伝達する。
FIG. 5 shows the configuration of the instruction
具体的に説明すると、Aレジスタ231の命令の並列実行境界情報Eが“1”の場合には、第2、第3及び第4命令デコーダ34,35,36のデコードを無効化する。また、Bレジスタ232の命令の並列実行境界情報Eが“1”の場合には、第3及び第4命令デコーダ35,36のデコードを無効化する。そして、Cレジスタ233の命令の並列実行境界情報Eが“1”の場合には、第4命令デコーダ36のデコードを無効化することになる。
More specifically, when the parallel execution boundary information E of the instruction in the
更に、命令発行制御部31は、各命令内の実行条件情報Pを参照し、条件フラグが偽となる命令、すなわち実行する必要のない命令に関して、その命令自体を実質的に削除してしまうように、図4の実行命令セレクタ371〜374を制御する。本プロセッサでは、各サイクル最大4命令をデコードするが、実際にオペレーションが実行されるのはたかだか2命令ということになる。これによって、実行条件が偽の場合に実行部40にて無動作命令が実行されてしまい、演算器44,45の利用効率が悪くなるという問題点を解決している。
Further, the instruction
これを実現するために、命令発行制御部31は、実行命令選択制御部313を備えている。実行命令選択制御部313は、8個の条件フラグ(C0〜C7)311のうち命令内に指定された実行条件情報Pに対応する条件フラグを参照することにより、オペレーションを実行する必要のない命令を検出し、その命令を選択せず、後続の有効な命令を選択するように実行命令セレクタ371〜374を制御する。非選択の命令自体が実質的に削除されることになる。条件フラグ311は8個の1ビットレジスタC0〜C7からなり、各命令内の3ビットの実行条件情報Pをデコードすることにより指定される。ただし、条件フラグC7の値は常に“1”であり、常に実行する命令は、実行条件としてC7を指定することになる。プログラム中での記述ではC7の指定は省略することができる。
In order to realize this, the instruction
ただし、条件フラグを更新する命令において、条件フラグが確定するのは、実行ステージすなわち実行部40なので、前サイクルにおいて、ある条件フラグを更新する命令を実行している場合、次サイクルの解読ステージすなわち解読部30にてその条件フラグは確定しておらず、命令の削除可否の判断を行うことができない。この状態を検出するために、条件フラグ有効情報312が備えられている。
However, in the instruction that updates the condition flag, it is the execution stage, that is, the execution unit 40 that determines the condition flag. Therefore, if an instruction that updates a certain condition flag is executed in the previous cycle, the decoding stage of the next cycle, that is, The condition flag is not fixed in the decoding unit 30, and it cannot be determined whether or not the instruction can be deleted. In order to detect this state, condition flag
条件フラグ有効情報312は、各条件フラグ毎にその値が有効であるか否かの1ビットの値を保持しており、解読部30にてある条件フラグを更新する命令を実行することが判明した際に、その条件フラグの有効情報を“0”に設定し、実行部40においてその条件フラグの値の更新が完了すると、その条件フラグの有効情報を“1”に設定する。
The condition
命令発行制御部31では、各命令の実行条件情報Pを参照した後、条件フラグ有効情報312を参照して、各実行条件に対応する条件フラグの値が有効であるか否かを検出する。そして、有効でなかった場合、すなわち条件フラグ有効情報312の該当ビットが“0”であった場合、当該命令自体の削除は行わない。当該命令はそのまま実行部40に発行され、条件フラグが確定した時点で、必要であればその命令の実行結果の書き込みを無効化する。
The instruction
条件フラグの値が有効であった場合、すなわち条件フラグ有効情報312の該当ビットが“1”であった場合、当該命令の実行条件情報Pで指定された条件フラグ311内の1ビットを参照し、その値が“1”であった場合には、その命令をそのまま実行部40に発行し、値が“0”であった場合には、その命令自体を実質的に削除するように実行命令セレクタ371〜374を制御する。
When the value of the condition flag is valid, that is, when the corresponding bit of the condition
つまり、ある命令の実行条件情報Pが“0”である場合、直前の命令において対応する条件フラグが更新される場合には、実行部40においてその命令の実行結果を無効化し、そうでない場合には、解読部30において、その命令自体を実質的に削除してしまうことになる。 That is, when the execution condition information P of a certain instruction is “0”, if the corresponding condition flag is updated in the immediately preceding instruction, the execution unit 40 invalidates the execution result of the instruction. In the decoding unit 30, the instruction itself is substantially deleted.
図6は、具体的な命令列を実行した際のパイプライン処理のタイミングを示す図である。ここでは、3つの命令を上から順に1命令ずつ実行した場合を想定している。最初の命令はレジスタR0の内容とレジスタR1の内容とを比較して、一致していれば条件フラグC0に“1”を設定し、そうでなければ“0”を設定する比較命令であり、次の命令は、条件フラグC0の内容が“1”の場合のみ、レジスタR3の内容からレジスタR2の内容の減算を行って、結果をレジスタR3に書き込む減算命令であり、最後の命令は、条件フラグC0の内容が“1”の場合のみ、レジスタR4の内容とレジスタR5の内容との加算を行って、結果をレジスタR5に書き込む加算命令である。 FIG. 6 is a diagram showing the timing of pipeline processing when a specific instruction sequence is executed. Here, it is assumed that three instructions are executed one by one in order from the top. The first instruction is a comparison instruction that compares the contents of the register R0 with the contents of the register R1, sets "1" to the condition flag C0 if they match, and sets "0" otherwise. The next instruction is a subtraction instruction that subtracts the contents of the register R2 from the contents of the register R3 and writes the result to the register R3 only when the contents of the condition flag C0 is “1”. Only when the content of the flag C0 is “1”, this is an addition instruction for adding the content of the register R4 and the content of the register R5 and writing the result to the register R5.
図6中、各命令の右側に、それぞれの命令の命令フェッチステージ(IF)、解読ステージ(DEC)、実行ステージ(EX)のタイミングを示している。ここでは、最初の比較命令の結果が偽、すなわちC0が“0”になった場合を仮定している。 In FIG. 6, the timing of the instruction fetch stage (IF), decoding stage (DEC), and execution stage (EX) of each instruction is shown on the right side of each instruction. Here, it is assumed that the result of the first comparison instruction is false, that is, C0 becomes “0”.
図6を見てわかるように、最初の比較命令の解読ステージ(DEC)にて、C0を更新する命令であることが検出され、C0の有効情報が“0”に設定され、実行ステージ(EX)にて、比較結果が確定した後で、C0の有効情報が“1”に設定される。 As can be seen from FIG. 6, at the decoding stage (DEC) of the first comparison instruction, it is detected that the instruction is to update C0, the valid information of C0 is set to “0”, and the execution stage (EX ), After the comparison result is confirmed, the valid information of C0 is set to “1”.
後続の減算命令、加算命令ともにC0を条件として実行する命令であるが、比較命令の直後の減算命令に関しては、解読ステージ(DEC)の段階でC0の値が有効でないため命令自体の削除は行わず、実行ステージ(EX)に発行され、そのステージにて実行結果が無効化される。一方、加算命令に関しては、解読ステージ(DEC)の時点でC0の値が確定しているため、解読ステージ(DEC)にて命令自体が実質的に削除され、実行ステージ(EX)へは発行されない。この場合、空いた演算器を加算命令の後続の命令で活用できることになる。 Both the subsequent subtraction instruction and the addition instruction are executed under the condition of C0. However, for the subtraction instruction immediately after the comparison instruction, the instruction itself is deleted because the value of C0 is not valid at the stage of the decoding stage (DEC). First, it is issued to the execution stage (EX), and the execution result is invalidated at that stage. On the other hand, for the add instruction, since the value of C0 is fixed at the time of the decoding stage (DEC), the instruction itself is substantially deleted at the decoding stage (DEC) and is not issued to the execution stage (EX). . In this case, the free arithmetic unit can be used in the instruction subsequent to the addition instruction.
以上のような制御による命令の無効化後においても、発行されずに残った命令が存在した場合、命令発行制御部31は残った命令の個数を命令バッファ22に伝達し、命令バッファ22内でそれらの命令が無効化されず、次のサイクルにおいて再び命令レジスタ23に転送されるように制御する。
If there is a remaining instruction that is not issued even after the instruction is invalidated by the control as described above, the instruction
このように、図1に示したような命令フォーマットをとり、図4及び図5に示したような構成にすることで、演算器を有効活用する命令発行制御を行うことができる。 In this way, by taking the instruction format as shown in FIG. 1 and adopting the configuration as shown in FIGS. 4 and 5, instruction issue control that effectively uses the arithmetic unit can be performed.
(プロセッサの動作)
次に、具体的な命令を解読実行した場合の本実施形態のプロセッサの動作について説明する。
(Processor operation)
Next, the operation of the processor of this embodiment when a specific instruction is decoded and executed will be described.
図7は、条件付き実行を含むプログラムの一部を示す図である。このプログラムは5個の命令で構成されており、各命令の処理内容はニーモニックで表現されている。具体的には、ニーモニック“add”は、定数又はレジスタの格納値とレジスタの格納値との加算を表し、ニーモニック“sub”は、レジスタの格納値からの定数又はレジスタの格納値の減算を表し、ニーモニック“st”は、レジスタの格納値のメモリへの転送を表し、ニーモニック“mov”は、定数又はレジスタの格納値のレジスタへの転送を表している。 FIG. 7 is a diagram showing a part of a program including conditional execution. This program is composed of five instructions, and the processing content of each instruction is expressed in mnemonics. Specifically, the mnemonic “add” represents addition of a constant or register storage value and the register storage value, and the mnemonic “sub” represents subtraction of the constant or register storage value from the register storage value. The mnemonic “st” represents the transfer of the stored value of the register to the memory, and the mnemonic “mov” represents the transfer of the constant or the stored value of the register to the register.
また、“Rn(n=0〜63)”はレジスタファイル43の中の1つのレジスタを示す。そして、各命令の並列実行境界情報Eについても“0”又は“1”で示してある。更に、実行条件情報Pで指定される条件フラグについて、各命令の先頭に“[ ]”で囲んで記述してある。記述していない命令は常に実行する命令である。
“Rn (n = 0 to 63)” indicates one register in the
以下、各実行単位ごとの本プロセッサの動作を説明する。ただし、ここでは、最初の時点で、条件フラグC0の値が“1”、C1の値が“0”で確定しているものとする。 The operation of this processor for each execution unit will be described below. However, here, it is assumed that the value of the condition flag C0 is “1” and the value of C1 is “0” at the first time.
(実行単位1)
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、それぞれ命令レジスタ23に転送される。次に命令発行制御部31が各命令の並列実行境界情報Eを参照する。この場合、命令3の並列実行境界情報が“1”であるため、第4命令デコーダ36の解読結果を無効化、すなわち無動作命令とする。
(Execution unit 1)
次に、命令発行制御部31は各命令の実行条件情報Pを参照する。命令1の実行条件フラグはC0であり、C0の値は“1”で確定しているので、命令1を第1番目の命令として実行するように、オペランドの選択を実行命令セレクタ371で制御し、解読結果を選択するように実行命令セレクタ373を制御する。次に命令2の実行条件フラグはC1であり、C1の値は“0”で確定しているので、命令2自体は実質的に削除し、オペレーションの実行は行わない。そして、後続の命令3は常に実行される命令なので、命令3を第2番目の命令として実行するように、オペランドの選択を実行命令セレクタ372で制御し、解読結果を選択するように実行命令セレクタ374を制御する。結果的に命令1と命令3が実行する命令として実行部40に送られ、発行されなかった命令4は、命令バッファ22内に残される。
Next, the instruction
実行部40では、レジスタR0の格納値に1を加えた値がレジスタR0に格納され、レジスタR1の格納値とレジスタR2の格納値とを加えた値がレジスタR2に格納される。 In the execution unit 40, a value obtained by adding 1 to the stored value of the register R0 is stored in the register R0, and a value obtained by adding the stored value of the register R1 and the stored value of the register R2 is stored in the register R2.
(実行単位2)
命令バッファ22に残された命令4と、新たに外部メモリから供給された命令5とが順に命令レジスタ23に転送される。次に命令発行制御部31が各命令の並列実行境界情報Eを参照する。この場合、命令5の並列実行境界情報が“1”であるため、第3命令デコーダ35及び第4命令デコーダ36の解読結果を無効化、すなわち無動作命令とする。
(Execution unit 2)
The
命令4及び命令5は、共に常に実行される命令であるので、第1番目の命令として命令4を、第2番目の命令として命令5を実行部40に送るように、実行命令セレクタ371〜374を制御する。これで、供給された全ての命令が発行されたことになる。
Since both the
実行部40では、レジスタR0の格納値が外部メモリ内のレジスタR3で示されるアドレスに転送され、レジスタR2の格納値がレジスタR4に転送される。 In the execution unit 40, the stored value of the register R0 is transferred to the address indicated by the register R3 in the external memory, and the stored value of the register R2 is transferred to the register R4.
以上のように、図7に示したプログラムは、本プロセッサにおいて2つの実行単位で実行される。本プロセッサでは、演算器44,45の個数より多くの命令をデコードしておき、不要な命令を適宜削除することにより、これら演算器44,45の効率的な活用を図っている。この例においても、各サイクルとも、実行部40において2つのオペレーションを実行しており、搭載された演算器44,45が効率的に活用されている。
As described above, the program shown in FIG. 7 is executed in two execution units in this processor. In this processor, more instructions than the number of the
(従来の命令発行制御部を持つプロセッサとの比較)
次に、図7に示した処理を、従来技術として挙げた、条件実行命令を全て実行部へ発行し、この実行部において適宜無効化するようなプロセッサに行わせた場合を仮定して、本発明に係るプロセッサの場合と比較する。
(Comparison with a processor having a conventional instruction issue control unit)
Next, it is assumed that the processing shown in FIG. 7 is performed by a processor that issues all the conditional execution instructions to the execution unit and invalidates the execution unit as appropriate in the conventional technology. Compare with the processor according to the invention.
図8は、従来のプロセッサの命令レジスタの周辺の構成を示すブロック図である。従来のプロセッサとしては、本発明のプロセッサと同様に2つの演算器を持つものとし、命令フォーマットは、図1の本発明のプロセッサの命令フォーマットと同様とする。2並列のプロセッサなので、命令レジスタ23aはAレジスタ231a及びBレジスタ232aを、命令デコーダ32aは第1命令デコーダ33a及び第2命令デコーダ34aをそれぞれ備える。50a、51aは各々定数オペランドである。命令発行制御部31aでは、Aレジスタ231aに格納された命令の並列実行境界情報Eに応じて、第2命令デコーダ34aの解読結果を無効化する、という制御を行う。
FIG. 8 is a block diagram showing a peripheral configuration of an instruction register of a conventional processor. The conventional processor has two arithmetic units like the processor of the present invention, and the instruction format is the same as the instruction format of the processor of the present invention shown in FIG. Since the processors are two parallel processors, the instruction register 23a includes an
図9は、図7に示したプログラムの処理を、従来の命令発行制御部31aを持つプロセッサで実行させるプログラムを示す図である。図9のプログラムは、並列実行境界情報E以外の部分は、図7のプログラムと同一である。並列実行境界情報Eは、最大2命令が同時発行されるように設定されている。
FIG. 9 is a diagram showing a program that causes the processing of the program shown in FIG. 7 to be executed by a processor having a conventional instruction
以下、各実行単位ごとの従来のプロセッサの動作を説明する。ただし、ここでは、最初の時点で、条件フラグC0の値が“1”、C1の値が“0”で確定しているものとする。 The operation of the conventional processor for each execution unit will be described below. However, here, it is assumed that the value of the condition flag C0 is “1” and the value of C1 is “0” at the first time.
(実行単位1)
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、命令1と命令2が順に命令レジスタ23aに転送される。次に命令発行制御部31aがAレジスタ231aに格納された命令1の並列実行境界情報Eを参照する。この場合、命令1の並列実行境界情報Eは“0”であるため、第2命令デコーダ34aの解読結果は無効化しない。したがって、命令1と命令2の両方を実行部に送ることになる。発行されなかった命令3及び命令4は、命令バッファに残される。
(Execution unit 1)
A packet including an
実行部では、命令1の実行条件フラグであるC0が“1”であるため、レジスタR0の格納値に1を加えた値がレジスタR0に格納される。そして、命令2の実行条件フラグであるC1が“0”であるため、命令2に対応するオペレーションは実行されないか、もしくは実行後の結果を無効化し、結果的に無動作命令を実行したのと同様になる。
In the execution unit, C0 which is the execution condition flag of the
(実行単位2)
命令バッファに残された命令3及び命令4が順に命令レジスタ23aに転送され、新たに外部メモリから命令5が供給される。次に命令発行制御部31aがAレジスタ231aに格納された命令3の並列実行境界情報Eを参照する。この場合、命令3の並列実行境界情報Eが“0”であるため、第2命令デコーダ34aの解読結果は無効化しない。したがって、命令3と命令4の両方を実行部に送ることになる。発行されなかった命令5は、命令バッファ22に残される。
(Execution unit 2)
実行部では、命令3及び命令4は共に常に実行される命令であるので、これら2つの命令に対応するオペレーションが実行される。具体的には、レジスタR1の格納値とレジスタR2の格納値とを加えた値がレジスタR2に格納され、レジスタR0の格納値が外部メモリ上の、レジスタR3で示されるアドレスに転送される。
In the execution unit, since both the
(実行単位3)
命令バッファに残された命令5が命令レジスタ23aに転送される。次に命令発行制御部31aがAレジスタ231aに格納された命令5の並列実行境界情報Eを参照する。この場合、命令5の並列実行境界情報Eが“1”であるため、第2命令デコーダ34aの解読結果を無効化する。したがって、命令5のみが発行される。これで、供給された全ての命令が発行されたことになる。
(Execution unit 3)
The
実行部では、命令5は常に実行される命令であるので、命令5に対応したオペレーションが実行される。具体的には、レジスタR2の格納値がレジスタR4に転送される。
In the execution unit, since the
以上のように、図9に示したプログラムは、従来の命令発行制御部31aを持つプロセッサにおいて3つの実行単位で実行され、本発明のプロセッサの場合に比べて、1つ多い実行単位で実行されることになる。これは、従来の命令発行制御部31aを持つプロセッサでは、条件付き実行命令の条件が偽であった場合、その命令は無動作命令として実行されてしまい、搭載されている演算器を無駄に使用してしまうところに起因している。
As described above, the program shown in FIG. 9 is executed in three execution units in the processor having the conventional instruction
[実施の形態2:コンパイル装置]
次に、上述の実施の形態1におけるプロセッサで実行するコードを生成するためのコンパイル装置、及びそのコンパイル方法に関する実施の形態について説明する。
[Embodiment 2: Compiling device]
Next, an embodiment relating to a compiling apparatus for generating a code to be executed by the processor in the above-described first embodiment and a compiling method thereof will be described.
(用語説明)
まず、ここで用いる用語を説明する。
・オブジェクトコード
再配置可能情報を含んだ対象プロセッサ向け機械語プログラムをいう。連結編集を行い未確定アドレスを決定することにより実行形式コードに変換することができる。
・プレデセッサ
ある命令を実行するために、それ以前に実行しておく必要のある命令をいう。
・実行グループ
コンパイル装置によって、同一サイクルに並列実行可能であるものをグループ化した命令群をいう。
・基本ブロック
実行が先頭から始まり、必ず最後まで実行される一連の命令列のことであり、ブロックの途中でブロックを出ることや、ブロックの途中からブロックに入ることがないものをいう。
(Glossary)
First, terms used here will be described.
-Object code A machine language program for the target processor that contains relocatable information. By performing concatenated editing and determining an undetermined address, it can be converted into an executable code.
• Predecessor An instruction that must be executed before an instruction can be executed.
-Execution group An instruction group that groups together those that can be executed in parallel in the same cycle by a compiling device.
Basic block A sequence of instructions that starts from the beginning and is always executed to the end. It means that the block is exited in the middle of the block or the block is not entered in the middle of the block.
(対象プロセッサ)
本コンパイル装置が対象とするプロセッサは、上記実施の形態1で説明したプロセッサである。このプロセッサは、コンパイル装置にて付与された並列実行境界情報Eを参照することにより実行グループを生成し、ハードウェアでは並列実行可能か否かの判定を行わない。したがって、並列実行境界間すなわち実行グループ内に、同時実行可能な命令が正しく配置されていることは、コンパイル装置が保証することになる。並列実行境界間に配置できる命令に対する制約は、
(1)並列実行グループ中の命令の総数は4を越えない(命令デコーダの制約)、
(2)並列実行グループ中の命令のうち、実際に実行部にてオペレーションが実行される命令の個数は2を越えない(実行命令数の制約)、
(3)並列実行グループ中の命令のうち、実際に実行部にて使用する対象プロセッサ資源の総和は、2ALUユニット、1メモリアクセスユニット、1分岐ユニットを越えない(演算器の制約)、
である。命令は、これら3つの制約が満たされた場合のみ並列実行ができる。
(Target processor)
The processor targeted by the compiling apparatus is the processor described in the first embodiment. This processor generates an execution group by referring to the parallel execution boundary information E given by the compiling device, and does not determine whether or not parallel execution is possible in hardware. Therefore, the compiling device guarantees that instructions that can be executed simultaneously are correctly arranged between parallel execution boundaries, that is, in execution groups. The restrictions on instructions that can be placed between parallel execution boundaries are:
(1) The total number of instructions in the parallel execution group does not exceed 4 (instruction decoder restrictions);
(2) Of the instructions in the parallel execution group, the number of instructions that are actually executed by the execution unit does not exceed 2 (restriction on the number of executed instructions),
(3) Among the instructions in the parallel execution group, the sum of the target processor resources actually used by the execution unit does not exceed 2 ALU units, 1 memory access unit, and 1 branch unit (constraints on computing units).
It is. An instruction can be executed in parallel only if these three constraints are met.
(コンパイル装置の構成)
図12は、本発明の実施形態2におけるコンパイル装置の構成及び関連するデータを示すブロック図である。本コンパイル装置は、高級言語で書かれたソースコード120からオブジェクトコード130を生成するプログラム処理装置であり、コンパイラ上流部100、アセンブラコード生成部101、命令スケジューリング部102、オブジェクトコード生成部103からなる。
(Compile device configuration)
FIG. 12 is a block diagram showing a configuration of the compiling apparatus and related data according to the second embodiment of the present invention. The compiling device is a program processing device that generates
コンパイラ上流部100は、ファイル形式で保存されている高級言語ソースコード120を読み込み、構文解析及び意味解析を行って内部形式コードを生成する。更に必要に応じて、最終的に生成される実行形式コードのサイズやその実行時間が短くなるように内部形式コードを最適化する。
The compiler
アセンブラコード生成部101は、コンパイラ上流部100により生成、最適化された内部形式コードからアセンブラコードを生成する。
The assembler
コンパイラ上流部100及びアセンブラコード生成部101での処理は本発明の主眼ではなく、また、従来のコンパイル装置で行われてきた処理と同等であるので、詳細説明は省略する。
The processing in the compiler
(命令スケジューリング部102)
命令スケジューリング部102は、アセンブラコード生成部101で生成されたアセンブラコードに対し、命令に付加された各条件間の排他性の解析、命令間の依存関係の解析、命令の再配置(命令順の並べ替え)及び並列実行境界の付加を行い、アセンブラコードを対象プロセッサ向けに並列化する。命令スケジューリング部102は、条件排他性解析部110、依存関係解析部111、命令再配置部112及び実行境界付加部113から構成される。
(Instruction scheduling unit 102)
The
命令スケジューリング部102内では、まず条件排他性解析部110が動作する。その後、各基本ブロックごとに、依存関係解析部111、命令再配置部112及び実行境界付加部113が動作する。各部の詳細な動作は以下のとおりである。
In the
条件排他性解析部110は、条件フラグの排他性を解析し、各基本ブロックの先頭と、各条件フラグ更新命令に対して条件排他情報テーブルを生成していく。条件排他情報テーブルは、全ての条件フラグの組み合わせに対して、条件が排他であるか否かの情報を持つ配列である。条件排他情報テーブルの具体例については、後で示す(図16)。ここでは、全ての条件フラグの組み合わせが排他でない情報テーブルのことを無排他テーブルと呼ぶ。
The condition
図13は、条件排他性解析部110での処理手順を示すフローチャートである。条件排他性解析部110では、各命令に相当するコンパイル装置内部の中間コードを、下向きに探索して行き、各基本ブロックの先頭及び各条件フラグ更新命令に対して、条件排他情報テーブルを設定していく。
FIG. 13 is a flowchart showing a processing procedure in the condition
まず、現時点で有効である有効テーブルTvを無排他テーブルで初期化する(ステップS11)。以後、各基本ブロックについて、下向きに探索していく(ステップS12)。 First, a valid table Tv that is currently valid is initialized with a non-exclusive table (step S11). Thereafter, each basic block is searched downward (step S12).
ある基本ブロックに関する判定(ステップS13)の結果、当該基本ブロックの先行基本ブロックが1つだけの場合は、当該基本ブロック先頭テーブルに有効テーブルTvを設定し(ステップS14)、そうでない場合は、その時点での排他関係が特定できないので、当該基本ブロック先頭テーブルに無排他テーブルを設定する(ステップS15)。 If there is only one preceding basic block of the basic block as a result of the determination on a basic block (step S13), the valid table Tv is set in the basic block head table (step S14). Since the exclusive relationship at the time cannot be specified, a non-exclusive table is set in the basic block head table (step S15).
次に、基本ブロック内の各命令について探索していく(ステップS16)。比較命令などの条件フラグを更新する命令を発見すると(ステップS17)、その命令が同時に排他な条件を設定する命令であるかどうかを判定する(ステップS18)。同時に排他な条件を設定する命令は、図11の命令1の条件フラグC0とC1を更新する比較命令などが該当する。
Next, each instruction in the basic block is searched (step S16). When an instruction for updating a condition flag such as a comparison instruction is found (step S17), it is determined whether the instruction is an instruction for setting an exclusive condition at the same time (step S18). An instruction for setting an exclusive condition at the same time corresponds to a comparison instruction for updating the condition flags C0 and C1 of the
同時に排他な条件を設定する命令である場合、まず有効テーブルTv内の当該命令で更新する条件フラグに該当する部分を全て偽に設定しておいて、その後、当該命令で排他に設定される条件フラグの組のみ真に設定する。そして、当該命令用の排他情報テーブルに有効テーブルTvを設定する(ステップS19)。 In the case of an instruction for setting an exclusive condition at the same time, first, all portions corresponding to the condition flag to be updated by the instruction in the valid table Tv are set to false, and then the condition set to exclusive by the instruction Only set the flag set to true. Then, the valid table Tv is set in the exclusive information table for the instruction (step S19).
同時に排他な条件を設定しない命令である場合、当該命令で更新する条件フラグに関する排他性が崩れるので、有効テーブルTv内の当該命令で更新する条件フラグに該当する部分を全て偽に設定する。そして、当該命令用の排他情報テーブルに有効テーブルTvを設定する(ステップS20)。 In the case of an instruction that does not set an exclusive condition at the same time, since the exclusivity regarding the condition flag updated by the instruction is lost, all portions corresponding to the condition flag updated by the instruction in the valid table Tv are set to false. Then, the valid table Tv is set in the exclusive information table for the instruction (step S20).
以上を、各基本ブロック毎に繰り返していく(ステップS21、S22)。これによって、全基本ブロックの先頭及び条件フラグを設定する全ての命令について、それぞれの時点での条件フラグの排他性に関する情報を保持することができる。 The above is repeated for each basic block (steps S21 and S22). As a result, it is possible to hold information regarding the exclusivity of the condition flag at each point in time for all the instructions that set the head of all the basic blocks and the condition flag.
依存関係解析部111は、処理対象に含まれる命令間の依存関係を解析し、依存グラフとして表現する。命令間の依存関係には以下の3種類がある。いずれの依存関係にある命令も、元の命令順を変更するとプログラムの意味が異なってしまうため、命令並べ替え時においても依存関係は守る必要がある。
・データ依存関係
ある資源を定義する命令と、同じ資源を参照する命令との間の依存関係。
・逆依存関係
ある資源を参照する命令と、同じ資源を定義する命令との間の依存関係。
・出力依存関係
ある資源を定義する命令と、同じ資源を定義する命令との間の依存関係。
The dependency
Data dependency A dependency between an instruction that defines a resource and an instruction that references the same resource.
• Inverse dependency A dependency between an instruction that references a resource and an instruction that defines the same resource.
Output dependency A dependency between an instruction that defines a resource and an instruction that defines the same resource.
依存関係解析部111では、処理対象に含まれる各命令毎に、これに対応するノード(節)を、また各依存関係毎に、これに対応するエッジ(矢印)を生成し、依存グラフを生成する。この際、参照及び定義する資源に関して依存のある2命令間であっても、それぞれの命令の実行条件が排他である、すなわち同時に成立することはないことが保証されれば、それら2命令が共に資源を参照又は定義することはありえないので、その2命令間には依存関係が存在しないことになる。したがって、それら2命令に対応するノード間にはエッジを生成しない。
The dependency
これを実現するため、先行する命令Aと命令Bに関して、条件排他性解析部110で設定された排他情報テーブルを利用して、2命令の実行条件が排他であるか否かを検出する必要がある。この排他性の検出を行うアルゴリズムを図14に示す。
In order to realize this, it is necessary to detect whether or not the execution condition of the two instructions is exclusive with respect to the preceding instruction A and instruction B using the exclusive information table set by the condition
まず、命令Aの実行条件フラグをCnとする(ステップS31)。そして、命令Aの実行時点での有効な排他情報を求めるため、命令Aから上向きに探索していき、条件フラグを更新する命令を発見するか、基本ブロックの先頭に到達した時点で、該当する排他情報テーブルを有効テーブルTvとする(ステップS32)。 First, the execution condition flag of the instruction A is set to Cn (step S31). Then, in order to obtain valid exclusive information at the time of execution of the instruction A, the search is performed upward from the instruction A, and when the instruction for updating the condition flag is found or when the head of the basic block is reached, it corresponds. The exclusive information table is set as a valid table Tv (step S32).
次に、命令Bまでの経路をたどるため、命令Aから下向きに探索していく(ステップS33)。命令Bを発見した場合(ステップS34)、その時点での有効テーブルTvを参照して、条件フラグCnと命令Bの実行条件との排他関係を求めて終了する(ステップS35)。Cn以外の条件フラグを更新する命令を発見した場合(ステップS36)、その命令に対応する排他情報テーブルで有効テーブルTvを更新して、継続する(ステップS37)。条件フラグCnを更新する命令を発見した場合(ステップS38)、排他性を保証できなくなるので偽を返す(ステップS39)。以上を繰り返す(ステップS40)。 Next, in order to follow the path to the instruction B, the search is performed downward from the instruction A (step S33). When the instruction B is found (step S34), the exclusive table Tv at that time is referred to determine the exclusive relationship between the condition flag Cn and the execution condition of the instruction B, and the process ends (step S35). When an instruction for updating a condition flag other than Cn is found (step S36), the validity table Tv is updated with the exclusive information table corresponding to the instruction and the process continues (step S37). If an instruction for updating the condition flag Cn is found (step S38), the exclusiveness cannot be guaranteed, and false is returned (step S39). The above is repeated (step S40).
このようにして、資源の定義及び参照関係と、実行条件の排他性との両方を解析して、各命令間の依存関係を構築していく。 In this way, both the definition and reference relationship of resources and the exclusivity of execution conditions are analyzed, and a dependency relationship between instructions is constructed.
具体例として、図15に示したアセンブラコードに対する条件排他性解析部110及び依存関係解析部111の適用結果を説明する。
As a specific example, application results of the condition
図16は、図15のアセンブラコードの命令2(比較命令)に対応する条件排他情報テーブルを示す図である。条件排他情報テーブルは、条件フラグC0〜C7の全ての組み合わせに対する排他性を示す配列である。この場合は、命令2によって、条件フラグC0と条件フラグC1とが排他であることが設定されることになる。
FIG. 16 is a diagram showing a condition exclusion information table corresponding to the assembler code instruction 2 (comparison instruction) in FIG. The condition exclusion information table is an array indicating the exclusion for all combinations of the condition flags C0 to C7. In this case, the
図17は、依存関係解析部111の出力である依存グラフを示す図である。図17中、実線はデータ依存関係を、破線は逆依存関係を示す。命令2(比較命令)は命令1で更新されるレジスタR0を参照するため、データ依存があり、命令3及び命令4は命令2で更新される条件フラグC0及びC1を参照するため、データ依存関係がある。ここで、命令3ではレジスタR2を更新し、命令4ではレジスタR2を参照しているため、一見すると命令3から命令4へのデータ依存関係が存在するように見える。しかし、それぞれの命令の実行条件であるC0及びC1は命令2によって排他な条件として設定されているため、図16に示した条件排他情報テーブルを参照することにより2命令が共に実行されることがあり得ないことが判明し、これら2命令間には依存関係は存在しないものとする。
FIG. 17 is a diagram illustrating a dependency graph that is an output of the dependency
図12の説明に戻って、命令再配置部112は、依存関係解析部111で生成された依存グラフを用いて、処理対象の命令を並べ替え、対象プロセッサ向けの並列化されたアセンブラコードを生成する。命令再配置部112の処理の詳細は以下のとおりである。
Returning to the description of FIG. 12, the
図18は、命令再配置部112での処理手順を示すフローチャートである。命令再配置部112は、依存関係解析部111が生成した依存グラフの全てのノードについて、以下のループ1の処理(ステップS52〜S60)を繰り返す(ステップS51、S61)。
FIG. 18 is a flowchart showing a processing procedure in the
まず、命令再配置部112は、現時点で配置候補となり得るノードを依存グラフより抽出し配置候補ノード集合とする(ステップS52)。ここで配置候補となり得るノードとは、「プレデセッサが全て配置完了済み」であるノードである。
First, the
次に、命令再配置部112は、配置候補ノード集合の全ての候補ノードについて、以下のループ2の処理(ステップS54〜S58)を繰り返す(ステップS53、S59)。
Next, the
まず、配置候補ノード集合から現時点で配置することが最良と思われるノード(以下、単に「最良ノード」と呼ぶ。)を取り出す(ステップS54)。最良ノードの決定方法については後述する。続いて最良ノードが、実際に配置可能か否かを判断し(ステップS55)、可能な場合は仮配置する(ステップS56)。この判断は、前述のプロセッサの解読ステージでの命令自体の削除の効果を有効に活かすため、既に仮配置されているノードと最良ノードとの実行条件の排他性を考慮しつつ、前述の演算器の制約、実行命令数の制約及び命令デコーダの制約を満たすかどうかによって決定する。条件排他性の考慮には、条件排他性解析部110の結果を用いる。ただし、実行条件フラグを更新する命令の次のサイクルにおいては、当該実行条件で実行される命令自体の削除は行われないことも考慮する。つまり、この場合は実行条件の排他性を考慮せず、純粋に演算器や実行命令数の制約で配置可能性を判定する。
First, a node (hereinafter simply referred to as “best node”) that is considered to be best arranged at the present time is extracted from the candidate arrangement node set (step S54). A method for determining the best node will be described later. Subsequently, it is determined whether or not the best node can actually be arranged (step S55). If possible, the best node is provisionally arranged (step S56). In order to make effective use of the effect of deleting the instruction itself at the decoding stage of the processor described above, this determination is performed while taking into account the exclusivity of the execution condition between the already provisionally arranged node and the best node. It is determined depending on whether the constraint, the constraint on the number of executed instructions, and the constraint on the instruction decoder are satisfied. In consideration of the condition exclusivity, the result of the condition
続いて、現時点で仮配置されているノード集合を調べ、更に命令を配置することができるか否かを判断する(ステップS57)。配置不可と判断された場合はループ2を終了し処理をステップS60へ移す。
Subsequently, the node set temporarily arranged at present is checked, and it is determined whether or not an instruction can be arranged (step S57). If it is determined that the placement is impossible, the
配置可能と判断された場合、最良ノードが配置されたことによって新たに配置候補となり得るノードが生じたか否かを判断し、新たな配置候補が生じた場合はこれを配置候補ノードに追加する(ステップS58)。ステップS58で新たに配置候補にできるのは、「(現在配置しようとしている)最良ノードのみをプレデセッサとして持ち、かつ、最良ノードとの依存関係が逆依存もしくは出力依存」のノードである。つまり、ここで新たな配置候補になることができるノードは、最良ノードと同じサイクルで実行することはできるが、最良ノードより前のサイクルでは実行できないノードである。 When it is determined that placement is possible, it is determined whether or not a node that can be a new placement candidate has occurred due to the placement of the best node, and if a new placement candidate is created, this is added to the placement candidate node ( Step S58). In step S58, a node that can be newly set as a placement candidate is a node having “only the best node (currently planned to be placed) as a predecessor and the dependency relationship with the best node being inversely dependent or output dependent”. That is, a node that can be a new placement candidate here can be executed in the same cycle as the best node, but cannot be executed in a cycle before the best node.
ループ2が終了した後、仮配置ノード集合に含まれているノードを確定する(ステップS60)。具体的には、仮配置ノード集合に含まれているノードに対応する命令を元の命令列から取り出し、実行境界付加部113へ渡すための新たな命令列に再配置する。この段階で配置候補ノードの一部が、同時に実行する命令群としてまとめられ確定したことになる。
After the
次に、ステップS54における最良ノードの決定方法について述べる。最良ノードは、依存グラフ、仮配置領域を参照して、処理対象の命令全体を最も短時間で実行できるであろう命令をヒューリスティックに選び出す。ここでは現時点での依存グラフにおいて依存グラフの終端までの命令の実行時間総和が最も短いものを選ぶ。この条件に合致する命令が多数ある場合には、元の命令順が早い命令を最良ノードとする。 Next, the method for determining the best node in step S54 will be described. The best node heuristically selects an instruction that can execute the entire instruction to be processed in the shortest time with reference to the dependency graph and the temporary arrangement area. Here, in the current dependency graph, the one having the shortest total execution time of instructions up to the end of the dependency graph is selected. If there are many instructions that match this condition, the instruction with the earlier instruction order is taken as the best node.
再び図12に戻って、実行境界付加部113は、命令再配置部112のステップS60で配置が確定した命令群の末尾毎に並列実行境界情報Eを設定する。
Returning to FIG. 12 again, the execution
オブジェクトコード生成部103は、命令スケジューリング部102が出力したアセンブラコードをオブジェクトコード130に変換し、ファイルとして出力する。
The object
(コンパイル装置の動作)
次に、本コンパイル装置の特徴的な構成要素の動作について、具体的な命令を用いて説明する。
(Compiler operation)
Next, operations of characteristic components of the compiling apparatus will be described using specific instructions.
図19は、ソースコードをコンパイラ上流部100に入力し、アセンブラコード生成部101を経て生成されたアセンブラコードである。命令スケジューリング部102は図19のコードを入力として受け取る。図19に含まれる各命令の意味は以下のとおりである。
・命令1…レジスタR0の格納値と定数0とが一致しているかを比較し、真偽を条件フラグC0に設定し、その逆の条件を条件フラグC1に設定する。
・命令2…条件フラグC0の値が真の場合にのみ、レジスタR1の格納値とレジスタR2の格納値とを加算してレジスタR2に格納する。
・命令3…条件フラグC1の値が真の場合にのみ、レジスタR2の格納値とレジスタR3の格納値とを加算してレジスタR3に格納する。
・命令4…条件フラグC0の値が真の場合にのみ、レジスタR1の格納値とレジスタR3の格納値とを加算してレジスタR3に格納する。
・命令5…条件フラグC1の値が真の場合にのみ、レジスタR3の格納値とレジスタR4の格納値とを加算してレジスタR4に格納する。
・命令6…条件フラグC0の値が真の場合にのみ、レジスタR2の格納値とレジスタR4の格納値とを加算してレジスタR4に格納する。
・命令7…条件フラグC1の値が真の場合にのみ、レジスタR3の格納値とレジスタR5の格納値とを加算してレジスタR5に格納する。
FIG. 19 shows assembler code generated by inputting source code to the
Instruction 5: Only when the value of the condition flag C1 is true, the stored value of the register R3 and the stored value of the register R4 are added and stored in the register R4.
Instruction 6: Only when the value of the condition flag C0 is true, the stored value of the register R2 and the stored value of the register R4 are added and stored in the register R4.
Instruction 7: Only when the value of the condition flag C1 is true, the stored value of the register R3 and the stored value of the register R5 are added and stored in the register R5.
以下、命令スケジューリング部102の動作を説明する。まず、条件排他性解析部110と依存関係解析部111とが起動され、依存グラフが生成される。図19のコード例では、命令1で生成した条件フラグC0とC1が、命令2以降において排他であることを考慮しつつ、資源の定義及び参照関係を解析する。図20に、生成された依存グラフを示す。
Hereinafter, the operation of the
次に、命令再配置部112が起動される。図18のフローチャートに沿って説明すると、まず第1サイクルで、配置候補ノード集合を生成する(ステップS52)。図20の依存グラフから、ここでは命令1のみが配置候補ノードとなる。次に最良ノードを取り出す(ステップS54)。ここでは、自動的に命令1が選択される。そして、配置可能判定ステップ(S55)において、配置可能であると判定される。更に、配置状態判定ステップ(S57)においても、まだ配置可能であると判定されるが、配置候補ノード追加ステップ(S58)において追加対象となる命令が存在しないため、配置ノード確定ステップ(S60)にて、第1サイクルは命令1のみを発行するように確定される。
Next, the
次のサイクルでは、命令2、命令3及び命令4が配置候補ノードとなる。命令2及び命令3が順に最良ノードとして選ばれ、仮配置される。次に、命令4が最良ノードとして選ばれ、配置可能判定ステップ(S55)に入る。ここで、条件排他性を考慮した判定が行われるわけであるが、直前のサイクルで実行条件C0及びC1の値が更新されているため、このサイクルではC0及びC1を実行条件とする命令の解読ステージでの削除は実施されない。したがって、既に仮配置されている命令2及び命令3が削除されることがないので、ハードウェアに搭載した演算器の制限により、命令4は同時発行不可能、すなわち配置不可能と判定される。こうして、第2サイクルでは、命令2及び命令3を発行するように確定される。
In the next cycle,
次のサイクルでは、命令4、命令5、命令6及び命令7が配置候補ノードとなる。命令4及び命令5が順に最良ノードとして選ばれ、仮配置される。次に、命令6が最良ノードとして選ばれ、配置可能判定ステップ(S55)に入る。ここで、条件排他性を考慮した判定が行われる。命令6が実際にオペレーションを実行する場合、すなわち命令6の実行条件フラグC0が真である場合には、条件フラグC1は偽であるため、C1を実行条件とする命令5はオペレーションを実行せず、演算器を使用しない。したがって、命令4及び命令6の組み合わせにおいて演算器の制約を満たしているので、命令6は配置可能と判定される。次に命令7が最良ノードとして選ばれるが、上記と同様に、命令7がオペレーションを実行する場合、命令4及び命令6は削除されるため、命令5及び命令7のみの組み合わせによって演算器の制約を判定し、命令7は配置可能と判定される。こうして、第3サイクルでは、命令4、命令5、命令6及び命令7を発行するように確定される。これで、未配置のノードが無くなったので、命令再配置部112の処理が完了する。
In the next cycle,
最後に、実行境界付加部113が起動される。ここでは、上記の命令再配置部112による配置された命令群の末尾の命令に並列実行境界情報Eを設定していく。具体的には、命令1、命令3及び命令7の並列実行境界情報Eに“1”を設定し、残りの命令の並列実行境界情報Eには“0”を設定する。
Finally, the execution
以上で、命令スケジューリング部102の処理が完了する。続いてオブジェクトコード生成部103が起動され、オブジェクトコードが出力される。
Thus, the process of the
図21に、最終的な実行形式コードを示す。実際の実行形式コードは128ビット単位にまとめられたビット列である。図21に示した実行形式コードは、本発明に係る2個の演算器を持つプロセッサにて、3つの実行グループで実行される。 FIG. 21 shows the final execution format code. The actual execution format code is a bit string collected in 128-bit units. The execution format code shown in FIG. 21 is executed in three execution groups by a processor having two arithmetic units according to the present invention.
(従来のコンパイル装置との比較)
次に、図19に示したアセンブラコードを、本発明のコンパイル装置の構成をとらない従来のコンパイル装置にてコンパイルした場合を仮定して、本発明に係るコンパイル装置の場合と比較する。対象プロセッサは、本発明のプロセッサと同様に2個の演算器を備えたプロセッサとする。
(Comparison with conventional compilation equipment)
Next, assuming that the assembler code shown in FIG. 19 is compiled by a conventional compiling device that does not have the configuration of the compiling device of the present invention, the assembler code is compared with the compiling device according to the present invention. The target processor is assumed to be a processor including two arithmetic units as in the processor of the present invention.
従来のコンパイル装置は、命令再配置部において違いがある。まず、最初のサイクルでは、依存関係のため命令1のみ発行する。次のサイクルでは、命令2、命令3及び命令4が候補となるが、1サイクルに2つという演算器の制約のため、命令2及び命令3のみを発行する。次のサイクルでは、命令4、命令5、命令6及び命令7が候補となるが、演算器の制約のため、命令4及び命令5のみを発行する。次のサイクルでは、命令6及び命令7が候補となり、演算器の制約を満たすため、両方の命令が発行される。こうして、命令再配置が完了する。実行境界付加部では、具体的には、命令1、命令3、命令5及び命令7の並列実行境界情報Eに“1”を設定し、残りの命令の並列実行境界情報Eには“0”を設定する。以上で命令スケジューリング処理が完了する。
The conventional compiling apparatus has a difference in the instruction relocation unit. First, in the first cycle, only
図22に、結果として生成される実行形式コードを示す。図22に示した実行形式コードは、2個の演算器を持つプロセッサにて4つの実行グループで実行される。 FIG. 22 shows the execution format code generated as a result. The execution format code shown in FIG. 22 is executed in four execution groups by a processor having two arithmetic units.
図21と図22を比較すると、従来のコンパイル装置の生成コード(図22)では、本発明のコンパイル装置の生成コード(図21)の場合に比べ、実行グループが1つ増えている。つまり、実行サイクル数が1サイクル増していることになる。このように実行グループ数が増加したのは、本発明の命令スケジューリング部102のような構成をとらなかったために、全ての命令が実行ステージへ発行されるものとして扱ってしまい、ハードウェアに搭載された演算器の個数を上限とした配置しかできないためである。一方、本発明のコンパイル装置では、命令自体の無効化を考慮してハードウェアに搭載された演算器の個数以上の数の命令を1サイクルに配置することが可能であり、演算器を有効活用することができる。
When FIG. 21 and FIG. 22 are compared, in the generated code of the conventional compiling device (FIG. 22), the execution group is increased by one as compared with the generated code of the compiling device of the present invention (FIG. 21). That is, the number of execution cycles is increased by one cycle. The reason why the number of execution groups has increased in this way is that the
なお、本実施形態で示されるコンパイル装置の処理手順をフレキシブルディスク、ハードディスク、CD−ROM、MO、DVDなどの記録媒体に入れることにより、本実施形態で示されるコンパイル装置をコンピュータで実現できる。 The compiling apparatus shown in this embodiment can be realized by a computer by putting the processing procedure of the compiling apparatus shown in this embodiment into a recording medium such as a flexible disk, hard disk, CD-ROM, MO, and DVD.
また、本実施形態で示されるコンパイル装置により生成された実行形式コードをフレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、半導体メモリなどの記録媒体に入れることもできる。 Further, the execution format code generated by the compiling device shown in the present embodiment can be put in a recording medium such as a flexible disk, a hard disk, a CD-ROM, an MO, a DVD, or a semiconductor memory.
[実施の形態3:プロセッサ]
次に、上記実施の形態1のプロセッサを拡張したプロセッサの実施の形態について説明する。
[Embodiment 3: Processor]
Next, an embodiment of a processor that is an extension of the processor of the first embodiment will be described.
本プロセッサのハードウェア構成については、大部分は前述の第1の実施の形態のプロセッサと同一であるが、実行グループ内に配置される命令群の実行条件情報の配置に制限が加わっている。具体的には、1つの実行グループ内には、同一の実行条件を持つ命令は必ず連続して配置される、という制限である。後述する実施の形態4のコンパイル装置は、この制限に従ってコードを生成する。これによって、プロセッサとしては、命令発行制御部の構成が異なってくることになる。 Most of the hardware configuration of this processor is the same as that of the processor of the first embodiment described above, but there is a limitation on the arrangement of execution condition information of the instruction group arranged in the execution group. Specifically, there is a restriction that instructions having the same execution condition are always arranged consecutively in one execution group. The compiling device according to the fourth embodiment to be described later generates code according to this restriction. As a result, the configuration of the instruction issuance control unit differs as a processor.
(命令発行制御部の構成と動作)
図23は、本実施の形態のプロセッサの命令発行制御部140とその周辺回路の構成を示したものである。図23中の命令発行制御部140のほとんどの部分は、図5に示した実施の形態1のプロセッサのものと同一である。異なる点は、実行命令選択制御部141の制御方法と、実行命令選択制御部141の後段に命令結合部142が追加されていることの2点である。
(Configuration and operation of instruction issue controller)
FIG. 23 shows the configuration of the instruction issuance control unit 140 and its peripheral circuits of the processor of this embodiment. Most parts of the instruction issuance control unit 140 in FIG. 23 are the same as those of the processor of the first embodiment shown in FIG. The difference is that the control method of the execution instruction
まず、実行命令選択制御部141は、実施の形態1で示したのと同様に、実行条件が偽となる命令について命令自体を実質的に削除する制御を行うのであるが、前述のように実施の形態1の場合と異なり、命令の配置順に制限が加わっているため、それを積極的に活用する。具体的には、命令配置順には、同一の実行条件情報を持つ命令は連続して配置される、という制限があるので、まず解読後の命令群を各実行条件毎に分類する。命令配置順の制限により、この分類は容易に行うことができる。
First, the execution instruction
次に、実行条件フラグの値が“0”で確定しているか否かを、分類された各実行条件毎に検査する。“0”で確定している条件フラグを実行条件とする命令群は、まとめて削除するように制御し、実際に実行部40へ発行すべき命令群を決定する。これによって、条件フラグの検査回数を最小にとどめ、複数の命令の削除可能性を同時に検出することができ、実行部40へ発行すべき命令の検出を高速かつ簡単に行うことができる。 Next, whether or not the value of the execution condition flag is fixed at “0” is checked for each classified execution condition. The instruction group whose execution condition is the condition flag fixed at “0” is controlled to be deleted together, and the instruction group to be actually issued to the execution unit 40 is determined. As a result, the number of condition flag checks can be minimized, the possibility of deletion of a plurality of instructions can be detected simultaneously, and instructions to be issued to the execution unit 40 can be detected quickly and easily.
次に、実行命令選択制御部141による命令の削除後、命令群は命令結合部142に入力される。ここでは、実際に実行部40にてオペレーションを実行することが確定した命令群について、複数の命令を1つの複合命令として結合できるか否かを検出し、結合可能な場合には、当該命令の制御信号を新規複合命令に変更し、オペランドの結合を行い、後続側の命令を実行命令選択制御部141と同様に削除するように制御する。こうして、命令結合部142からは、ハードウェアとして搭載された演算器の個数に応じた2つの命令に対応する制御信号とオペランドデータとが出力され、実行部40に転送される。これらの命令は、それぞれ複数の命令の複合命令である可能性もあることになる。
Next, after the execution instruction
(プロセッサの動作)
次に、図24を用いて、本プロセッサの具体的な動作について説明する。図24は、条件付き実行命令を含むプログラムの一例を示す図である。このプログラムは、4個の命令で構成されており、表記は図9のプログラムと同じである。ニーモニック“lsr”は、レジスタの格納値の論理右シフトを表している。
(Processor operation)
Next, a specific operation of this processor will be described with reference to FIG. FIG. 24 is a diagram illustrating an example of a program including a conditional execution instruction. This program is composed of four instructions, and the notation is the same as the program of FIG. The mnemonic “lsr” represents a logical right shift of the stored value of the register.
以下、各実行単位ごとの本プロセッサの動作を説明する。ただし、ここでは、最初の時点で、条件フラグC0の値が“0”、C1の値が“1”で確定しているものとする。 The operation of this processor for each execution unit will be described below. However, here, it is assumed that the value of the condition flag C0 is “0” and the value of C1 is “1” at the first time.
(実行単位1)
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、それぞれ命令レジスタ23に転送される。次に、命令発行制御部140が各命令の並列実行境界情報Eを参照する。この場合、命令1、命令2、命令3の並列実行境界情報Eがいずれも“0”であるため、命令デコーダの解読結果の無効化は行わない。
(Execution unit 1)
次に、命令発行制御部140は各命令の実行条件情報Pを参照し、実行命令選択制御部141にて、オペレーションを実行する命令を選択する。命令1は常に実行する命令である。命令2の実行条件フラグはC0であり、C0の値は“0”で確定しているので、命令2自体は実質的に削除し、オペレーションの実行は行わない。後続の命令3及び命令4の実行条件フラグは共にC1であるので、条件フラグC1を1度だけ参照し、C1の値が“1”で確定しているので、命令3と命令4を共に実行対象とする。こうして、命令1、命令3及び命令4が、次の命令結合部142に送られる。
Next, the instruction issue control unit 140 refers to the execution condition information P of each instruction, and the execution instruction
命令結合部142では、入力された命令群の全ての組み合わせについて、複合命令が生成可能か否かを判定する。この場合、命令1(シフト命令)と命令4(加算命令)とを結合してシフト加算命令を生成できることを検出する。そして、第1番目の命令として、シフト加算に対応する制御信号とオペランドが、第2番目の命令として、命令3に対応する制御信号とオペランドがそれぞれ実行部40に送られる。これで、供給された命令は全て発行されたことになる。
The
実行部40では、レジスタR3の格納値をレジスタR1の格納値の分だけ論理右シフトした値にレジスタR2の格納値を加えた値がレジスタR2に格納され、レジスタR0の格納値に1を加えた値がレジスタR0に格納される。 In the execution unit 40, a value obtained by logically shifting the stored value of the register R3 by the value stored in the register R1 and adding the stored value of the register R2 is stored in the register R2, and 1 is added to the stored value of the register R0. The stored value is stored in the register R0.
以上のように、図24に示したプログラムは、本プロセッサにおいて1つの実行単位で実行される。本プロセッサでは、確定した実行条件による命令自体の削除後、命令同士を結合して1つの複合命令とすることを試みる。これによって、実質の演算効率を高めることが可能となる。また、同一の実行条件を持った命令が連続して配置されるという制限を利用して、実際にオペレーションを実行する命令を解読ステージにて選択する処理の高速化を図っている。 As described above, the program shown in FIG. 24 is executed in one execution unit in this processor. In this processor, after deleting the instruction itself according to the determined execution condition, it tries to combine the instructions into one composite instruction. This makes it possible to increase the actual calculation efficiency. Further, by using the restriction that instructions having the same execution condition are continuously arranged, the processing for selecting an instruction for actually executing an operation at the decoding stage is speeded up.
[実施の形態4:コンパイル装置]
次に上述の実施の形態3におけるプロセッサで実行するコードを生成するコンパイル装置、及びそのコンパイル方法に関する実施の形態について説明する。
[Embodiment 4: Compiling device]
Next, an embodiment relating to a compiling device that generates code to be executed by the processor and a compiling method thereof according to the third embodiment will be described.
本コンパイル装置の構成については、大部分は前述の第2の実施の形態のコンパイル装置と同一であるが、1つの実行グループ内の命令について、それぞれの実行条件に応じて配置に制限がある点と、プロセッサの解読ステージにおける命令の結合を考慮に入れている点とが異なる。具体的には、命令スケジューリング部の構成が異なることになる。 The configuration of the compiling device is mostly the same as that of the compiling device of the second embodiment described above, but there is a limitation on the arrangement of instructions in one execution group depending on the execution conditions. And that it takes into account the combination of instructions in the decoding stage of the processor. Specifically, the configuration of the instruction scheduling unit is different.
(命令スケジューリング部)
本実施の形態のコンパイル装置の命令スケジューリング部は、第2の実施の形態における命令スケジューリング部102と同様に、条件排他性解析部、依存関係解析部、命令再配置部、及び実行境界付加部から構成されるが、異なる点は命令再配置部の再配置の方法のみである。
(Instruction scheduling part)
The instruction scheduling unit of the compiling device according to the present embodiment includes a condition exclusiveness analysis unit, a dependency relationship analysis unit, an instruction relocation unit, and an execution boundary addition unit, similar to the
図25に、本実施の形態のコンパイル装置の命令再配置部のフローチャートを示す。本実施の形態のコンパイル装置の命令再配置部の処理手順は、実施の形態2のコンパイル装置の命令再配置部112の処理手順と大部分は同一であるが、配置可能か否かを判定する部分と、配置ノード確定後に配置順序を調整する点とが異なる。具体的には、図25中のステップS71〜S82のうち、配置可能判定(ステップS75)と配置順序調整(ステップS81)とが、図18に示したフローと異なることになる。
FIG. 25 shows a flowchart of the instruction rearrangement unit of the compiling device of this embodiment. The processing procedure of the instruction relocation unit of the compiling device according to the present embodiment is mostly the same as the processing procedure of the
実施の形態2のコンパイル装置と同様に、条件排他性解析部及び依存関係解析部を経て、依存グラフが生成され、命令再配置部に移ってくる。そして、条件排他性を考慮した依存グラフに基づいて命令の再配置を行っていくわけであるが、ステップS74にて最良ノードを選択した後、ステップS75にて配置可能判定を行う際に、仮配置済みのノード群と最良ノードについて、実行条件の排他性だけでなく、全ての組み合わせについての命令結合の可能性も考慮して、配置可能判定を行う。つまり、ある2つのノードが結合可能であった場合、それら2つのノードを合わせて1つの命令として扱い、配置可能判定を行う。 Similar to the compiling device of the second embodiment, a dependency graph is generated through the condition exclusivity analysis unit and the dependency relationship analysis unit, and then moved to the instruction relocation unit. Then, the instruction rearrangement is performed based on the dependency graph in consideration of the condition exclusivity. After selecting the best node in step S74, the provisional arrangement is performed when the arrangement possibility determination is performed in step S75. With respect to the completed node group and the best node, the arrangement possibility determination is performed in consideration of not only the exclusivity of the execution conditions but also the possibility of instruction combination for all combinations. That is, when two nodes can be combined, the two nodes are combined and treated as one instruction, and an arrangement possibility determination is performed.
更に、ステップS80にて当該サイクルで配置可能となったノードが確定した後、ステップS81にて配置順序の調整を行う。具体的には、当該サイクルで配置可能となったノード群をそれぞれ実行条件ごとに分類し、同一の実行条件を持つノードが必ず連続して配置されるように、ノードの配置順序を調整する。これによって、ハードウェアにおける制御の簡単化を図っている。 Further, after the nodes that can be arranged in the cycle are determined in step S80, the arrangement order is adjusted in step S81. Specifically, the node groups that can be arranged in the cycle are classified for each execution condition, and the arrangement order of the nodes is adjusted so that nodes having the same execution condition are always arranged continuously. This simplifies control in hardware.
(コンパイル装置の動作)
図26を用いて、本コンパイル装置の特徴的な構成要素の動作について具体的な命令を用いて説明する。図26は、コンパイラ上流部及びアセンブラコード生成部を経て生成されたアセンブラコードの一例である。命令スケジューリング部は、図26のコードを入力として受け取る。図26に含まれる各命令の意味は以下のとおりである。ただし、条件フラグC0とC1は、命令1以前の命令によって排他な関係となっていることを想定している。
・命令1…レジスタR3の格納値をレジスタR1の格納値の分だけ論理右シフトする。
・命令2…条件フラグC1の値が真の場合にのみ、レジスタR0の格納値に1を加算してレジスタR0に格納する。
・命令3…条件フラグC0の値が真の場合にのみ、レジスタR0の格納値から1を減算してレジスタR0に格納する。
・命令4…条件フラグC1の値が真の場合にのみ、レジスタR1の格納値とレジスタR2の格納値とを加算してレジスタR2に格納する。
(Compiler operation)
With reference to FIG. 26, the operation of the characteristic components of the compiling apparatus will be described using specific instructions. FIG. 26 shows an example of assembler code generated through the compiler upstream section and the assembler code generation section. The instruction scheduling unit receives the code shown in FIG. 26 as an input. The meaning of each instruction included in FIG. 26 is as follows. However, it is assumed that the condition flags C0 and C1 are in an exclusive relationship with the instruction before the
以下、命令スケジューリング部の動作について説明する。まず、条件排他性解析部と依存関係解析部が起動され、依存グラフが生成される。この例では、条件フラグC0とC1が排他であることを考慮しつつ、資源の定義及び参照関係を解析する。 The operation of the instruction scheduling unit will be described below. First, the condition exclusiveness analysis unit and the dependency relationship analysis unit are activated, and a dependency graph is generated. In this example, the definition and reference relationship of resources are analyzed while considering that the condition flags C0 and C1 are exclusive.
次に、命令再配置部が起動される。図25のフローチャートに沿って説明すると、まず配置候補ノード集合を生成する(ステップS72)。ここでは命令1のみが配置候補ノードとなる。次に最良ノードを取り出す(ステップS74)。ここでは、自動的に命令1が選択される。そして、配置可能判定(ステップS75)において、配置可能であると判定される。更に、配置状態判定(ステップS77)においても、まだ配置可能であると判定される。そして、配置候補ノード追加(ステップS78)において、追加対象となる命令として、命令2、命令3及び命令4が配置候補ノードに追加される。
Next, the instruction relocation unit is activated. Describing along the flowchart of FIG. 25, first, an arrangement candidate node set is generated (step S72). Here, only the
そして、再び戻って最良ノードを取り出す(ステップS74)。ここでは、まず命令2が選択されて、配置可能であると判定される(ステップS75)。
And it returns again and takes out the best node (step S74). Here, first, the
その後、再び戻って最良ノードを取り出す(ステップS74)。ここでは、命令3が選択される。そして、命令2と命令3の実行条件は排他であるので、2個という演算器の制約を満たし、配置可能であると判定される(ステップS75)。
Thereafter, the best node is retrieved again (step S74). Here,
更に、戻って最良ノードを取り出す(ステップS74)。ここでは、残った命令4が自動的に選択される。そして、配置可能判定を行う(ステップS75)のであるが、実行条件C0が真であると仮定した場合には、命令1と命令3のみが有効となるので演算器の制約を満たす。一方、実行条件C1が真であると仮定した場合には、命令1、命令2及び命令4の3つの命令が有効となってしまう。ここで、これらの全ての組み合わせについて、命令の結合可能性を検討する。ここでは、命令1と命令4を結合して、ハードウェアに備えられたシフト加算命令とすることが可能であると判定され、結果的に2つの命令が有効となるので、配置可能であると判定される。
Further, the best node is retrieved again (step S74). Here, the remaining
以上で、全ての命令が第1サイクルに配置されたことになり、配置ノードを確定する(ステップS80)。次に、各ノードを実行条件で分類し、配置順序の調整を行う(ステップS81)。具体的には、命令2と命令4の実行条件がC1で同一なので、命令2と命令4が連続して配置されるように、配置順を、命令1、命令2、命令4、命令3の順に並べ直す。以上で、命令再配置部の処理が完了する。
As described above, all the instructions are arranged in the first cycle, and the arrangement node is determined (step S80). Next, each node is classified according to execution conditions, and the arrangement order is adjusted (step S81). Specifically, since the execution conditions of the
最後に、実行境界付加部が起動される。ここでは、上記の命令再配置部による配置された命令群の末尾の命令に並列実行境界情報を設定していく。具体的には、命令3の並列実行境界情報に“1”を設定し、残りの命令の並列実行境界情報には“0”を設定する。以上で命令スケジューリング部の処理が完了する。
Finally, the execution boundary adding unit is activated. Here, parallel execution boundary information is set to the last instruction of the instruction group arranged by the instruction relocation unit. Specifically, “1” is set to the parallel execution boundary information of the
以上のように、本実施の形態のコンパイル装置では、図26に示した命令列は、1つの実行グループで実行されるようにコンパイルされる。ここには、配置可能判定(ステップS75)において、プロセッサの解読ステージでの命令の結合を考慮したことの効果が現れている。更に、同一の実行条件を持つ命令を連続して配置するように調整することにより、プロセッサの解読ステージにて有効な命令を選択する際の制御を簡単化することができる。 As described above, in the compiling device according to the present embodiment, the instruction sequence shown in FIG. 26 is compiled so as to be executed by one execution group. Here, the effect of considering the combination of instructions at the decoding stage of the processor in the arrangement possibility determination (step S75) appears. Further, by adjusting so that instructions having the same execution condition are continuously arranged, it is possible to simplify the control when selecting an effective instruction in the decoding stage of the processor.
なお、本実施形態で示されるコンパイル装置の処理手順をフレキシブルディスク、ハードディスク、CD−ROM、MO、DVDなどの記録媒体に入れることにより、本実施形態で示されるコンパイル装置をコンピュータで実現できる。 The compiling apparatus shown in this embodiment can be realized by a computer by putting the processing procedure of the compiling apparatus shown in this embodiment into a recording medium such as a flexible disk, hard disk, CD-ROM, MO, and DVD.
また、本実施形態で示されるコンパイル装置により生成された実行形式コードをフレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、半導体メモリなどの記録媒体に入れることもできる。 Further, the execution format code generated by the compiling device shown in the present embodiment can be put in a recording medium such as a flexible disk, a hard disk, a CD-ROM, an MO, a DVD, or a semiconductor memory.
以上、本発明に係るプロセッサ及びコンパイル装置について、実施形態に基づいて説明したが、本発明はこれらの実施形態に限られないことは勿論である。変形例を以下に列挙する。 The processor and the compiling device according to the present invention have been described based on the embodiments. However, the present invention is not limited to these embodiments. The modifications are listed below.
(1)上記実施の形態のプロセッサ及びコンパイル装置では、固定長の命令を実行することを想定していたが、本発明はこのような命令フォーマットに限定されるものではない。可変長の命令フォーマットを採用しても本発明の有意性は保たれる。 (1) In the processor and compiling apparatus of the above embodiment, it is assumed that a fixed-length instruction is executed, but the present invention is not limited to such an instruction format. Even if a variable-length instruction format is adopted, the significance of the present invention is maintained.
(2)上記実施の形態のプロセッサ及びコンパイル装置では、2個の演算器を持つことを想定していたが、本発明はこの演算器数に限定されるものではない。1個の演算器もしくは3個以上の演算器を持つプロセッサを想定しても、本発明の有意性は保たれる。 (2) In the processor and the compiling device of the above embodiment, it is assumed that there are two arithmetic units, but the present invention is not limited to this number of arithmetic units. The significance of the present invention is maintained even if a processor having one arithmetic unit or three or more arithmetic units is assumed.
(3)上記実施の形態のプロセッサ及びコンパイル装置では、コンパイル装置が静的に命令並列性を抽出することを想定していたが、本発明はこの命令並列処理方式に限定されるものではない。例えば、ハードウェアで動的に命令並列性を抽出するスーパースカラ方式を採用しても、本発明の有意性は保たれる。この場合、本発明の命令フォーマットから並列実行境界情報Eを除去し、この情報に依存する処理を全て命令発行制御部にて動的に検出しながら実施すればよい。 (3) In the processor and compiling apparatus of the above embodiment, it is assumed that the compiling apparatus statically extracts instruction parallelism, but the present invention is not limited to this instruction parallel processing system. For example, the significance of the present invention is maintained even if a superscalar method that dynamically extracts instruction parallelism by hardware is adopted. In this case, the parallel execution boundary information E may be removed from the instruction format of the present invention, and all processes depending on this information may be performed while being dynamically detected by the instruction issue control unit.
(4)上記実施の形態のコンパイル装置の命令再配置部では、図18中のステップS54における最良ノードの決定方法として、依存グラフの終端までの実行時間の総和を用いていたが、本発明は、この選択基準に限定されるものではない。例えば、複数の実行フローの中で特定のパスを優先的に選択するようにしてもよい。この場合、最良ノードの取り出し(ステップS54)の際に、ある特定の実行条件を持つ命令の優先度を高めておく。これによって、実行頻度の高いパスなどの、特定の実行パスに特化したスケジューリングを行うことができる。 (4) In the instruction rearrangement unit of the compiling device of the above embodiment, the sum of execution times until the end of the dependency graph is used as the best node determination method in step S54 in FIG. However, it is not limited to this selection criterion. For example, a specific path may be preferentially selected from among a plurality of execution flows. In this case, the priority of an instruction having a specific execution condition is raised at the time of taking out the best node (step S54). As a result, scheduling specialized for a specific execution path such as a path with high execution frequency can be performed.
(5)上記実施の形態のプロセッサの命令発行制御部では、最初に現れる並列実行境界情報Eが“1”となっている命令以降の命令の解読結果を必ず無効化していたが、必ずしもその必要はない。命令発行制御部内の実行命令選択制御部にて、実行部に転送すると判断した命令が、前記最初に現れる並列実行境界情報Eが“1”である命令以前に1つも存在しなかった場合、当該サイクル全体を削除し、次に現れる並列実行境界情報Eが“1”である命令までの命令群をこのサイクルでの発行対象とすればよい。つまり、並列実行境界情報Eが“1”である命令以前に有効なオペレーションを実行すべきと判定された命令が1つでも存在した場合にのみ、その命令を並列実行の境界とみなして以降の命令の解読結果を無効化し、そうでなかった場合には、その命令の並列実行境界情報Eは無視し、後続の命令の並列実行境界情報Eを参照することにより新たな並列実行の境界を検出すればよい。これによって、更に実行サイクル数を削減することができる。 (5) In the instruction issue control unit of the processor of the above embodiment, the decoding result of the instruction after the instruction in which the parallel execution boundary information E that appears first is “1” is always invalidated. There is no. In the execution instruction selection control unit in the instruction issuance control unit, if there is no instruction that is determined to be transferred to the execution unit before the first parallel execution boundary information E that is “1”, The entire cycle may be deleted, and an instruction group up to an instruction whose parallel execution boundary information E that appears next is “1” may be an issue target in this cycle. That is, only when there is at least one instruction determined to execute a valid operation before the instruction whose parallel execution boundary information E is “1”, the instruction is regarded as a boundary for parallel execution and thereafter Invalidate the result of decoding the instruction. If not, ignore the parallel execution boundary information E of the instruction and detect the new parallel execution boundary by referring to the parallel execution boundary information E of the subsequent instruction. do it. As a result, the number of execution cycles can be further reduced.
以上説明してきたとおり、本発明によれば、ハードウェアの有効利用を達成し、性能を向上させたプロセッサを提供することが可能であり、特に並列処理において演算器の効率的活用により性能の向上を図る技術として有用である。 As described above, according to the present invention, it is possible to provide a processor that achieves effective use of hardware and improves performance, and in particular, improves performance by efficiently using arithmetic units in parallel processing. This is useful as a technique for achieving this.
10 並列実行境界情報(E)
11 実行条件情報(P)
20 命令供給部(命令供給手段)
21 命令フェッチ部
22 命令バッファ
23 命令レジスタ
231 Aレジスタ
232 Bレジスタ
233 Cレジスタ
234 Dレジスタ
30 解読部
31 命令発行制御部(命令発行制御手段)
311 条件フラグ
312 条件フラグ有効情報
313 実行命令選択制御部
314,315 論理回路
32 命令デコーダ(解読手段)
33 第1命令デコーダ
34 第2命令デコーダ
35 第3命令デコーダ
36 第4命令デコーダ
371〜374 実行命令セレクタ
38 命令無効化方法選択部(命令無効化方法選択手段)
40 実行部(実行手段)
41 実行制御部
42 PC(プログラムカウンタ)部
43 レジスタファイル
44 第1演算器
45 第2演算器
46 書き込み制御部(実行結果無効化手段)
47 オペランドアクセス部
48,49 データバス
100 コンパイラ上流部
101 アセンブラコード生成部
102 命令スケジューリング部(命令スケジューリング手段)
103 オブジェクトコード生成部
110 条件排他性解析部(条件排他性解析手段)
111 依存関係解析部(依存関係解析手段)
112 命令再配置部(命令再配置手段)
113 実行境界付加部(実行境界付加手段)
120 ソースコード
130 オブジェクトコード
140 命令発行制御部(命令発行制御手段)
141 実行命令選択制御部
142 命令結合部
10 Parallel execution boundary information (E)
11 execution condition information (P)
20 Command supply unit (command supply means)
21 instruction fetch
311
33
40 execution unit (execution means)
41
47
103 Object
111 Dependency Analysis Unit (Dependency Analysis Unit)
112 Instruction relocation unit (command relocation means)
113 Execution boundary adding unit (execution boundary adding means)
120
141 Execution Instruction
Claims (10)
前記複数の命令を各々解読するための解読手段と、
前記複数の命令中に各命令を実行するか否かを示す条件を指定する実行条件情報が指定され、当該実行条件情報で指定された条件を参照して、有効なオペレーションを実行する命令又は命令の集合を決定するための命令発行制御手段と、
前記複数の命令中に各命令の動作が指定され、当該指定に基づいて1つ又は複数のオペレーションを実行するための実行手段とを備えたプロセッサであって、
前記命令発行制御手段は、前記実行条件情報で指定された条件を参照することにより、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断し、無効な命令であると判断した命令に関しては、当該命令を前記実行手段へ発行する前に当該命令自体を削除するように制御し、かつ当該命令に代えて当該命令に後続する有効な命令を前記実行手段へ発行するように制御する機能を有することを特徴とするプロセッサ。 Command supply means for supplying a plurality of commands;
Decoding means for decoding each of the plurality of instructions;
An instruction or instruction for executing a valid operation by specifying execution condition information for specifying a condition indicating whether or not to execute each instruction in the plurality of instructions and referring to the condition specified by the execution condition information Instruction issue control means for determining a set of
A processor comprising an execution means for specifying an operation of each instruction in the plurality of instructions and executing one or a plurality of operations based on the specification;
The instruction issue control means determines whether the instruction is a valid instruction that needs to be executed or an invalid instruction that does not need to be executed by referring to the condition specified by the execution condition information. With respect to an instruction determined to be a correct instruction, the instruction is controlled to be deleted before the instruction is issued to the execution means, and a valid instruction subsequent to the instruction is executed instead of the instruction. A processor having a function of controlling to be issued to a means.
前記実行手段は、前記命令に対応するオペレーションを実行した後で、実行結果を無効化するための実行結果無効化手段を有し、
各命令について、前記実行手段へ発行する前に当該命令自体を削除するか、前記実行結果無効化手段にて実行結果を無効化するかを選択するための命令無効化方法選択手段を更に備えたことを特徴とするプロセッサ。 The processor of claim 1, wherein
The execution means includes execution result invalidation means for invalidating an execution result after executing an operation corresponding to the instruction.
Each instruction further includes instruction invalidation method selection means for selecting whether the instruction itself is deleted before being issued to the execution means or whether the execution result is invalidated by the execution result invalidation means. A processor characterized by that.
前記命令無効化方法選択手段は、各条件フラグの値が確定しているか否かを示す条件フラグ有効情報を参照することによって、いずれの命令無効化方法を選択するかを決定し、
前記条件フラグ有効情報は、前記解読手段において条件フラグを更新する命令であると解読された場合に当該条件フラグの確定性が偽に設定され、前記実行手段において当該命令が実行されて当該条件フラグの値が確定した際に真に設定されることを特徴とするプロセッサ。 The processor of claim 2, wherein
The instruction invalidation method selection means determines which instruction invalidation method to select by referring to condition flag valid information indicating whether or not the value of each condition flag is fixed,
When the condition flag valid information is decoded by the decoding means as an instruction to update the condition flag, the determinism of the condition flag is set to false, and the instruction is executed by the execution means and the condition flag is A processor that is set to true when the value of is determined.
前記命令発行制御手段は、複数の命令の機能が単一の命令で実現可能であるような命令の組み合わせを検出し、それら複数の命令を単一の命令として扱うように結合する機能を更に有することを特徴とするプロセッサ。 The processor of claim 1, wherein
The instruction issue control means further has a function of detecting a combination of instructions such that the functions of a plurality of instructions can be realized by a single instruction, and combining the plurality of instructions so as to handle them as a single instruction. A processor characterized by that.
前記複数の命令の結合は、前記実行手段への発行前における命令の削除の後に適用されることを特徴するプロセッサ。 The processor of claim 4, wherein
The combination of the plurality of instructions is applied after deletion of an instruction before issuance to the execution means.
前記命令発行制御手段は、各サイクルにおいて同一の前記実行条件情報を持つ命令が連続配置されている場合には、前記解読手段によって解読された複数の命令を予め各実行条件毎に分類し、その分類毎に条件フラグを参照して、実行する必要のある有効な命令であるか、実行する必要のない無効な命令であるかを判断することを特徴とするプロセッサ。 The processor of claim 1, wherein
When the instructions having the same execution condition information are continuously arranged in each cycle, the instruction issue control means classifies the plurality of instructions decoded by the decoding means for each execution condition in advance, A processor characterized by referring to a condition flag for each classification to determine whether it is a valid instruction that needs to be executed or an invalid instruction that does not need to be executed.
前記複数の命令中に各命令が並列実行の境界であるか否かの並列実行境界情報が指定され、
前記命令発行制御手段は、各命令の前記並列実行境界情報を参照して、当サイクルにおいて実行の対象とする命令群を検出する機能を更に有することを特徴とするプロセッサ。 The processor of claim 1, wherein
Parallel execution boundary information indicating whether each instruction is a boundary for parallel execution among the plurality of instructions is specified,
The instruction issue control means further has a function of referring to the parallel execution boundary information of each instruction and detecting a group of instructions to be executed in this cycle.
前記命令発行制御手段は、命令内の並列実行境界情報にて検出された境界命令以前の全ての命令が実行する必要のない無効な命令として削除された場合には、当該境界命令の並列実行境界情報を無効化し、当該境界命令以降の命令の並列実行境界情報を参照することにより当サイクルの新たな並列実行境界を検出することを特徴とするプロセッサ。 The processor of claim 7, wherein
The instruction issue control means, when all instructions before the boundary instruction detected in the parallel execution boundary information in the instruction are deleted as invalid instructions that do not need to be executed, the parallel execution boundary of the boundary instruction A processor characterized by detecting a new parallel execution boundary of the current cycle by invalidating information and referring to parallel execution boundary information of an instruction after the boundary instruction.
前記複数の命令を各々解読するための解読手段と、
有効なオペレーションを実行する命令又は命令の集合を決定するための命令発行制御手段と、
前記複数の命令中に各命令の動作が指定され、当該指定に基づいて1つ又は複数のオペレーションを実行するための実行手段とを備えたプロセッサであって、
前記命令発行制御手段は、前記解読手段にて解読された命令群の中から、複数の命令の機能が単一の命令で実現可能であるような命令の組み合わせを検出し、それら複数の命令を単一の命令として扱うように結合する機能を有することを特徴とするプロセッサ。 Command supply means for supplying a plurality of commands;
Decoding means for decoding each of the plurality of instructions;
An instruction issue control means for determining an instruction or set of instructions for executing a valid operation;
A processor comprising an execution means for specifying an operation of each instruction in the plurality of instructions and executing one or a plurality of operations based on the specification;
The instruction issuance control means detects a combination of instructions such that a function of a plurality of instructions can be realized by a single instruction from the group of instructions decoded by the decoding means, and determines the plurality of instructions. A processor having a function of being combined so as to be treated as a single instruction.
前記命令発行制御手段は、当サイクルにて実行対象にも削除対象にも結合対象にもならずに残った命令群を検出し、それらの命令群を次サイクル以降で発行の対象とするように制御する機能を更に有することを特徴とするプロセッサ。 The processor of claim 9, wherein
The instruction issue control means detects a remaining instruction group that is neither an execution target, a deletion target, nor a connection target in this cycle, and sets these instruction groups as a target of issue in the next cycle or later. A processor further having a function of controlling.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005224048A JP2006012185A (en) | 2005-08-02 | 2005-08-02 | Processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005224048A JP2006012185A (en) | 2005-08-02 | 2005-08-02 | Processor |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004130214A Division JP3727324B2 (en) | 2004-04-26 | 2004-04-26 | Processor and compiling device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006012185A true JP2006012185A (en) | 2006-01-12 |
Family
ID=35779288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005224048A Pending JP2006012185A (en) | 2005-08-02 | 2005-08-02 | Processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006012185A (en) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6265133A (en) * | 1985-09-17 | 1987-03-24 | Nec Corp | Instruction prefetching device |
JPH06236267A (en) * | 1993-01-08 | 1994-08-23 | Internatl Business Mach Corp <Ibm> | Method and system for enhancement of dispatch efficiency of instruction device in superscalar processor system |
JPH1027102A (en) * | 1996-07-11 | 1998-01-27 | Hitachi Ltd | Arithmetic processor |
JPH11296377A (en) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | Program processing method, device therefor and recording medium |
JP2001236227A (en) * | 2000-02-24 | 2001-08-31 | Matsushita Electric Ind Co Ltd | Processor and compiler and compile method and recording medium |
JP2001515628A (en) * | 1997-12-29 | 2001-09-18 | トリメディア テクノロジーズ インコーポレイテッド | Very long instruction word (VLIW) processor |
-
2005
- 2005-08-02 JP JP2005224048A patent/JP2006012185A/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6265133A (en) * | 1985-09-17 | 1987-03-24 | Nec Corp | Instruction prefetching device |
JPH06236267A (en) * | 1993-01-08 | 1994-08-23 | Internatl Business Mach Corp <Ibm> | Method and system for enhancement of dispatch efficiency of instruction device in superscalar processor system |
JPH1027102A (en) * | 1996-07-11 | 1998-01-27 | Hitachi Ltd | Arithmetic processor |
JP2001515628A (en) * | 1997-12-29 | 2001-09-18 | トリメディア テクノロジーズ インコーポレイテッド | Very long instruction word (VLIW) processor |
JPH11296377A (en) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | Program processing method, device therefor and recording medium |
JP2001236227A (en) * | 2000-02-24 | 2001-08-31 | Matsushita Electric Ind Co Ltd | Processor and compiler and compile method and recording medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3564445B2 (en) | Processor, compiling device and compiling method | |
US5710902A (en) | Instruction dependency chain indentifier | |
US5606676A (en) | Branch prediction and resolution apparatus for a superscalar computer processor | |
US7458069B2 (en) | System and method for fusing instructions | |
US5692169A (en) | Method and system for deferring exceptions generated during speculative execution | |
US5692167A (en) | Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor | |
KR100284789B1 (en) | Method and apparatus for selecting the next instruction in a superscalar or ultra-long instruction wordcomputer with N-branches | |
KR100900364B1 (en) | System and method for reducing write traffic in processors | |
JPH087681B2 (en) | Scalar instruction Method for determining and indicating parallel executability, and method for identifying adjacent scalar instructions that can be executed in parallel | |
US6324639B1 (en) | Instruction converting apparatus using parallel execution code | |
US6871343B1 (en) | Central processing apparatus and a compile method | |
US7844799B2 (en) | Method and system for pipeline reduction | |
US9201657B2 (en) | Lower power assembler | |
JP3727324B2 (en) | Processor and compiling device | |
JP2001243070A (en) | Processor and branch predicting method and compile method | |
US6336182B1 (en) | System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch | |
JP3553845B2 (en) | Processor, compiler, coiling method, and recording medium | |
JP2006012185A (en) | Processor | |
US20150220343A1 (en) | Computer Processor Employing Phases of Operations Contained in Wide Instructions | |
JP2002024008A (en) | Data processor and program conversion device | |
Seto et al. | Custom instruction generation with high-level synthesis | |
US6304959B1 (en) | Simplified method to generate BTAGs in a decode unit of a processing system | |
US6807628B2 (en) | System and method for supporting precise exceptions in a data processor having a clustered architecture | |
JPH04506878A (en) | data processing equipment | |
Connors et al. | An architecture framework for introducing predicated execution into embedded microprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080711 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101116 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110426 |