JPH08263289A - Pipeline computer for plural instruction flows - Google Patents

Pipeline computer for plural instruction flows

Info

Publication number
JPH08263289A
JPH08263289A JP8883895A JP8883895A JPH08263289A JP H08263289 A JPH08263289 A JP H08263289A JP 8883895 A JP8883895 A JP 8883895A JP 8883895 A JP8883895 A JP 8883895A JP H08263289 A JPH08263289 A JP H08263289A
Authority
JP
Japan
Prior art keywords
instruction
register
value
identification tag
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
JP8883895A
Other languages
Japanese (ja)
Inventor
Masatoshi Hotta
正利 堀田
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP8883895A priority Critical patent/JPH08263289A/en
Publication of JPH08263289A publication Critical patent/JPH08263289A/en
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

PURPOSE: To improve the arithmetic processing ability of a pipeline computer. CONSTITUTION: An instruction flow identification tag generation unit 31 generates an instruction flow identification tag for identifying plural instruction flows. A PC unit 32 is provided with the same number of program counters as the instruction flows to select the program counter of an instruction flow shown by the tag. A decoder 3 decodes an instruction specified by the program counter. A renaming register 33 executes the renaming of registers by distinguishing the instruction flow based on the instruction flow identification tag. Each reservation station 10 to 13 holds the decoded instruction and the entry values, etc., of the instruction flow identification tag and the renaming register 33. Each arithmetic unit 20 to 23 executes an instruction and sends the execution result to an entry corresponding to the renaming register 33.

Description

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

【0001】[0001]

【産業上の利用分野】本発明は、複数の命令列の実行機
能を備えた複数命令流パイプライン計算機の、特に、汎
用レジスタの使用の制御構成に関するものである。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a multi-instruction flow pipeline computer having a function of executing a plurality of instruction sequences, and more particularly to a control configuration for using general purpose registers.

【0002】[0002]

【従来の技術】単一命令流を処理するパイプライン計算
機において、その処理性能を向上させるために同時に複
数の命令を実行するスーパースカラ方式や、命令の発行
順序を変えて実行するアウトオブオーダ発行が用いられ
ている。
2. Description of the Related Art In a pipeline computer that processes a single instruction stream, a superscalar system that executes a plurality of instructions at the same time in order to improve its processing performance, and an out-of-order issue that executes instructions in different order. Is used.

【0003】その際に、性能低下の原因となる命令間の
データ依存を回避するための技術としてレジスターリネ
ーミング(register renaming :レジスタ名前替え)が
用いられる。このレジスターリネーミングを用いること
により、命令依存のうち、先行の命令がそのレジスタの
値をリードしてからでないとレジスタに新しい値を書き
込めないといった逆依存と、同じレジスタに同時に書き
込もうとしたという出力依存という二つの依存を取り除
くことができる。これにより依存による性能の低下を抑
えることが可能となる。
At this time, register renaming is used as a technique for avoiding data dependence between instructions which causes performance degradation. By using this register renaming, among the instruction dependence, the preceding instruction must read the value of that register before it can write a new value to the register, and the output that it tried to write to the same register at the same time. You can remove the two dependencies of dependence. As a result, it is possible to suppress the performance deterioration due to dependence.

【0004】[0004]

【発明が解決しようとする課題】しかしながら、上記の
ような単一命令流を処理するパイプライン計算機が実行
中にデータの真の依存のためやメモリへのストア、キャ
ッシュのミスヒット等により実行が待たされたりして、
プロセッサの演算資源が使われずに無駄になることがあ
る。
However, during execution of a pipeline computer that processes a single instruction stream as described above, execution may occur due to true dependence of data, memory store, cache miss-hit, and the like. I was kept waiting,
The computing resources of the processor may be wasted because they are not used.

【0005】特にスーパースカラ方式の場合、プロセッ
サの演算資源として、例えば4命令が同時に演算できる
にもかかわらず、命令間の依存のために2命令しか実行
できずに、残りの演算資源が使われない場合があった。
このような点から、演算ユニットの有効利用が図れ、演
算処理能力を向上させることのできるパイプライン計算
機の実現が望まれていた。
In particular, in the case of the superscalar system, as the calculation resource of the processor, for example, although four instructions can be simultaneously calculated, only two instructions can be executed due to the dependency between the instructions, and the remaining calculation resources are used. There were times when it wasn't.
From such a point, it has been desired to realize a pipeline computer capable of effectively using the arithmetic unit and improving the arithmetic processing capability.

【0006】[0006]

【課題を解決するための手段】本発明の複数命令流パイ
プライン計算機は、複数の命令流を識別するためのタグ
を生成する命令流識別タグ生成ユニットと、命令流の個
数分のプログラムカウンタを備え、命令流識別タグに基
づき対応するプログラムカウンタを選択するPCユニッ
トと、命令流識別タグに基づき、命令流毎にレジスタ名
前替えを行うリネーミングレジスタとを備えている。そ
して、演算ユニットは、リネーミングレジスタの値を用
い、PCユニットから選択されたプログラムカウンタに
よって指定された命令を実行するよう構成されているも
のである。
A multiple instruction flow pipeline computer of the present invention comprises an instruction flow identification tag generation unit for generating a tag for identifying a plurality of instruction streams, and a program counter for the number of instruction streams. A PC unit that selects a corresponding program counter based on the instruction stream identification tag and a renaming register that renames the register for each instruction stream based on the instruction stream identification tag are provided. Then, the arithmetic unit is configured to execute the instruction designated by the program counter selected from the PC unit, using the value of the renaming register.

【0007】[0007]

【作用】本発明の複数命令流パイプライン計算機におい
ては、命令流識別タグ生成ユニットは、複数の命令流の
うちの一つを選択する信号を送出する。これにより、P
Cユニットは、対応するプログラムカウンタを選択し、
その結果、いずれかの命令流が選択される。また、リネ
ーミングレジスタは、命令流識別タグに基づき、命令流
毎にレジスタ名前替えを行う。更に、演算ユニットは、
リネーミングレジスタの値を用いて、プログラムカウン
タによって選択された命令流中の命令を実行する。
In the multi-instruction flow pipeline computer of the present invention, the instruction flow identification tag generation unit sends a signal for selecting one of a plurality of instruction flows. This gives P
The C unit selects the corresponding program counter,
As a result, either instruction stream is selected. In addition, the renaming register changes the register name for each instruction stream based on the instruction stream identification tag. Furthermore, the arithmetic unit
The value in the renaming register is used to execute the instruction in the instruction stream selected by the program counter.

【0008】[0008]

【実施例】以下、本発明の実施例を図面を用いて詳細に
説明する。図1は、本発明の一実施例による複数命令流
パイプライン計算機の構成図であるが、これに先立ち、
スーパースカラプロセッサの構成について説明する。
Embodiments of the present invention will now be described in detail with reference to the drawings. FIG. 1 is a block diagram of a multi-instruction flow pipeline computer according to an embodiment of the present invention. Prior to this,
The configuration of the superscalar processor will be described.

【0009】図2は、そのスーパースカラプロセッサの
構成図である。図の装置は、命令メモリ1、命令キャッ
シュ2、デコーダ3、リオーダバッファ4、レジスタ
5、プログラムカウンタ(PC)6、データキャッシュ
7、データメモリ8、リザベーションステーション10
〜13、演算ユニット20〜23からなる。
FIG. 2 is a block diagram of the superscalar processor. The apparatus shown in the figure includes an instruction memory 1, an instruction cache 2, a decoder 3, a reorder buffer 4, a register 5, a program counter (PC) 6, a data cache 7, a data memory 8, and a reservation station 10.
-13, and arithmetic units 20-23.

【0010】命令メモリ1は命令キャッシュ2を通じて
デコーダ3に接続されている。デコーダ3からの出力は
各演算ユニット20〜23のリザベーションステーショ
ン10〜13と、リオーダバッファ4とレジスタ5に接
続されている。プログラムカウンタ6の出力は、命令キ
ャッシュ2を通して命令メモリ1に接続されている。各
リザベーションステーション10〜13は、対応する各
演算ユニット20〜23に接続されており、ロードスト
アユニット23を除く各演算ユニット20〜22の出力
はリオーダバッファ4に接続されている。ロードストア
ユニット23の出力は、データキャッシュ7を通じてデ
ータメモリ8と接続されている。また、各演算ユニット
20〜23は、例えば、分岐(Branch)、算術演算(AL
U )、シフタ(Shifter )、ロード/ストア(Load/Sto
re)ユニットである。
The instruction memory 1 is connected to the decoder 3 through the instruction cache 2. The output from the decoder 3 is connected to the reservation stations 10 to 13 of the arithmetic units 20 to 23, the reorder buffer 4 and the register 5. The output of the program counter 6 is connected to the instruction memory 1 through the instruction cache 2. The reservation stations 10 to 13 are connected to the corresponding arithmetic units 20 to 23, and the outputs of the arithmetic units 20 to 22 except the load / store unit 23 are connected to the reorder buffer 4. The output of the load / store unit 23 is connected to the data memory 8 through the data cache 7. In addition, each of the arithmetic units 20 to 23, for example, branches (Branch), arithmetic operation (AL
U), shifter (Shifter), load / store (Load / Sto
re) unit.

【0011】図3は、リオーダバッファ4の構成図であ
る。リオーダバッファ4は、vフィールド、destフィー
ルド、dataフィールド、Cフィールドを備えたテーブル
である。ここで、vフィールドは1ビットからなる値で
そのエントリが有効か否かを示すもので、destフィール
ドは、そのエントリが実際にはどのレジスタの値を保持
しているかを表す。また、dataフィールドはそのレジス
タの持つ値、または結果タグを保持する。Cフィールド
は、そのエントリのdataフィールドが実際の値を持って
いるのか、または、実行完了待ち、即ち結果タグを持っ
ているのかを区別するための1ビットからなるフラグで
ある。
FIG. 3 is a block diagram of the reorder buffer 4. The reorder buffer 4 is a table having a v field, a dest field, a data field, and a C field. Here, the v field is a 1-bit value indicating whether or not the entry is valid, and the dest field indicates which register value the entry actually holds. The data field holds the value of the register or the result tag. The C field is a 1-bit flag for distinguishing whether the data field of the entry has an actual value or the completion of execution, that is, the result tag.

【0012】このように、リオーダバッファ4は、dest
フィールドを検索キーとして持つ連想メモリである。
As described above, the reorder buffer 4 has a dest
It is an associative memory that has a field as a search key.

【0013】次に、一般的なレジスタリネーミングにつ
いて説明する。命令が元のプログラム順序とは殆ど無関
係に発行されることになるアウト・オブ・オーダ発行の
場合でも、個々の命令の発行に関する制約は、命令が元
のプログラム順序で発行されるイン・オーダ発行の場合
と殆ど同じである。即ち、資源競合と依存関係が消滅し
た時点で命令は発行される。アウト・オブ・オーダ発行
は、発行の対象となる命令を単に多くプロセッサに与
え、結果として並列実行可能な命令を発見しやすくして
いるだけである。しかし、アウト・オブ・オーダに命令
発行することで、命令発行に新たな制約が生じる。これ
は、アウト・オブ・オーダ完了が、出力依存関係に関す
る制約を生じたのとちょうど同じである。
Next, general register renaming will be described. Even with out-of-order issuance, where instructions are issued almost independently of the original program order, the constraint on issuing individual instructions is that the instructions are issued in the original program order. It is almost the same as the case. That is, the instruction is issued when the resource competition and the dependency disappear. Out-of-order issuance simply gives a large number of instructions to be issued to the processor, and as a result makes it easier to find instructions that can be executed in parallel. However, issuing commands out-of-order places new restrictions on command issuing. This is exactly the same as out-of-order completion caused constraints on output dependencies.

【0014】これを、命令列の一例を用いて説明する。 R3=R3×R5 (1) R4=R3+1 (2) R3=R5+1 (3) R7=R3÷R4 (4) ここで、上記命令列は、例えば、(1)では、レジスタ
R3の値とレジスタR5の値を掛けて、その値をレジス
タR3に書き込む、といった命令を意味している。
This will be described using an example of an instruction sequence. R3 = R3 × R5 (1) R4 = R3 + 1 (2) R3 = R5 + 1 (3) R7 = R3 ÷ R4 (4) Here, for example, in the case of (1), the value of the register R3 and the register R5 And the value is written to the register R3.

【0015】上記の命令列では、2番目の命令が実行を
始める以前に、3番目の命令を完了することはできな
い。さもないと、2番目の命令の第1ソース・オペラン
ド(=R3)を3番目の命令が誤って上書きしてしまう
からである。3番目の命令の実行結果は、2番目の命令
の第1ソース・オペランドに対して逆依存関係(antide
pendecy )にある。ここで、逆依存関係とは、方向が逆
であるという点以外は、真の依存関係と同様の制約を意
味している。真の依存関係では先行命令が後続命令の使
う値を生成するのに対して、逆依存関係では先行命令が
使う値を後続命令が破壊してしまう。これを避けるた
め、プロセッサは、2番目の命令が実行を始めるまで
は、3番目の命令を発行してはいけない。そして、2番
目の命令は、1番目の命令に依存しているから、3番目
の命令は1番目の命令が完了するのを待たなくてはなら
ない。たとえ、3番目の命令が他の点では独立であって
もそうである。
In the above instruction sequence, the third instruction cannot be completed before the second instruction starts executing. Otherwise, the first source operand (= R3) of the second instruction is erroneously overwritten by the third instruction. The execution result of the third instruction is an inverse dependency (antide) on the first source operand of the second instruction.
pendecy). Here, the inverse dependency means the same constraint as the true dependency except that the directions are opposite. In the true dependency, the preceding instruction generates the value used by the subsequent instruction, whereas in the inverse dependency, the subsequent instruction destroys the value used by the preceding instruction. To avoid this, the processor must not issue the third instruction until the second instruction begins execution. Since the second instruction depends on the first instruction, the third instruction has to wait for the completion of the first instruction. Even if the third instruction is otherwise independent.

【0016】そして、これを解決する手段がレジスタリ
ネーミング(レジスタ名前替え)という手法である。プ
ロセッサは、付加的なレジスタを設け、レジスタと値と
の間の対応関係を再構築することで、メモリ競合を除去
する。これら付加的なレジスタは、ハードウェアによっ
て実行時に動的に割り当てられ、そして、レジスタリネ
ーミングでプログラムで必要とする値と対応付けられ
る。レジスタリネーミングを実現するため、プロセッサ
は、新しく生成された全ての値に対して、即ち、レジス
タに書き込む全ての命令に対して、新しいレジスタを割
り付ける。
A means for solving this is a technique called register renaming (register name change). The processor eliminates memory contention by providing additional registers and reconstructing the correspondence between registers and values. These additional registers are dynamically allocated by the hardware at run time and are associated with the values needed by the program in register renaming. To implement register renaming, the processor allocates a new register for every newly generated value, ie every instruction that writes to it.

【0017】レジスタから値を読み出す命令は、元々、
指定されているレジスタからではなく、新しく割り当て
られたレジスタから値を読み出す。このように、新しい
レジスタおよび正しい値を識別するように、ハードウェ
アは命令内の元のレジスタ名を変更する。同じレジスタ
名でも、命令が異なればレジスタ割当てに対するレジス
タ参照の位置によっては異なるハードウェア・レジスタ
にアクセスすることになる。
The instruction to read the value from the register is originally
Read the value from the newly allocated register instead of from the specified register. In this way, the hardware changes the original register name in the instruction to identify the new register and the correct value. Even with the same register name, different instructions will access different hardware registers depending on the location of the register reference to the register allocation.

【0018】名前替えを行うと、上記の命令列は以下の
ようになる。 R3b=R3a×R5a (1) R4b=R3b+1 (2) R3c=R5a+1 (3) R7b=R3c÷R4b (4)
When the name is changed, the above instruction sequence becomes as follows. R3 b = R3 a × R5 a (1) R4 b = R3 b +1 (2) R3 c = R5 a +1 (3) R7 b = R3 c ÷ R4 b (4)

【0019】この命令列では、レジスタへの各代入が、
新しいインスタンス(instance)を生成しており、これ
をアルファベットの添え字で示す。3番目の命令中のR
3に対して新しいインスタンスを生成して、2番目の命
令と1番目の命令に対する逆依存関係と出力依存関係を
消去している。しかも、4番目の命令には正しくオペラ
ンドを供給している。3番目の命令のR3に対する代入
は、1番目の命令R3に対する代入にとって代わる。よ
って、他の命令がR3に値を代入するまでは、後続命令
から見るとR3C が新しいR3になる。
In this instruction sequence, each assignment to the register is
We are creating a new instance, which is shown in the alphabetical subscript. R in the third instruction
A new instance is generated for 3, and the inverse dependency and the output dependency for the second instruction and the first instruction are deleted. Moreover, the operand is correctly supplied to the fourth instruction. The assignment of the third instruction to R3 replaces the assignment of the first instruction R3. Therefore, until another instruction assigns a value to R3, R3 C becomes a new R3 from the viewpoint of the succeeding instruction.

【0020】次に、このように構成されたスーパースカ
ラプロセッサの動作について説明する。プログラムカウ
ンタ6は、命令キャッシュ2にアクセスし、命令キャッ
シュ2からの出力はデコーダ3に送られる。(例えば、
上記命令列(1)〜(4)が送られるとする。) デコーダ3は、その命令を解釈し、どの演算ユニット2
0〜23に送るかを決定し、対応するリザベーションス
テーション10〜13に出力を送る。(例えば、上記
(1)〜(4)では、算術演算であるため、リザベーシ
ョンステーション11に送られる。
Next, the operation of the superscalar processor thus constructed will be described. The program counter 6 accesses the instruction cache 2, and the output from the instruction cache 2 is sent to the decoder 3. (For example,
It is assumed that the instruction sequences (1) to (4) are sent. ) The decoder 3 interprets the instruction and determines which arithmetic unit 2
0-23, and sends the output to the corresponding reservation station 10-13. (For example, in (1) to (4) above, since it is an arithmetic operation, it is sent to the reservation station 11.

【0021】また、同時に、デコーダ3は、命令のソー
スレジスタの値とデスティネーションレジスタの値をリ
オーダバッファ4に、ソースレジスタの値をレジスタ5
に送る。例えば、(1)の場合、R3a 、R5a の値と
R3b の値をリオーダバッファ4に、また、R3a 、R
a の値をレジスタ5に送る。
At the same time, the decoder 3 stores the value of the source register and the value of the destination register of the instruction in the reorder buffer 4, and the value of the source register in the register 5.
Send to For example, in the case of (1), the value of R3 a, R5 a value and R3 b to the reorder buffer 4, also, R3 a, R
5 and sends the value of a in the register 5.

【0022】リオーダバッファ4は、このソースレジス
タの値をキーとして連想メモリを引き、destフィールド
が合致するものの中で最新の値を、対応するリザベーシ
ョンステーション10〜13に送る。この際、もし、合
致したエントリのCフィールドが無効だった(結果タグ
であった)場合、値の代わりにその結果タグの値を送
る。
The reorder buffer 4 draws an associative memory by using the value of the source register as a key, and sends the latest value among the ones matching the dest field to the corresponding reservation stations 10 to 13. At this time, if the C field of the matching entry is invalid (it was a result tag), the value of the result tag is sent instead of the value.

【0023】もし合致するエントリがリオーダバッファ
4内にない場合は、レジスタ5の値がリザベーションス
テーション10〜13に送られる。また、リオーダバッ
ファ4は、デスティネーションレジスタの値を新しいエ
ントリのdestフィールドに保持して、vフィールドを有
効にし、また、Cフィールドを無効にし、結果タグを生
成してdataエントリに保持する。更に、このリオーダバ
ッファ4のエントリの値をリザベーションステーション
10〜13に送り、これがその命令の新しいデスティネ
ーションとなる。
If there is no matching entry in reorder buffer 4, the value in register 5 is sent to reservation stations 10-13. Further, the reorder buffer 4 holds the value of the destination register in the dest field of the new entry, validates the v field, invalidates the C field, generates a result tag, and holds it in the data entry. Further, the value of the entry of the reorder buffer 4 is sent to the reservation stations 10 to 13, which becomes the new destination of the instruction.

【0024】図4は、リオーダバッファ4における上記
命令列の値を示す説明図である。ここで、上のエントリ
からR3は、上記命令列におけるR3b であり、次のR
4はR4b 、その次のR3はR3c 、更に、R7はR7
b のエントリである。即ち、この状態は、R3a 、R5
a の値はレジスタ5にあり、R3、R4、R3、R7
は、上記命令列における(1)〜(4)に対応したディ
スティネーションレジスタの値である。そして、このリ
オーダバッファ4を用いることにより、(3)式が
(1)、(2)式とは無関係に実行できることが分か
る。尚、vフィールドおよびCフィールドは、「1」が
有効、「0」が無効を示している。また、dataフィール
ドの「105」〜「108」は、結果タグを示してい
る。
FIG. 4 is an explanatory diagram showing the values of the above-mentioned instruction sequence in the reorder buffer 4. Here, R3 from the entry of the above, a R3 b in the above instruction sequence, the following R
4 is R4 b , R3 next is R3 c , and R7 is R7
It is an entry of b . That is, this state is R3 a , R5
The value of a is in the register 5, R3, R4, R3, R7
Is the value of the destination register corresponding to (1) to (4) in the instruction sequence. Then, by using this reorder buffer 4, it is understood that the expression (3) can be executed independently of the expressions (1) and (2). In the v field and the C field, "1" indicates valid and "0" indicates invalid. Further, "105" to "108" in the data field indicate result tags.

【0025】リザベーションステーション10〜13で
は、これらのデコードされた命令と、リオーダバッファ
4のエントリの値(デスティネーション)と、ソースレ
ジスタの値(もしくは、結果タグの値)を保持してお
り、該当する演算ユニット20〜23が空いていて、ソ
ースレジスタの値が揃っていれば、その演算ユニット2
0〜23に送られる。例えば、図2の構成において、算
術演算ユニット21が複数あり、かつ、ソースレジスタ
であるR3a 、R5a の値が揃っていれば、上記(1)
式と(3)式の同時実行が行われる。
The reservation stations 10 to 13 hold these decoded instructions, the entry value (destination) of the reorder buffer 4, and the source register value (or the result tag value). If the operation units 20 to 23 to be operated are empty and the values of the source register are complete, the operation unit 2
Sent to 0-23. For example, in the configuration of FIG. 2, if there are a plurality of arithmetic operation units 21 and the source registers R3 a and R5 a have the same values, the above (1)
The expression and the expression (3) are simultaneously executed.

【0026】演算ユニット20〜23で実行された結果
は、ストア命令を除きリオーダバッファ4の先ほどのエ
ントリへ送られ、dataフィールドに結果を書き込み、C
フィールドを有効にする。その際、dataフィールドに書
かれていた、結果タグの値と一致するタグを持っている
ものがリザベーションステーション10〜13にいない
かを探し、もし一致するものがあれば、そのリザベーシ
ョンステーション10〜13にも結果を書き込む。ま
た、実行が実際の命令順において前の命令の実行が全て
終っていれば、そのエントリのdataの値をdestフィール
ドで示されるレジスタ5へ送り、vフィールドを無効に
する。
The results executed by the arithmetic units 20 to 23 are sent to the previous entries of the reorder buffer 4 except for the store instruction, the results are written in the data field, and C
Enable the field. At that time, the reservation stations 10 to 13 are searched for those having a tag that matches the value of the result tag written in the data field, and if there is a match, the reservation stations 10 to 13 are searched. Also write the result. If the execution of the previous instruction is completed in the actual instruction order, the data value of the entry is sent to the register 5 indicated by the dest field, and the v field is invalidated.

【0027】また、割り込みや例外が発生した場合は、
リザベーションステーション10〜13のエントリを無
効化し、かつ、リオーダバッファ4のエントリのvフィ
ールドを無効化する。
When an interrupt or exception occurs,
The entries of the reservation stations 10 to 13 are invalidated, and the v field of the entry of the reorder buffer 4 is invalidated.

【0028】ところで、複数のアプリケーションを実行
するといったように、複数の命令流がある場合は、各命
令流毎に実行できれば演算ユニットの有効利用が図れ、
プロセッサの性能向上を図ることができる。
By the way, when there are a plurality of instruction streams such as execution of a plurality of applications, if the instruction streams can be executed for each instruction stream, the arithmetic unit can be effectively used.
The performance of the processor can be improved.

【0029】図5は、このような複数の命令流の説明図
である。この例は、二つのアプリケーションAP1、A
P2の命令列を示しており、それぞれの命令(1A)〜
(4A)と、命令(1B)〜(4B)とはプログラムの
実行順序としては全く無関係である。本実施例ではこの
ような場合に複数の命令流を同時に実行可能とするため
に、図1の構成としたものであり、以下、これを詳細に
説明する。
FIG. 5 is an explanatory diagram of such a plurality of instruction streams. This example shows two applications AP1, A
The instruction sequence of P2 is shown, and each instruction (1A)-
(4A) and the instructions (1B) to (4B) are completely unrelated to the execution order of the program. In this embodiment, in order to enable a plurality of instruction streams to be executed simultaneously in such a case, the configuration of FIG. 1 is adopted, which will be described in detail below.

【0030】図1に示す装置は、命令メモリ1、命令キ
ャッシュ2、データキャッシュ7、データメモリ8、リ
ザベーションステーション10〜13、演算ユニット2
0〜23を備えると共に、命令流識別タグ生成ユニット
31、PCユニット32、リネーミングレジスタ33を
備えている。ここで、命令メモリ1〜演算ユニット23
の構成については、上述した図2の構成と同様である。
The apparatus shown in FIG. 1 includes an instruction memory 1, an instruction cache 2, a data cache 7, a data memory 8, reservation stations 10 to 13, and an arithmetic unit 2.
0 to 23, an instruction stream identification tag generation unit 31, a PC unit 32, and a renaming register 33. Here, the instruction memory 1 to the arithmetic unit 23
The configuration of is the same as the configuration of FIG. 2 described above.

【0031】命令流識別タグ生成ユニット31は、複数
の命令流を識別するためのタグを生成するユニットで、
その出力は、各演算ユニット20〜23のリザベーショ
ンステーション10〜13と、リネーミングレジスタ3
3と、PCユニット32に接続されている。PCユニッ
ト32は、命令流の個数分のプログラムカウンタ(P
C)を持つプログラムカウンタユニットであり、その出
力は命令キャッシュ2を通して命令メモリ1に接続され
ている。
The instruction stream identification tag producing unit 31 is a unit for producing a tag for identifying a plurality of instruction streams.
The output is output from the reservation stations 10 to 13 of the arithmetic units 20 to 23 and the renaming register 3
3 and the PC unit 32. The PC unit 32 includes program counters (P
C), the output of which is connected to the instruction memory 1 through the instruction cache 2.

【0032】図6は、リネーミングレジスタ33の構成
図である。このリネーミングレジスタ33は、図2に示
した通常のリオーダバッファ4に[log2n ](小数点以
下切り上げ。ただし、n>1で命令流の数。)ビットか
らなる命令流指示ビットフィールドINと、1ビットの
完了フラグフィールドICとを付加したものであり、de
stフィールドとINフィールドを検索キーとした連想メ
モリである。即ち、命令流指示ビットフィールドIN
は、そのエントリの値がどの命令流であるかを識別する
ための値であり、完了フラグフィールドICは、割り込
みに対処するためのフィールドである。
FIG. 6 is a block diagram of the renaming register 33. This renaming register 33 has an instruction stream instruction bit field IN consisting of [log 2 n] (rounded up to the nearest decimal point, where n> 1 is the number of instruction streams) bits in the normal reorder buffer 4 shown in FIG. 1-bit completion flag field IC is added.
The associative memory uses the st field and the IN field as search keys. That is, the instruction flow instruction bit field IN
Is a value for identifying which instruction flow the value of the entry is, and the completion flag field IC is a field for handling an interrupt.

【0033】先ず、命令流識別タグ生成ユニット31
が、PCユニット32に命令流個あるPCのうちの一つ
を選択する信号を送出する。PCユニット32は、選択
されたPCの値で命令キャッシュ2にアクセスし、命令
キャッシュ2からの出力はデコーダ3に送られる。デコ
ーダ3は命令を解釈し、どの演算ユニット20〜23に
送るかを決定し、対応するリザベーションステーション
10〜13に出力を送る。
First, the instruction flow identification tag generation unit 31
Sends a signal to the PC unit 32 to select one of the PCs having an instruction stream. The PC unit 32 accesses the instruction cache 2 with the selected PC value, and the output from the instruction cache 2 is sent to the decoder 3. The decoder 3 interprets the instruction, determines which arithmetic unit 20-23 to send and sends the output to the corresponding reservation station 10-13.

【0034】また、同時に命令流識別タグ生成ユニット
31から[log2n ](小数点以下切り上げ)ビットの命
令流識別タグが同一リザベーションステーションに送ら
れる。更に、これと同時に、デコーダ3からは命令のソ
ースレジスタの値とデスティネーションレジスタの値
が、また、命令流識別タグ生成ユニット31からは命令
流識別タグが、それぞれリネーミングレジスタ33に送
られる。リネーミングレジスタ33は、このソースレジ
スタの値と命令流識別タグをキーとして連想メモリを引
き、合致するものの中で最新の値を対応するリザベーシ
ョンステーション10〜13に送る。
At the same time, the instruction stream identification tag generating unit 31 sends an instruction stream identification tag of [log 2 n] (rounded up to the right of the decimal point) to the same reservation station. Further, at the same time, the value of the source register and the value of the destination register of the instruction are sent from the decoder 3 and the instruction stream identification tag is sent from the instruction stream identification tag generating unit 31 to the renaming register 33. The renaming register 33 draws an associative memory using the value of the source register and the instruction stream identification tag as a key, and sends the latest value among the matching ones to the corresponding reservation stations 10 to 13.

【0035】この際、もし、合致したエントリのCフィ
ールドが無効だった場合、値の代わりに結果タグの値を
送る。また、リネーミングレジスタ33はデスティネー
ションレジスタの値を新しいエントリのdestフィールド
に、命令流識別タグをINフィールドに加え、更に、v
フィールドを有効にし、CフィールドとICフィールド
を無効にし、結果タグを生成してdataフィールドに保持
する。また、このリネーミングレジスタ33のエントリ
の値をリザベーションステーション10〜13に送る。
At this time, if the C field of the matching entry is invalid, the value of the result tag is sent instead of the value. The renaming register 33 adds the value of the destination register to the dest field of the new entry and the instruction stream identification tag to the IN field, and further adds v
Enable the fields, disable the C and IC fields, generate result tags and hold them in the data field. Further, the value of the entry of the renaming register 33 is sent to the reservation stations 10 to 13.

【0036】図7は、リネーミングレジスタ33の内容
説明図である。即ち、これは、図5に示した二つのアプ
リケーションAP1とAP2との命令列が入力されたも
のであり、アプリケーションAP1およびAP2のそれ
ぞれのR3a とR5a の値がdataフィールドに書き込ま
れており、従って、Cフィールドが有効(=1)であ
り、また、ICフィールドも、前の命令での結果を保持
しているエントリのICフィールドが全て有効であるた
め、有効(=1)となっている。このように、AP1と
AP2とは、INフィールドの値が異なるため、これら
の命令は同時に実行することが可能となる。尚、dataフ
ィールドの「2」「3」「5」「6」は値であり、「1
05」〜「108」および「201」〜「204」は、
結果タグの値である。
FIG. 7 is an explanatory diagram of contents of the renaming register 33. That is, this is for the instruction sequence with two applications AP1 and AP2 shown in FIG. 5 is entered, the value of each of R3 a and R5 a application AP1 and AP2 have been written in the data field Therefore, the C field is valid (= 1), and the IC field is valid (= 1) because all the IC fields of the entry holding the result of the previous instruction are valid. There is. As described above, since the AP1 and AP2 have different IN field values, these instructions can be executed simultaneously. Note that “2”, “3”, “5”, and “6” in the data field are values, and “1”
05 ”-“ 108 ”and“ 201 ”-“ 204 ”
The value of the result tag.

【0037】リザベーションステーション10〜13で
は、これらのデコードされた命令と命令流識別タグ、リ
ネーミングレジスタ33のエントリの値、ソースレジス
タの値(もしくは、タグの値)を保持しており、該当す
る演算ユニット20〜23が空いていて、かつ、ソース
レジスタの値が揃っていれば、その演算ユニット20〜
23に送られる。
The reservation stations 10 to 13 hold the decoded instruction and instruction stream identification tag, the entry value of the renaming register 33, and the value of the source register (or the value of the tag). If the arithmetic units 20 to 23 are empty and the values of the source register are complete, the arithmetic units 20 to
Sent to 23.

【0038】演算ユニット20〜23で実行された結果
と命令流識別タグは、ストア命令を除きリネーミングレ
ジスタ33の先ほどのエントリへ送られ、dataフィール
ドに結果を書き込み、Cフィールドを有効にする。その
際dataフィールドに書かれていた、結果タグの値と一致
するタグを持っているものが、リザベーションステーシ
ョン10〜13にいないかを探し、もし一致するものが
あれば、そのリザベーションステーション10〜13に
も結果を書き込む。また、ICフィールドは、実行が実
際の命令順において前の命令での結果を保持しているエ
ントリのICフィールドが全て有効であれば、有効にす
る。また、ICフィールドが有効なもののうちdestエン
トリが同一なエントリが存在した場合、古い方のエント
リのvフィールドを無効にする。
The results executed by the arithmetic units 20 to 23 and the instruction stream identification tag are sent to the previous entries of the renaming register 33 except for the store instruction, the results are written in the data field, and the C field is validated. At that time, the reservation stations 10 to 13 are searched for those having a tag that matches the value of the result tag written in the data field, and if there is a match, the reservation stations 10 to 13 are searched. Also write the result. Further, the IC field is validated when all the IC fields of the entry holding the result of the previous instruction in the actual instruction order of execution are valid. If there is an entry having the same dest entry among valid IC fields, the v field of the older entry is invalidated.

【0039】割り込みや例外が発生した場合は、割り込
みや例外を発生させた命令流識別タグと同一のタグを持
つリザベーションステーション10〜13のエントリを
無効化し、かつ、リネーミングレジスタ33のエントリ
中で、INフィールドと命令流識別タグが一致し、IC
フィールドが無効なもののvフィールドを無効化する。
When an interrupt or exception occurs, the entries of the reservation stations 10 to 13 having the same tag as the instruction stream identification tag that caused the interrupt or exception are invalidated, and in the entry of the renaming register 33. , IN field and instruction stream identification tag match, IC
Invalidates the v field even though the field is invalid.

【0040】[0040]

【発明の効果】以上説明したように、本発明の複数命令
流パイプライン計算機によれば、複数の命令流にアクセ
スするためのプログラムカウンタを有し、かつ、複数の
命令流を識別するためのタグを付加したリネーミングレ
ジスタでレジスタ名前替えを行うようにしたので、真の
依存のために、演算ユニットが空いているにもかかわら
ず、命令が発行できずに有効に活用できなかったもの
を、複数の命令流を実行できることにより、演算ユニッ
トの有効利用が図れ、高い演算処理性能を維持したまま
高スループットの処理を行うことができる。
As described above, according to the multi-instruction flow pipeline computer of the present invention, the multi-instruction flow pipeline computer has a program counter for accessing a plurality of instruction streams and identifies a plurality of instruction streams. Since the renaming register with a tag is used for register renaming, even if the arithmetic unit is empty, instructions cannot be issued and cannot be effectively used due to true dependence. Since the plurality of instruction streams can be executed, the arithmetic unit can be effectively used and high throughput processing can be performed while maintaining high arithmetic processing performance.

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

【図1】本発明の複数命令流パイプライン計算機の一実
施例の構成図である。
FIG. 1 is a configuration diagram of an embodiment of a multi-instruction flow pipeline computer of the present invention.

【図2】一般的なスーパースカラプロセッサの構成図で
ある。
FIG. 2 is a configuration diagram of a general superscalar processor.

【図3】リオーダバッファの構成図である。FIG. 3 is a configuration diagram of a reorder buffer.

【図4】リオーダバッファにおける命令列の一例を示す
説明図である。
FIG. 4 is an explanatory diagram showing an example of an instruction sequence in a reorder buffer.

【図5】複数の命令流の説明図である。FIG. 5 is an explanatory diagram of a plurality of instruction streams.

【図6】本発明の複数命令流パイプライン計算機におけ
るリネーミングレジスタの構成図である。
FIG. 6 is a configuration diagram of a renaming register in a multiple instruction flow pipeline computer of the present invention.

【図7】本発明の複数命令流パイプライン計算機におけ
るリネーミングレジスタの内容説明図である。
FIG. 7 is an explanatory diagram of contents of a renaming register in the multi-instruction flow pipeline computer of the present invention.

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

3 デコーダ 20〜23 演算ユニット 31 命令流識別タグ生成ユニット 32 PCユニット 33 リネーミングレジスタ 3 Decoder 20-23 Operation Unit 31 Instruction Stream Identification Tag Generation Unit 32 PC Unit 33 Renaming Register

Claims (2)

【特許請求の範囲】[Claims] 【請求項1】 任意の命令がどの命令流に属するかを識
別する命令流識別タグを生成する命令流識別タグ生成ユ
ニットと、 命令流の個数分のプログラムカウンタを備え、前記命令
流識別タグで示された命令流のプログラムカウンタを選
択するPCユニットと、 前記命令流識別タグに基づき、命令流毎にレジスタ名前
替えを行うリネーミングレジスタと、 前記リネーミングレジスタの値を用い、前記プログラム
カウンタによって指定された命令を実行する演算ユニッ
トとを備えたことを特徴とする複数命令流パイプライン
計算機。
1. An instruction stream identification tag generation unit for generating an instruction stream identification tag for identifying which instruction stream an arbitrary instruction belongs to, and a program counter for the number of instruction streams. A PC unit that selects a program counter of the indicated instruction stream, a renaming register that renames a register for each instruction stream based on the instruction stream identification tag, and a value of the renaming register that is used by the program counter. A multi-instruction flow pipeline computer, comprising: an arithmetic unit for executing designated instructions.
【請求項2】 任意の命令がどの命令流に属するかを識
別する命令流識別タグを生成する命令流識別タグ生成ユ
ニットと、 命令流の個数分のプログラムカウンタを備え、前記命令
流識別タグで示された命令流のプログラムカウンタを選
択するPCユニットと、 前記PCユニットから選択されたプログラムカウンタに
よって指定された命令をデコードし、命令中のソースレ
ジスタとディスティネーションレジスタの値を求めるデ
コーダと、 前記ソースレジスタの値と前記命令流識別タグとに対応
したデータを出力すると共に、その命令におけるディス
ティネーションレジスタの値を命令流毎に新しいエント
リとし、レジスタ名前替えを行うリネーミングレジスタ
と、 前記リネーミングレジスタから出力されたソースレジス
タに対応した値を用い、前記デコーダでデコードされた
命令を実行すると共に、実行結果を前記リネーミングレ
ジスタにおけるディスティネーションレジスタの値に書
き込む演算ユニットとを備えたことを特徴とする複数命
令流パイプライン計算機。
2. An instruction stream identification tag generation unit for generating an instruction stream identification tag for identifying which instruction stream an arbitrary instruction belongs to, and a program counter for the number of instruction streams. A PC unit for selecting a program counter of the indicated instruction stream; a decoder for decoding an instruction designated by the program counter selected from the PC unit to obtain values of a source register and a destination register in the instruction; A renaming register that outputs data corresponding to the value of the source register and the instruction stream identification tag, and sets the value of the destination register in the instruction as a new entry for each instruction stream, and renames the register; Use the value corresponding to the source register output from the register , And executes the instruction decoded by the decoder, multiple instruction streams pipeline computer, characterized in that an arithmetic unit that writes the value of the destination register an execution result in the renaming register.
JP8883895A 1995-03-22 1995-03-22 Pipeline computer for plural instruction flows Pending JPH08263289A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8883895A JPH08263289A (en) 1995-03-22 1995-03-22 Pipeline computer for plural instruction flows

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8883895A JPH08263289A (en) 1995-03-22 1995-03-22 Pipeline computer for plural instruction flows

Publications (1)

Publication Number Publication Date
JPH08263289A true JPH08263289A (en) 1996-10-11

Family

ID=13954102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8883895A Pending JPH08263289A (en) 1995-03-22 1995-03-22 Pipeline computer for plural instruction flows

Country Status (1)

Country Link
JP (1) JPH08263289A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6502186B2 (en) 1998-07-07 2002-12-31 Fujitsu Limited Instruction processing apparatus
JP2003515214A (en) * 1999-11-16 2003-04-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド Method and apparatus for performing calculations with narrow operands
US6789185B1 (en) 1998-12-17 2004-09-07 Fujitsu Limited Instruction control apparatus and method using micro program
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6502186B2 (en) 1998-07-07 2002-12-31 Fujitsu Limited Instruction processing apparatus
US6789185B1 (en) 1998-12-17 2004-09-07 Fujitsu Limited Instruction control apparatus and method using micro program
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US7127591B2 (en) 1998-12-17 2006-10-24 Fujitsu Limited Instruction control device and method therefor
US7275146B2 (en) 1998-12-17 2007-09-25 Fujitsu Limited Instruction control device and method therefor
US7313674B2 (en) 1998-12-17 2007-12-25 Fujitsu Limited Instruction control device and method therefor
JP2003515214A (en) * 1999-11-16 2003-04-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド Method and apparatus for performing calculations with narrow operands

Similar Documents

Publication Publication Date Title
JP3724582B2 (en) Register renaming circuit for instruction execution unit
US5710902A (en) Instruction dependency chain indentifier
JP3571267B2 (en) Computer system
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US7007153B1 (en) Method and apparatus for allocating functional units in a multithreaded VLIW processor
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
JPH07281896A (en) Information processor
US6928533B1 (en) Data processing system and method for implementing an efficient out-of-order issue mechanism
JP2000148472A (en) Microprocessor device and its software instruction speeding-up method, and recording medium recorded with its control program
US7096343B1 (en) Method and apparatus for splitting packets in multithreaded VLIW processor
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US5930491A (en) Identification of related instructions resulting from external to internal translation by use of common ID field for each group
KR100335746B1 (en) A data processing system having an apparatus for exception tracking during out-of-order operation and method therefor
KR100308512B1 (en) Specialized millicode instruction for editing functions
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
JPH08263289A (en) Pipeline computer for plural instruction flows
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing
KR100322725B1 (en) Millicode flags with specialized update and branch instruction
US6336182B1 (en) System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch
JP3554211B2 (en) Instruction control device and method using microprogram
JP3737573B2 (en) VLIW processor
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
JP2904624B2 (en) Parallel processing unit
JPH05250157A (en) Computer system
JP3625586B2 (en) Processor instruction execution control system