JP2001051845A - Out-of-order execution system - Google Patents

Out-of-order execution system

Info

Publication number
JP2001051845A
JP2001051845A JP11228246A JP22824699A JP2001051845A JP 2001051845 A JP2001051845 A JP 2001051845A JP 11228246 A JP11228246 A JP 11228246A JP 22824699 A JP22824699 A JP 22824699A JP 2001051845 A JP2001051845 A JP 2001051845A
Authority
JP
Japan
Prior art keywords
predicate
instruction
register
execution
unit
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
Application number
JP11228246A
Other languages
Japanese (ja)
Inventor
Masahiro Tokoro
雅尋 處
Yoshiya Moriyama
善哉 森山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Hitachi Information Technology Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Hitachi Information Technology Co Ltd filed Critical Hitachi Ltd
Priority to JP11228246A priority Critical patent/JP2001051845A/en
Publication of JP2001051845A publication Critical patent/JP2001051845A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To shorten the process time from the generation of a predicate to conditioned execution by providing a dedicated inter-predicate operation unit which performs out-of-order execution. SOLUTION: When it is judged that operation pipe feed control logic 1010 can not execute an instruction (register 1009 is ineffective), no instruction is fed to an operation pipe. In this case, a comparator 1006 compares a rename register number enqueued an instruction queue 1004 with a rename register number generated by a predicate generation instruction execution unit 1002 and the register 1009 is made effective through an OR circuit 1008 when they match each other. Consequently, the operation pipe feed control logic 1010 feeds an instruction to the operation pipe. Source data of operation are sent out to a computing element 1011 by selecting a forwarding bus 1201 from a predicate generation instruction execution unit 1002 by a selector 1101 and operated.

Description

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

【0001】[0001]

【発明の属する技術分野】本発明はプレディケートを用
いる条件付き実行方式とその実行方式を用いたプロセッ
サに関する。
The present invention relates to a conditional execution method using a predicate and a processor using the execution method.

【0002】[0002]

【従来の技術】スーパースカラやVLIW(Very Long
Instruction Word)など、命令レベルの並列化を目的と
するコンピュータにおいて、プレディケートと呼ばれる
真偽値を実行条件として命令中に保持し、プレディケー
ト値が真の場合にだけその命令を実行(条件付き実行)
する機構を持つものがある。
2. Description of the Related Art Super scalar and VLIW (Very Long)
For example, a computer that aims at instruction-level parallelism, such as Instruction Word, holds a boolean value called a predicate in the instruction as an execution condition and executes the instruction only when the predicate value is true (conditional execution).
Some have a mechanism to do so.

【0003】このプレディケートにおいてコンパイラは
命令レベルのスケジューリングなどを用いて、高速な実
行コードを生成するために、プレディケートデータを生
成する命令(プレディケート生成命令)、実行命令文中
の2つのプレディケートデータ間の包含関係の演算を行
う命令(プレディケート間演算命令)、プレディケート
値が真の場合にだけメモリにストア動作を行う命令(条
件付きストア命令)、プレディケート値が真の場合と偽
の場合とで違うレジスタの値を選択する命令(レジスタ
選択命令)を生成する。
In this predicate, in order to generate a high-speed execution code using instruction-level scheduling or the like, a compiler includes an instruction for generating predicate data (a predicate generation instruction), and an inclusive statement between two predicate data in an execution instruction statement. Instructions that perform relational operations (inter-predicate operation instructions), instructions that perform a store operation to memory only when the predicate value is true (conditional store instructions), and registers that differ when the predicate value is true and false Generate an instruction to select a value (register selection instruction).

【0004】複数の条件に基づきストアまたはレジスタ
の選択を行う場合、プレディケート生成命令で生成され
た複数のプレディケートデータをもとにプレディケート
間演算命令で条件の真偽値を求め、その値を用いて条件
付きストア命令またはレジスタ選択命令を実行する。
When a store or a register is selected based on a plurality of conditions, a true / false value of a condition is obtained by an inter-predicate operation instruction based on a plurality of predicate data generated by a predicate generation instruction, and the value is used by using the value. Execute a conditional store or register select instruction.

【0005】プロセッサは、プレディケート生成命令実
行ユニットが生成したプレディケートデータをプレディ
ケート間演算命令実行ユニットに送出する。プレディケ
ート間演算命令実行ユニットは、実行文中の命令順序に
従い演算を行い、プレディケート値が確定した後に、条
件付きストア命令実行ユニット及びレジスタ選択命令実
行ユニットにプレディケートデータを送出する。条件付
きストア命令実行ユニット及びレジスタ選択命令実行ユ
ニットはこのプレディケート値を評価し条件付き実行を
行う。
The processor sends the predicate data generated by the predicate generation instruction execution unit to the inter-predicate operation instruction execution unit. The inter-predicate operation instruction execution unit performs an operation in accordance with the order of instructions in the execution statement, and sends the predicate data to the conditional store instruction execution unit and the register selection instruction execution unit after the predicate value is determined. The conditional store instruction execution unit and the register selection instruction execution unit evaluate this predicate value and perform conditional execution.

【0006】図2に従来のプレディケート技術を用いた
条件付き実行(レジスタ選択命令の実行)のタイムチャ
ートの例を示す。
FIG. 2 shows an example of a time chart of conditional execution (execution of a register selection instruction) using the conventional predicate technique.

【0007】図2では実行命令文順に命令1から命令5
の5命令が実行される場合のタイムチャートを示した。
命令1がプレディケート生成命令、命令2〜4がプレデ
ィケート間演算命令、命令5がレジスタ選択命令であ
り、命令2が命令1演算結果を、命令4が命令2と3の
演算結果を、命令5が命令4の演算結果をそれぞれソー
スデータとして用いる。その他のプレディケートソース
データにはプレディケート本体レジスタの値を用いる。
(命令発行時にプレディケートレジスタ内に有効なデー
タが存在する。) プレディケート生成命令、プレディケート間演算命令、
レジスタ選択命令はともに命令発行後5サイクルで終了
すると仮定し、それらのサイクルをそれぞれ、D、E
0、E1、E2、Cステージと呼ぶ。Dステージで各命
令実行ユニットへの命令の発行、E0ステージで各実行
ユニットへの命令の取り込み、E1ステージで演算器へ
の命令投入の判定、E2ステージで演算、Cステージで
レジスタへの実行結果の書き込みが行われるものとす
る。
In FIG. 2, instructions 1 to 5 are executed in the order of the execution statement.
5 shows a time chart when the five instructions are executed.
Instruction 1 is a predicate generation instruction, instructions 2 to 4 are inter-predicate operation instructions, instruction 5 is a register selection instruction, instruction 2 is the operation result of instruction 1, instruction 4 is the operation result of instructions 2 and 3, and instruction 5 is the operation result of instructions 2 and 3. The operation result of the instruction 4 is used as source data. For other predicate source data, the value of the predicate body register is used.
(Valid data exists in the predicate register when the instruction is issued.) A predicate generation instruction, an operation instruction between predicates,
It is assumed that both register selection instructions end in five cycles after the instruction is issued, and those cycles are designated as D and E, respectively.
0, E1, E2, and C stages. Issue of instructions to each instruction execution unit in the D stage, fetching of instructions to each execution unit in the E0 stage, determination of instruction input to the arithmetic unit in the E1 stage, operation in the E2 stage, and execution results in registers in the C stage Is written.

【0008】また、プレディケート生成命令実行ユニッ
ト、プレディケート間演算命令実行ユニット、レジスタ
選択命令実行ユニットで同時に処理できる命令数はとも
に1であり、パイプライン処理できるものと仮定した。
プレディケート生成命令実行ユニットの演算器出力とプ
レディケート間演算命令実行ユニットの演算器入力の間
およびプレディケート間演算命令実行ユニットの演算器
の出力−入力間にE2ステージの演算結果を次サイクル
のE2演算ステージに反映させるためのバイパスの存在
も仮定した。
Further, it is assumed that the number of instructions that can be simultaneously processed by the predicate generation instruction execution unit, the inter-predicate operation instruction execution unit, and the register selection instruction execution unit is one, and that the pipeline processing is possible.
The operation result of the E2 stage is output between the operation unit output of the predicate generation instruction execution unit and the operation unit input of the operation instruction execution unit between predicates and between the output and input of the operation unit of the operation instruction execution unit between predicates. It is also assumed that there is a bypass to reflect this.

【0009】まず、命令発行ユニットが2000のタイ
ミングで命令1をプレディケート生成命令実行ユニット
へ発行する。プレディケート生成命令実行ユニットは、
2001のタイミングで命令1を取り込む。命令1のソ
ースデータは有効であるため2002のタイミングで命
令の実行が可能であること判断し命令実行信号を演算パ
イプへ送出する。演算パイプは2003のタイミングで
プレディケートデータの生成を行い、生成したデータを
2004のタイミングでプレディケートレジスタへ格納
する。
First, the instruction issuing unit issues the instruction 1 to the predicate generation instruction execution unit at a timing of 2000. The predicate generation instruction execution unit
Instruction 1 is fetched at the timing of 2001. Since the source data of the instruction 1 is valid, it is determined that the instruction can be executed at the timing of 2002, and an instruction execution signal is sent to the operation pipe. The operation pipe generates predicate data at the timing of 2003, and stores the generated data in the predicate register at the timing of 2004.

【0010】命令2は命令1の1サイクル後2013の
タイミングでプレディケート間演算命令実行ユニットの
演算器で演算が行われる。命令1が生成する命令2のソ
ースデータはプレディケート生成命令実行ユニットの演
算器からプレディケート間演算命令実行ユニットの演算
器へのバイパスを用いてフォワーディングされる。20
12のタイミングでの演算器への命令投入決定を可能に
するため、プレディケート間演算命令実行ユニットはプ
レディケート生成命令実行ユニットから2002のタイ
ミングで命令1の命令実行を示す信号と演算結果の書き
込み先レジスタ番号を受け取る。
The operation of the instruction 2 is performed by the operation unit of the inter-predicate operation instruction execution unit at the timing of 2013 one cycle after the instruction 1. The source data of the instruction 2 generated by the instruction 1 is forwarded by using a bypass from the operation unit of the predicate generation instruction execution unit to the operation unit of the inter-predicate operation instruction execution unit. 20
In order to make it possible to determine the input of an instruction to the arithmetic unit at the timing of 12, the pre-dicated operation instruction execution unit outputs a signal indicating the instruction execution of the instruction 1 from the predicate generation instruction execution unit at the timing of 2002 and a destination register of the operation result. Receive the number.

【0011】プレディケート間演算命令実行ユニットの
パイプがパイプライン化されているため、命令2の1サ
イクル後2023のタイミングで命令3が、さらに1サ
イクル後の2033のタイミングで命令4の演算が行わ
れる。命令4の演算は命令2と命令3の演算結果をソー
スデータとして用いるが、命令2の生成データはプレデ
ィケートレジスタから、命令3の生成データはバイパス
から読み出す。
Since the pipe of the inter-predicate operation instruction execution unit is pipelined, the operation of instruction 3 is performed at the timing of 2023, one cycle after instruction 2, and the operation of instruction 4 at the timing of 2033, one cycle after instruction 2. . The operation of the instruction 4 uses the operation results of the instructions 2 and 3 as source data. The generated data of the instruction 2 is read from the predicate register, and the generated data of the instruction 3 is read from the bypass.

【0012】レジスタ選択命令5は、命令4が生成する
データがプレディケートレジスタに書き込まれた後に2
043のタイミングでその値を読み出しプレディケート
値に従いレジスタの選択を行う。
The register selection instruction 5 is executed after the data generated by the instruction 4 is written into the predicate register.
At timing 043, the value is read out and the register is selected according to the predicate value.

【0013】[0013]

【発明が解決しようとする課題】プレディケートの生成
から条件付き実行に至るまでの処理時間の短縮を目的と
する。
SUMMARY OF THE INVENTION An object of the present invention is to reduce the processing time from generation of a predicate to conditional execution.

【0014】[0014]

【課題を解決するための手段】プレディケート間演算と
呼ぶ実行命令文中の2つのプレディケート間の包含関係
の演算を行う演算器を個別に設け、その演算器が、他演
算器が生成したプレディケートデータをフォワーディン
グしながらアウトオブオーダー実行することにより条件
付き実行の処理を高速化する。
Means for Solving the Problems An arithmetic unit for calculating an inclusion relation between two predicates in an execution statement, which is called an operation between predicates, is separately provided, and the arithmetic unit converts predicate data generated by another arithmetic unit. The execution of conditional execution is speeded up by executing out-of-order execution while forwarding.

【0015】[0015]

【発明の実施の形態】以下、本発明に基づくプレディケ
ート間演算命令のアウトオブオーダー実行の一実施例を
図面により詳細に説明する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS One embodiment of the out-of-order execution of an inter-predicate operation instruction according to the present invention will be described below in detail with reference to the drawings.

【0016】図1はプレディケート間演算命令のアウト
オブオーダー実行を行うハードウェアの構成を示すブロ
ック図である。
FIG. 1 is a block diagram showing the configuration of hardware for performing out-of-order execution of an inter-predicate operation instruction.

【0017】命令発行ユニット1001はプレディケー
ト間演算命令実行ユニット1003へプレディケート間
演算命令情報を発行する。この時命令発行ユニット10
01はプレディケート生成命令実行ユニット1002、
条件付きストア命令実行ユニット1015、およびレジ
スタ選択命令実行ユニット1016へプレディケート生
成命令情報、レジスタ選択命令情報、条件付きストア命
令情報をそれぞれ同時に発行しても良い。
The instruction issuing unit 1001 issues inter-predicate operation instruction information to the inter-predicate operation instruction execution unit 1003. At this time, the instruction issuing unit 10
01 is a predicate generation instruction execution unit 1002,
Predicate generation instruction information, register selection instruction information, and conditional store instruction information may be simultaneously issued to the conditional store instruction execution unit 1015 and the register selection instruction execution unit 1016.

【0018】発行されたプレディケート間演算命令情報
は、命令キュー1004内のレジスタ1005とレジス
タ1009に格納する。レジスタ1009にはOR回路
1008を介して、発行した命令のソースデータが有効
である(命令のソースデータがプレディケートリネーム
レジスタ1012またはプレディケート本体レジスタ1
013のいずれかに存在する)ことを示すフラグを格納
する。
The issued inter-predicate operation instruction information is stored in registers 1005 and 1009 in the instruction queue 1004. The source data of the issued instruction is valid in the register 1009 via the OR circuit 1008 (the source data of the instruction is stored in the predicate name register 1012 or the predicate main register 1).
013) is stored.

【0019】プレディケート間演算命令のソースデータ
が複数ある場合、レジスタ1009は各レジスタ対応に
ソースデータの数だけ存在する。
When there are a plurality of source data of the inter-predicate operation instruction, there are as many registers 1009 as there are source data for each register.

【0020】命令キュー1004に格納した情報は、レ
ジスタ1009が全て有効である場合、演算パイプ投入
制御論理1010が命令の実行が可能な状態と判断し演
算パイプへ命令の投入を行う。
When all the information stored in the instruction queue 1004 is valid in the register 1009, the operation pipe input control logic 1010 determines that the instruction can be executed and inputs the instruction to the operation pipe.

【0021】演算パイプと投入制御論理1010は命令
キュー1004に格納されている複数の命令のうち、実
行可能なものを演算パイプへ投入するが、投入の順序は
実行命令文順序(プログラムオーダー)に依存する必要
はない。
The operation pipe and the input control logic 1010 input an executable instruction among the plurality of instructions stored in the instruction queue 1004 to the operation pipe, but the input order is an execution instruction statement order (program order). You do not need to depend.

【0022】命令発行時点でレジスタ1009が有効な
場合は、演算のソースデータがプレディケートリネーム
レジスタ1012かプレディケート本体レジスタ101
3のいずれかに格納されているので、読み出しパス12
02か読み出しパス1203のいずれかから、セレクタ
1101により選択し演算器1011へ送出し演算す
る。
If the register 1009 is valid when the instruction is issued, the source data of the operation is stored in the predicate name register 1012 or the predicate main register 101.
3, the read path 12
02 and either of the read paths 1203, are selected by the selector 1101 and sent to the arithmetic unit 1011 for calculation.

【0023】演算パイプ投入制御論理1010が命令の
実行が不可能な状態と判断した場合(レジスタ1009
が無効である場合)は、演算器パイプへ命令の投入は行
わない。この場合命令キュー1004は、プレディケー
ト生成命令実行ユニット1002、およびプレディケー
ト間演算命令実行ユニット1003の演算結果を待ち合
わせている状態になる。
When the operation pipe input control logic 1010 determines that the instruction cannot be executed (register 1009)
Is invalid), no instruction is input to the arithmetic unit pipe. In this case, the instruction queue 1004 waits for the operation results of the predicate generation instruction execution unit 1002 and the inter-predicate operation instruction execution unit 1003.

【0024】命令キュー1004内に待ち合わせている
リネームレジスタ番号とプレディケート生成命令実行ユ
ニット1002が生成したリネームレジスタ番号はコン
パレータ1006により比較され、一致した場合は、O
R回路1008を介して、レジスタ1009を有効にす
る。これにより演算パイプ投入制御論理1010は演算
パイプへ命令の投入を行う。
The rename register number waiting in the instruction queue 1004 and the rename register number generated by the predicate generation instruction execution unit 1002 are compared by the comparator 1006.
The register 1009 is made effective via the R circuit 1008. As a result, the operation pipe input control logic 1010 inputs an instruction to the operation pipe.

【0025】演算のソースデータは、プレディケート生
成命令実行ユニット1002からのフォワーディングパ
ス1201をセレクタ1101により選択し、演算器1
011へ送出し演算する。またプレディケート生成命令
実行ユニット1002が生成したプレディケートデータ
は、プレディケートリネームレジスタ1012へ格納す
る。
For the source data of the operation, the selector 1101 selects the forwarding path 1201 from the predicate generation instruction execution unit 1002, and
011 for calculation. The predicate data generated by the predicate generation instruction execution unit 1002 is stored in the predicate name register 1012.

【0026】命令キュー1004内に待ち合わせている
リネームレジスタ番号とプレディケート間演算命令実行
ユニット1003が実行した演算結果を格納するリネー
ムレジスタ番号はコンパレータ1007により比較し、
一致した番号は、OR回路1008を介して、レジスタ
1009を有効にする。これにより演算パイプ投入制御
論理1010は演算パイプへ命令の投入を行う。
A comparator 1007 compares the rename register number waiting in the instruction queue 1004 with the rename register number storing the operation result executed by the inter-predicate operation instruction execution unit 1003.
The coincident number enables the register 1009 via the OR circuit 1008. As a result, the operation pipe input control logic 1010 inputs an instruction to the operation pipe.

【0027】演算のソースデータは、演算器1011の
演算結果のフォワーディングパス1204をセレクタ1
101により選択し、演算器1011へ送出し演算す
る。
As the source data of the operation, the forwarding path 1204 of the operation result of the operation unit 1011 is set to the selector 1
The selection is made by 101 and sent to the computing unit 1011 for computation.

【0028】演算結果はプレディケートリネームレジス
タ1012へ格納する。
The operation result is stored in the predicate name register 1012.

【0029】プレディケートリネームレジスタ1012
に格納した演算結果、およびプレディケート生成命令実
行ユニットが生成したプレディケートデータは、命令完
了制御ユニット1014が命令実行順序を保証してプレ
ディケート本体レジスタ1013へライトバックする。
Predicate name register 1012
And the predicate data generated by the predicate generation instruction execution unit are written back to the predicate body register 1013 by the instruction completion control unit 1014 while guaranteeing the instruction execution order.

【0030】条件付きストア命令実行ユニット1015
はプレディケート本体レジスタ1013に確定したプレ
ディケートを使用し、条件付きストア命令実行ユニット
1017内でプレディケート値を評価し、プレディケー
ト値が真の場合にだけメモリにストア動作を行うことに
より条件付き実行を行う。
Conditional store instruction execution unit 1015
Uses the predicate determined in the predicate body register 1013, evaluates the predicate value in the conditional store instruction execution unit 1017, and performs conditional execution by performing a store operation in the memory only when the predicate value is true.

【0031】レジスタ選択命令実行ユニット1016
は、命令発行ユニットが発行するプレディケートリネー
ムレジスタ番号、および本体レジスタ番号を受け取り、
必要なプレディケートデータをセレクタ1102により
選択し、プレディケート値が真の場合と偽の場合とで違
うレジスタの値を選択することで条件付き実行を行う。
Register selection instruction execution unit 1016
Receives the predicate name register number issued by the instruction issuing unit and the body register number,
Necessary predicate data is selected by the selector 1102, and conditional execution is performed by selecting different register values depending on whether the predicate value is true or false.

【0032】図3に本発明によるプレディケートを用い
た条件付き実行(レジスタ選択命令を実行)のタイムチ
ャートを示す。
FIG. 3 is a time chart of conditional execution (execution of a register selection instruction) using a predicate according to the present invention.

【0033】図2の場合と同一の命令例を実行し、図2
の時と同様に命令発行後5サイクルで演算結果をレジス
タへ書き込むと仮定し、それらのサイクルをそれぞれ、
D、E0、E1、E2、C1ステージと呼ぶ。Dステー
ジで各命令実行ユニットへの命令の発行、E0ステージ
で各実行ユニットへの命令の取り込み、E1ステージで
演算器への命令投入の判定、E2ステージ演算、C1ス
テージでリネームレジスタへの実行結果の書き込みが行
われる。その後C2ステージと呼ばれるサイクルでリネ
ームレジスタから本体レジスタへのライトバックを行
う。
By executing the same instruction example as in FIG.
Assuming that the operation result is written to the register in 5 cycles after the instruction is issued, as in
The stages are called D, E0, E1, E2, and C1 stages. Issue of instructions to each instruction execution unit in the D stage, fetching of instructions to each execution unit in the E0 stage, determination of instruction input to the operation unit in the E1 stage, E2 stage operation, and execution results in the rename register in the C1 stage Is written. Thereafter, write-back from the rename register to the main body register is performed in a cycle called C2 stage.

【0034】命令発行ユニットは同時に4命令を発行で
きるものと仮定した。また、プレディケート生成命令実
行ユニット、プレディケート間演算命令実行ユニット、
レジスタ選択命令実行ユニットで同時に処理できる命令
数はともに1であり、パイプライン処理できるものと仮
定した。
It has been assumed that the instruction issuing unit can issue four instructions at the same time. A predicate generation instruction execution unit, a predicate operation instruction execution unit,
The number of instructions that can be processed simultaneously by the register selection instruction execution unit is 1 and it is assumed that pipeline processing can be performed.

【0035】命令発行ユニットはプレディケート生成命
令実行ユニット、プレディケート間演算命令実行ユニッ
トに同タイミングで命令1〜4の命令情報をそれぞれ3
000、3010、3020、3030のタイミングに
より発行を行う。
The instruction issuing unit sends the instruction information of instructions 1 to 4 to the predicate generation instruction execution unit and the inter-predicate operation instruction execution unit at the same timing.
000, 3010, 3020, 3030.

【0036】プレディケート生成命令実行ユニットは3
000のタイミングで発行された命令1の命令情報を3
001のタイミングで取り込む。命令1のソースデータ
は命令発行時にすでに有効であるので、3002のタイ
ミングで実行が可能であると判断し、命令実行信号を演
算パイプへ送出する。演算パイプは3003のタイミン
グでプレディケートの生成を行い、3004のタイミン
グでリネームレジスタへの書き込みを行う。プレディケ
ートリネームレジスタに書き込まれた演算結果は300
5のタイミングでプレディケート本体レジスタにライト
バックされる。
The predicate generation instruction execution unit is 3
The instruction information of the instruction 1 issued at the timing of 000 is 3
It takes in at the timing of 001. Since the source data of the instruction 1 is already valid when the instruction is issued, it is determined that the instruction can be executed at the timing of 3002, and an instruction execution signal is sent to the operation pipe. The operation pipe generates a predicate at the timing of 3003, and writes to the rename register at the timing of 3004. The operation result written to the predicate name register is 300
At the timing of 5, it is written back to the predicate main register.

【0037】プレディケート間演算命令実行ユニットは
3010、3020、3030のタイミングで発行され
た命令2、命令3、命令4の命令情報を3011、30
21、3031のタイミングで取り込む。
The inter-predicate operation instruction execution unit stores the instruction information of the instructions 2, 3, and 4 issued at the timings of 3010, 3020, and 3030 as 3011, 30
21 and 3031.

【0038】命令2はソースデータとして命令1の演算
結果を用いるが、命令情報を命令キューに取り込んだ時
点ではソースデータが無効であるため、E0ステージで
ストールする。プレディケート間演算命令実行ユニット
はプレディケート生成命令実行ユニットから3002の
タイミングで命令1の命令実行信号と演算結果の書き込
み先プレディケートリネームレジスタ番号を受け取り、
命令2の状態を実行不可能状態から実行可能状態へ遷移
させる。命令2は3012のタイミングで実行可能であ
ると判断され、3013のタイミングで演算、3014
のタイミングでリネームレジスタへの書き込み、301
5のタイミングでプレディケート本体レジスタへのライ
トバックが行われる。
The instruction 2 uses the operation result of the instruction 1 as source data, but stalls at the E0 stage because the source data is invalid when the instruction information is taken into the instruction queue. The inter-predicate operation instruction execution unit receives the instruction execution signal of instruction 1 and the predicate name register number to which the operation result is written from the predicate generation instruction execution unit at a timing of 3002,
The state of the instruction 2 is changed from the non-executable state to the executable state. It is determined that the instruction 2 can be executed at the timing of 3012, the operation is performed at the timing of 3013,
At the timing of writing to the rename register, 301
At the timing of 5, write back to the predicate main register is performed.

【0039】命令3は命令2と同時にプレディケート間
演算命令実行ユニットの命令キューに取り込まれるが、
命令キューに取り込まれた時点でソースデータが有効で
あるため、E0ステージでストールせず命令2を追い越
して3022のタイミングで演算器への投入が行われる
(アウトオブオーダ実行)。3023のタイミングで演
算、3024のタイミングでプレディケートリネームレ
ジスタへの書き込みが行われるが、先行する命令2のラ
イトバック(3015)を待つためC1ステージでスト
ールする。プレディケート本体レジスタへのライトバッ
クは命令2と同時の3025のタイミングで行われる
が、書き込み時に命令2のデータを命令3のデータで上
書きすることにより、プレディケート本体レジスタのイ
ンオーダ保証を行う。
The instruction 3 is taken into the instruction queue of the inter-predicate operation instruction execution unit at the same time as the instruction 2.
Since the source data is valid at the time of being taken into the instruction queue, the instruction data is not stalled in the E0 stage, but overtakes the instruction 2 and is input to the arithmetic unit at the timing of 3022 (out-of-order execution). Operation is performed at the timing of 3023, and writing to the predicate name register is performed at the timing of 3024, but stalls at the C1 stage to wait for the write back (3015) of the preceding instruction 2. The write back to the predicate main register is performed at the same timing as the instruction 2 at 3025, but the in-order guarantee of the predicate main register is performed by overwriting the data of the instruction 2 with the data of the instruction 3 at the time of writing.

【0040】命令4はソースデータとして命令2と命令
3の演算結果を用いる。命令発行時点ではソースデータ
が無効であるため、2つのソースデータが共に有効にな
るまでE0ステージでストールする。プレディケート間
演算命令実行ユニットでは3012、3022のタイミ
ングでそれぞれ命令2と命令3の命令実行信号、演算結
果書き込み先プレディケートリネームレジスタ番号をも
とに命令4のソースデータが有効であることを示すレジ
スタの値を真にする。それにより、命令4は3032の
タイミングで実行可能となり、3033のタイミングで
演算、3034のタイミングで演算結果のプレディケー
トリネームレジスタへの書き込み、3035のタイミン
グでプレディケート本体レジスタへのライトバックを行
う。命令5は3040のタイミングで命令発行ユニット
から発行され、3041のタイミングでレジスタ選択命
令実行ユニットの命令キューに取り込まれる。命令5は
ソースデータとして用いる命令4の演算結果を待つため
にE0ステージでストールし、3042のタイミングで
演算器への投入、3043でプレディケートリネームレ
ジスタからプレディケート値を読み出し、その値に基づ
いてレジスタ選択の実行が行われる。
The instruction 4 uses the operation results of the instructions 2 and 3 as source data. Since the source data is invalid at the time of issuing the instruction, the stall is performed in the E0 stage until the two source data are both valid. In the inter-predicate operation instruction execution unit, based on the instruction execution signals of instructions 2 and 3 and the operation result writing destination predicate name register number at timings 3012 and 3022, a register indicating that the source data of instruction 4 is valid is stored. Set the value to true. As a result, the instruction 4 becomes executable at the timing of 3032, performs the operation at the timing of 3033, writes the operation result to the predicate name register at the timing of 3034, and writes back to the predicate main register at the timing of 3035. The instruction 5 is issued from the instruction issuing unit at the timing of 3040, and is taken into the instruction queue of the register selection instruction executing unit at the timing of 3041. The instruction 5 stalls at the E0 stage to wait for the operation result of the instruction 4 used as the source data. The instruction 5 is input to the arithmetic unit at the timing of 3042, the predicate value is read from the predicate name register at 3043, and the register is selected based on the value. Is performed.

【0041】[0041]

【発明の効果】以上説明した様に、図2で示した従来の
方式では命令1の発行から命令5がレジスタの選択を実
行するまでに必要とするサイクル数は9サイクルである
のに対し、本発明を用いた図3では8サイクルで一連の
処理が終了する。
As described above, in the conventional method shown in FIG. 2, the number of cycles required from the issue of instruction 1 to the execution of instruction 5 by the instruction 5 is nine. In FIG. 3 using the present invention, a series of processing ends in eight cycles.

【0042】この様に、アウトオブオーダー実行を行う
専用のプレディケート間演算ユニットを設けることによ
り、プレディケートを用いた条件付き実行を行うプロセ
ッサの性能を向上させることができる。
As described above, by providing a dedicated inter-predicate arithmetic unit for performing out-of-order execution, it is possible to improve the performance of a processor that performs conditional execution using predicates.

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

【図1】本発明によるプレディケート間演算実行ユニッ
トの構成例である。
FIG. 1 is a configuration example of an inter-predicate operation execution unit according to the present invention.

【図2】従来のプレディケートを用いた条件付き実行
(レジスタ選択命令の実行)のタイムチャートである。
FIG. 2 is a time chart of conventional conditional execution (execution of a register selection instruction) using a predicate.

【図3】本発明によるプレディケートを用いた条件付き
実行(レジスタ選択命令の実行)のタイムチャートであ
る。
FIG. 3 is a time chart of conditional execution (execution of a register selection instruction) using a predicate according to the present invention.

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

1001…命令発行ユニット、1002…プレディケー
ト生成命令実行ユニット、1003…プレディケート間
演算命令実行ユニット、1004…命令キュー、100
5…命令情報保持ラッチ、1006…リネームレジスタ
番号比較器、1007…リネームレジスタ番号比較器、
1008…OR回路、1009…ソースデータ有効フラ
グ保持ラッチ、1010…演算パイプ投入制御論理、1
011…演算器、1012…プレディケートリネームレ
ジスタ、1013…プレディケート本体レジスタ、10
14…命令完了制御ユニット、1015…条件付きスト
ア命令実行ユニット、1016…レジスタ選択命令実行
ユニット、1101…プレディケート間演算ソースデー
タセレクタ、1102…レジスタ選択ソースデータセレ
クタ、1201…プレディケート生成命令実行結果バイ
パス、1202…プレディケートリネームレジスタ読み
出しパス、1203…プレディケート本体レジスタ読み
出しパス、1204…プレディケート間演算命令実行結
果バイパス、1205…命令完了制御信号。
1001 Instruction issuing unit, 1002 Predicate generation instruction execution unit, 1003 Inter-predicate operation instruction execution unit, 1004 Instruction queue, 100
5 ... Latch for holding instruction information, 1006 ... Rename register number comparator, 1007 ... Rename register number comparator,
1008: OR circuit, 1009: Source data valid flag holding latch, 1010: Operation pipe input control logic, 1
011: arithmetic unit, 1012: predicate name register, 1013: predicate body register, 10
14: Instruction completion control unit, 1015: Conditional store instruction execution unit, 1016: Register selection instruction execution unit, 1101: Inter-predicate operation source data selector, 1102: Register selection source data selector, 1201: Predicate generation instruction execution result bypass, 1202: Predicate name register read path, 1203: Predicate body register read path, 1204: Bypass operation result between predicates, 1205: Instruction completion control signal.

───────────────────────────────────────────────────── フロントページの続き (72)発明者 森山 善哉 神奈川県秦野市堀山下1番地 株式会社日 立インフォメーションテクノロジー内 Fターム(参考) 5B013 AA12 BB04 CC10 5B033 AA14 BD00 CA22  ──────────────────────────────────────────────────続 き Continuation of the front page (72) Inventor Zenya Moriyama 1-Horiyamashita, Hadano-shi, Kanagawa F-term in Hitachi Information Technology Co., Ltd. 5B013 AA12 BB04 CC10 5B033 AA14 BD00 CA22

Claims (5)

【特許請求の範囲】[Claims] 【請求項1】プレディケートと呼ばれる真偽値による実
行条件を命令文中に保持し、プレディケート値が真の場
合にだけその命令を実行(条件付き実行)する機構を備
えるコンピュータシステムにおいて、実行命令文中の複
数のプレディケート値間の論理演算(プレディケート間
演算)を行う演算器を浮動小数点演算や整数演算からプ
レディケート値を生成する演算器とは別個に設け、その
演算器で実行される命令と他の演算器で実行される命令
の実行順序が、実行命令文中の命令順序によらないこと
を特徴としたアウトオブオーダー実行方式。
In a computer system having a mechanism for holding an execution condition based on a boolean value called a predicate in an instruction and executing the instruction only when the predicate value is true (conditional execution), An arithmetic unit that performs a logical operation (inter-predicate operation) between a plurality of predicate values is provided separately from an arithmetic unit that generates a predicate value from a floating-point operation or an integer operation, and instructions executed by the arithmetic unit and other operations An out-of-order execution method, wherein the order of execution of instructions executed by a container does not depend on the order of instructions in an execution statement.
【請求項2】プレディケートと呼ばれる真偽値による実
行条件を命令文中に保持し、プレディケート値が真の場
合にだけその命令を実行(条件付き実行)する機構を備
えるコンピュータシステムにおいて、実行命令文中の複
数のプレディケート値間の論理演算(プレディケート間
演算)を行う演算器を浮動小数点演算や整数演算からプ
レディケート値を生成する演算器とは別個に設け、その
演算器で実行される命令と他の演算器で実行される命令
の実行順序が、実行命令文中の命令順序によらず、かつ
プレディケートデータ間の演算を行う複数の命令の間の
実行順序も実行命令文中の命令順序によらないことを特
徴としたアウトオブオーダー実行方式。
2. A computer system having a mechanism for holding an execution condition based on a boolean value called a predicate in a statement and executing the instruction only when the predicate value is true (conditional execution). An arithmetic unit that performs a logical operation (inter-predicate operation) between a plurality of predicate values is provided separately from an arithmetic unit that generates a predicate value from a floating-point operation or an integer operation, and instructions executed by the arithmetic unit and other operations The order of execution of instructions executed by the unit does not depend on the order of instructions in the execution statement, and the execution order among a plurality of instructions that perform operations between predicate data does not depend on the order of instructions in the execution statement. Out-of-order execution method.
【請求項3】請求項1または2のアウトオブオーダー実
行方式において、 プレディケート間演算命令を実行するユニットが、命令
キュー、演算器、プレディケート間演算結果を一時的に
保持しておくレジスタ(プレディケートリネームレジス
タ)、および実行命令文順序(インオーダー)保証後の
プレディケート値を格納するレジスタ(プレディケート
本体レジスタ)を所有し、 プレディケート間演算命令を発行するユニットが、演算
リソースとして、命令コード、演算に用いるプレディケ
ートデータ(ソースデータ)が格納されているプレディ
ケート本体レジスタ番号及びプレディケートリネームレ
ジスタ番号、有効なソースデータが本体レジスタ、リネ
ームレジスタのどちらに格納されているかを示すフラ
グ、レジスタに格納されているソースデータが有効また
は無効であるかを示すフラグを発行し、 プレディケート間演算命令実行ユニットはそれらの演算
リソースを命令キューへ格納し、命令発行ユニットが演
算リソースを発行した時点でソースデータが全て有効な
命令は、命令キュー内で実行可能状態へ遷移させ、また
命令発行ユニットが演算リソースを発行した時点でソー
スデータの中に無効なものを含む場合、自演算器および
他演算器が生成したプレディケートデータが格納される
リネームレジスタ番号を迂回経路(バイパス)を介して
受け取る(フォワーディング)ことで実行可能状態に遷
移させ、 命令キューに格納した演算リソース中の実行可能なもの
から、プレディケートリネームレジスタおよびプレディ
ケート本体レジスタより演算ソースデータを読み出して
プレディケート間演算を実行し、演算結果を一時プレデ
ィケートリネームレジスタへ格納し、その後実行命令文
順序を保証する命令完了制御ユニットからの指示により
プレディケート本体レジスタへ格納することを特徴とし
たアウトオブオーダー実行方式。
3. The out-of-order execution method according to claim 1, wherein the unit for executing the inter-predicate operation instruction includes an instruction queue, an operation unit, and a register (predicate name) for temporarily holding an inter-predicate operation result. Register) and a register (predicate body register) that stores the predicate value after guaranteeing the execution instruction statement order (in-order), and a unit that issues an operation instruction between predicates is used as an operation resource for an instruction code and an operation. Predicate main body register number and predicate name register number in which predicate data (source data) is stored, flag indicating whether valid source data is stored in main body register or rename register, stored in register Issues a flag indicating whether the source data is valid or invalid.The inter-predicate operation instruction execution unit stores those operation resources in the instruction queue, and all the source data is valid when the instruction issue unit issues the operation resource. When the instruction issuing unit issues an operation resource and the source data contains an invalid instruction when the instruction issuing unit issues an operation resource, the predicate generated by the own operation unit and other operation units A transition is made to an executable state by receiving (forwarding) a rename register number in which data is stored via a bypass route, and the predicate name register and the predicate are changed from executable ones in the operation resources stored in the instruction queue. Read operation source data from main unit register An out-of-order execution method that executes an operation between predicates, stores the operation result in a temporary predicate name register, and then stores it in a predicate main register according to an instruction from an instruction completion control unit that guarantees the order of execution statements .
【請求項4】請求項1または2のアウトオブオーダー実
行方式において、 プレディケート間演算命令を実行するユニットが、リザ
ベーションステーション、演算器、プレディケート間演
算結果を一時的に保持しておくレジスタ(プレディケー
トリネームレジスタ)、および実行命令文順序(インオ
ーダー)保証後のプレディケートを格納するレジスタ
(プレディケート本体レジスタ)を所有し、 プレディケート間演算命令を発行するユニットが、演算
リソースとして、命令コード、ソースデータが格納され
るプレディケートリネームレジスタ番号、演算ソースプ
レディケートデータ、演算ソースデータが有効または無
効であるかを示すフラグを発行し、それらの演算リソー
スをリザベーションステーションとよぶ命令キューへ格
納し、 命令発行ユニットが演算リソースを発行した時点でソー
スデータが全て有効な場合は、リザベーションステーシ
ョン内で実行可能状態へ遷移させ、 命令発行ユニットが演算リソースを発行した時点でソー
スデータの中に無効なものを含む場合、自演算器および
他演算器が生成したプレディケートデータが格納される
リネームレジスタ番号および演算ソースであるプレディ
ケートデータを迂回経路(バイパス)を介して受け取る
(フォワーディング)ことで実行可能状態に遷移させ、 リザベーションステーションに格納した演算リソース中
の実行可能なものから、リザベーションステーションに
格納したソースデータを使用してプレディケート間演算
を実行し、演算結果を一時プレディケートリネームレジ
スタへ格納し、その後実行命令文順序を保証する命令完
了制御ユニットからの指示によりプレディケート本体レ
ジスタへ格納することを特徴としたアウトオブオーダー
実行方式。
4. The out-of-order execution system according to claim 1, wherein the unit for executing the operation instruction between predicates is a reservation station, an arithmetic unit, and a register (predicate name) for temporarily holding an operation result between predicates. Register) and a register (predicate body register) that stores the predicate after guaranteeing the execution instruction sequence (in-order), and a unit that issues an operation instruction between predicates stores instruction codes and source data as operation resources Issue a predicate name register number, operation source predicate data, and a flag indicating whether the operation source data is valid or invalid, store those operation resources in an instruction queue called a reservation station, and If the source data is all valid at the time the row unit issues the computational resource, the state is changed to the executable state in the reservation station, and the invalid source data is deleted when the instruction issuing unit issues the computational resource. In the case of including the predicate data generated by the own operation unit and other operation units, the rename register number and the predicate data as the operation source are received (forwarding) via the bypass route (transfer) to make a transition to the executable state. Executes an operation between predicates using source data stored in the reservation station from the executable resources in the operation resources stored in the reservation station, stores the operation results in the temporary predicate name register, and then executes the execution instruction sequence. Keep An out-of-order execution method characterized by storing in a predicate body register according to an instruction from an instruction completion control unit to be verified.
【請求項5】請求項3および請求項4のプレディケート
間演算命令のアウトオブオーダー実行方式を用いたプロ
セッサ。
5. A processor using an out-of-order execution method of an inter-predicate operation instruction according to claim 3.
JP11228246A 1999-08-12 1999-08-12 Out-of-order execution system Pending JP2001051845A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11228246A JP2001051845A (en) 1999-08-12 1999-08-12 Out-of-order execution system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11228246A JP2001051845A (en) 1999-08-12 1999-08-12 Out-of-order execution system

Publications (1)

Publication Number Publication Date
JP2001051845A true JP2001051845A (en) 2001-02-23

Family

ID=16873463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11228246A Pending JP2001051845A (en) 1999-08-12 1999-08-12 Out-of-order execution system

Country Status (1)

Country Link
JP (1) JP2001051845A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100628573B1 (en) 2004-09-08 2006-09-26 삼성전자주식회사 Apparatus capable of execution of conditional instructions in out of order and method thereof
JP2009524167A (en) * 2006-01-20 2009-06-25 クゥアルコム・インコーポレイテッド Early conditional selection of operands
JPWO2007097017A1 (en) * 2006-02-27 2009-07-09 富士通株式会社 Buffering device and buffering method
US7721346B2 (en) 2003-03-28 2010-05-18 Sanyo Electric Co., Ltd Method and apparatus for encrypting data to be secured and inputting/outputting the same
KR101225075B1 (en) * 2008-03-11 2013-01-22 콸콤 인코포레이티드 System and method of selectively committing a result of an executed instruction
JP2016149164A (en) * 2011-09-23 2016-08-18 クアルコム,インコーポレイテッド Processor configured to perform transactional memory operations

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721346B2 (en) 2003-03-28 2010-05-18 Sanyo Electric Co., Ltd Method and apparatus for encrypting data to be secured and inputting/outputting the same
KR100628573B1 (en) 2004-09-08 2006-09-26 삼성전자주식회사 Apparatus capable of execution of conditional instructions in out of order and method thereof
JP2009524167A (en) * 2006-01-20 2009-06-25 クゥアルコム・インコーポレイテッド Early conditional selection of operands
US9710269B2 (en) 2006-01-20 2017-07-18 Qualcomm Incorporated Early conditional selection of an operand
JPWO2007097017A1 (en) * 2006-02-27 2009-07-09 富士通株式会社 Buffering device and buffering method
JP4779010B2 (en) * 2006-02-27 2011-09-21 富士通株式会社 Buffering device and buffering method
US8533368B2 (en) 2006-02-27 2013-09-10 Fujitsu Limited Buffering device and buffering method
KR101225075B1 (en) * 2008-03-11 2013-01-22 콸콤 인코포레이티드 System and method of selectively committing a result of an executed instruction
US8990543B2 (en) 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
JP2016149164A (en) * 2011-09-23 2016-08-18 クアルコム,インコーポレイテッド Processor configured to perform transactional memory operations

Similar Documents

Publication Publication Date Title
US5710902A (en) Instruction dependency chain indentifier
US7600096B2 (en) Coprocessor extension architecture built using a novel split-instruction transaction model
US6269440B1 (en) Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
US5604878A (en) Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
JP2002333978A (en) Vliw type processor
EP0899654B1 (en) A data processing system and method
JPH04367936A (en) Superscalar processor
US6463524B1 (en) Superscalar processor and method for incrementally issuing store instructions
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
KR100309309B1 (en) Method and apparatus for facilitating mutiple storage instruction completions in a superscalar processor during a single clock cycle
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
JPH02227730A (en) Data processing system
KR100523706B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
JPH0673105B2 (en) Instruction pipeline type microprocessor
JPH10143365A (en) Parallel processing device and its command issuing system
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
JP2001051845A (en) Out-of-order execution system
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US20010054138A1 (en) Instruction buffer and buffer queue control method
US11593115B2 (en) Processor, device, and method for executing instructions
JP2004503872A (en) Shared use computer system
US7127589B2 (en) Data processor
US6629235B1 (en) Condition code register architecture for supporting multiple execution units
CN111857830A (en) Path design method, system and storage medium for forwarding instruction data in advance