JP2015201026A - Arithmetic processing device and method for controlling arithmetic processing device - Google Patents
Arithmetic processing device and method for controlling arithmetic processing device Download PDFInfo
- Publication number
- JP2015201026A JP2015201026A JP2014079229A JP2014079229A JP2015201026A JP 2015201026 A JP2015201026 A JP 2015201026A JP 2014079229 A JP2014079229 A JP 2014079229A JP 2014079229 A JP2014079229 A JP 2014079229A JP 2015201026 A JP2015201026 A JP 2015201026A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- unit
- control unit
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 11
- 238000004364 calculation method Methods 0.000 claims description 29
- 238000007726 management method Methods 0.000 description 59
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 40
- 108020002663 Aldehyde Dehydrogenase Proteins 0.000 description 36
- 102100026561 Filamin-A Human genes 0.000 description 22
- 101000913549 Homo sapiens Filamin-A Proteins 0.000 description 22
- 239000000872 buffer Substances 0.000 description 14
- 230000004044 response Effects 0.000 description 11
- 101100041125 Arabidopsis thaliana RST1 gene Proteins 0.000 description 8
- 101100443250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) DIG1 gene Proteins 0.000 description 8
- 101100443251 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) DIG2 gene Proteins 0.000 description 8
- 101100041128 Schizosaccharomyces pombe (strain 972 / ATCC 24843) rst2 gene Proteins 0.000 description 8
- 208000007138 otopalatodigital syndrome type 1 Diseases 0.000 description 7
- 102100029908 Exonuclease 3'-5' domain-containing protein 2 Human genes 0.000 description 5
- 101001011220 Homo sapiens Exonuclease 3'-5' domain-containing protein 2 Proteins 0.000 description 5
- 101001011235 Homo sapiens piRNA biogenesis protein EXD1 Proteins 0.000 description 5
- 102100029902 piRNA biogenesis protein EXD1 Human genes 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- MJEMIOXXNCZZFK-UHFFFAOYSA-N ethylone Chemical compound CCNC(C)C(=O)C1=CC=C2OCOC2=C1 MJEMIOXXNCZZFK-UHFFFAOYSA-N 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101100534512 Homo sapiens STMN1 gene Proteins 0.000 description 1
- 102100024237 Stathmin Human genes 0.000 description 1
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、演算処理装置および演算処理装置の制御方法に関する。 The present invention relates to an arithmetic processing unit and a control method for the arithmetic processing unit.
演算を実行する演算処理装置は、例えば、先行する命令の実行により得られたデータがレジスタに格納される前に、データを演算器にバイパスさせるバイパス機能を有する。この種の演算処理装置は、先行する命令で使用するレジスタと後続の命令で使用するレジスタとの依存関係を検出し、依存関係がある場合にバイパス機能を有効にする回路を有する。また、この種の演算処理装置が有する倍精度浮動小数点レジスタは、1つの倍精度浮動小数点データまたは2つの単精度浮動小数点データを格納可能である。例えば、倍精度浮動小数点レジスタの上位ビット側に1つの単精度浮動小数点データを格納することで、バイパス機能におけるレジスタの依存関係の検出は、既存の回路を用いて実現可能である。また、この種の演算処理装置は、演算器による演算により得られたデータおよびデータキャッシュから読み出されたデータを一時的に保持するリネーミングレジスタを有する(例えば、特許文献1参照)。 An arithmetic processing unit that executes an arithmetic operation has, for example, a bypass function that causes an arithmetic unit to bypass data before data obtained by execution of a preceding instruction is stored in a register. This type of arithmetic processing unit has a circuit that detects a dependency relationship between a register used in a preceding instruction and a register used in a subsequent instruction, and enables the bypass function when there is a dependency relationship. In addition, the double precision floating point register of this type of arithmetic processing apparatus can store one double precision floating point data or two single precision floating point data. For example, by storing one single-precision floating-point data on the upper bit side of a double-precision floating-point register, detection of register dependency in the bypass function can be realized using an existing circuit. In addition, this type of arithmetic processing device has a renaming register that temporarily holds data obtained by arithmetic operations and data read from the data cache (see, for example, Patent Document 1).
例えば、倍精度浮動小数点レジスタに格納する2つの単精度浮動小数点データが、データキャッシュにおける互いに異なるキャッシュラインに保持される場合、2つの単精度浮動小数点データは、互いに異なるタイミングでデータキャッシュから読み出される。この場合、各キャッシュラインから読み出されるデータを順次に保持するバッファと、演算器へのデータのバイパスが可能になるタイミングを判定する回路とが演算処理装置に設けられる。しかしながら、新たな回路の追加により、演算処理装置の回路規模は増加する。 For example, when two single-precision floating-point data stored in the double-precision floating-point register are held in different cache lines in the data cache, the two single-precision floating-point data are read from the data cache at different timings. . In this case, a buffer that sequentially holds data read from each cache line and a circuit that determines a timing at which data can be bypassed to the arithmetic unit are provided in the arithmetic processing unit. However, the addition of new circuits increases the circuit scale of the arithmetic processing unit.
本件開示の演算処理装置および演算処理装置の制御方法は、メモリアクセス命令に基づいてデータをメモリから複数回に分けて読み出す場合に、データのバイパスを制御する回路の回路規模の増加を抑制することを目的とする。 The arithmetic processing device and the control method of the arithmetic processing device disclosed herein suppress an increase in the circuit scale of a circuit that controls data bypass when data is read from a memory in a plurality of times based on a memory access instruction. With the goal.
一つの観点によれば、演算処理装置は、命令を解読するデコーダ部と、デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、演算実行部で使用するデータを記憶するメモリと、演算実行部が実行する演算に使用するデータを保持する複数の第1レジスタと、演算に使用する第1レジスタに対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを第1レジスタに転送する前に一時的に保持する複数の第2レジスタと、第1レジスタと第2レジスタとの割り当ての関係を保持し、実行制御部により参照されるレジスタ管理部と、実行制御部から受けるメモリからデータを読み出すメモリアクセス命令に基づいてメモリにアクセス要求を出力するメモリ制御部と、メモリ制御部がメモリアクセス命令に基づいて複数のアクセス要求を出力し、メモリから複数回に分けて読み出されるデータを第2レジスタに順次に転送する場合、メモリから最後に読み出されるデータが第2レジスタに転送された後に第2レジスタから演算実行部へデータをバイパスするタイミングで、実行制御部に演算命令を出力させるバイパス制御部を有する。 According to one aspect, the arithmetic processing device includes a decoder unit that decodes instructions, an execution control unit that holds instructions decoded by the decoder unit, and sequentially outputs executable instructions, and an operation received from the execution control unit An operation execution unit that executes an operation based on an operation instruction indicating execution of the operation, a memory that stores data used in the operation execution unit, and a plurality of first registers that hold data used for the operation executed by the operation execution unit A plurality of second registers that are allocated corresponding to the first register used for the operation and temporarily hold before transferring the data obtained by executing the operation instruction or the memory access instruction to the first register; Memory that retains the allocation relationship between one register and the second register, and that reads data from a register management unit that is referred to by the execution control unit and a memory that is received from the execution control unit A memory control unit that outputs an access request to the memory based on the access instruction, and the memory control unit outputs a plurality of access requests based on the memory access command, and the data read out from the memory in a plurality of times is stored in the second register In the case of sequential transfer, a bypass control unit that outputs an operation instruction to the execution control unit at a timing when data is read from the memory to the second register after the data is transferred to the second register and then is bypassed from the second register to the operation execution unit. Have.
別の観点によれば、命令を解読するデコーダ部と、デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、演算実行部で使用するデータを記憶するメモリと、演算実行部が実行する演算に使用するデータを保持する複数の第1レジスタと、演算に使用する第1レジスタに対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを第1レジスタに転送する前に一時的に保持する複数の第2レジスタと、第1レジスタと第2レジスタとの割り当ての関係を保持し、実行制御部により参照されるレジスタ管理部を有する演算処理装置の制御方法は、演算処理装置が有するメモリ制御部が、実行制御部から受けるメモリからデータを読み出すメモリアクセス命令に基づいてメモリにアクセス要求を出力し、メモリ制御部がメモリアクセス命令に基づいて複数のアクセス要求を出力し、メモリから複数回に分けて読み出されるデータを第2レジスタに順次に転送する場合、演算処理装置が有するバイパス制御部が、メモリから最後に読み出されるデータが第2レジスタに転送された後に第2レジスタから演算実行部へデータをバイパスするタイミングで、実行制御部に演算命令を出力させる。 According to another aspect, a decoder unit that decodes an instruction, an execution control unit that holds instructions decoded by the decoder unit and sequentially outputs executable instructions, and an operation that indicates execution of an operation received from the execution control unit An operation execution unit that executes an operation based on an instruction, a memory that stores data used in the operation execution unit, a plurality of first registers that hold data used for an operation executed by the operation execution unit, and an operation used A plurality of second registers, which are allocated corresponding to the first registers to be stored, and temporarily hold before transferring the data obtained by executing the operation instruction or the memory access instruction to the first register, the first register and the second register A method for controlling an arithmetic processing unit having a register management unit that retains an allocation relationship with a register and is referenced by an execution control unit is executed by a memory control unit included in the arithmetic processing unit. An access request is output to the memory based on a memory access instruction for reading data from the memory received from the control unit, and the memory control unit outputs a plurality of access requests based on the memory access instruction, and is read out from the memory in multiple times. When sequentially transferring data to the second register, the bypass control unit included in the arithmetic processing unit bypasses the data from the second register to the arithmetic execution unit after the data read last from the memory is transferred to the second register At the timing, the execution control unit is caused to output an operation instruction.
本件開示の演算処理装置および演算処理装置の制御方法は、メモリアクセス命令に基づいてデータをメモリから複数回に分けて読み出す場合に、データのバイパスを制御する回路の回路規模の増加を抑制することができる。 The arithmetic processing device and the control method of the arithmetic processing device disclosed herein suppress an increase in the circuit scale of a circuit that controls data bypass when data is read from a memory in a plurality of times based on a memory access instruction. Can do.
以下、図面を用いて実施形態を説明する。 Hereinafter, embodiments will be described with reference to the drawings.
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す演算処理装置OPD1は、デコーダ部1、実行制御部2、演算実行部3、メモリ制御部4、メモリ5、バイパス制御部6、複数の第1レジスタ7、複数の第2レジスタ8およびレジスタ管理部9を有する。
FIG. 1 shows an embodiment of an arithmetic processing unit and a control method for the arithmetic processing unit. The arithmetic processing unit OPD1 shown in FIG. 1 includes a
デコーダ部1は、命令バッファ等から受ける命令を解読し、解読した命令を実行制御部2に出力する。実行制御部2は、デコーダ部1により解読された命令を保持し、実行可能な命令を演算実行部3またはメモリ制御部4に順次に出力する。すなわち、実行制御部2は、命令の実行順序を変更するアウトオブオーダ実行を制御する。実行制御部2は、命令が演算の実行を示す演算命令の場合、演算命令を演算実行部3に出力し、命令がメモリ5からデータを読み出すメモリアクセス命令の場合、メモリアクセス命令をメモリ制御部4に出力する。
The
演算実行部3は、実行制御部2から受ける演算命令に基づいて、第1レジスタ7に格納されたデータを用いて演算を実行する。なお、演算に使用するデータが第2レジスタ8に格納されている場合、演算実行部3は、第1レジスタ7を介することなく、図1に太い破線の矢印で示すバイパス経路を介して第2レジスタ8からデータを受け、演算を実行することが可能である。第2レジスタ8からのデータのバイパスの可否は、バイパス制御部6により判断される。実行制御部2は、バイパス制御部6がバイパスの可能を判断した場合、演算命令をバイパスが可能なタイミングで演算実行部3に投入する。演算実行部3は、演算の実行より得られるデータを第2レジスタ8に出力する。
The
メモリ制御部4は、実行制御部2から受けるメモリアクセス命令(例えば、ロード命令)に基づいてメモリ5にアクセス要求を出力する。例えば、メモリアクセス命令で読み出すデータが、メモリ5における1つのアドレスが割り当てられた領域に記憶されている場合、メモリ制御部4は、メモリアクセス命令に基づいて1つのアクセス要求を生成する。そして、アクセス要求によりメモリ5から読み出されたデータは、第2レジスタ8に一度で格納される。
The
一方、メモリアクセス命令で読み出すデータが、メモリ5における複数のアドレスが割り当てられた領域に記憶されている場合、メモリ制御部4は、メモリアクセス命令に基づいて複数のアクセス要求を順次に生成する。そして、複数のアクセス要求によりメモリ5から読み出されるデータは、第2レジスタ8に順次に格納される。すなわち、メモリアクセス命令で読み出すデータが、メモリ5における複数のアドレスが割り当てられた領域に記憶されている場合、ロードデータのタイミングずれが発生する。
On the other hand, when the data read by the memory access instruction is stored in an area to which a plurality of addresses are allocated in the
メモリアクセス命令に基づいて複数回に分けて読み出されるデータは、最後のアクセス要求に対応してメモリ5から読み出されたデータが第2レジスタ8に格納されたときに、第2レジスタ8内に揃う。換言すれば、メモリアクセス命令で読み出すデータが、複数のアクセス要求によりメモリ5から読み出される場合、第2レジスタ8を利用してデータを待ち合わせることができる。この結果、演算処理装置OPD1は、メモリアクセス命令に基づいてデータをメモリ5から複数回に分けて読み出す場合にも、新たな回路を設けることなくデータを待ち合わせることができ、回路規模の増加を抑制することができる。
The data read in a plurality of times based on the memory access instruction is stored in the
メモリ5は、演算実行部3で使用するデータを記憶し、アクセス要求に基づいて記憶しているデータを出力する。メモリ5から読み出されるデータは、第2レジスタ8を経由して第1レジスタ7に転送される。
The
第1レジスタ7の各々は、演算実行部3が実行する演算に使用するデータを保持する。第2レジスタ8の各々は、演算に使用する第1レジスタ7に対応して割り当てられる。第1レジスタ7に対応して割り当てられた第2レジスタ8は、演算命令またはメモリアクセス命令の実行により得られるデータを第1レジスタ7に転送する前に一時的に保持する。
Each of the first registers 7 holds data used for an operation executed by the
レジスタ管理部9は、第1レジスタ7と第2レジスタ8との割り当ての関係を保持する。実行制御部2は、レジスタ管理部9を参照することで、例えば、命令のオペランドにより指示される第1レジスタ7を割り当てた第2レジスタ8を認識する。例えば、デコーダ部1は、命令を解読した際に、第1レジスタ7を割り当てる第2レジスタ8を決定し、決定した割り当てを示す情報をレジスタ管理部9が有するテーブルに格納する。デコーダ部1が、演算に使用する第1レジスタ7に対応して第2レジスタ8を割り当てることで、第1レジスタ7が命令のオペランドで重複して指示され、依存関係が生じる場合にも、依存関係がないもとのとして演算を実行することができる。この結果、第2レジスタ8を使用しない場合に比べて、演算実行部3による演算の効率を向上することができる。
The
例えば、バイパス制御部6は、メモリ制御部4から受けるメモリ5のアクセスの状況を示す情報に基づいて、メモリ5から読み出され第2レジスタ8に格納されたデータを演算実行部3にバイパス可能か否かを判定する。また、バイパス制御部6は、実行制御部2から受ける演算実行部3による演算の実行状況を示す情報に基づいて、演算実行部3の演算により得られ第2レジスタ8に格納されたデータを演算実行部3にバイパス可能か否かを判定する。
For example, the
バイパス制御部6は、メモリ制御部4がメモリアクセス命令に基づいてデータを1回でメモリ5から読み出す場合、データのバイパスが、メモリ5から第2レジスタ8に転送された後に可能になると判断する。この場合、メモリ5から読み出されるデータは、最初のデータでもあり、最後のデータでもある。そして、バイパス制御部6は、第2レジスタ8から演算実行部3へのデータを、最後のデータがメモリ5から第2レジスタ8に転送された後にバイパスするタイミングで、実行制御部2に演算命令を出力させる。
When the
一方、バイパス制御部6は、メモリ制御部4がメモリアクセス命令に基づいてデータをメモリ5から複数回に分けて読み出す場合、データのバイパスが、メモリ5から第2レジスタ8に最後のデータが転送された後に可能になると判断する。そして、バイパス制御部6は、第2レジスタ8から演算実行部3へのデータのバイパスを、最後のデータがメモリ5から第2レジスタ8に転送された後に実行させるタイミングで、実行制御部2に演算命令を出力させる。
On the other hand, when the
以上、図1に示す実施形態では、バイパス制御部6は、メモリ5から読み出されるデータが第2レジスタ8に全て揃った後に、データのバイパスが可能になったことを実行制御部2に通知する。これにより、メモリ5から第2レジスタ8へロードされるデータのタイミングずれが発生する場合にも、既存の第2レジスタ8を利用してデータを待ち合わせることができる。すなわち、新たな回路を設けることなくデータを待ち合わせることができ、演算処理装置OPD1の回路規模の増加を抑制することができる。
As described above, in the embodiment illustrated in FIG. 1, the
また、メモリアクセス命令に基づいてデータがメモリ5から1回で読み出されるか複数回に分けて読み出されるかに依存せず、バイパス制御部6は、メモリ5から第2レジスタ8に最後のデータが転送された後にバイパスが可能になると判断する。これにより、バイパス制御部6によるバイパスタイミングの制御を従来と同様に簡易にすることができる。この結果、メモリアクセス命令に基づいてデータがメモリ5から1回で読み出される場合と、複数回に分けて読み出される場合とでバイパスタイミングを変更する場合にも、演算処理装置OPD1の回路規模の増加を抑制することができる。さらに、回路規模の増加を抑制することで、演算処理装置OPD1の消費電力の増加を抑制することができ、演算処理装置OPD1の動作周波数を向上させることができる。
In addition, the
図2は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図2の太い実線の矢印は、ロード命令の実行時における浮動小数点データの転送経路を示す。図2の太い破線の矢印は、ロード命令の実行時における浮動小数点データのバイパス経路を示す。なお、固定小数点データのバイパス経路の図示は省略する。 FIG. 2 shows another embodiment of the arithmetic processing device and the control method of the arithmetic processing device. A thick solid line arrow in FIG. 2 indicates the transfer path of the floating point data when the load instruction is executed. The thick dashed arrows in FIG. 2 indicate the floating point data bypass path during execution of the load instruction. Note that the bypass path for fixed-point data is not shown.
図2に示す演算処理装置OPD2は、命令キャッシュ10、命令バッファ12、デコーダ部14、レジスタ管理テーブル16、リザベーションステーション18、アドレス生成部20、データキャッシュ22およびバイパス制御部24を有する。また、演算処理装置OPD2は、浮動小数点演算器26、固定小数点演算器28、ロードレジスタ30、リザルトレジスタ32、34、リネーミングレジスタ部36、38、浮動小数点レジスタ部40、固定小数点レジスタ部42およびコミット制御部44を有する。
The arithmetic processing unit OPD2 illustrated in FIG. 2 includes an
例えば、命令キャッシュ10は、二次命令キャッシュまたはメインメモリ等から転送される命令を格納する一次命令キャッシュである。命令バッファ12は、命令キャッシュ10から順次に転送される命令を保持し、保持した命令をデコーダ部14に順次に転送する。
For example, the
デコーダ部14は、命令バッファ12から転送される命令を順次に解読し、解読した命令に含まれる情報INS(以下、命令情報INSと称される)を、リザベーションステーション18に格納する。例えば、命令情報INSは、命令の種別に応じて、リザベーションステーション18が有するリザベーションステーションRSFLT、RSFIX、RSMAのいずれかに格納される。
The
デコーダ部14は、解読した命令が浮動小数点レジスタ部40内の浮動小数点レジスタをデータの格納先に使用することを示す場合、使用する浮動小数点レジスタを、リネーミングレジスタ部36内のリネーミングレジスタのいずれかに割り当てる。例えば、デコーダ部14は、データの格納先に使用する浮動小数点レジスタのレジスタ番号RNと、割り当てるリネーミングレジスタを示すアドレスUBAとを、書き込み要求WEとともにレジスタ管理テーブル16およびコミット制御部44に出力する。例えば、アドレスUBAは、”Update Buffer Address”の略称である。リネーミングレジスタ部36が32個のリネーミングレジスタを有する場合、アドレスUBAは5ビットである。なお、アドレスUBAは、リザベーションステーション18にも出力される。浮動小数点レジスタ部40の例は、図3に示し、リネーミングレジスタ部36の例は、図4に示す。
When the decoded instruction indicates that the floating point register in the floating
同様に、デコーダ部14は、解読した命令が固定小数点レジスタ部42内の固定小数点レジスタをデータの格納先に使用することを示す場合、使用する固定小数点レジスタを、リネーミングレジスタ部38内のリネーミングレジスタのいずれかに割り当てる。例えば、デコーダ部14は、データの格納先に使用する固定小数点レジスタを示すレジスタ番号RNと、割り当てたリネーミングレジスタを示すアドレスUBAとを、書き込み要求WEとともにレジスタ管理テーブル16およびコミット制御部44に出力する。なお、デコーダ部14は、浮動小数点レジスタ部40と固定小数点レジスタとを識別可能なレジスタ番号RNおよびアドレスUBAを出力する。固定小数点レジスタ部42の例は、図3に示し、リネーミングレジスタ部38の例は、図4に示す。
Similarly, when the decoded instruction indicates that the decoded instruction uses the fixed-point register in the fixed-
レジスタ管理テーブル16は、浮動小数点レジスタ用のテーブルRMTBL1と固定小数点レジスタ用のテーブルRMTBL2とを有する。レジスタ管理テーブル16は、デコーダ部14から受けるレジスタ番号RN、アドレスUBAおよび書き込み要求WEに応じて、テーブルRMTBL1、RMTBL2のいずれかに格納された情報を更新する。レジスタ管理テーブル16は、リザベーションステーション18からの読み出し要求に応じて、テーブルRMTBL1、RMTBL2に記憶しているアドレスUBAおよびビット値Pをリザベーションステーション18に出力する。レジスタ管理テーブル16は、コミット制御部44からのリセット要求RST1に基づいて、テーブルRMTBL1、RMTBL2のいずれかに登録したアドレスUBAを無効化する。レジスタ管理テーブル16は、浮動小数点レジスタFRとリネーミングレジスタRNFRとの割り当ての関係を保持し、リザベーションステーションRSFLTにより参照されるレジスタ管理部の一例である。レジスタ管理テーブル16の例は、図5に示す。
The register management table 16 includes a floating-point register table RMTBL1 and a fixed-point register table RMTBL2. The register management table 16 updates information stored in one of the tables RMTBL1 and RMTBL2 according to the register number RN, address UBA, and write request WE received from the
リザベーションステーション18は、3つのリザベーションステーションRSFLT、RSFIX、RSMAを含む。リザベーションステーション18は、デコーダ部14が解読した命令(命令情報INS)を保持し、実行可能な命令を順次に出力する実行制御部の一例である。リザベーションステーションRSFLTは、浮動小数点データの演算用の命令に含まれる命令情報INSを保持する。リザベーションステーションRSFIXは、固定小数点データの演算用の命令に含まれる命令情報INSを保持する。また、リザベーションステーションRSMAは、メモリアクセス用の命令に含まれる命令情報INSを保持する。
The
リザベーションステーション18は、命令情報INSに基づいて、レジスタ管理テーブル16を参照して得られる浮動小数点レジスタ(または固定小数点レジスタ)を割り当てたリネーミングレジスタを示すアドレスUBAおよびビット値Pを保持する。保持したビット値Pは、命令の実行の完了時にコミット制御部44から受けるリセット要求RST2に基づいて無効化され、実行が完了した命令のアドレスUBAは、ビット値Pの無効化により破棄される。
The
なお、リザベーションステーション18は、データを格納する浮動小数点レジスタ(または固定小数点レジスタ)を割り当てたリネーミングレジスタのアドレスUBAを、命令情報INSとともにデコーダ部14から受ける。また、リザベーションステーション18は、データを読み出す浮動小数点レジスタ(または固定小数点レジスタ)を割り当てたリネーミングレジスタのアドレスUBAを、レジスタ管理テーブル16から読み出す。以下では、データを格納する浮動小数点レジスタ(または固定小数点レジスタ)は、ディスティネーションレジスタとも称され、データを読み出す浮動小数点レジスタ(または固定小数点レジスタ)は、ソースレジスタとも称される。
The
リザベーションステーション18は、レジスタ管理テーブル16から読み出したアドレスUBAおよびバイパス制御部24から出力されるバイパス可能信号BPEN(BPEN0−BPEN31)に基づいて、保持した命令の依存関係を判定する。そして、リザベーションステーション18は、保持した命令の中から実行可能な演算命令を浮動小数点演算器26または固定小数点演算器28に順次に投入する。あるいは、リザベーションステーション18は、保持した命令の中から実行可能なロード命令またはストア命令をアクセス要求MREQとしてアドレス生成部20に順次に投入する。ロード命令を示すアクセス要求MREQは、データキャッシュ22からデータを読み出すメモリアクセス命令の一例である。リザベーションステーション18は、命令の実行順序を変更するアウトオブオーダ実行を制御する実行制御部の一例である。
The
リザベーションステーション18は、浮動小数点演算器26の演算により得られるデータがリザルトレジスタ32またはリネーミングレジスタ部36からバイパス可能な場合、制御信号B1FPおよびアドレスB1FPUBAをバイパス制御部24に出力する。制御信号B1FPは、浮動小数点演算器26が演算を開始するタイミングを示す開始信号である。制御信号B1FPの出力タイミングは、バイパス制御部24のバイパス管理テーブルのフラグ領域FLG(図8)をセットするタイミングを示す。制御信号B1FPおよびアドレスB1FPUBAの先頭の”B1”は、制御信号B1FPおよびアドレスB1FPUBAが後述するB1サイクルで生成されることを示す。制御信号B1FPおよびアドレスB1FPUBAを受けた場合のバイパス制御部24の動作は、図11で説明される。
The
アドレス生成部20は、リザベーションステーション18から出力されるアクセス要求MREQに基づいて、データキャッシュ22に出力するアクセス要求MREQCを生成する。アドレス生成部20は、データキャッシュ22から浮動小数点データを読み出すアクセス要求MREQCとともに、制御信号ALDL、ALDHおよびアドレスALDUBAをバイパス制御部24に出力する。制御信号ALDL、ALDHは、データキャッシュ22からデータのロードを開始するタイミングを示す開始信号の一例であり、例えば、アクセス要求MREQCに同期して生成される。制御信号ALDLは下位4バイトのデータをロードする場合に生成され、制御信号ALDHは上位4バイトのデータをロードする場合に生成される。下位4バイトのデータおよび上位4バイトのデータは、データ群の一例である。
The
制御信号ALDL、ALDHおよびアドレスALDUBAの先頭の”A”は、制御信号ALDL、ALDHおよびアドレスALDUBAが後述するAサイクルで生成されることを示す。アドレスALDUBAの値は、バイパス可能なデータが転送されるリネーミングレジスタRNFR(図4)を示す。アドレスALDUBAのビット数は、64個のリネーミングレジスタRNFRを識別可能な6ビットである。 “A” at the head of the control signals ALDL and ALDH and the address ALDUBA indicates that the control signals ALDL and ALDH and the address ALDUBA are generated in an A cycle described later. The value of the address ALDUBA indicates the renaming register RNFR (FIG. 4) to which bypassable data is transferred. The number of bits of the address ALDUBA is 6 bits that can identify 64 renaming registers RNFR.
アクセス要求MREQに基づいて、データキャッシュ22内の1つのキャッシュラインからデータが読み出し可能な場合、アドレス生成部20は、1つのアクセス要求MREQCを生成する。一方、アクセス要求MREQに基づいて、データキャッシュ22内の2つのキャッシュラインに保持される場合、あるいは、データの一部がデータキャッシュ22に保持されていない場合(キャッシュミス)がある。この場合、アドレス生成部20は、1つのキャッシュラインからデータを読み出すアクセス要求MREQCを生成した後、時間間隔を置いて、他の1つのキャッシュラインからデータを読み出すアクセス要求MREQCを生成する。すなわち、データキャッシュ22から読み出すロードデータのタイミングずれが発生する。
When data can be read from one cache line in the
例えば、アドレス生成部20は、1つのアクセス要求MREQCにより、リネーミングレジスタ部36へ転送する8バイトのデータをデータキャッシュ22から一度で読み出す場合、制御信号ALDL、ALDHの両方を生成する。アドレス生成部20は、2つのアクセス要求MREQCにより、リネーミングレジスタ部36へ転送する8バイトのデータを2つの4バイトのデータ毎にデータキャッシュ22から読み出す場合、制御信号ALDL、ALDHを互いに異なるタイミングで生成する。
For example, when the 8-byte data to be transferred to the
例えば、アドレス生成部20は、8バイトのデータを4バイトずつデータキャッシュ22から読み出す場合、上位4バイトのデータを読み出した後、下位4バイトのデータを読み出す。このため、制御信号ALDLが出力されるタイミングで、上位4バイトのデータは、データキャッシュ22から出力されており、ロードレジスタ30およびリネーミングレジスタ部36に順次に転送される。制御信号ALDL、ALDHおよびアドレスALDUBAを受けた場合のバイパス制御部24の動作は、図9で説明する。アドレス生成部20は、リザベーションステーションRSFLTから受けるアクセス要求MREQ(メモリアクセス命令)に基づいてデータキャッシュ22にアクセス要求MREQCを出力するメモリ制御部の一例である。
For example, when the 8-byte data is read from the
例えば、データキャッシュ22は、二次データキャッシュまたはメインメモリ等から転送されるデータを格納する一次データキャッシュである。データキャッシュ22は、アドレス生成部20からのアクセス要求MREQCによりアクセスされる。データキャッシュ22は、アクセス要求MREQCに対応するデータを保持している場合(キャッシュヒット)、保持しているデータをロードレジスタ30に出力する。データキャッシュ22は、アクセス要求MREQCに対応するデータを保持していない場合(キャッシュミス)、二次データキャッシュまたはメインメモリ等からデータを読み出し、読み出したデータをデータキャッシュ22の記憶領域に格納する。
For example, the
また、データキャッシュ22は、キャッシュヒット時に、データをロードレジスタ30に出力するサイクルで完了信号CEをバイパス制御部24に出力する。データキャッシュ22は、キャッシュミス時に、完了信号CEの出力を禁止する。
Further, the
バイパス制御部24は、リネーミングレジスタ部36が有するリネーミングレジスタ毎に、浮動小数点データのバイパスが可能か否かを示す情報を保持するバイパス管理テーブルBPTBLを有する。バイパス制御部24は、バイパス管理テーブルBPTBLが保持する情報に基づいて、バイパス可能信号BPEN(BPEN0−BPEN31)を出力する。また、バイパス制御部24は、リネーミングレジスタ部38のリネーミングレジスタ毎に、固定小数点データのバイパスが可能か否かを示す情報を保持する図示しないバイパス管理テーブルを有する。
The
バイパス制御部24は、制御信号B1FP、ALDL、ALDHに基づいて、アドレスB1FPUBA、ALDUBAに対応するバイパス可能信号BPEN(BPEN0−BPEN31のいずれか)を有効レベルに設定する。バイパス制御部24は、制御信号WCMTに基づいて、アドレスWCMTUBAに対応するバイパス可能信号BPENを無効レベルに設定する。バイパス制御部24は、完了信号CEに基づいて、キャッシュミスしたアクセス命令MREQCに対応するアドレスALDUBAが示すバイパス可能信号BPENを無効レベルに設定する。バイパス制御部24の例は、図7および図8に示される。
The
浮動小数点演算器26は、リザベーションステーションRSFLTから転送される命令に基づいて演算を実行し、実行結果をリザルトレジスタ32に格納する。浮動小数点演算器26は、リザベーションステーションRSFLTから受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部の一例である。浮動小数点演算器26による演算は、浮動小数点レジスタ部40、リネーミングレジスタ部36、リザルトレジスタ32およびロードレジスタ30の少なくともいずれかに格納されたデータを用いて実行される。
The floating point
固定小数点演算器28は、リザベーションステーションRSFIXから転送される命令に基づいて演算を実行し、実行結果をリザルトレジスタ34に格納する。固定小数点演算器28による演算は、固定小数点レジスタ部42、リネーミングレジスタ部38、リザルトレジスタ34およびロードレジスタ30の少なくともいずれかに格納されたデータを用いて実行される。
The fixed point
ロードレジスタ30は、ロード命令の実行に基づいてデータキャッシュ22から読み出されるデータを一時的に保持し、保持したデータをリネーミングレジスタ部36またはリネーミングレジスタ部38にデータ線LDDを介して転送する。ロードレジスタ30は、データキャッシュ22とリネーミングレジスタRNFR(図4)との間に配置され、データキャッシュ22から読み出されるデータをリネーミングレジスタRNFRに転送する前に一時的に保持する第3レジスタの一例である。
The load register 30 temporarily holds data read from the
リザルトレジスタ32は、浮動小数点演算器26による演算結果を一時的に保持し、保持したデータをリネーミングレジスタ部36にデータ線EXD1を介して転送する。リザルトレジスタ34は、固定小数点演算器28による演算結果を一時的に保持し、保持したデータをリネーミングレジスタ部38にデータ線EXD2を介して転送する。
The result register 32 temporarily holds the calculation result by the floating
例えば、リネーミングレジスタ部36は、浮動小数点演算器26が実行した演算により得られた浮動小数点データまたはデータキャッシュから転送される浮動小数点データを一次的に保持する32個のリネーミングレジスタRNFR(図4)を有する。各リネーミングレジスタRNFRに保持されたデータは、命令の完了に基づいてコミット制御部44が出力する読み出し要求RCMT1に応答して、浮動小数点レジスタ部40に転送される。リネーミングレジスタRNFRは、浮動小数点レジスタFR(図3)に対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを浮動小数点レジスタFRに転送する前に一時的に保持する第2レジスタの一例である。
For example, the
例えば、リネーミングレジスタ部38は、固定小数点演算器28が実行した演算により得られた固定小数点データまたはデータキャッシュから転送される固定小数点データを一次的に保持する32個のリネーミングレジスタRNR(図4)を有する。各リネーミングレジスタRNRに保持されたデータは、命令の完了に基づいてコミット制御部44が出力する読み出し要求RCMT2に応答して、固定小数点レジスタ部42に転送される。リネーミングレジスタ部36、38の例は、図4に示す。
For example, the
例えば、浮動小数点レジスタ部40は、浮動小数点演算器26が実行する演算により得られた浮動小数点データまたはデータキャッシュ22から転送される浮動小数点データを保持する64個の浮動小数点レジスタFR(図3)を有する。浮動小数点レジスタFRは、浮動小数点演算器26が実行する演算に使用するデータを保持する第1レジスタの一例である。浮動小数点レジスタ部40は、命令の完了に基づいてコミット制御部44が出力する書き込み要求WCMT1に応答して、リネーミングレジスタ部36から転送されるデータを記憶する。
For example, the floating-
例えば、固定小数点レジスタ部42は、固定小数点演算器28が実行する演算により得られた固定小数点データまたはデータキャッシュ22から転送される固定小数点データを保持する32個の固定小数点レジスタR(図3)を有する。固定小数点レジスタ部42は、命令の完了に基づいてコミット制御部44が出力する書き込み要求WCMT2に応答して、リネーミングレジスタ部38から転送されるデータを記憶する。浮動小数点レジスタ部40および固定小数点レジスタ部42の例は、図3に示す。
For example, the fixed-
コミット制御部44は、命令の実行の完了に基づいて、レジスタ管理テーブル16にリセット要求RST1を出力し、リザベーションステーション18にリセット要求RST2を出力する。また、コミット制御部44は、命令の実行の完了に基づいて、バイパス制御部24に制御信号WCMTおよびアドレスWCMTUBAを出力する。コミット制御部44は、デコーダ部14が命令の解読に基づいて出力するレジスタ番号RNおよびアドレスUBAを命令毎に保持する。コミット制御部44は、保持したアドレスUBAのうち、実行が完了した命令に対応するアドレスUBAが示すリネーミングレジスタRNFRからデータを読み出す読み出し要求RCMT1(またはRCMT2)を出力する。コミット制御部44は、保持したレジスタ番号RNのうち、実行が完了した命令に対応するレジスタ番号RNが示すディスティネーションレジスタにデータを書き込む書き込み要求WCMT1(またはWCMT2)を出力する。
The commit
図3は、図2に示す浮動小数点レジスタ部40および固定小数点レジスタ部42の例を示す。浮動小数点レジスタ部40は、倍精度(8バイト)の浮動小数点データを格納する64個の浮動小数点レジスタFR(FR0−FR63)を有する。また、浮動小数点レジスタ部40は、浮動小数点レジスタFRへのデータの書き込みを制御する書き込み制御部WCNT1および浮動小数点レジスタFRからのデータの読み出しを制御する読み出し制御部RCNT1を有する。
FIG. 3 shows an example of the floating
各浮動小数点レジスタFRは、8バイトのダブルデータDD(倍精度の浮動小数点データ)または4バイトの2つのシングルデータSD(単精度の浮動小数点データ)を記憶する8バイトの記憶領域を有している。すなわち、各浮動小数点レジスタFRは、2つの単精度(4バイト)の浮動小数点データを格納可能である。図3は、浮動小数点レジスタFR0にダブルデータDDが格納され、浮動小数点レジスタFR1に2つのシングルデータSDが格納された状態を示す。 Each floating point register FR has an 8-byte storage area for storing 8-byte double data DD (double-precision floating-point data) or 4-byte two single data SD (single-precision floating-point data). Yes. That is, each floating-point register FR can store two single-precision (4-byte) floating-point data. FIG. 3 shows a state in which double data DD is stored in the floating-point register FR0 and two single data SD are stored in the floating-point register FR1.
1つの浮動小数点レジスタFRに2つのシングルデータSDを格納することで、1つの浮動小数点レジスタFRの番号により2つのシングルデータSDを使用することができる。これにより、2つの浮動小数点レジスタFRのそれぞれにシングルデータSDを格納する場合に比べて、単精度浮動小数点データの演算性能は向上する。以降、2つのシングルデータSDを格納する浮動小数点レジスタFRは、倍幅単精度浮動小数点レジスタとも称され、倍幅単精度浮動小数点レジスタに格納されるデータは、倍幅単精度浮動小数点データとも称される。 By storing two single data SD in one floating point register FR, two single data SD can be used according to the number of one floating point register FR. Thereby, the calculation performance of single-precision floating-point data is improved as compared with the case where single data SD is stored in each of the two floating-point registers FR. Hereinafter, the floating-point register FR that stores two single data SD is also referred to as a double-width single-precision floating-point register, and the data stored in the double-width single-precision floating-point register is also referred to as double-width single-precision floating-point data. Is done.
固定小数点レジスタ部42は、8バイトの固定小数点データを格納する32個の固定小数点レジスタR(R0−R31)を有する。また、固定小数点レジスタ部42は、固定小数点レジスタRへのデータの書き込みを制御する書き込み制御部WCNT2および固定小数点レジスタRからのデータの読み出しを制御する読み出し制御部RCNT2を有する。各固定小数点レジスタRは、8バイトのダブルデータDDを記憶する8バイトの記憶領域を有している。図3は、固定小数点レジスタR1にダブルデータDDが格納された状態を示す。
The fixed-
図4は、図2に示すリネーミングレジスタ部36、38の例を示す。リネーミングレジスタ部36は、図3に示す浮動小数点レジスタFRのいずれかが割り当てられる32個のリネーミングレジスタRNFR(RNFR0−RNFR31)、書き込み制御部WCNT3および読み出し制御部RCNT3を有する。各リネーミングレジスタRNFRは、2つの4バイトの記憶領域を含む8バイトの記憶領域を有する。書き込み制御部WCNT3は、演算命令の実行時にリザルトレジスタ32から転送されるデータEXD1またはロード命令の実行時にロードレジスタ30から転送されるデータLDDのいずれかを選択するセレクタSEL3を有する。例えば、書き込み制御部WCNT3によりデータが書き込まれるリネーミングレジスタRNFRは、レジスタ管理テーブル16に格納された情報に基づいてリザベーションステーション18が指定する。
FIG. 4 shows an example of the
セレクタSEL3は、各リネーミングレジスタRNFRの上位4バイトにデータを格納する場合、書き込み制御信号WE1Hおよび4バイト(すなわち、32ビット)のデータEXD1HをリネーミングレジスタRNFRに出力する。セレクタSEL3は、リネーミングレジスタRNFRの下位4バイトにデータを格納する場合、書き込み制御信号WE1Lおよび4バイト(すなわち、32ビット)のデータEXD1LをリネーミングレジスタRNFRに出力する。例えば、書き込み制御信号WE1H、WE1Lは、書き込み制御部WCNT3がデータEXD1、LDD(各々64ビット)の受信に基づいて生成する。 When the selector SEL3 stores data in the upper 4 bytes of each renaming register RNFR, the selector SEL3 outputs the write control signal WE1H and 4 bytes (that is, 32 bits) of data EXD1H to the renaming register RNFR. When the selector SEL3 stores data in the lower 4 bytes of the renaming register RNFR, the selector SEL3 outputs the write control signal WE1L and 4 bytes (that is, 32 bits) of data EXD1L to the renaming register RNFR. For example, the write control signals WE1H and WE1L are generated based on reception of data EXD1 and LDD (64 bits each) by the write control unit WCNT3.
浮動小数点演算器26からリザルトレジスタ32に転送されるデータおよびリザルトレジスタ32からリネーミングレジスタ部36に転送されるデータEXD1は、8バイトである。このため、書き込み制御部WCNT3は、データEXD1を受けた場合、書き込み制御信号WE1H、WE1Lを生成し、8バイトのデータEXD1H、EXD1LをリネーミングレジスタRNFRに格納する。
Data transferred from the floating point
ロード命令に基づいてロードレジスタ30から転送されるデータLDDが倍精度浮動小数点データ(8バイト)の場合、書き込み制御部WCNT3は、書き込み制御信号WE1H、WE1Lを生成する。これにより、8バイトのデータEXD1H、EXD1L(すなわち、倍精度浮動小数点データ)がリネーミングレジスタRNFRに格納される。ロード命令に基づいてロードレジスタ30から転送されるデータLDDが倍幅単精度浮動小数点データ(8バイト)の場合も、書き込み制御部WCNT3は、書き込み制御信号WE1H、WE1Lを生成する。
When the data LDD transferred from the
一方、ロード命令に基づいてロードレジスタ30から転送されるデータLDDが倍幅単精度浮動小数点データの上位4バイトの場合、書き込み制御部WCNT3は、書き込み制御信号WE1Hを生成する。これにより、4バイトのデータEXD1H(すなわち、倍幅単精度浮動小数点データの上位4バイト)がリネーミングレジスタRNFRの上位4バイトの領域に格納される。同様に、ロード命令に基づいてロードレジスタ30から転送されるデータLDDが倍幅単精度浮動小数点データの下位4バイトの場合、書き込み制御部WCNT3は、書き込み制御信号WE1Lを生成する。これにより、4バイトのデータEXD1L(すなわち、倍幅単精度浮動小数点データの下位4バイト)がリネーミングレジスタRNFRの下位4バイトの領域に格納される。
On the other hand, when the data LDD transferred from the
ここで、倍幅単精度浮動小数点データは、データキャッシュ22の1つのキャッシュラインに含まれる場合、一度で転送され、2つのキャッシュラインに跨って含まれる場合、上位4バイトと下位4バイトに分けて順次に転送される。
Here, when double-width single-precision floating-point data is included in one cache line of the
読み出し制御部RCNT3は、コミット制御部44から出力される読み出し要求RCMT1に基づいて、リネーミングレジスタRNFR0−RNFR31のいずれかからデータを読み出し、読み出したデータを浮動小数点レジスタ部40に出力する。例えば、読み出し制御部RCNT3によりデータが読み出されるリネーミングレジスタRNFRは、レジスタ管理テーブル16に格納された情報に基づいてリザベーションステーション18が指定する。
The read control unit RCNT3 reads data from one of the renaming registers RNFR0 to RNFR31 based on the read request RCMT1 output from the commit
リネーミングレジスタ部38は、図3に示す固定小数点レジスタRのいずれかが割り当てられる32個のリネーミングレジスタRNR(RNR0−RNR31)、書き込み制御部WCNT4および読み出し制御部RCNT4を有する。各リネーミングレジスタRNRは、8バイトの記憶領域を有する。書き込み制御部WCNT4は、演算命令の実行時にリザルトレジスタ34から出力されるデータEXD2またはロード命令の実行時にロードレジスタ30から出力されるデータLDDのいずれかを選択するセレクタSEL4を有する。例えば、書き込み制御部WCNT4によりデータが書き込まれるリネーミングレジスタRNRは、リザベーションステーション18により指定される。
The
セレクタSEL4は、リネーミングレジスタRNRにデータを格納する場合、書き込み制御信号WE2および8バイト(64ビット)のデータEXD2をリネーミングレジスタRNRに出力する。例えば、書き込み制御信号WE2は、書き込み制御部WCNT4がデータEXD2、LDD(各々64ビット)の受信に基づいて生成する。読み出し制御部RCNT3は、コミット制御部44から出力される読み出し要求RCMT2に基づいて、リネーミングレジスタRNR0−RNR31のいずれかからデータを読み出し、読み出したデータを固定小数点レジスタ部42に出力する。例えば、読み出し制御部RCNT4によりデータが読み出されるリネーミングレジスタRNRは、レジスタ管理テーブル16に格納された情報に基づいてリザベーションステーション18が指定する。
When the selector SEL4 stores data in the renaming register RNR, the selector SEL4 outputs the write control signal WE2 and 8-byte (64-bit) data EXD2 to the renaming register RNR. For example, the write control signal WE2 is generated by the write control unit WCNT4 based on reception of data EXD2 and LDD (each 64 bits). The read control unit RCNT3 reads data from one of the renaming registers RNR0 to RNR31 based on the read request RCMT2 output from the commit
図4では、セレクタSEL3の回路規模が、セレクタSEL4の回路規模より大きく見える。しかしながら、セレクタSEL3が出力するデータEXD1H、EXD1Lの幅の合計は64ビットであり、セレクタSEL4が出力するデータEXD2の幅と同じである。このため、上位4バイトのデータと下位4バイトのデータとがリネーミングレジスタRNFRにそれぞれ格納される場合の書き込み制御部WCNT3の回路規模を、書き込み制御部WCNT4の回路規模と同等にすることができる。例えば、書き込み制御部WCNT4に対して追加される書き込み制御部WCNT3の要素は、書き込み制御信号WE1H、WE1Lを生成する論理回路と、書き込み制御信号WE1Hの配線領域である。したがって、リネーミングレジスタ部36の回路規模は、既存のリネーミングレジスタ部およびリネーミングレジスタ部38の回路規模と同等である。
In FIG. 4, the circuit scale of the selector SEL3 appears larger than the circuit scale of the selector SEL4. However, the total width of the data EXD1H and EXD1L output from the selector SEL3 is 64 bits, which is the same as the width of the data EXD2 output from the selector SEL4. Therefore, the circuit scale of the write control unit WCNT3 when the upper 4 bytes of data and the lower 4 bytes of data are respectively stored in the renaming register RNFR can be made equal to the circuit scale of the write control unit WCNT4. . For example, the elements of the write control unit WCNT3 added to the write control unit WCNT4 are a logic circuit that generates the write control signals WE1H and WE1L and a wiring region for the write control signal WE1H. Therefore, the circuit scale of the
倍幅単精度浮動小数点データが上位4バイトと下位4バイトに分けてデータキャッシュ22から読み出される場合、下位4バイトのデータがリネーミングレジスタRNFRに格納された時点で、8バイトのデータがリネーミングレジスタRNFR内に揃う。すなわち、上位4バイトと下位4バイトに分けて転送される倍幅単精度浮動小数点データは、リネーミングレジスタ部36で待ち合わされ、結合される。図4に示すリネーミングレジスタ部36を用いない場合、上位4バイトと下位4バイトに分けて転送される倍幅単精度浮動小数点データを結合する新たなバッファ回路等が、例えば、データキャッシュ22の出力に接続される。上述したように、リネーミングレジスタ部36の回路規模は、既存のリネーミングレジスタ部の回路規模と同等である。このため、リネーミングレジスタ部36を有する演算処理装置OPD2は、上位4バイトと下位4バイトとのデータ群に分けて転送される倍幅単精度浮動小数点データを結合する新たなバッファ回路を有する演算処理装置に比べて、回路規模を削減することができる。
When double-width single-precision floating-point data is read from the
図5は、図2に示すレジスタ管理テーブル16の例を示す。レジスタ管理テーブル16のテーブルRMTBL1は、浮動小数点レジスタ部40の64個の浮動小数点レジスタFR0−FR63のそれぞれに対応してビット値PとアドレスUBAとを格納する64個の領域を有する。図5において、テーブルRMTBL1の左端に示す数字は、浮動小数点レジスタFRの番号(すなわち、レジスタ番号RN)を示す。
FIG. 5 shows an example of the register management table 16 shown in FIG. The table RMTBL1 of the register management table 16 has 64 areas for storing the bit value P and the address UBA corresponding to each of the 64 floating point registers FR0 to FR63 of the floating
レジスタ管理テーブル16は、デコーダ部14からライト要求WEとともに浮動小数点レジスタFRを示すレジスタ番号RNおよびアドレスUBAを受けた場合、テーブルRMTBL1におけるレジスタ番号RNに対応する領域にアドレスUBAを格納する。アドレスUBAは、浮動小数点レジスタFRを割り当てるリネーミングレジスタRNFRを示す。そして、レジスタ管理テーブル16は、アドレスUBAを格納した領域のビット値Pをセットする。ビット値Pは、アドレスUBAが有効か無効かを示す。これにより、デコーダ部14が決定した浮動小数点レジスタFRとリネーミングレジスタRNFRとの対応付けが、テーブルRMTBL1に保持される。
When the register management table 16 receives the register number RN indicating the floating point register FR and the address UBA together with the write request WE from the
レジスタ管理テーブル16は、デコーダ部14からテーブルRMTBL1を参照する読み出し要求を受けた場合、読み出し要求に含まれるレジスタ番号RNに対応する領域からビット値PとアドレスUBAとを読み出す。そして、レジスタ管理テーブル16は、読み出したビット値PとアドレスUBAとをリザベーションステーション18に出力する。
When receiving a read request referring to the table RMTBL1 from the
レジスタ管理テーブル16のテーブルRMTBL2は、固定小数点レジスタ部42の32個の固定小数点レジスタR0−R31のそれぞれに対応してビット値PとアドレスUBAとを格納する32個の領域を有する。図5において、テーブルRMTBL2の左端に示す数字は、固定小数点レジスタRの番号(すなわち、レジスタ番号RN)を示す。
The table RMTBL2 of the register management table 16 has 32 areas for storing the bit value P and the address UBA corresponding to each of the 32 fixed-point registers R0 to R31 of the fixed-
レジスタ管理テーブル16は、テーブルRMTBL1と同様に、テーブルRMTBL2におけるレジスタ番号Rに対応する領域にアドレスUBAを格納し、ビット値Pをセットする。アドレスUBAは、固定小数点レジスタRを割り当てるリネーミングレジスタRNRを示す。これにより、デコーダ部14が決定した固定小数点レジスタRとリネーミングレジスタRNRとの対応付けが、テーブルRMTBL2に保持される。また、レジスタ管理テーブル16は、テーブルRMTBL1と同様に、リザベーションステーション18からの読み出し要求に含まれるレジスタ番号Rに対応する領域からビット値PとアドレスUBAとを読み出し、リザベーションステーション18に出力する。
Similarly to the table RMTBL1, the register management table 16 stores the address UBA in the area corresponding to the register number R in the table RMTBL2, and sets the bit value P. The address UBA indicates a renaming register RNR to which the fixed point register R is assigned. Thereby, the correspondence between the fixed-point register R and the renaming register RNR determined by the
図6は、図2に示すデータキャッシュ22からデータをロードする例を示す。例えば、データキャッシュ22は、128バイトの幅を有する64個のキャッシュラインを有する。図6に示す”70”および”80”等は、16進数であり、連続する2つのキャッシュラインの先頭アドレスの下位8ビットを示す。16進数のアドレスの右側に示す括弧内の数値は、アドレスを2進数で表した値である。以下では、図6に示す連続する2つのキャッシュラインにデータが続けて格納されているとする。
FIG. 6 shows an example of loading data from the
例えば、倍精度浮動小数点データ(8バイト)をロードするロード命令では、アドレスの下位3ビットが”000”に設定され、倍幅単精度浮動小数点データをロードするロード命令では、アドレスの下位2ビットが”00”に設定される。このため、データキャッシュ22からロードされる倍精度浮動小数点データは、キャッシュラインの境界を跨がない(図6(a))。データキャッシュ22からロードされる倍幅単精度浮動小数点データも、先頭アドレスの下位3ビットが”000”の場合、キャッシュラインの境界を跨がない(図6(b))。しかしながら、先頭アドレスの下位3ビットが”100”の場合、データキャッシュ22からロードされる倍幅単精度浮動小数点データは、キャッシュラインの境界を跨ぐ場合がある(図6(c))。なお、図6(d)は、先頭アドレスの下位3ビットが”100”の場合で、キャッシュラインの境界を跨がない例を示す。
For example, in a load instruction that loads double precision floating point data (8 bytes), the lower 3 bits of the address are set to “000”, and in a load instruction that loads double width single precision floating point data, the lower 2 bits of the address Is set to “00”. For this reason, the double-precision floating point data loaded from the
倍幅単精度浮動小数点データをロードするロード命令において、キャッシュラインの境界を跨ぐ先頭アドレスが指定された場合、図2に示すアドレス生成部20は、キャッシュライン毎にアクセス要求MREQCを生成する。すなわち、倍幅単精度浮動小数点データがキャッシュラインの境界を跨いで、データキャッシュ22に格納されている場合、アドレス生成部20は、倍幅単精度浮動小数点データを2回に分けてデータキャッシュ22から読み出す。この実施形態では、図12で説明するように、ロード命令によりデータが2回に分けてデータキャッシュ22から読み出される場合にも、回路規模の増加を抑制して、正しいタイミングでデータを浮動小数点演算器26へバイパスさせることができる。
In the load instruction for loading double-width single-precision floating-point data, when a head address that crosses the boundary of the cache line is specified, the
なお、倍幅単精度浮動小数点データの上位4バイトまたは下位4バイトがデータキャッシュ22に格納されていない場合(キャッシュミス)、データキャッシュ22は、二次データキャッシュ22またはメインメモリ等から128バイトのデータを読み出す。そして、データキャッシュ22は、読み出した128バイトのデータをキャッシュラインのいずれかに格納する。そして、アドレス生成部20は、データキャッシュ22にデータが格納された後に、倍幅単精度浮動小数点データの上位4バイトまたは下位4バイトを読み出すアクセス要求MREQCをデータキャッシュ22に発行する。
If the upper 4 bytes or the lower 4 bytes of the double-width single-precision floating-point data are not stored in the data cache 22 (cache miss), the
図7は、図2に示すバイパス制御部24に設けられるセット信号生成回路SSGENの例を示す。セット信号生成回路SSGENは、直列に接続された2つのラッチ回路FF1、FF2およびサイクル信号生成部ASGEN、MSGENを有する。ラッチ回路FF1、FF2は、クロック信号CLKに同期して動作し、アドレス生成部20からの制御信号ALDL、ALDH、ALDBUAをラッチする。
FIG. 7 shows an example of the set signal generation circuit SSGEN provided in the
サイクル信号生成部ASGENは、制御信号ALDL、ALDHを受けるアンド回路AND1を有する。サイクル信号生成部ASGENは、制御信号ALDL、ALDHがともに有効レベル(例えば、ハイレベル)のときにセット信号ALDSETを有効レベルに設定する。有効レベルのセット信号ALDSETにより、図8に示すバイパステーブルBPTBLのフラグ領域FLGのいずれかがセットされる。セットされるフラグ領域FLGは、アドレスALDUBAで示される。セット信号ALDSETによるフラグ領域FLGのセットタイミングは、後述するAサイクルである。サイクル信号生成部ASGENは、制御信号ALDL、ALDHの少なくともいずれかが無効レベル(例えば、ロウレベル)のときにセット信号ALDSETを無効レベルに設定する。サイクル信号生成部ASGENは、複数の制御信号ALDL、ALDHの共通なタイミングでの受信に基づいてセット信号ALDSETを生成する第1生成回路の一例である。 The cycle signal generator ASGEN includes an AND circuit AND1 that receives the control signals ALDL and ALDH. The cycle signal generator ASGEN sets the set signal ALDSET to an effective level when both the control signals ALDL and ALDH are at an effective level (for example, high level). One of the flag areas FLG of the bypass table BPTBL shown in FIG. 8 is set by the effective level set signal ALDSET. The flag area FLG to be set is indicated by an address ALDUBA. The set timing of the flag area FLG by the set signal ALDSET is an A cycle described later. The cycle signal generation unit ASGEN sets the set signal ALDSET to an invalid level when at least one of the control signals ALDL and ALDH is at an invalid level (for example, low level). The cycle signal generation unit ASGEN is an example of a first generation circuit that generates a set signal ALDSET based on reception of a plurality of control signals ALDL and ALDH at a common timing.
サイクル信号生成部MSGENは、ラッチ回路FF2の出力Q1に接続されたインバータIV1と、ラッチ回路FF2の出力Q0およびインバータIV1の出力に接続されたアンド回路AND2とを有する。ラッチ回路FF2は、制御信号ALDLを2クロックサイクル遅らせた信号を出力Q0から出力し、制御信号ALDHを2クロックサイクル遅らせた信号を出力Q2から出力する。サイクル信号生成部MSGENは、2クロックサイクル遅らせた制御信号ALDL、ALDHのそれぞれが有効レベルと無効レベルのとき、セット信号MLDSETを有効レベルに設定する。有効レベルのセット信号MLDSETにより、図8に示すバイパステーブルBPTBLのフラグ領域FLGのいずれかがセットされる。セットされるフラグ領域FLGは、アドレスMLDUBAで示される。セット信号MLDSETによるフラグ領域FLGのセットタイミングは、後述するMサイクルである。 The cycle signal generation unit MSGEN has an inverter IV1 connected to the output Q1 of the latch circuit FF2, and an AND circuit AND2 connected to the output Q0 of the latch circuit FF2 and the output of the inverter IV1. The latch circuit FF2 outputs a signal obtained by delaying the control signal ALDL by two clock cycles from the output Q0, and outputs a signal obtained by delaying the control signal ALDH by two clock cycles from the output Q2. The cycle signal generation unit MSGEN sets the set signal MLDSET to the valid level when the control signals ALDL and ALDH delayed by two clock cycles are at the valid level and the invalid level, respectively. One of the flag areas FLG of the bypass table BPTBL shown in FIG. 8 is set by an effective level set signal MLDSET. The flag area FLG to be set is indicated by an address MLDUBA. The set timing of the flag area FLG by the set signal MLDSET is an M cycle described later.
サイクル信号生成部MSGENは、2クロックサイクル遅らせた制御信号ALDLが無効レベルのとき、または2クロックサイクル遅らせた制御信号ALDHが有効レベルのとき、セット信号MLDSETを無効レベルに設定する。サイクル信号生成部MSGENは、最後の制御信号ALDLの受信から所定のサイクル後にセット信号MLDSETを生成する第2生成回路の一例である。 The cycle signal generation unit MSGEN sets the set signal MLDSET to the invalid level when the control signal ALDL delayed by two clock cycles is at the invalid level or when the control signal ALDH delayed by two clock cycles is at the valid level. The cycle signal generation unit MSGEN is an example of a second generation circuit that generates the set signal MLDSET after a predetermined cycle from the reception of the last control signal ALDL.
制御信号ALDL、ALDHがどちらも無効レベルの場合、アドレス生成部20はデータキャッシュ22にアクセス要求MREQCを出力していないため、セット信号ALDSET、MLDSETはどちらも有効レベルにならない。このため、フラグ領域FLGはセットされない。
When both of the control signals ALDL and ALDH are at an invalid level, the
制御信号ALDL、ALDHがどちらも有効レベルの場合、アドレス生成部20は、8バイトのデータをデータキャッシュ22から読み出すアクセス要求MREQCを出力している。この場合、セット信号ALDSETは有効レベルになり、セット信号MLDSETは無効レベルになり、フラグ領域FLGは、Aサイクルでセットされる。
When both the control signals ALDL and ALDH are at a valid level, the
制御信号ALDLが無効レベルで、制御信号ALDHが有効レベルの場合、アドレス生成部20は、倍幅単精度浮動小数点データの上位4バイトのデータをデータキャッシュ22から読み出すアクセス要求MREQCを出力している。この場合、セット信号ALDSET、MLDSETはどちらも有効レベルにならず、フラグ領域FLGはセットされない。
When the control signal ALDL is at the invalid level and the control signal ALDH is at the valid level, the
制御信号ALDLが有効レベルで、制御信号ALDHが無効レベルの場合、アドレス生成部20は、倍幅単精度浮動小数点データの下位4バイトのデータをデータキャッシュ22から読み出すアクセス要求MREQCを出力している。この時点で、倍幅単精度浮動小数点データの上位4バイトは、データキャッシュ22から既にロードされており、下位4バイトのデータがデータキャッシュ22から読み出されることで、8バイトの倍幅単精度浮動小数点データが揃う。この場合、セット信号ALDSETは無効レベルになり、セット信号MLDSETは有効レベルになり、フラグ領域FLGは、Mサイクルでセットされる。
When the control signal ALDL is at a valid level and the control signal ALDH is at an invalid level, the
この実施形態では、数ゲート規模のサイクル信号生成部ASGEN、MSGENにより、8バイトのデータがデータキャッシュ22から読み出されるか否かを判定し、セット信号ALDSETまたはセット信号MLDSETを生成することができる。
In this embodiment, it is possible to determine whether 8-byte data is read from the
図8は、バイパス制御部24に設けられるバイパス管理テーブルBPTBLおよびテーブル制御回路TSCNTの例を示す。
FIG. 8 shows an example of the bypass management table BPTBL and the table control circuit TSCNT provided in the
バイパス管理テーブルBPTBLは、1ビットのラッチ回路を有する32個のフラグ領域FLG(FLG0−FLG31)を有する。バイパス管理テーブルBPTBLは、クロック信号CLKに同期して入力端子の論理をラッチして各フラグ領域FLGに保持し、保持した論理をバイパス可能信号BPEN(BPEN0−BPEN31)として出力する。 The bypass management table BPTBL has 32 flag areas FLG (FLG0 to FLG31) each having a 1-bit latch circuit. The bypass management table BPTBL latches the logic of the input terminal in synchronization with the clock signal CLK and holds it in each flag area FLG, and outputs the held logic as a bypass enable signal BPEN (BPEN0-BPEN31).
有効レベル(例えば、ハイレベル)のバイパス可能信号BPENは、図2に太い破線で示したバイパス経路を用いたデータのバイパスが可能であることを示す。すなわち、セット状態のフラグ領域FLGは、リネーミングレジスタRNFR、リザルトレジスタ32またはロードレジスタ30に格納されたデータを、浮動小数点レジスタ部40を介さずに浮動小数点演算器26にバイパス可能であることを示す。なお、バイパス制御部24は、固定小数点レジスタ部42に対応するリネーミングレジスタ部38に対応するバイパス管理テーブルを有するが、図示は省略する。
An effective level (for example, high level) bypass enable signal BPEN indicates that data can be bypassed using the bypass path indicated by a thick broken line in FIG. That is, the flag area FLG in the set state indicates that the data stored in the renaming register RNFR, the
図2に示す演算処理装置OPD2では、8バイトの倍幅単精度浮動小数点データが4バイトずつデータキャッシュ22から読み出される場合、アドレス生成部20は、上位4バイトと下位4バイトのデータを読み出すアクセス要求MREQCを順次に生成する。これにより、下位4バイトのデータがデータキャッシュ22からの出力されたことに基づいて、8バイト全ての倍幅単精度浮動小数点データがデータキャッシュ22から読み出されたと判定することができる。したがって、バイパスが可能なことを示すフラグ領域FLGを、下位4バイトのデータの読み出しを示す制御信号ALDLに基づいてセットさせることが可能になる。この結果、4バイトのデータが互いに異なるタイミングで2回に分けて読み出される場合にも、1ビットのフラグ領域FLGによりバイパス動作を許可させることができ、バイパス管理テーブルBPTBLの回路規模の増加を抑制することができる。
In the arithmetic processing unit OPD2 shown in FIG. 2, when the double-byte single-precision floating-point data of 8 bytes is read from the
テーブル制御回路TSCNTは、セット信号生成部ASSET、MSSET、B1SET、リセット信号生成部WRSTおよびテーブル制御部TBLCNTを有する。 The table control circuit TSCNT includes set signal generation units ASSET, MSSET, B1SET, a reset signal generation unit WRST, and a table control unit TBLCNT.
セット信号生成部ASSETは、アドレスALDUBAを受けるデコーダADECと、デコーダADECの出力に接続され、制御信号ALDSETを受ける32個のアンド回路とを有する。デコーダADECは、アドレスALDUBAの値を解読し、アドレスALDUBAの値が示すフラグ領域FLGに対応する32個の出力端子のいずれかを有効レベルに設定する。そして、デコーダADECからの有効レベルと制御信号ALDSETとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域FLGがセットされる。セット信号生成部ASSETは、倍精度浮動小数点データまたは倍幅単精度浮動小数点データ(何れも8バイト)をロードする場合、フラグ領域FLGをセットする。 The set signal generation unit ASSET has a decoder ADEC that receives an address ALDUBA, and 32 AND circuits that are connected to the output of the decoder ADEC and receive a control signal ALDSET. The decoder ADEC decodes the value of the address ALDUBA, and sets any of the 32 output terminals corresponding to the flag area FLG indicated by the value of the address ALDUBA to an effective level. The corresponding flag area FLG is set by the high level output from the AND circuit that receives the effective level from the decoder ADEC and the control signal ALDSET. The set signal generation unit ASSET sets the flag area FLG when loading double precision floating point data or double width single precision floating point data (both are 8 bytes).
セット信号生成部MSSETは、デコーダADECの代わりにデコーダMDECを有し、アドレスALDUBAと制御信号ALDSETの代わりにアドレスMLDUBAと制御信号MLDSETを受けることを除き、セット信号生成部ASSETと同様である。セット信号生成部MSSETは、デコーダMDECからの有効レベルと制御信号MLDSETとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域FLGをセットする。セット信号生成部MSSETは、倍幅単精度浮動小数点データを4バイトずつ互いに異なるタイミングでロードする場合、フラグ領域FLGをセットする。 The set signal generation unit MSSET has a decoder MDEC instead of the decoder ADEC, and is the same as the set signal generation unit ASSET except that it receives the address MLDUBA and the control signal MLDSET instead of the address ALDUBA and the control signal ALDSET. The set signal generation unit MSSET sets the corresponding flag area FLG according to the high level output from the AND circuit that receives the effective level from the decoder MDEC and the control signal MLDSET. The set signal generation unit MSSET sets the flag area FLG when loading double-width single-precision floating-point data at a timing different from each other by 4 bytes.
セット信号生成部B1SETは、デコーダADECの代わりにデコーダBDECを有し、アドレスALDUBAと制御信号ALDSETの代わりにアドレスB1FPUBAと制御信号B1FPを受けることを除き、セット信号生成部ASSETと同様である。セット信号生成部B1SETは、デコーダBDECからの有効レベルと制御信号B1FPとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域FLGをセットする。セット信号生成部B1SETは、浮動小数点データの演算命令による演算の開始を示す信号を後述するB1サイクルまで保持した制御信号B1FPに応答して、アドレスB1FPUBAが示すフラグ領域FLGをセットする。 The set signal generation unit B1SET is similar to the set signal generation unit ASSET except that it has a decoder BDEC instead of the decoder ADEC and receives the address B1FPUBA and the control signal B1FP instead of the address ALDUBA and the control signal ALDSET. The set signal generation unit B1SET sets the corresponding flag area FLG according to the high level output from the AND circuit that receives the effective level from the decoder BDEC and the control signal B1FP. The set signal generation unit B1SET sets the flag area FLG indicated by the address B1FPUBA in response to a control signal B1FP that holds a signal indicating the start of an operation based on a floating-point data operation instruction until a B1 cycle described later.
リセット信号生成部WRSTは、アドレスWCMTUBAを受けるデコーダWDECと、デコーダWDECの出力に接続され、制御信号WCMTを受ける32個のナンド回路と、ナンド回路の出力に接続された32個のアンド回路とを有する。デコーダWDECは、デコーダADECと同様に、アドレスWCMTUBAの値を解読し、アドレスWCMTUBAの値が示すフラグ領域FLGに対応する32個の出力端子のいずれかを有効レベルに設定する。デコーダWDECからの有効レベルと制御信号WCMTとを受けるナンド回路は、ロウレベルを出力し、ナンド回路の出力に接続されたアンド回路の出力をロウレベルに設定する。これにより、対応するフラグ領域FLGがリセットされる。 The reset signal generation unit WRST includes a decoder WDEC that receives the address WCMTUBA, 32 NAND circuits that are connected to the output of the decoder WDEC and receive the control signal WCMT, and 32 AND circuits that are connected to the output of the NAND circuit. Have. Similarly to the decoder ADEC, the decoder WDEC decodes the value of the address WCMTUBA and sets any one of the 32 output terminals corresponding to the flag area FLG indicated by the value of the address WCMTUBA to an effective level. The NAND circuit that receives the effective level from the decoder WDEC and the control signal WCMT outputs a low level, and sets the output of an AND circuit connected to the output of the NAND circuit to a low level. As a result, the corresponding flag area FLG is reset.
なお、制御信号ALDSET、MLDSET、B1FPの出力期間は、1クロックサイクルである。このため、各セット信号生成部ASSET、MSSET、B1SETは、制御信号ALDSET、MLDSET、B1FPを受けるクロックサイクルを除き、アンド回路からロウレベルを出力する。一方、リセット信号生成部WRSTにおいてナンド回路の出力に接続されたアンド回路は、ハイレベルのバイパス可能信号BPENを受け、ナンド回路がロウレベルを出力するまでハイレベルを出力する。これにより、セット信号生成部ASSET、MSSET、B1SETによりセットされたフラグ領域FLGのセット状態は、ナンド回路がロウレベルを出力するまで維持される。 The output period of the control signals ALDSET, MLDSET, and B1FP is one clock cycle. Therefore, each set signal generation unit ASSET, MSSET, B1SET outputs a low level from the AND circuit except for the clock cycle that receives the control signals ALDSET, MLDSET, B1FP. On the other hand, the AND circuit connected to the output of the NAND circuit in the reset signal generation unit WRST receives the high level bypass enable signal BPEN and outputs the high level until the NAND circuit outputs the low level. Thus, the set state of the flag area FLG set by the set signal generation units ASSET, MSSET, and B1SET is maintained until the NAND circuit outputs a low level.
テーブル制御部TBLCNTは、セット信号生成部ASSET、MSSET、B1SETの出力およびリセット信号生成部WRSTの出力のオア論理を演算し、演算した論理をバイパステーブルBPTBLの入力端子に出力する複数のオア回路を有する。 The table control unit TBLCNT calculates OR logic of the outputs of the set signal generation unit ASSET, MSSET, B1SET and the reset signal generation unit WRST, and outputs a plurality of OR circuits that output the calculated logic to the input terminal of the bypass table BPTBL. Have.
図7および図8に示す回路に基づいて、バイパス制御部24は、アドレス生成部20からの制御信号ALDL、ALDHの論理に応じたタイミングで、制御信号ALDBUAの論理が示すバイパス管理テーブルBPTBLのフラグ領域FLG(図8)をセットする。また、バイパス制御部24は、リザベーションステーション18からの制御信号B1FPのタイミングで、アドレスB1FPUBAの論理が示すバイパス管理テーブルBPTBLのフラグ領域FLGをセットする。
Based on the circuits shown in FIGS. 7 and 8, the
バイパス制御部24は、セットしたフラグ領域FLGに対応するバイパス可能信号BPEN(BPEN0−BPEN31のいずれか)を有効レベルに設定する。バイパス制御部24は、コミット制御部44からの制御信号WCMTのタイミングで、アドレスWCMTUBAの論理が示すバイパス管理テーブルBPTBLのフラグ領域FLGをリセットする。バイパス制御部24は、リセットしたフラグ領域FLGに対応するバイパス可能信号BPEN(BPEN0−BPEN31のいずれか)を無効レベルに設定する。テーブル制御部TBLCNTおよびバイパス管理テーブルBPTBLは、セット信号ALDSETまたはセット信号MLDSETに基づいて、バイパス可能信号BPENを出力する出力回路の一例である。
The
なお、バイパス制御部24は、バイパス管理テーブルBPTBLのフラグ領域FLGをセットした後、データキャッシュ22から完了信号CEを受けない場合、セットしたフラグ領域FLGをリセットする。データキャッシュ22によるキャッシュミス時、データキャッシュ22からのデータは、ロードレジスタ30およびリネーミングレジスタ部36に所望のサイクルで転送されない。この場合、ロードレジスタ30およびリネーミングレジスタ部36は、浮動小数点演算器26へバイパスするデータを保持しないため、バイパスを禁止するために、フラグ領域FLGがリセットされる。完了信号CEに基づいてフラグ領域FLGをリセットする論理は、例えば、リセット信号生成部WRST内に設けられる。例えば、リセット信号生成部WRSTは、完了信号CEに対応してリセットするフラグ領域FLGを示すアドレスとアドレスWCMTUBAとのオア論理をデコーダWDECに供給するオア回路を有する。また、リセット信号生成部WRSTは、制御信号WCMTと完了信号CEとのオア論理を各ナンド回路に供給するオア回路を有する。
If the
図9は、図7および図8に示すバイパス制御部24の動作の例を示す。図2に示すアドレス生成部20は、8バイトの倍精度浮動小数点データまたは8バイトの倍幅単精度浮動小数点データを1回のアクセス要求MREQCでデータキャッシュ22から読み出す場合、制御信号ALDL、ALDHを同時に生成する。また、アドレス生成部20は、倍幅単精度浮動小数点データを2回のアクセス要求MREQCでデータキャッシュ22から4バイトずつ読み出す場合、制御信号ALDH、ALDLを順次に生成する。この場合、8バイトの倍幅単精度浮動小数点データのうち、上位4バイトがデータキャッシュ22から読み出された後、下位4バイトがデータキャッシュ22から読み出される。
FIG. 9 shows an example of the operation of the
例えば、動作OP10において、バイパス制御部24は、制御信号ALDLの生成の有無を判定する。制御信号ALDLが生成されない場合、8バイトの倍精度浮動小数点データまたは8バイトの倍幅単精度浮動小数点データは、データキャッシュ22から読み出されていない。バイパス制御部24は、動作OP12において、リネーミングレジスタRNFRの下位4バイトに対応する制御信号ALDLが生成されない場合、バイパステーブルBPTBLを更新しない。
For example, in the operation OP10, the
制御信号ALDLが生成された場合、8バイトの倍精度浮動小数点データまたは8バイトの倍幅単精度浮動小数点データが一度にデータキャッシュ22から読み出される。バイパス制御部24は、動作OP14において、制御信号ALDLとともに制御信号ALDHが生成されたか否かを判定する。
When the control signal ALDL is generated, 8-byte double-precision floating point data or 8-byte double-width single-precision floating point data is read from the
制御信号ALDLとともに制御信号ALDHが生成された場合、8バイトの倍精度浮動小数点データまたは8バイトの倍幅単精度浮動小数点データがデータキャッシュ22から1回のアクセス要求MREQCで読み出される。すなわち、8バイトのデータの上位4バイトと下位4バイトとがデータキャッシュ22からロードされるタイミングのずれは発生しない。この場合、バイパス制御部24は、動作OP16において、制御信号ALDL、ALDHとともに受けるアドレスMALDUBAにより示されるバイパステーブルBPTBLのフラグ領域FLGをセットする。
When the control signal ALDH is generated together with the control signal ALDL, 8-byte double-precision floating point data or 8-byte double-width single-precision floating point data is read from the
制御信号ALDLとともに制御信号ALDHが生成されない場合、8バイトの倍幅単精度浮動小数点データは、2回に分けてデータキャッシュ22から読み出される。すなわち、8バイトのデータの上位4バイトと下位4バイトとがデータキャッシュ22からロードされるタイミングのずれが発生する。この場合、バイパス制御部24は、動作OP18において、制御信号ALDLの受信から2クロックサイクル後にセット信号MLDSETとアドレスMLDUBAを生成する。この後、バイパス制御部24は、動作OP16において、セット信号MLDSETに同期してアドレスMLDUBAにより示されるバイパステーブルBPTBLのフラグ領域FLGをセットする。セット信号MLDSETに同期するフラグ領域FLGのセットにより、2回に分けてデータキャッシュ22から読み出された倍幅単精度浮動小数点データは、図12に示すように、リネーミングレジスタRNFRを介してバイパス可能になる。図12で説明するように、リネーミングレジスタRNFRからのデータの読み出しは、2クロックサイクル掛かる。このため、バイパス制御部24は、セット信号MLDSETを制御信号ALDLから2クロックサイクル後に生成することで、リネーミングレジスタRNFRからバイパスされたデータを用いた演算の開始を遅らせる。
When the control signal ALDH is not generated together with the control signal ALDL, the 8-byte double-width single-precision floating point data is read from the
図10は、図2に示す演算処理装置OPD2の動作の例を示す。図10では、先行する浮動小数点データのロード命令の実行後に複数の浮動小数点データの演算命令A、B、C、Dが実行される。図10のロード命令は、倍精度浮動小数点データまたは倍幅単精度浮動小数点データがデータキャッシュ22の1つのキャッシュラインから読み出される例を示す。また、演算命令A、B、C、Dは、ロード命令によりロードされたデータが浮動小数点レジスタFRに格納される前に、ロードレジスタ30またはリネーミングレジスタRNFRからバイパスさせるデータを使用して実行される。
FIG. 10 shows an example of the operation of the arithmetic processing unit OPD2 shown in FIG. In FIG. 10, a plurality of floating point data arithmetic instructions A, B, C, and D are executed after execution of the preceding floating point data load instruction. The load instruction in FIG. 10 shows an example in which double precision floating point data or double width single precision floating point data is read from one cache line of the
図10において、ロード命令のD、DT、P、PT、B1、B2、A、T、M、B、R、RTサイクルは、以下に示すように、ロード命令の実行時のパイプラインのステージを示す。
(a)D(Decode):デコーダ部14が命令を解読し、解読した命令情報INSをメモリアクセス命令用のリザベーションステーションRSMAへ転送する。
(b)DT(Decode Transfer):リザベーションステーションRSMAが、Dサイクルで出力された命令情報INSを保持する。
(c)P(Priority):リザベーションステーションRSMAが、アドレス生成部20に出力する命令を決定する。
(d)PT(Priority Transfer):リザベーションステーションRSMAが、Pサイクルで決定した命令をアドレス生成部20に出力する。
(e)B1、B2(Buffer):アドレス生成部20が、データキャッシュ22等にアクセスするアドレスを生成するためのデータ(ソースレジスタ)を決定する。
(f)A(Address):アドレス生成部20が、データキャッシュ22等にアクセスするアドレスを計算する。
(g)T(Tag):データキャッシュ22がタグ領域にアクセスする。
(h)M(Match):データキャッシュ22がタグ領域から読み出したアドレスをアドレス生成部20から受けたアドレスと比較し、キャッシュヒット、キャッシュミスを判定する。
(i)B(Buffer):データキャッシュ22内で読み出したデータをバッファする。
(j)R(Result):データキャッシュ22へのアクセスを完了し、読み出したデータをロードレジスタ30に転送する。
(k)RT(Result):Rサイクルでロードレジスタ30に転送されたデータをリネーミングレジスタ部36に転送する。
In FIG. 10, the D, DT, P, PT, B1, B2, A, T, M, B, R, and RT cycles of the load instruction are the pipeline stages at the time of execution of the load instruction as shown below. Show.
(A) D (Decode): The
(B) DT (Decode Transfer): The reservation station RSMA holds the instruction information INS output in the D cycle.
(C) P (Priority): The reservation station RSMA determines an instruction to be output to the
(D) PT (Priority Transfer): The reservation station RSMA outputs an instruction determined in the P cycle to the
(E) B1, B2 (Buffer): The
(F) A (Address): The
(G) T (Tag): The
(H) M (Match): The address read by the
(I) B (Buffer): Buffers data read in the
(J) R (Result): The access to the
(K) RT (Result): The data transferred to the
図10において、演算命令のD、DT、P、PT、B1、B2、X1、X2、X3、X4サイクルは、以下に示すように、演算命令の実行時のパイプラインのステージを示す。
(l)D(Decode):デコーダ部14が命令を解読し、解読した命令情報INSを浮動小数点データの演算用のリザベーションステーションRSFLTへ転送する。
(m)DT(Decode Transfer):リザベーションステーションRSFLTが、Dサイクルで出力された命令情報INSを保持する。
(n)P(Priority):リザベーションステーションRSFLTが、浮動小数点演算器26に投入する命令を決定する。
(o)PT(Priority Transfer):リザベーションステーションRSFLTが、Pサイクルで決定した命令を浮動小数点演算器26に投入する。
(p)B1、B2(Buffer):浮動小数点演算器26が、演算に必要なデータ(ソースレジスタ)を決定する。
(q)X1、X2、X3、X4(Execute 1-4):浮動小数点演算器26が、命令を実行する。浮動小数点データの演算は、X1−X4の4サイクルで実行される。X4サイクルの次のサイクルで、演算により得られたデータがリネーミングレジスタ部36へ格納される。
In FIG. 10, cycles D, DT, P, PT, B1, B2, X1, X2, X3, and X4 of the operation instruction indicate pipeline stages when the operation instruction is executed, as shown below.
(L) D (Decode): The
(M) DT (Decode Transfer): The reservation station RSFLT holds the instruction information INS output in the D cycle.
(N) P (Priority): The reservation station RSFLT determines an instruction to be input to the floating point
(O) PT (Priority Transfer): The reservation station RSFLT inputs the instruction determined in the P cycle to the floating point
(P) B1, B2 (Buffer): The floating point
(Q) X1, X2, X3, X4 (Execute 1-4): The floating point
図10のロード命令は、キャッシュヒット時の動作を示す。キャッシュミス時には、D、DT、P、PT、B1、B2、A、T、Mサイクルが、1番目のクロックサイクルより手前のクロックサイクルで実行される。そして、アドレス生成部20およびデータキャッシュ22は、7番目のクロックサイクルからA、T、Mサイクルを再度実行し、キャッシュヒット時に、Mサイクルに続けてB、R、RTサイクルを再度実行する。すなわち、ロード命令におけるキャッシュミス時の動作は、図10からD、DT、P、PT、B1、B2サイクルが削除される。
The load instruction in FIG. 10 indicates an operation at the time of a cache hit. At the time of a cache miss, the D, DT, P, PT, B1, B2, A, T, and M cycles are executed in the clock cycle before the first clock cycle. Then, the
また、図2に示す演算処理装置OPD2は、デコーダ部14が解読した命令の順に限定せず、実行可能な命令を実行するアウトオブオーダ実行を行う。このため、演算命令A、B、C、Dにおいて、DTサイクルの実行からPサイクルの実行までのクロックサイクル数は、リザベーションステーションRSFLTによる実行順の判定結果に依存して変化する。例えば、演算命令AのD、DTサイクルは、1番目のクロックサイクルより手前のクロックサイクルで実行される。
2 is not limited to the order of instructions decoded by the
ロード命令において、アドレス生成部20は、Aサイクルでデータキャッシュへの1回のアクセスでデータを読み出せると判断し、データキャッシュ22に図2に示すアクセス要求MREQCを発行する。また、アドレス生成部20は、アクセス要求MREQCとともに、バイパス制御部24に制御信号ALDL、ALDHおよびアドレスALDUBAを出力する(図10(a))。
In the load instruction, the
バイパス制御部24は、制御信号ALDL、ALDHに応答してセット信号ALDSETを生成し、アドレスALDUBAが示すフラグ領域FLGをセットすることでバイパス可能信号BPENを有効レベルに設定する(図10(b))。
The
データキャッシュ22は、ロード命令のRサイクルにおいて読み出しサイクルを完了し、読み出した8バイトのデータをロードレジスタ30に転送する(図10(c))。ロードレジスタ30に転送されたデータは、RTサイクルでリネーミングレジスタ部36に転送される。リネーミングレジスタ部36の書き込み制御部WCNT3(図4)は、ロードレジスタ30から転送される8バイトのデータに基づいて、共通なタイミングで書き込み制御信号WE1H、WE1Lを生成する(図10(d))。そして、書き込み制御部WCNT3は、リネーミングレジスタRNFRのいずれかに8バイトのデータを格納する(図10(e))。例えば、書き込み制御部WCNT3は、リザベーションステーション18から受ける有効レベルに設定されたバイパス可能信号BPENを示す情報に基づいてデータを格納するリネーミングレジスタRNFRを決定する。なお、例えば、リネーミングレジスタRNFRからのデータの読み出しは、2クロックサイクル掛かるため、リネーミングレジスタRNFRからのデータのバイパスは、14番目のクロックサイクルから可能になる。
The
リザベーションステーションRSFLTは、リザベーションステーションRSMAがB1、B2サイクルでソースレジスタを決定した後、8番目のクロックサイクルで、バイパスが可能なことを判断する。そして、リザベーションステーションRSFLTは、9番目のクロックサイクルで演算命令AのPサイクルを実行し、演算命令Aを浮動小数点演算器26に投入する(図10(f))。 The reservation station RSFLT determines that the bypass is possible in the eighth clock cycle after the reservation station RSMA determines the source register in the B1 and B2 cycles. Then, the reservation station RSFLT executes the P cycle of the arithmetic instruction A in the ninth clock cycle, and inputs the arithmetic instruction A to the floating point arithmetic unit 26 (FIG. 10 (f)).
浮動小数点演算器26は、演算命令AのB2サイクルでロードレジスタ30からバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図10(g))。図10において、太い破線で示す矢印は、データがロードレジスタ30またはリネーミングレジスタRNFRから浮動小数点演算器26にバイパスされることを示す。浮動小数点演算器26は、演算命令BのB1サイクルでロードレジスタ30からバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図10(h))。
The floating point
また、浮動小数点演算器26は、演算命令CのB2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図10(i))。浮動小数点演算器26は、演算命令DのB2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図10(j))。
The floating point
図11は、図2に示す演算処理装置OPD2の動作の別の例を示す。図10と同一または同様の動作については、詳細な説明は省略する。図11では、先行する浮動小数点データの演算命令の実行後に複数の浮動小数点データの演算命令A、B、C、Dが実行される。図11において先行する演算命令では、倍精度浮動小数点データ、倍幅単精度浮動小数点データまたは単精度浮動小数点データが使用される。また、演算命令A、B、C、Dは、先行する演算命令により得られたデータが浮動小数点レジスタFRに格納される前に、リザルトレジスタ32またはリネーミングレジスタRNFRからバイパスさせるデータを使用して実行される。 FIG. 11 shows another example of the operation of the arithmetic processing unit OPD2 shown in FIG. Detailed description of the same or similar operations as in FIG. 10 will be omitted. In FIG. 11, a plurality of floating-point data arithmetic instructions A, B, C, and D are executed after execution of the preceding floating-point data arithmetic instruction. In the operation instruction preceding in FIG. 11, double precision floating point data, double width single precision floating point data or single precision floating point data is used. The arithmetic instructions A, B, C, and D use data bypassed from the result register 32 or the renaming register RNFR before the data obtained by the preceding arithmetic instruction is stored in the floating point register FR. Executed.
リザベーションステーションRSFLTは、先行する演算命令のB1サイクルで、演算命令A、B、C、Dで使用するデータをリザルトレジスタ32またはリネーミングレジスタRNFRからバイパス可能と判断する。そして、リザベーションステーションRSFLTは、制御信号B1FPおよびアドレスB1FPUBAを出力する(図11(a))。 The reservation station RSFLT determines that the data used in the operation instructions A, B, C, and D can be bypassed from the result register 32 or the renaming register RNFR in the B1 cycle of the preceding operation instruction. The reservation station RSFLT outputs a control signal B1FP and an address B1FPUBA (FIG. 11 (a)).
バイパス制御部24は、制御信号B1FPに応答してアドレスB1FPUBAが示すフラグ領域FLGをセットすることでバイパス可能信号BPENを有効レベルに設定する(図11(b))。
浮動小数点演算器26は、先行する演算命令をX1からX4サイクルで実行し、演算結果をX4サイクルでリザルトレジスタ32に転送する(図11(c))。リザルトレジスタ32に転送されたデータは、次のクロックサイクルでリネーミングレジスタRNFRに転送される(図11(d))。
The floating point
リザベーションステーションRSFLTは、7番目のクロックサイクルで演算命令AのPサイクルを実行し、演算命令Aを浮動小数点演算器26に投入する(図11(e))。浮動小数点演算器26は、演算命令AのX1サイクルでリザルトレジスタ32からバイパスされるデータを選択し、選択したデータを用いてX1サイクルから演算を開始する(図11(f))。浮動小数点演算器26は、演算命令BのB2サイクルでリザルトレジスタ32からバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図11(g))。浮動小数点演算器26は、演算命令CのB1サイクルでリザルトレジスタ32からバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図11(h))。浮動小数点演算器26は、演算命令DのB2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図11(i))。なお、図10で説明したように、リネーミングレジスタRNFRからのデータの読み出しは、2クロックサイクル掛かるため、リネーミングレジスタRNFRからのデータのバイパスは、13番目のクロックサイクルから可能になる。
The reservation station RSFLT executes the P cycle of the arithmetic instruction A in the seventh clock cycle, and inputs the arithmetic instruction A to the floating point arithmetic unit 26 (FIG. 11 (e)). The floating point
図12は、図2に示す演算処理装置OPD2の動作のさらなる別の例を示す。図10と同一または同様の動作については、詳細な説明は省略する。図12では、先行する倍幅単精度浮動小数点データのロード命令において、8バイトのデータがデータキャッシュ22の2つのキャッシュラインを跨いで保持されている。また、演算命令A、B、C、Dは、倍幅単精度浮動小数点データの演算を実行する命令であり、先行するロード命令により得られたデータが浮動小数点レジスタFRに格納される前にリネーミングレジスタRNFRからバイパスさせるデータを使用して実行される。
FIG. 12 shows still another example of the operation of the arithmetic processing unit OPD2 shown in FIG. Detailed description of the same or similar operations as in FIG. 10 will be omitted. In FIG. 12, 8-byte data is held across two cache lines of the
ロード命令で読み出される倍幅単精度浮動小数点データが2つのキャッシュラインから読み出される場合、A、T、M、B、R、RTサイクルが間隔を置いて2回実行される(図12(a)、(b))。図2に示すアドレス生成部20は、最初の読み出しサイクルで倍幅単精度浮動小数点データのうち上位4バイトを読み出し、2番目の読み出しサイクルで倍幅単精度浮動小数点データのうち下位4バイトを読み出す。
When double-width single-precision floating point data read by a load instruction is read from two cache lines, A, T, M, B, R, and RT cycles are executed twice at intervals (FIG. 12A). (B)). The
アドレス生成部20は、上位4バイトのデータをデータキャッシュ22から読み出すための最初のAサイクルにおいて、バイパス制御部24に制御信号ALDHおよびアドレスALDUBAを出力する(図12(c))。1番目のクロックサイクルにおいて、バイパス制御部24のセット信号生成回路SSGEN(図7)は、無効レベルの制御信号ALDLと有効レベルの制御信号ALDHとを受け、セット信号ASDSETを無効レベルに維持する(図12(d))。このため、バイパス管理テーブルBPTBLにおいて、アドレスALDUBAが示すフラグ領域FLGはセットされず、バイパス可能信号BPENは出力されない(図12(e))。
The
セット信号生成回路SSGENは、アドレスALDUBAを2クロックサイクル遅らせてアドレスMLDUBAを出力する(図12(f))。しかし、セット信号MLDSETが無効レベルに維持されるため、アドレスALDUBAが示すフラグ領域FLGはセットされず、バイパス可能信号BPENは出力されない(図12(g))。 The set signal generation circuit SSGEN delays the address ALDUBA by two clock cycles and outputs the address MLDUBA (FIG. 12 (f)). However, since the set signal MLDSET is maintained at the invalid level, the flag area FLG indicated by the address ALDUBA is not set, and the bypass enable signal BPEN is not output (FIG. 12 (g)).
データキャッシュ22は、最初のアクセスサイクルのRサイクルにおいて読み出した上位4バイトのデータをロードレジスタ30に転送する(図12(h))。リネーミングレジスタ部36の書き込み制御部WCNT3(図4)は、ロードレジスタ30から転送される上位4バイトのデータに基づいて、書き込み制御信号WE1Hを生成する(図12(i))。そして、書き込み制御部WCNT3は、リネーミングレジスタRNFRのいずれかに上位4バイトのデータを格納する(図12(j))。例えば、書き込み制御部WCNT3は、リザベーションステーション18から受ける有効レベルに設定されたバイパス可能信号BPENを示す情報に基づいてデータを格納するリネーミングレジスタRNFRを決定する。
The
アドレス生成部20は、下位4バイトのデータをデータキャッシュ22から読み出すための最初のAサイクルにおいて、バイパス制御部24に制御信号ALDLおよびアドレスALDUBAを出力する(図12(k))。9番目のクロックサイクルにおいて、バイパス制御部24のセット信号生成回路SSGENは、有効レベルの制御信号ALDLと無効レベルの制御信号ALDHとを受け、セット信号ASDSETを無効レベルに維持する(図12(l))。このため、バイパス管理テーブルBPTBLにおいて、アドレスALDUBAが示すフラグ領域FLGはセットされず、バイパス可能信号BPENは出力されない(図12(m))。
The
一方、セット信号生成回路SSGEN(図7)におけるサイクル信号生成部MSGENは、有効レベルの制御信号ALDLと無効レベルの制御信号ALDHと2クロックサイクル遅らせた信号を11番目のクロックサイクルに受ける。そして、サイクル信号生成部MSGENは、セット信号MLDSETを有効レベルに設定する(図12(n))。また、セット信号生成回路SSGENは、アドレスALDUBAを2クロックサイクル遅らせたアドレスMLDUBAを出力する(図12(o))。これにより、バイパス管理テーブルBPTBLにおいて、アドレスALDUBAが示すフラグ領域FLGがセットされ、バイパス可能信号BPENが出力される(図12(p))。 On the other hand, the cycle signal generation unit MSGEN in the set signal generation circuit SSGEN (FIG. 7) receives an effective level control signal ALDL, an invalid level control signal ALDH, and a signal delayed by two clock cycles in the eleventh clock cycle. Then, the cycle signal generation unit MSGEN sets the set signal MLDSET to an effective level (FIG. 12 (n)). The set signal generation circuit SSGEN outputs the address MLDUBA obtained by delaying the address ALDUBA by two clock cycles (FIG. 12 (o)). As a result, the flag area FLG indicated by the address ALDUBA is set in the bypass management table BPTBL, and the bypass enable signal BPEN is output (FIG. 12 (p)).
データキャッシュ22は、2番目のアクセスサイクルのRサイクルにおいて読み出した下位4バイトのデータをロードレジスタ30に転送する(図12(q))。リネーミングレジスタ部36の書き込み制御部WCNT3(図4)は、ロードレジスタ30から転送される下位4バイトのデータに基づいて、書き込み制御信号WE1Lを生成する(図12(r))。そして、書き込み制御部WCNT3は、リネーミングレジスタRNFRのいずれかに下位4バイトのデータを格納する(図12(s))。例えば、書き込み制御部WCNT3は、リザベーションステーション18から受ける有効レベルに設定されたバイパス可能信号BPENを示す情報に基づいてデータを格納するリネーミングレジスタRNFRを決定する。
The
これにより、8バイトの倍幅単精度浮動小数点データがリネーミングレジスタRNFR内に揃い、リネーミングレジスタRNFRからの倍幅単精度浮動小数点データのバイパスが可能になる。なお、8バイトの倍幅単精度浮動小数点データが2つのキャッシュラインから読み出される場合、ロードレジスタ30は、上位4バイトのデータまたは下位4バイトのデータを互いに異なるタイミングで保持する。このため、ロードレジスタ30は、倍幅単精度浮動小数点データのバイパスには使用されない。換言すれば、バイパス制御部24は、バイパス可能信号BPENの出力サイクルを図10および図11に比べて遅らせ、ロードレジスタ30から浮動小数点演算器26へのデータのバイパスを禁止する。データが揃っていないロードレジスタ30からのバイパスを禁止することで、演算処理装置OPD2の誤動作を抑制することができる。
As a result, double-byte single-precision floating point data of 8 bytes is aligned in the renaming register RNFR, and the double-width single-precision floating point data from the renaming register RNFR can be bypassed. When 8-byte double-width single-precision floating-point data is read from two cache lines, the
浮動小数点演算器26は、演算命令A、B、C、Dのそれぞれにおいて、B2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図12(t)、(u)、(v)、(w))。
In each of the arithmetic instructions A, B, C, and D, the floating point
図12に示すように、倍幅単精度浮動小数点データが2つのキャッシュラインから読み出される場合、バイパス制御部24は、上位4バイトのデータより後に読み出される下位4バイトのデータの読み出しを待つ。さらに、バイパス制御部24は、下位4バイトのデータの読み出しの開始に対応する制御信号ALDLの生成から2クロックサイクル後に、フラグ領域FLGをセットし、バイパス可能信号BPENを出力する。
As shown in FIG. 12, when double-width single-precision floating point data is read from two cache lines, the
これにより、リザベーションステーションRSFLTは、図10に比べて2クロックサイクル遅くイネーブル信号BPENを受ける。データキャッシュ22からロードレジスタ30へのデータの転送は、演算命令AのPサイクルと同じサイクルで実行される。このため、演算命令AのPサイクルにおいて、リザベーションステーションRSFLTは、ロードレジスタ30からのデータのバイパスをあきらめ、リネーミングレジスタRNFRからデータをバイパスさせることを決定する。この結果、倍幅単精度浮動小数点データがリネーミングレジスタRNFRに揃う前に、ロードレジスタ30からデータがバイパスされることを抑止することができる。換言すれば、リザベーションステーションRSFLTは、演算命令AのPサイクルを、リネーミングレジスタRNFRからデータをバイパス可能な最も早いクロックサイクルに割り当てる。例えば、リネーミングレジスタRNFRからのデータの読み出しは2クロックサイクル掛かるため、演算命令AのPサイクルは、13番目のクロックサイクルに設定される。
Thereby, the reservation station RSFLT receives the enable signal BPEN two clock cycles later than in FIG. Data transfer from the
図13は、図2に示す演算処理装置OPD2の動作のさらなる別の例を示す。図10と同一または同様の動作については、詳細な説明は省略する。図13は、先行する浮動小数点データのロード命令または先行する浮動小数点データの演算命令の実行完了時の動作を示す。 FIG. 13 shows still another example of the operation of the arithmetic processing unit OPD2 shown in FIG. Detailed description of the same or similar operations as in FIG. 10 will be omitted. FIG. 13 shows the operation at the completion of the execution of the preceding floating point data load instruction or the preceding floating point data arithmetic instruction.
図13において、7番目と8番目のクロックサイクルのCサイクルとWサイクルは、以下に示すように、命令の実行が完了したときのコミット制御部44によるパイプラインのステージを示す。
(a)C(Commit):コミット制御部44が、命令の実行が完了したか否かを判定する。
(b)W(Write):コミット制御部44が、実行が完了した命令で使用したリネーミングレジスタRNFR、RNR、浮動小数点レジスタFR、固定小数点レジスタR等を更新する。また、コミット制御部44が、レジスタ管理テーブル16、リザベーションステーション18、バイパス制御部24等における命令で使用したリソースの解放を行う。
In FIG. 13, C and W cycles of the seventh and eighth clock cycles indicate pipeline stages by the commit
(A) C (Commit): The commit
(B) W (Write): The commit
例えば、先行するロード命令のRTサイクルまたは先行する演算命令のX4サイクルは、3番目のクロックサイクルで完了している。コミット制御部44は、命令の完了処理を、デコーダ部14が命令を解読した順(プログラムの記述順)に実行するため、Cサイクルは、先行して解読した命令の完了を待って実行される。この例では、X4サイクルまたはRTサイクルの4クロックサイクル後にCサイクルが実行される。なお、Cサイクルは、最短で、RTサイクルまたはX4サイクルの次のクロックサイクルで実行される。
For example, the RT cycle of the preceding load instruction or the X4 cycle of the preceding arithmetic instruction is completed in the third clock cycle. Since the commit
コミット制御部44は、Wサイクルにおいて、制御信号WCMTおよびアドレスWCMTUBAをバイパス制御部24に出力する(図13(a))。アドレスWCMTUBAは、ロード命令または演算命令で使用されたリネーミングレジスタRNFRを示す。
The commit
また、コミット制御部44は、Wサイクルにおいて、レジスタ管理テーブル16にリセット信号RST1を出力し、リザベーションステーション18にリセット信号RST2を出力する(図13(b))。さらに、コミット制御部44は、Wサイクルにおいて、リネーミングレジスタ部36に読み出し要求RCMT1を出力する(図13(c))。コミット制御部44は、読み出し要求RCMT1から2クロックサイクル後に、浮動小数点レジスタ部40に書き込み要求WCMT1を出力する(図13(d))。図10で説明したように、2クロックサイクルは、リネーミングレジスタRNFRからの読み出しに掛かる時間である。
In the W cycle, the commit
なお、図13では、リセット信号RST1、RST2は、単一の信号で示されるが、リセット信号RST1、RST2のそれぞれは、複数ビットの信号である。例えば、リセット信号RST1、RST2は、アドレスWCMTUBAと同じ情報を含む。同様に、読み出し要求RCMT1および書き込み要求WCMT1のそれぞれは、単一の信号で示されるが、読み出し要求RCMT1および書き込み要求WCMT1のそれぞれは、複数ビットの信号である。例えば、読み出し要求RCMT1および書き込み要求WCMT1は、リネーミングレジスタRNFRおよび浮動小数点レジスタFRの番号を示す情報を含む。 In FIG. 13, the reset signals RST1 and RST2 are shown as a single signal, but each of the reset signals RST1 and RST2 is a multi-bit signal. For example, the reset signals RST1 and RST2 include the same information as the address WCMTUBA. Similarly, each of the read request RCMT1 and the write request WCMT1 is indicated by a single signal, but each of the read request RCMT1 and the write request WCMT1 is a multi-bit signal. For example, the read request RCMT1 and the write request WCMT1 include information indicating the numbers of the renaming register RNFR and the floating point register FR.
バイパス制御部24は、制御信号WCMTに応答してアドレスWCMTUBAが示すフラグ領域FLGをリセットすることでバイパス可能信号BPENを無効レベルに設定する(図13(e))。
The
レジスタ管理テーブル16は、リセット信号RST1に基づいて、リセット信号RST1で指示されるリネーミングレジスタRNFRに対応する領域のビット値Pをリセットする(図13(f))。リザベーションステーション18は、リセット信号RST2に基づいて、リセット信号RST2で指示されるリネーミングレジスタRNFRに対応して保持しているビット値Pをリセットする。
Based on the reset signal RST1, the register management table 16 resets the bit value P in the area corresponding to the renaming register RNFR indicated by the reset signal RST1 (FIG. 13 (f)). The
リネーミングレジスタ部36は、読み出し要求RCMT1に基づいて、読み出し要求RCMT1で指示されるリネーミングレジスタRNFRからデータを出力する。浮動小数点レジスタ部40は、書き込み要求WCMT1に基づいて、リネーミングレジスタRNFRから出力されるデータを、書き込み要求WCMT1で指示される浮動小数点レジスタFRに格納する(図13(g))。すなわち、リネーミングレジスタRNFRから浮動小数点レジスタFRにデータが転送される。
Based on the read request RCMT1, the
リザベーションステーションRSFLTは、ビット値Pがリセットされる前の7番目のクロックサイクルで、リネーミングレジスタRNFRからデータをバイパス可能と判断する。そして、リザベーションステーションRSFLTは、8番目のクロックサイクルにおいて、演算命令AのPサイクルを実行し、演算命令Aを浮動小数点演算器26に投入する(図13(h))。 The reservation station RSFLT determines that data can be bypassed from the renaming register RNFR in the seventh clock cycle before the bit value P is reset. Then, the reservation station RSFLT executes the P cycle of the arithmetic instruction A in the eighth clock cycle, and inputs the arithmetic instruction A to the floating point arithmetic unit 26 (FIG. 13 (h)).
同様に、リザベーションステーションRSFLTは、ビット値Pがリセットされる前の8番目のクロックサイクルで、リネーミングレジスタRNFRからデータをバイパス可能と判断する。そして、リザベーションステーションRSFLTは、9番目のクロックサイクルにおいて、演算命令BのPサイクルを実行し、演算命令Bを浮動小数点演算器26に投入する(図13(i))。 Similarly, the reservation station RSFLT determines that data can be bypassed from the renaming register RNFR in the eighth clock cycle before the bit value P is reset. Then, the reservation station RSFLT executes the P cycle of the arithmetic instruction B in the ninth clock cycle, and inputs the arithmetic instruction B to the floating point arithmetic unit 26 (FIG. 13 (i)).
浮動小数点演算器26は、演算命令AのB2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図13(j))。浮動小数点演算器26は、演算命令BのB2サイクルでリネーミングレジスタRNFRからバイパスされるデータを選択し、選択したデータをX1サイクルで使用する(図13(k))。
The floating point
一方、リザベーションステーションRSFLTは、ビット値Pがリセットされた後の9番目のクロックサイクルで、リネーミングレジスタRNFRからのデータのバイパスは無理であると判断する。そして、リザベーションステーションRSFLTは、10番目のクロックサイクルにおいて、演算命令CのPサイクルを実行し、演算命令Cを浮動小数点演算器26に投入する(図13(l))。浮動小数点演算器26は、演算命令CのB2サイクルで浮動小数点レジスタFRからデータを読み出し、読み出したデータをX1サイクルで使用する(図13(m))。
On the other hand, the reservation station RSFLT determines that it is impossible to bypass data from the renaming register RNFR in the ninth clock cycle after the bit value P is reset. Then, the reservation station RSFLT executes the P cycle of the arithmetic instruction C in the tenth clock cycle, and inputs the arithmetic instruction C to the floating point arithmetic unit 26 (FIG. 13 (l)). The floating point
以上、図2から図13に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、データキャッシュ22からリネーミングレジスタRNFRへロードされるデータのタイミングずれが発生する場合にも、既存のリネーミングレジスタRNFRを利用してデータを待ち合わせることができる。また、バイパス制御部24は、図7で説明した簡易な回路により、データがデータキャッシュ22から1回で読み出されるか複数回に分けて読み出されるかを判定することができる。この結果、演算処理装置OPD2の回路規模の増加を抑制することができ、演算処理装置OPD2の消費電力の増加を抑えることができ、演算処理装置OPD2の動作周波数を向上させることができる。
As mentioned above, also in embodiment shown in FIGS. 2-13, the effect similar to embodiment shown in FIG. 1 can be acquired. That is, even when a timing shift occurs in data loaded from the
例えば、データがデータキャッシュ22から複数回に分けて読み出される場合にも、図4で説明したように、リネーミングレジスタ部36の回路規模を従来と同等にすることができる。また、データキャッシュ22から異なるタイミングで読み出されるデータをリネーミングレジスタRNFRで結合することできるため、データの結合用の回路は演算処理装置OPD2に設けられない。
For example, even when data is read from the
さらに、データがデータキャッシュ22から複数回に分けて読み出される場合、バイパス制御部24は、データが揃っていないロードレジスタ30からのバイパスを禁止することで、演算処理装置OPD2の誤動作を抑制することができる。
Further, when the data is read from the
一方、例えば、上位4バイトと下位4バイトとのデータに対応して、2ビットを記憶可能なフラグ領域FLGをバイパス管理テーブルBPTBLに設け、2ビットが両方セットされたときにデータが揃ったと判断して2つの4バイトデータを結合してもよい。しかしながら、この場合、バイパス管理テーブルBPTBLの規模が大きくなり、また、フラグ領域FLGの各ビットをセットする制御回路が追加される。さらに、データキャッシュ22の出力で上位4バイトと下位4バイトとのデータを結合する場合、下位4バイトのデータがデータキャッシュ22から出力されるまで、先に出力された上位4バイトのデータを保持するバッファ回路が設けられる。このため、回路規模は増加する。
On the other hand, for example, a flag area FLG that can store 2 bits is provided in the bypass management table BPTBL corresponding to the data of the upper 4 bytes and the lower 4 bytes, and it is determined that the data is ready when both 2 bits are set. Then, two 4-byte data may be combined. However, in this case, the size of the bypass management table BPTBL is increased, and a control circuit for setting each bit of the flag area FLG is added. Further, when the data of the upper 4 bytes and the lower 4 bytes are combined at the output of the
なお、図2から図13に示す実施形態は、ロード命令に基づいて、データキャッシュ22から複数回に分けて出力される固定小数点データを固定小数点レジスタRに転送する場合のバイパス制御に適用されてもよい。
The embodiment shown in FIGS. 2 to 13 is applied to bypass control when transferring fixed-point data output from the
また、上述した実施形態は、SIMD(single instruction multiple data)方式の演算処理装置に適用されてもよい。この場合、図3に示す各浮動小数点レジスタFRは、並列処理される複数のデータ群を格納する複数の領域を有し、図4に示す各リネーミングレジスタRNFRは、並列処理される複数のデータ群を格納する複数の領域を有する。また、浮動小数点演算器26は、複数のデータ群を並列に演算する複数の演算器を有する。なお、ロード命令に基づいて、データキャッシュ22から3回以上に分けてデータが読み出される場合、バイパス制御部は、最後に読み出すデータの開始信号(ALDL等)に基づいて、バイパス可能信号BPENを生成する。
Further, the above-described embodiment may be applied to a SIMD (single instruction multiple data) type arithmetic processing apparatus. In this case, each floating point register FR shown in FIG. 3 has a plurality of areas for storing a plurality of data groups to be processed in parallel, and each renaming register RNFR shown in FIG. 4 has a plurality of data to be processed in parallel. It has a plurality of areas for storing groups. The floating point
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。 From the above detailed description, features and advantages of the embodiments will become apparent. This is intended to cover the features and advantages of the embodiments described above without departing from the spirit and scope of the claims. Also, any improvement and modification should be readily conceivable by those having ordinary knowledge in the art. Therefore, there is no intention to limit the scope of the inventive embodiments to those described above, and appropriate modifications and equivalents included in the scope disclosed in the embodiments can be used.
1…デコーダ部;2…実行制御部;3…演算実行部;4…メモリ制御部;5…メモリ;6…バイパス制御部;7…第1レジスタ;8…第2レジスタ;9…レジスタ管理部;10…命令キャッシュ;12…命令バッファ;14…デコーダ部;16…レジスタ管理テーブル;18…リザベーションステーション;20…アドレス生成部;22…データキャッシュ;24…バイパス制御部;26…浮動小数点演算器;28…固定小数点演算器;30…ロードレジスタ;32、34…リザルトレジスタ;36、38…リネーミングレジスタ部;40…浮動小数点レジスタ部;42…固定小数点レジスタ部;44…コミット制御部;ALDL、ALDH…制御信号;ALDUBA…アドレス;ASGEN…サイクル信号生成部;BPEN…バイパス可能信号;BPTBL…バイパス管理テーブル;FLG…フラグ領域;FR…浮動小数点レジスタ;MREQ、MREQC…アクセス要求;MSGEN…サイクル信号生成部;OPD1、OPD2…演算処理装置;R…固定小数点レジスタ;RMTBL1、RMTBL2…テーブル;RNFR、RNR…リネーミングレジスタ;RSFLT、RSFIX、RSMA…リザベーションステーション;SSGEN…セット信号生成回路;TSCNT…テーブル
DESCRIPTION OF
Claims (7)
前記デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、
前記実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、
前記演算実行部で使用するデータを記憶するメモリと、
前記演算実行部が実行する演算に使用するデータを保持する複数の第1レジスタと、
演算に使用する第1レジスタに対応して割り当てられ、前記演算命令または前記メモリアクセス命令の実行により得られるデータを前記第1レジスタに転送する前に一時的に保持する複数の第2レジスタと、
前記第1レジスタと前記第2レジスタとの割り当ての関係を保持し、前記実行制御部により参照されるレジスタ管理部と、
前記実行制御部から受ける前記メモリからデータを読み出すメモリアクセス命令に基づいて前記メモリにアクセス要求を出力するメモリ制御部と、
前記メモリ制御部が前記メモリアクセス命令に基づいて複数の前記アクセス要求を出力し、前記メモリから複数回に分けて読み出されるデータを前記第2レジスタに順次に転送する場合、前記メモリから最後に読み出されるデータが前記第2レジスタに転送された後に前記第2レジスタから前記演算実行部へデータをバイパスするタイミングで、前記実行制御部に前記演算命令を出力させるバイパス制御部を有することを特徴とする演算処理装置。 A decoder unit for decoding instructions;
An execution control unit that holds instructions decoded by the decoder unit and sequentially outputs executable instructions;
An operation execution unit that executes an operation based on an operation instruction indicating execution of the operation received from the execution control unit;
A memory for storing data used in the calculation execution unit;
A plurality of first registers for holding data used for the calculation executed by the calculation execution unit;
A plurality of second registers assigned corresponding to the first register used for the operation and temporarily holding the data obtained by executing the operation instruction or the memory access instruction before transferring to the first register;
A register management unit that holds an allocation relationship between the first register and the second register and is referred to by the execution control unit;
A memory control unit that outputs an access request to the memory based on a memory access instruction for reading data from the memory received from the execution control unit;
When the memory control unit outputs a plurality of the access requests based on the memory access command and sequentially transfers the data read out from the memory in a plurality of times to the second register, it is read out last from the memory. And a bypass control unit that causes the execution control unit to output the arithmetic instruction at a timing to bypass the data from the second register to the arithmetic execution unit after the data to be transferred is transferred to the second register. Arithmetic processing unit.
前記バイパス制御部は、前記複数のデータ群に対応する前記開始信号を異なるタイミングで受けた場合、前記第2レジスタから前記演算実行部へのデータのバイパスを許可するバイパス可能信号を、前記メモリ制御部から最後の開始信号を受信してから所定のサイクル後に出力し、全ての前記複数のデータ群に対応する前記開始信号を共通なタイミングで受けた場合、前記バイパス可能信号を前記開始信号の受信に基づいて出力し、
前記実行制御部は、前記バイパス可能信号の受信後、前記第2レジスタから前記演算実行部へのデータのバイパスを可能にするタイミングで前記演算実行部に前記演算命令を出力することを特徴とする請求項1記載の演算処理装置。 The memory control unit reads data including a plurality of data groups from the memory based on the memory access instruction, and bypasses a plurality of start signals indicating the start of reading of the plurality of data groups from the memory. Output to the control unit,
When the bypass control unit receives the start signal corresponding to the plurality of data groups at different timings, the bypass control unit allows the bypass control signal to permit bypassing of data from the second register to the arithmetic execution unit. When the start signal corresponding to all of the plurality of data groups is received at a common timing after the last start signal is received from the unit, the bypassable signal is received. Output based on
The execution control unit outputs the operation instruction to the operation execution unit at a timing enabling data bypass from the second register to the operation execution unit after receiving the bypass enable signal. The arithmetic processing apparatus according to claim 1.
複数の前記開始信号の前記共通なタイミングでの受信に基づいて第1セット信号を生成する第1生成回路と、
前記最後の開始信号の受信から前記所定のサイクル後に第2セット信号を生成する第2生成回路と、
前記第1セット信号または前記第2セット信号に基づいて、前記バイパス可能信号を出力する出力回路を有することを特徴とする請求項2記載の演算処理装置。 The bypass control unit
A first generation circuit that generates a first set signal based on reception of a plurality of the start signals at the common timing;
A second generation circuit for generating a second set signal after the predetermined cycle from reception of the last start signal;
The arithmetic processing apparatus according to claim 2, further comprising an output circuit that outputs the bypassable signal based on the first set signal or the second set signal.
演算処理装置は、さらに、
前記メモリから前記複数のデータ群が複数回に分けて読み出される場合、前記複数のデータ群のそれぞれを前記複数の記憶領域に格納する複数の書き込み制御信号を前記データ群毎に順次に生成し、前記メモリから前記複数のデータ群が一度に読み出される場合、前記複数の書き込み制御信号を共通なタイミングで生成する書き込み制御部を有することを特徴とする請求項2または請求項3記載の演算処理装置。 Each of the second registers has a plurality of storage areas for storing each of the plurality of data groups read from the memory in a plurality of times,
The arithmetic processing unit further includes:
When the plurality of data groups are read from the memory in a plurality of times, a plurality of write control signals for storing each of the plurality of data groups in the plurality of storage areas are sequentially generated for each data group, 4. The arithmetic processing device according to claim 2, further comprising: a write control unit configured to generate the plurality of write control signals at a common timing when the plurality of data groups are read from the memory at a time. .
前記メモリ制御部は、前記メモリアクセス命令に基づいて前記データキャッシュから読み出すデータが、前記複数のキャッシュラインに跨いで保持される場合、前記キャッシュライン毎に前記アクセス要求を順次に出力することを特徴とする請求項1ないし請求項4のいずれか1項記載の演算処理装置。 The memory has a data cache including a plurality of cache lines for storing data;
The memory control unit sequentially outputs the access request for each cache line when data read from the data cache based on the memory access instruction is held across the plurality of cache lines. The arithmetic processing apparatus according to claim 1, wherein:
前記メモリと前記第2レジスタの間に配置され、前記メモリから読み出されるデータを前記第2レジスタに転送する前に一時的に保持する第3レジスタを有し、
前記メモリ制御部がデータを前記メモリから複数回に分けて読み出す場合、前記バイパス制御部は、前記第3レジスタから前記演算実行部へのデータのバイパスを禁止することを特徴とする請求項1ないし請求項5のいずれか1項記載の演算処理装置。 The arithmetic processing unit further includes:
A third register disposed between the memory and the second register and temporarily holding data read from the memory before being transferred to the second register;
The bypass control unit prohibits bypassing of data from the third register to the arithmetic execution unit when the memory control unit reads data from the memory in a plurality of times. The arithmetic processing device according to claim 5.
前記演算処理装置が有するメモリ制御部が、前記実行制御部から受ける前記メモリからデータを読み出すメモリアクセス命令に基づいて前記メモリにアクセス要求を出力し、
前記メモリ制御部が前記メモリアクセス命令に基づいて複数の前記アクセス要求を出力し、前記メモリから複数回に分けて読み出されるデータを前記第2レジスタに順次に転送する場合、前記演算処理装置が有するバイパス制御部が、前記メモリから最後に読み出されるデータが前記第2レジスタに転送された後に前記第2レジスタから前記演算実行部へデータをバイパスするタイミングで、前記実行制御部に前記演算命令を出力させることを特徴とする演算処理装置の制御方法。 A decoder unit that decodes an instruction, an execution control unit that holds instructions decoded by the decoder unit, and sequentially outputs executable instructions, and an operation based on an operation instruction that indicates execution of an operation received from the execution control unit A calculation execution unit that executes data, a memory that stores data used by the calculation execution unit, a plurality of first registers that hold data used for calculation performed by the calculation execution unit, and a first that is used for calculation A plurality of second registers that are allocated corresponding to the registers and temporarily hold before transferring the data obtained by executing the operation instruction or the memory access instruction to the first register; the first register; In a control method of an arithmetic processing unit having a register management unit that holds an allocation relationship with a second register and is referenced by the execution control unit,
The memory control unit included in the arithmetic processing unit outputs an access request to the memory based on a memory access instruction for reading data from the memory received from the execution control unit,
When the memory control unit outputs a plurality of the access requests based on the memory access instruction and sequentially transfers data read out from the memory in a plurality of times to the second register, the arithmetic processing unit has The bypass control unit outputs the arithmetic instruction to the execution control unit at a timing to bypass the data from the second register to the arithmetic execution unit after the data read last from the memory is transferred to the second register A control method for an arithmetic processing device, characterized in that:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014079229A JP6344022B2 (en) | 2014-04-08 | 2014-04-08 | Arithmetic processing device and control method of arithmetic processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014079229A JP6344022B2 (en) | 2014-04-08 | 2014-04-08 | Arithmetic processing device and control method of arithmetic processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015201026A true JP2015201026A (en) | 2015-11-12 |
JP6344022B2 JP6344022B2 (en) | 2018-06-20 |
Family
ID=54552237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014079229A Active JP6344022B2 (en) | 2014-04-08 | 2014-04-08 | Arithmetic processing device and control method of arithmetic processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6344022B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110988950A (en) * | 2018-10-03 | 2020-04-10 | 古野电气株式会社 | Navigation device, method for generating navigation assistance information, and storage medium |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09138748A (en) * | 1995-09-11 | 1997-05-27 | Internatl Business Mach Corp <Ibm> | Method and apparatus for early completion of floating-point instruction |
US5664215A (en) * | 1994-06-03 | 1997-09-02 | Motorola, Inc. | Data processor with an execution unit for performing load instructions and method of operation |
JPH10161872A (en) * | 1996-07-16 | 1998-06-19 | Internatl Business Mach Corp <Ibm> | Method and device for positioning instruction data |
JP2006073025A (en) * | 1992-09-29 | 2006-03-16 | Seiko Epson Corp | Computer system |
JP2014044509A (en) * | 2012-08-24 | 2014-03-13 | Fujitsu Ltd | Arithmetic processing unit and control method of the same |
-
2014
- 2014-04-08 JP JP2014079229A patent/JP6344022B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006073025A (en) * | 1992-09-29 | 2006-03-16 | Seiko Epson Corp | Computer system |
US5664215A (en) * | 1994-06-03 | 1997-09-02 | Motorola, Inc. | Data processor with an execution unit for performing load instructions and method of operation |
JPH09138748A (en) * | 1995-09-11 | 1997-05-27 | Internatl Business Mach Corp <Ibm> | Method and apparatus for early completion of floating-point instruction |
US5850563A (en) * | 1995-09-11 | 1998-12-15 | International Business Machines Corporation | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations |
JPH10161872A (en) * | 1996-07-16 | 1998-06-19 | Internatl Business Mach Corp <Ibm> | Method and device for positioning instruction data |
US5802556A (en) * | 1996-07-16 | 1998-09-01 | International Business Machines Corporation | Method and apparatus for correcting misaligned instruction data |
JP2014044509A (en) * | 2012-08-24 | 2014-03-13 | Fujitsu Ltd | Arithmetic processing unit and control method of the same |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110988950A (en) * | 2018-10-03 | 2020-04-10 | 古野电气株式会社 | Navigation device, method for generating navigation assistance information, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP6344022B2 (en) | 2018-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210026634A1 (en) | Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register | |
JP6143872B2 (en) | Apparatus, method, and system | |
CN106648843B (en) | System, method and apparatus for improving throughput of contiguous transactional memory regions | |
US9239735B2 (en) | Compiler-control method for load speculation in a statically scheduled microprocessor | |
JP5661863B2 (en) | System and method for data transfer in an execution device | |
US9652392B2 (en) | Using L1 cache as re-order buffer | |
US20150106598A1 (en) | Computer Processor Employing Efficient Bypass Network For Result Operand Routing | |
JP5758515B2 (en) | System and method for move removal using bypass multiple instantiation tables | |
JP5209933B2 (en) | Data processing device | |
US10691462B2 (en) | Compact linked-list-based multi-threaded instruction graduation buffer | |
CN109564546B (en) | Tracking stores and loads by bypassing load store units | |
JP2017538213A (en) | Method and apparatus for implementing and maintaining a stack of predicate values using stack synchronization instructions in an out-of-order hardware software co-design processor | |
KR20160031503A (en) | Method and apparatus for selective renaming in a microprocessor | |
KR20150139931A (en) | Mode dependent partial width load to wider register processors, methods, and systems | |
TWI608412B (en) | An adaptive optimized compare-exchange operation | |
JPH0496825A (en) | Data processor | |
US10296341B2 (en) | Latest producer tracking in an out-of-order processor, and applications thereof | |
US20140095814A1 (en) | Memory Renaming Mechanism in Microarchitecture | |
CN110554887A (en) | Indirect memory fetcher | |
JP4985452B2 (en) | Vector processing equipment | |
JP5949327B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JP6344022B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JP4444305B2 (en) | Semiconductor device | |
US9176738B2 (en) | Method and apparatus for fast decoding and enhancing execution speed of an instruction | |
US9710389B2 (en) | Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170110 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7426 Effective date: 20170803 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20170803 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170804 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180206 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20180214 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20180219 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20180219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180327 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180507 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6344022 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |