JP2015203950A - Arithmetic processing unit and control method for arithmetic processing unit - Google Patents

Arithmetic processing unit and control method for arithmetic processing unit Download PDF

Info

Publication number
JP2015203950A
JP2015203950A JP2014082660A JP2014082660A JP2015203950A JP 2015203950 A JP2015203950 A JP 2015203950A JP 2014082660 A JP2014082660 A JP 2014082660A JP 2014082660 A JP2014082660 A JP 2014082660A JP 2015203950 A JP2015203950 A JP 2015203950A
Authority
JP
Japan
Prior art keywords
memory access
instruction
simd
entry
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014082660A
Other languages
Japanese (ja)
Other versions
JP6340887B2 (en
Inventor
猛一 田端
Takekazu Tabata
猛一 田端
吉田 利雄
Toshio Yoshida
利雄 吉田
秋月 康伸
Yasunobu Akizuki
康伸 秋月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014082660A priority Critical patent/JP6340887B2/en
Publication of JP2015203950A publication Critical patent/JP2015203950A/en
Application granted granted Critical
Publication of JP6340887B2 publication Critical patent/JP6340887B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

PROBLEM TO BE SOLVED: To efficiently execute an SIMD (Single Instruction Multiple Data) indirect access instruction.SOLUTION: An arithmetic processing unit includes: an instruction decoder; a memory access entry part RSA; a memory access pipeline EAGA; a multi-data instruction entry part RSF; a plurality of arithmetic units 330; and a plurality of registers for multi-data instructions. The plurality of arithmetic units 330 process the processing of the entry of multi-data instructions output from the RSF in parallel, and an arithmetic pipeline FLA generates a plurality of memory access requests corresponding to multi-data indirect memory access instructions in the EAGA in response to the output of the entry of the multi-data indirect memory access instructions, and the plurality of arithmetic units 330 supply a plurality of memory addresses acquired from the plurality of registers for multi-data instructions to the FLA.

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。   The present invention relates to an arithmetic processing unit and a control method for the arithmetic processing unit.

演算処理装置であるCPUまたは演算処理部であるCPUコアの高速化手法として,スーパースカラやアウト・オブ・オーダ,SIMD(Single Instruction Multiple Data)などの技術が知られている。例えば,スーパースカラでは複数の命令を同時に処理し,アウト・オブ・オーダではCPUコア内部の資源について処理が可能になったものを順不同で処理しプログラムの順序通り完了させる。   Techniques such as superscalar, out-of-order, SIMD (Single Instruction Multiple Data) are known as methods for speeding up a CPU that is an arithmetic processing unit or a CPU core that is an arithmetic processing unit. For example, in the superscalar, a plurality of instructions are processed simultaneously, and in the out-of-order, those that can be processed for the resources in the CPU core are processed in random order and are completed in the order of the program.

一方,SIMDは,1つの命令で複数のデータを並列に処理する。SIMD処理ではSIMDレジスタと呼ばれるレジスタを用いる。SIMDレジスタには,SIMD命令で並列に処理可能な個数と同数もしくはそれ以上の複数個のデータが1つの固まりとして格納される。SIMD命令で指定されるオペランドによりこの複数個のデータを1つの固まりとして格納するSIMDレジスタが選択され,SIMDレジスタ内の複数個のデータごとに命令の処理が実行される。この複数個のデータの各々を要素と呼び並列に処理するデータの要素数をSIMD幅と呼ぶ。SIMD命令においては,例えば命令で指定される第一ソースオペランド,第二ソースオペランド,第三ソースオペランドをSIMDレジスタから読み出し,SIMD演算を行いデスティネーションオペランドにデータを書き込む。このSIMD処理では,複数個のデータについて同じ命令の処理が並列に実行される。   On the other hand, SIMD processes a plurality of data in parallel with one instruction. In the SIMD process, a register called a SIMD register is used. In the SIMD register, a plurality of pieces of data equal to or greater than the number that can be processed in parallel by the SIMD instruction are stored as one unit. The SIMD register for storing the plurality of data as one unit is selected by the operand specified by the SIMD instruction, and the instruction processing is executed for each of the plurality of data in the SIMD register. Each of the plurality of pieces of data is called an element, and the number of elements of data to be processed in parallel is called a SIMD width. In the SIMD instruction, for example, the first source operand, the second source operand, and the third source operand specified by the instruction are read from the SIMD register, the SIMD operation is performed, and the data is written to the destination operand. In this SIMD processing, processing of the same instruction is executed in parallel for a plurality of data.

また,SIMD命令以外の命令の処理においては,汎用レジスタと呼ばれるレジスタを用いる。汎用レジスタには,例えばメモリアクセスやSIMDで並列に処理を行わないデータが格納される。   Further, in processing of instructions other than SIMD instructions, a register called a general purpose register is used. For example, data that is not processed in parallel by memory access or SIMD is stored in the general-purpose register.

従来は,メモリとSIMDレジスタ間のデータ転送は,汎用レジスタに格納されたアドレスを用いて行われる。メモリアクセス命令においては,オペランドアドレス生成器が,命令で指定される第一ソースオペランド,第二ソースオペランドを汎用レジスタから読み出し,メモリアクセスのためのアドレスの生成を行う。この読み出したアドレスを先頭アドレスとして用いて,メモリの連続するアドレス領域に存在するSIMD幅のデータを読み出し,デスティネーションオペランドに対するSIMDレジスタに読み出したデータをロードする,もしくはメモリの連続するアドレス領域にSIMDレジスタから読み出したSIMD幅のデータをストアする。   Conventionally, data transfer between a memory and a SIMD register is performed using an address stored in a general-purpose register. In the memory access instruction, the operand address generator reads the first source operand and the second source operand specified by the instruction from the general-purpose register, and generates an address for memory access. Using this read address as the head address, the SIMD width data existing in the continuous address area of the memory is read, the read data is loaded into the SIMD register for the destination operand, or the SIMD is stored in the continuous address area of the memory. Stores SIMD width data read from the register.

特開2009−163442号公報JP 2009-163442 A 特公平4−79026号公報Japanese Patent Publication No. 4-79026 特開2004−38750号公報JP 2004-38750 A 特開2011−34450号公報JP 2011-34450 A

しかしながら,並列に処理が可能なデータがメモリの連続するアドレス領域に存在しない場合は,上記のSIMDロード命令,SIMDストア命令を適用することはできない。   However, when there is no data that can be processed in parallel in the continuous address area of the memory, the above SIMD load instruction and SIMD store instruction cannot be applied.

さらに,従来のCPUコアには,独立した複数のアドレスが格納されたSIMDレジスタをソースオペランドに指定してメモリアクセスするインダイレクトメモリアクセス命令をSIMD命令で実行するための構成が設けられていない。したがって,従来のCPUコアは,例えば,SMIDレジスタの各々の要素を個別にアクセス可能な構成を利用して,SIMD幅に対する複数のメモリアクセス命令によりデータ転送を行う。   Further, the conventional CPU core is not provided with a configuration for executing an indirect memory access instruction for performing memory access by designating a SIMD register storing a plurality of independent addresses as a source operand using the SIMD instruction. Therefore, the conventional CPU core performs data transfer by a plurality of memory access instructions for the SIMD width using, for example, a configuration capable of individually accessing each element of the SMID register.

または,ブロックロード命令のようにインダイレクトアクセス命令を複数の命令に分解して,SIMD幅に対する回数の命令を順次実行することも考えられる。しかし,上記のように複数の命令を実行する方法では,命令デコーダをSIMD幅と同じ回数使用しなければならず,また命令実行のためのリザベーションステーションやコミットスタックエントリをSIMD幅と同数使用しなければならず,CPUコアの多くの内部資源を使用する。さらに,命令デコーダを複数サイクル占有するため,依存関係のない後続命令をアウト・オブ・オーダで実行することができず,アウト・オブ・オーダで処理できるCPUコアの構成を生かすことができない。   Alternatively, it is conceivable that the indirect access instruction is decomposed into a plurality of instructions such as a block load instruction, and instructions corresponding to the SIMD width are sequentially executed. However, in the method of executing a plurality of instructions as described above, the instruction decoder must be used as many times as the SIMD width, and the reservation station and commit stack entries for executing instructions must be used as many times as the SIMD width. It must use many internal resources of the CPU core. Furthermore, since the instruction decoder occupies a plurality of cycles, subsequent instructions having no dependency cannot be executed out-of-order, and the CPU core configuration that can be processed out-of-order cannot be utilized.

そこで,本実施の形態の一つの目的は,レジスタに格納された複数個の独立したデータをアドレスとして使用し,メモリ領域の複数箇所にアクセスする命令を1つの命令で実行する演算処理装置及び演算処理装置の制御方法を提供することにある。   Accordingly, one object of the present embodiment is to provide an arithmetic processing device and an arithmetic unit that use a plurality of independent data stored in a register as addresses and execute an instruction to access a plurality of locations in a memory area with a single instruction. It is providing the control method of a processing apparatus.

本実施の形態の第1の側面は,
命令をデコードする命令デコーダと,
前記命令デコーダによりメモリアクセス命令のエントリを生成されるメモリアクセスエントリ部(RSA)と,
前記メモリアクセスエントリ部から出力された前記メモリアクセス命令のエントリをメモリに対して実行するメモリアクセスパイプライン(EAGA)と,
前記命令デコーダにより複数のデータを1つの命令で処理するマルチデータ命令のエントリを生成されるマルチデータ命令エントリ部(RSF)と,
複数の演算器と複数のマルチデータ命令用レジスタとを有し,前記マルチデータ命令エントリ部から出力された前記マルチデータ命令のエントリの処理を前記複数の演算器により並列に処理し,前記複数のマルチデータ命令用レジスタに演算結果を格納する演算パイプライン(FLA)とを有し,
前記演算パイプラインは,前記複数のマルチデータ命令用レジスタに格納されている複数のメモリアドレスについて前記メモリにメモリアクセスするマルチデータインダイレクトメモリアクセス命令のエントリの出力に応答して,前記メモリアクセスパイプラインに前記マルチデータインダイレクトメモリアクセス命令に対応する複数のメモリアクセス要求を生成し,前記複数の演算器が前記複数のマルチデータ命令用レジスタから取得した前記複数のメモリアドレスを前記メモリアクセスパイプラインに供給する演算処理装置である。
The first aspect of the present embodiment is
An instruction decoder for decoding instructions;
A memory access entry part (RSA) for generating an entry of a memory access instruction by the instruction decoder;
A memory access pipeline (EAGA) for executing an entry of the memory access instruction output from the memory access entry unit with respect to a memory;
A multi-data instruction entry part (RSF) for generating an entry of a multi-data instruction for processing a plurality of data with one instruction by the instruction decoder;
A plurality of arithmetic units and a plurality of multi-data instruction registers; processing of the multi-data instruction entry output from the multi-data instruction entry unit is processed in parallel by the plurality of arithmetic units; An operation pipeline (FLA) for storing operation results in a multi-data instruction register;
The operation pipeline is responsive to an output of an entry of a multi-data indirect memory access instruction that performs memory access to the memory for a plurality of memory addresses stored in the plurality of multi-data instruction registers. A plurality of memory access requests corresponding to the multi-data indirect memory access instruction on a line, and the plurality of computing units obtain the plurality of memory addresses acquired from the plurality of multi-data instruction registers in the memory access pipeline. It is the arithmetic processing unit which supplies to.

第1の側面によれば,マルチデータインダイレクトメモリアクセス命令を少ない資源で効率的に実行する。   According to the first aspect, the multi-data indirect memory access instruction is efficiently executed with few resources.

本実施の形態における演算処理装置が実現可能なインダイレクトメモリアクセス方式を説明する図である。It is a figure explaining the indirect memory access system which can implement | achieve the arithmetic processing unit in this Embodiment. ブロックロード命令によるパイプライン処理の例を示す図である。It is a figure which shows the example of the pipeline process by a block load instruction. 本実施の形態におけるSIMDインダイレクトメモリアクセス命令によるパイプライン処理を示す図である。It is a figure which shows the pipeline process by the SIMD indirect memory access instruction in this Embodiment. 本実施の形態における演算処理装置を搭載した情報処理装置を示す図である。It is a figure which shows the information processing apparatus carrying the arithmetic processing apparatus in this Embodiment. CPUコア30の全体構成を示す図である。2 is a diagram illustrating an overall configuration of a CPU core 30. FIG. 本実施の形態のSIMDインダイレクトメモリアクセス(ロードまたはストア)命令を実行するCPUコアの構成を示す図である。It is a figure which shows the structure of CPU core which performs the SIMD indirect memory access (load or store) instruction | indication of this Embodiment. 浮動小数点演算リザベーションステーションRSFにエントリとして格納されるフラグ構成を示す図である。It is a figure which shows the flag structure stored as an entry in the floating point arithmetic reservation station RSF. SIMDインダイレクトロード命令と通常のロード命令の処理を示すフローチャートである。It is a flowchart which shows the process of a SIMD indirect load command and a normal load command. SIMDインダイレクトロード命令と通常のロード命令の処理を示すフローチャートである。It is a flowchart which shows the process of a SIMD indirect load command and a normal load command. SIMDインダイレクトメモリアクセスの一つであるSIMDインダイレクトロード命令のパイプライン及びタイムチャートを示す図である。It is a figure which shows the pipeline and time chart of a SIMD indirect load instruction which is one of the SIMD indirect memory accesses. 本実施の形態のSIMDインダイレクトメモリアクセス(ロードまたはストア)命令を実行するCPUコアの構成を示す図である。It is a figure which shows the structure of CPU core which performs the SIMD indirect memory access (load or store) instruction | indication of this Embodiment. 演算用インタフェース331とアドレス用インタフェース310の構成を示す図である。FIG. 3 is a diagram showing the configuration of a calculation interface 331 and an address interface 310. SIMD幅が2のSIMDインダイレクトメモリアクセス命令の場合のパイプラインとアドレス用インタフェース310の入出力信号変化を示す図である。FIG. 10 is a diagram showing changes in input / output signals of a pipeline and an address interface 310 in the case of a SIMD indirect memory access instruction with a SIMD width of 2; SIMD幅が4のSIMDインダイレクトメモリアクセス命令の場合のパイプラインとアドレス用インタフェース回路310の入出力信号変化を示す図である。FIG. 11 is a diagram showing changes in input / output signals of the pipeline and address interface circuit 310 in the case of a SIMD indirect memory access instruction with a SIMD width of 4; 図6の1つのメモリアクセスパイプラインEAGAを有する場合の演算用インタフェース331とアドレス用インタフェース310の構成を示す図である。FIG. 7 is a diagram illustrating a configuration of an arithmetic interface 331 and an address interface 310 when the single memory access pipeline EAGA of FIG. 6 is provided. SIMD幅2の場合での後続するRSAから投入されるメモリアクセスとの衝突を示す図である。It is a figure which shows the collision with the memory access thrown in from subsequent RSA in the case of SIMD width 2. SIMD幅4の場合での後続するRSAから投入されるメモリアクセスとの衝突を示す図である。It is a figure which shows the collision with the memory access thrown in from the subsequent RSA in the case of SIMD width 4. SIMD幅4の場合での後続するSIMDインダイレクトメモリアクセス命令のエントリの投入により生成されるメモリアクセス要求との衝突を示す図である。It is a figure which shows the collision with the memory access request produced | generated by throwing in the entry of the subsequent SIMD indirect memory access instruction in the case of SIMD width 4. インダイレクトメモリアクセス要求の衝突を回避する抑止信号を生成する演算用インタフェース333の構成を示す図である。It is a figure which shows the structure of the interface for operation 333 which produces | generates the suppression signal which avoids the collision of an indirect memory access request. RSFとそのSIMDインダイレクトメモリアクセス命令のエントリの出力抑止回路を示す図である。It is a figure which shows the output suppression circuit of the entry of RSF and its SIMD indirect memory access instruction. RSAとその通常のメモリアクセス命令のエントリの出力抑止回路を示す図である。It is a figure which shows the output suppression circuit of RSA and its normal memory access instruction entry. CSE内の完了待ち合わせ回路を示す図である。It is a figure which shows the completion waiting circuit in CSE.

本実施の形態において1つの命令で複数のデータについて処理を行う命令をSIMD命令(またはマルチデータ命令)と称する。SIMD命令は,例えばSIMD幅の数のデータについてSIMD幅の数の演算器が並列に処理を行い,SIMD幅の数のレジスタを1つのレジスタ単位とするSIMDレジスタに処理結果を格納する。   In this embodiment, an instruction for processing a plurality of data with one instruction is referred to as a SIMD instruction (or a multi-data instruction). In the SIMD instruction, for example, SIMD-width arithmetic units perform parallel processing on SIMD-width data, and the processing results are stored in SIMD registers each having a SIMD-width register as one register unit.

図1は,本実施の形態における演算処理装置が実現可能なインダイレクトメモリアクセス方式を説明する図である。図1は,SIMDレジスタ332_1に格納された複数の独立したデータをアドレスとして使用し,1つの命令でメモリ領域14の複数箇所にアクセスするインダイレクトメモリアクセス方式である。図1の例では,SIMD幅が4の例であり,このようなインダイレクトメモリアクセスを行う命令を,SIMDインダイレクトメモリアクセス命令と称する。   FIG. 1 is a diagram for explaining an indirect memory access method that can be realized by the arithmetic processing unit according to the present embodiment. FIG. 1 shows an indirect memory access method in which a plurality of independent data stored in the SIMD register 332_1 are used as addresses and a plurality of locations in the memory area 14 are accessed by one instruction. In the example of FIG. 1, the SIMD width is an example of 4, and such an indirect memory access instruction is referred to as a SIMD indirect memory access instruction.

図1(A)は,SIMDインダイレクトロード命令(またはSIMD間接ロード命令)の例であり,SIMDレジスタ332_1に格納された4つの独立したデータをアドレスとして利用し,メモリ14の4つのアドレスADD_0-ADD_3のデータDATA_0-DATA_3を読み出し,別のSIMDレジスタ332_2に書込む。このSIMDインダイレクトロード命令は,例えば次のように記述される。
load %f100 %f200
ここで,%f100はアドレスが格納されたSIMDレジスタ332_1のレジスタ番号であり,%f200はデータを書込むSIMDレジスタ332_2のレジスタ番号である。
FIG. 1A shows an example of a SIMD indirect load instruction (or SIMD indirect load instruction). The four independent data stored in the SIMD register 332_1 are used as addresses, and four addresses ADD_0− The data DATA_0 to DATA_3 of ADD_3 is read and written to another SIMD register 332_2. This SIMD indirect load instruction is described as follows, for example.
load% f100% f200
Here,% f100 is the register number of the SIMD register 332_1 in which the address is stored, and% f200 is the register number of the SIMD register 332_2 to which data is written.

図1(B)は,SIMDインダイレクトストア命令(またはSIMD間接ストア命令)の例であり,SIMDレジスタ332_1に格納された4つの独立したデータをアドレスとして利用し,別のSIMDレジスタ332_3内のデータDATA_0-DATA_3をメモリ14の4つのアドレスADD_0-ADD_3の領域に書き込む。このSIMDインダイレクトストア命令は,例えば次のように記述される。
store %f100 %f300
ここで,%f100はアドレスが格納されたSIMDレジスタ332_1のレジスタ番号であり,%f300は書き込みデータが格納されたSIMDレジスタ332_3のレジスタ番号である。
FIG. 1B is an example of a SIMD indirect store instruction (or SIMD indirect store instruction), using four independent data stored in the SIMD register 332_1 as addresses, and data in another SIMD register 332_3. DATA_0-DATA_3 is written in the areas of the four addresses ADD_0-ADD_3 in the memory 14. This SIMD indirect store instruction is described as follows, for example.
store% f100% f300
Here,% f100 is the register number of the SIMD register 332_1 in which the address is stored, and% f300 is the register number of the SIMD register 332_3 in which the write data is stored.

上記の場合,SIMDレジスタ332_1に4つの独立したアドレスを書き込む処理は,例えば4回のロード命令を実行することで行われる。または,メモリの連続するアドレスに4つの独立したアドレスを書き込んでおき,メモリの先頭アドレスをソースアドレスとするSIMDロード命令を実行することで行われる。   In the above case, the process of writing four independent addresses to the SIMD register 332_1 is performed by executing, for example, four load instructions. Alternatively, it is performed by writing four independent addresses at successive addresses in the memory and executing a SIMD load instruction with the head address of the memory as the source address.

図2は,ブロックロード命令によるパイプライン処理の例を示す図である。ここでのブロックロード命令は,例えばメモリの連続領域のデータを複数の汎用レジスタに書き込む命令である。ブロックロード命令は,命令デコーダでデコードされると,命令デコーダが複数のメモリアクセス命令を生成し,その複数のメモリアクセス命令が,順次命令デコーダでデコードされ,メモリアクセス用リザベーションステーションにエントリされ,メモリアクセスされる。つまり,マルチフロー方式である。   FIG. 2 is a diagram illustrating an example of pipeline processing by a block load instruction. The block load instruction here is an instruction for writing data in a continuous area of a memory into a plurality of general purpose registers, for example. When the block load instruction is decoded by the instruction decoder, the instruction decoder generates a plurality of memory access instructions, and the plurality of memory access instructions are sequentially decoded by the instruction decoder and entered in the memory access reservation station, Accessed. In other words, it is a multiflow method.

したがって,4つのデータをメモリからロードする場合は,ブロックロード命令は4つのメモリアクセス命令に分割され,それぞれ命令デコードとリザベーションステーションへのエントリとメモリアクセスとが4回繰り返される。そのため,後続の演算命令は,4サイクルにわたりデコード待ち状態となる。   Therefore, when loading four data from the memory, the block load instruction is divided into four memory access instructions, and instruction decoding, entry to the reservation station, and memory access are repeated four times, respectively. Therefore, the subsequent operation instruction is in a decoding wait state for four cycles.

このようなブロックロード命令の手法を利用して上記のSIMDインダイレクトロード命令を実現しようとすると,同様に,命令デコードとリザベーションステーションへのエントリとインダイレクトロードの処理とを4回繰り返す必要があり,CPUコア内の資源を4サイクルにわたり占有し,後続の演算命令の命令デコードが可能になるのはマルチフローの最後の命令のデコードが完了した後になる。これでは,後続命令が依存関係のない命令の場合に利用可能なアウト・オブ・オーダの利点を生かすことができない。   When trying to implement the SIMD indirect load instruction using the block load instruction method, it is necessary to repeat the instruction decoding, the entry to the reservation station, and the indirect load process four times. The resources in the CPU core are occupied for 4 cycles, and the subsequent operation instruction can be decoded after the decoding of the last instruction of the multiflow is completed. This makes it impossible to take advantage of the out-of-order available when the subsequent instruction has no dependency.

[本実施の形態]
図3は,本実施の形態におけるSIMDインダイレクトメモリアクセス命令によるパイプライン処理を示す図である。本実施の形態のSIMDインダイレクトメモリアクセス命令では,1つのSIMDインダイレクトメモリアクセス命令を命令デコーダがデコードし,命令デコーダが1つの命令をSIMDリザベーションステーションにエントリし,4回のメモリアクセスを繰り返し実行する。したがって,命令デコーダは1サイクルで開放されるので,SIMDインダイレクトメモリアクセス命令と依存関係のない後続の演算命令を,次のサイクルで命令デコードすることができる。したがって,アウト・オブ・オーダのメリットを生かすことができる。さらに,図3には示されていないが,1つのSIMDインダイレクトメモリアクセス命令をSIMDリザベーションステーションにエントリするので,リザベーションステーションに複数のエントリを使用する必要はなく,コミットスタックエントリのエントリも1つしか使用しないので,CPUコア内の資源を効率的に使用する。
[This embodiment]
FIG. 3 is a diagram showing pipeline processing by the SIMD indirect memory access instruction in the present embodiment. In the SIMD indirect memory access instruction according to the present embodiment, the instruction decoder decodes one SIMD indirect memory access instruction, the instruction decoder enters one instruction in the SIMD reservation station, and repeatedly executes four memory accesses. To do. Therefore, since the instruction decoder is released in one cycle, a subsequent operation instruction that does not depend on the SIMD indirect memory access instruction can be decoded in the next cycle. Therefore, the advantage of out-of-order can be utilized. Further, although not shown in FIG. 3, since one SIMD indirect memory access instruction is entered in the SIMD reservation station, it is not necessary to use a plurality of entries in the reservation station, and there is one entry in the commit stack entry. Therefore, the resources in the CPU core are used efficiently.

図4は,本実施の形態における演算処理装置を搭載した情報処理装置を示す図である。コンピュータなどの情報処理装置10は,CPU/メモリボード12と,大容量の記憶装置であるハードディスク11とを有する。CPU/メモリボード12は,CPUチップである演算処理装置20と,演算処理装置20と外部のハードディスク11などを接続するインタコネクト13と,DRAM等のメモリ14とを有する。   FIG. 4 is a diagram showing an information processing apparatus equipped with the arithmetic processing apparatus in the present embodiment. An information processing apparatus 10 such as a computer has a CPU / memory board 12 and a hard disk 11 which is a large-capacity storage device. The CPU / memory board 12 includes an arithmetic processing unit 20 that is a CPU chip, an interconnect 13 that connects the arithmetic processing unit 20 and an external hard disk 11, and a memory 14 such as a DRAM.

演算処理装置20は,例えば,4つのCPUコア(演算処理部)30A−30Dと,4つのCPUコアで共有される二次キャッシュ24と,入出力インタフェース26と,メインメモリ14へのアクセスを制御するメモリアクセスコントローラ28とを有する。   The arithmetic processing unit 20 controls access to, for example, four CPU cores (arithmetic processing units) 30A-30D, a secondary cache 24 shared by the four CPU cores, an input / output interface 26, and the main memory 14. And a memory access controller 28.

図5は,CPUコア30の全体構成を示す図である。CPUコア30は,分岐命令の予測を行う分岐予測部302と,プログラムカウンタPCと分岐予測部302の予測に基づいて命令フェッチアドレスを生成する命令フェッチアドレス生成器301と,一次命令キャッシュ303と,フェッチされた命令をデコードする命令デコーダ305と,レジスタリネーミング部306と,メモリアクセス用リザベーションステーションRSA(Reservation Station for Address generate)と,整数演算用リザベーションステーションRSE(Reservation Station for Execute)と,浮動小数点SIMDリザベーションステーションRSF(Reservation Station for Floating)と,分岐用リザベーションステーションRSBR(Reservation Station for Branch)と,コミットスタックエントリCSE(Commit Stack Entry)とを有する。   FIG. 5 is a diagram illustrating the overall configuration of the CPU core 30. The CPU core 30 includes a branch prediction unit 302 that performs branch instruction prediction, an instruction fetch address generator 301 that generates an instruction fetch address based on the prediction of the program counter PC and the branch prediction unit 302, a primary instruction cache 303, An instruction decoder 305 for decoding the fetched instruction, a register renaming unit 306, a memory access reservation station RSA (Reservation Station for Address generate), an integer operation reservation station RSE (Reservation Station for Execute), and a floating point It has a SIMD reservation station RSF (Reservation Station for Floating), a branch reservation station RSBR (Reservation Station for Branch), and a commit stack entry CSE (Commit Stack Entry).

メモリアクセス用リザベーションステーションRSAのメモリアクセスパイプラインEAGAは,アドレス用インタフェース310と,オペランドアドレス生成器311と,アドレス選択回路313と,一次データキャッシュ312とを有する。整数演算用リザベーションステーションRSEの整数演算パイプラインEXAは,演算用インタフェース333と,固定小数点演算器320と,固定小数点リネーミングレジスタ321と,固定小数点レジスタ322とを有する。   The memory access pipeline EAGA of the memory access reservation station RSA includes an address interface 310, an operand address generator 311, an address selection circuit 313, and a primary data cache 312. The integer arithmetic pipeline EXA of the integer arithmetic reservation station RSE includes an arithmetic interface 333, a fixed point arithmetic unit 320, a fixed point renaming register 321, and a fixed point register 322.

また,浮動小数点SIMDリザベーションステーションRSFの浮動小数点SIMD演算パイプラインFLAは,演算用インタフェース333と,最大SIMD幅の数のSIMD演算器330と,浮動小数点SIMDリネーミングレジスタ331と,浮動小数点SIMDレジスタ332とを有する。さらに,CPUコア30は,2つのプログラムカウンタPC,NEXTPCを有する。また,CPUコア30は,演算器320,330が生成したデータを一時的に格納するストアバッファSTBを有する。   The floating-point SIMD reservation station RSF has a floating-point SIMD operation pipeline FLA that includes an operation interface 333, a SIMD calculator 330 having the maximum SIMD width, a floating-point SIMD renaming register 331, and a floating-point SIMD register 332. And have. Further, the CPU core 30 has two program counters PC and NEXTPC. The CPU core 30 has a store buffer STB that temporarily stores data generated by the arithmetic units 320 and 330.

SIMD演算器330のSIMD幅は,例えば2もしくは4を命令で指定可能である。浮動小数点SIMDレジスタは最大SIMD幅の4つ要素で構成されている。これらのレジスタの要素をそれぞれ,要素0,要素1,要素2,要素3と呼ぶ。浮動小数点SIMD幅2の演算を行う場合,SIMDレジスタの要素0と要素1を使用する。浮動小数点SIMD幅4の演算を行う場合,SIMDレジスタのすべての要素を使用する。   For the SIMD width of the SIMD calculator 330, for example, 2 or 4 can be specified by an instruction. The floating point SIMD register is composed of four elements having a maximum SIMD width. These register elements are referred to as element 0, element 1, element 2, and element 3, respectively. When a floating point SIMD width 2 operation is performed, elements 0 and 1 of the SIMD register are used. When performing a floating point SIMD width 4 operation, all elements of the SIMD register are used.

メモリアクセスパイプラインEAGA,整数演算パイプラインEXA,浮動小数点SIMD演算パイプラインFLAは,それぞれ1つのパイプラインまたは2つ以上のパイプラインを有してもよく,それぞれ独立に命令を実行可能である。また,一次データキャッシュ312は,メモリアクセスパイプラインEAGAのパイプライン数が2の場合,それに合わせて,2つのポートを設け同時に最大2つのアドレスによりアクセスを行うことができるようにしてもよい。さらに,メモリアクセスパイプラインEAGAのパイプライン数を,最大SIMD幅と同じ4組にしてもよい。その場合は,一次データキャッシュ312も4つのポートを有して同時の最大4つのアドレスによりアクセスを行うことできるようにするのが望ましい。   The memory access pipeline EAGA, the integer arithmetic pipeline EXA, and the floating-point SIMD arithmetic pipeline FLA may each have one pipeline or two or more pipelines, and can execute instructions independently. In addition, when the number of pipelines of the memory access pipeline EAGA is 2, the primary data cache 312 may be provided with two ports according to the number of pipelines so that it can be accessed simultaneously with a maximum of two addresses. Further, the number of pipelines of the memory access pipeline EAGA may be set to the same four groups as the maximum SIMD width. In that case, it is desirable that the primary data cache 312 also has four ports and can be accessed by a maximum of four addresses simultaneously.

命令フェッチアドレス生成器301は,分岐予測部302またはプログラムカウンタPCからの命令アドレスを選択し,一次命令キャッシュ303に対して命令フェッチリクエストを発行する。一次命令キャッシュ303は,命令フェッチリクエストに応じた命令を命令バッファ304に格納する。命令バッファ304から命令デコーダ305に対しては,プログラムにより指定された順番通りに,すなわちインオーダで命令が供給され,命令デコーダ305は,命令バッファから供給された命令をインオーダでデコードする。   The instruction fetch address generator 301 selects an instruction address from the branch prediction unit 302 or the program counter PC and issues an instruction fetch request to the primary instruction cache 303. The primary instruction cache 303 stores an instruction corresponding to the instruction fetch request in the instruction buffer 304. Instructions are supplied from the instruction buffer 304 to the instruction decoder 305 in the order specified by the program, that is, in order, and the instruction decoder 305 decodes the instruction supplied from the instruction buffer in order.

命令デコーダ305は,デコードした命令の種類に応じて,各リザベーションステーションRSA,RSE,RSF及びRSBRのいずれかに,命令に対応する必要なエントリを作成する。これとともに命令デコーダ305はデコードされたすべての命令に対応するエントリをCSEに作成する。   The instruction decoder 305 creates a necessary entry corresponding to the instruction in each of the reservation stations RSA, RSE, RSF, and RSBR according to the type of the decoded instruction. At the same time, the instruction decoder 305 creates entries in the CSE corresponding to all decoded instructions.

レジスタリネーミング部306は,リザベーションステーションRSA,RSE,RSFのいずれかにエントリが作成された場合に,命令に応じた処理で使用されるレジスタのアドレスに,リネーミングレジスタ321,331のアドレスを割り当てる。   The register renaming unit 306 assigns the addresses of the renaming registers 321 and 331 to the register addresses used in the processing according to the instruction when an entry is created in any of the reservation stations RSA, RSE, and RSF. .

リザベーションステーションRSA,RSE,RSFは,保持されたエントリのうち,処理に必要な資源(データ,演算器,レジスタ等)が準備されたものから順次パイプラインに出力し,後段のパイプラインEAGA,EXA,FLAに出力したエントリに対応する処理を実行させる。これにより,命令がアウト・オブ・オーダで実行される。   The reservation stations RSA, RSE, and RSF sequentially output to the pipeline the resources (data, arithmetic units, registers, etc.) required for processing from the held entries, and the subsequent pipelines EAGA, EXA , The process corresponding to the entry output to FLA is executed. As a result, the instruction is executed out of order.

浮動小数点演算用リザベーションステーションRSFには,例えば,SIMD演算命令に対応するエントリが格納される。1つのパイプラインFLAはSIMD幅の数のSIMD演算器330を有する。SIMD演算器330はRSFからのエントリに基づいて演算対象とするデータを選択し,SIMD幅の数のSIMD演算器で演算を並列に実行する。演算結果は浮動小数点・SIMDリネーミングレジスタ331に一時的に格納される。   For example, an entry corresponding to a SIMD operation instruction is stored in the reservation station RSF for floating point operation. One pipeline FLA has SIMD arithmetic units 330 having a number of SIMD widths. The SIMD calculator 330 selects data to be calculated based on the entry from the RSF, and executes the calculations in parallel by SIMD calculators having the number of SIMD widths. The calculation result is temporarily stored in the floating point / SIMD renaming register 331.

メモリアクセス用リザベーションステーションRSAには,命令デコーダ305によりSIMDインダイレクトメモリアクセス命令以外のメモリアクセス命令に対応するエントリが生成され,格納される。そして,RSAは格納されている複数のエントリのいずれかを選択してパイプラインに出力する。メモリアクセス命令のエントリがパイプラインに出力されると,そのエントリに対応するメモリアクセス要求がパイプラインの各ステージを順番に転送する。オペランドアドレス生成回路311は,RSAのエントリのメモリアクセス要求に基づいて演算対象とするデータを選択し,アドレスを生成し,生成されたアドレスを用いてメモリアクセス要求を一次データキャッシュ312に入力する。一次データキャッシュ312は,メモリアクセス要求に対するメモリアクセスを実行する。   In the reservation station RSA for memory access, an entry corresponding to a memory access instruction other than the SIMD indirect memory access instruction is generated and stored by the instruction decoder 305. Then, the RSA selects any one of the stored entries and outputs it to the pipeline. When an entry of a memory access instruction is output to the pipeline, a memory access request corresponding to the entry transfers each stage of the pipeline in turn. The operand address generation circuit 311 selects data to be calculated based on the memory access request of the RSA entry, generates an address, and inputs the memory access request to the primary data cache 312 using the generated address. The primary data cache 312 performs memory access in response to a memory access request.

コミットスタックエントリCSEは,命令デコーダ305によりデコードされたすべての命令に対応するエントリを保持し,各エントリに対応する処理の実行状況を管理し,これらの命令をインオーダで完了させる。例えば,CSEは,次に完了させるべきエントリに対応する処理の結果が,固定小数点リネーミングレジスタ321および浮動小数点SIMDリネーミングレジスタ331に格納されたと判定すると,格納されたデータを固定小数点レジスタ322または浮動小数点SIMDレジスタ332に出力させる。これにより,各リザベーションステーションでアウト・オブ・オーダに実行された命令が,インオーダで完了する。   The commit stack entry CSE holds entries corresponding to all instructions decoded by the instruction decoder 305, manages the execution status of processing corresponding to each entry, and completes these instructions in order. For example, when the CSE determines that the result of the process corresponding to the next entry to be completed is stored in the fixed-point renaming register 321 and the floating-point SIMD renaming register 331, the stored data is stored in the fixed-point register 322 or The data is output to the floating point SIMD register 332. As a result, instructions executed out-of-order at each reservation station are completed in-order.

図5のCPUコア30では,固定小数点演算パイプラインEXAはSIMD構成になっていない。一方,浮動小数点演算パイプラインFLAはSIMD構成になっていて,最大SIMD幅の数のSIMD演算器330を有する。しかし,固定小数点演算パイプラインEXAもSIMD構成になっていてもよい。   In the CPU core 30 of FIG. 5, the fixed-point arithmetic pipeline EXA does not have a SIMD configuration. On the other hand, the floating point arithmetic pipeline FLA has a SIMD configuration and includes SIMD arithmetic units 330 having the maximum SIMD width. However, the fixed-point arithmetic pipeline EXA may also have a SIMD configuration.

本実施の形態のCPUコア30は,浮動小数点SIMD演算パイプラインFLAの演算用インタフェース333の出力信号をメモリアクセスパイプラインEAGAのアドレス用インタフェース310に供給してメモリアクセス命令を生成させるためのバス334と,SIMD演算器330が取得したアドレスをアドレス選択回路313に供給するためのバス335とを有する。アドレス用インタフェース310は,演算用インタフェース333の出力信号に基づいて生成したSIMD幅の数のメモリアクセス命令をメモリアクセスパイプラインEAGAに出力する。また,アドレス選択回路313は,オペランドアドレス生成器331からのバスに代えて浮動小数点SIMD演算器330からのバス335を選択し,SIMD演算器330が浮動小数点SIMDレジスタ332や浮動小数点SIMDリネーミングレジスタ331から取得したアドレスを,前述のSIMD幅のメモリアクセス命令と共に一次データキャッシュ312へ供給する。   The CPU core 30 of this embodiment supplies a bus 334 for supplying an output signal of the arithmetic interface 333 of the floating-point SIMD arithmetic pipeline FLA to the address interface 310 of the memory access pipeline EAGA to generate a memory access instruction. And a bus 335 for supplying the address acquired by the SIMD arithmetic unit 330 to the address selection circuit 313. The address interface 310 outputs memory access instructions having the number of SIMD widths generated based on the output signal of the arithmetic interface 333 to the memory access pipeline EAGA. The address selection circuit 313 selects the bus 335 from the floating-point SIMD calculator 330 instead of the bus from the operand address generator 331, and the SIMD calculator 330 selects the floating-point SIMD register 332 or the floating-point SIMD renaming register. The address obtained from 331 is supplied to the primary data cache 312 together with the above-mentioned SIMD width memory access instruction.

[実施の形態のSIMDインダイレクトメモリアクセス命令を処理する構成と処理の概略]
図6は,本実施の形態のSIMDインダイレクトメモリアクセス(ロードまたはストア)命令を実行するCPUコアの構成を示す図である。図6には,後述するパイプラインの各サイクルが括弧付きで示されている。
[Outline of Configuration and Processing for Processing SIMD Indirect Memory Access Instruction of Embodiment]
FIG. 6 is a diagram illustrating a configuration of a CPU core that executes a SIMD indirect memory access (load or store) instruction according to the present embodiment. In FIG. 6, each cycle of the pipeline to be described later is shown in parentheses.

図6のCPUコア30は,メモリアクセス用リザベーションステーションRSA(またはメモリアクセスエントリ部)がメモリアクセス命令のエントリを出力する1つのメモリアクセスパイプラインEAGAを有する。また,浮動小数点SIMDリザベーションステーションRSF(またはマルチデータ命令エントリ部)がSIMD命令のエントリを出力するSIMD演算パイプラインFLAも1つ有する。そして,SIMD演算パイプラインFLAは,最大SIMD幅4と同じ数の浮動小数点SIMD演算器330を有する。   The CPU core 30 in FIG. 6 has one memory access pipeline EAGA from which a memory access reservation station RSA (or memory access entry unit) outputs an entry of a memory access instruction. The floating-point SIMD reservation station RSF (or multi-data instruction entry unit) also has one SIMD operation pipeline FLA that outputs SIMD instruction entries. The SIMD arithmetic pipeline FLA has the same number of floating point SIMD arithmetic units 330 as the maximum SIMD width 4.

本実施の形態のSIMDインダイレクトメモリアクセス命令の処理の概略は次のとおりである。命令デコーダ305は,SIMDインダイレクトメモリアクセス命令をデコードして,そのエントリを浮動小数点SIMDリザベーションステーションRSFに生成する。RSFは,SIMDインダイレクトメモリアクセス命令のエントリをSIMD演算パイプラインFLAに出力すると,それに応答してSIMD演算パイプラインFLAがバス334を介してSIMD幅に対応した数のメモリアクセス要求をメモリアクセスパイプラインEAGAに生成する。具体的には,演算用インタフェース333が投入されたエントリのフラグ信号群を,バス334を介してアドレス用インタフェース310に供給し,アドレス用インタフェース310がそのフラグ信号群に基づいてメモリアクセスパイプラインEAGAに複数のメモリアクセス命令のアクセス要求を順次生成する。または,演算用インタフェース333がそのフラグ信号に基づいて複数のメモリアクセス命令のアクセス要求を順次生成し,バス334を介してアドレス用インタフェース310に供給してパイプラインEAGAに生成してもよい。   The outline of processing of the SIMD indirect memory access instruction of the present embodiment is as follows. The instruction decoder 305 decodes the SIMD indirect memory access instruction and generates the entry in the floating point SIMD reservation station RSF. When the RSF outputs an entry for the SIMD indirect memory access instruction to the SIMD operation pipeline FLA, the SIMD operation pipeline FLA responds to the number of memory access requests corresponding to the SIMD width via the bus 334 in response to the entry. Generate on line EAGA. Specifically, the flag signal group of the entry in which the arithmetic interface 333 is input is supplied to the address interface 310 via the bus 334, and the address interface 310 uses the memory access pipeline EAGA based on the flag signal group. To sequentially generate access requests for a plurality of memory access instructions. Alternatively, the operation interface 333 may sequentially generate access requests for a plurality of memory access instructions based on the flag signal, and supply the request to the address interface 310 via the bus 334 to generate the pipeline EAGA.

また,SIMDインダイレクトメモリアクセス命令のエントリの投入または出力に応答して,SIMD幅の数のSIMD演算器330は,SIMD幅の数のアドレスを浮動小数点SIMDレジスタ332から並列に取得し,バス335を介してメモリアクセスパイプラインEAGAに供給する。具体的には,SIMD演算器330は,取得した複数のアドレスをバス335を経由して順次アドレス選択回路313に供給する。アドレス選択回路313は,バス335から供給される複数のアドレスを,先に生成された複数のメモリアクセス命令のアクセス要求のタイミングに合わせて選択し,一次データキャッシュ312に出力する。   In response to the input or output of the entry of the SIMD indirect memory access instruction, the SIMD arithmetic unit 330 having the number of SIMD widths acquires the address of the SIMD width number from the floating-point SIMD register 332 in parallel, and the bus 335 To the memory access pipeline EAGA. Specifically, the SIMD calculator 330 sequentially supplies the acquired plurality of addresses to the address selection circuit 313 via the bus 335. The address selection circuit 313 selects a plurality of addresses supplied from the bus 335 according to the access request timings of the plurality of previously generated memory access instructions, and outputs the selected addresses to the primary data cache 312.

具体的には,図6中の右上に示したとおり,アドレス選択回路313は,オペランドアドレス生成器311のアドレスフラグA_EAGA_ADDとバス335のいずれかを選択するセレクタL5を有する。そして,後述するようにSIMDインダイレクトメモリ命令のエントリがSIMD演算用パイプラインFLAに出力されたことに応答してアドレス用インタフェース310が生成するフラグ信号B1_EAGA_INDIRECTの「1」により,セレクタL5はバス335側を選択し,バス335を経由して供給されるアドレスを選択し,アドレスフラグA_EAGA_ADDとして一次データキャッシュ312に転送する。これにより,アドレス用インタフェース310がB1サイクルのステージで生成したメモリアクセス要求の転送タイミングに整合して,B1サイクルのステージより後のAサイクルのステージでバス335を介してアドレスが供給され,SIMDインダイレクトメモリアクセス命令のアドレスを加えたメモリアクセス要求が一次データキャッシュ312に転送される。   Specifically, as shown in the upper right of FIG. 6, the address selection circuit 313 includes a selector L5 that selects either the address flag A_EAGA_ADD of the operand address generator 311 or the bus 335. As will be described later, the selector L5 causes the bus 335 by the flag signal B1_EAGA_INDDIRECT “1” generated by the address interface 310 in response to the entry of the SIMD indirect memory instruction being output to the SIMD operation pipeline FLA. And the address supplied via the bus 335 is selected and transferred to the primary data cache 312 as an address flag A_EAGA_ADD. As a result, the address is supplied via the bus 335 at the A cycle stage after the B1 cycle stage in alignment with the transfer timing of the memory access request generated by the address interface 310 at the B1 cycle stage. A memory access request including the address of the direct memory access instruction is transferred to the primary data cache 312.

一次データキャッシュ312は,ロード命令の場合は一次キャッシュ312からまたはメモリ14から読み出した複数のデータを,浮動小数点SIMDリネーミングレジスタ331に格納する。そして,コミットスタックエントリからの指令に応じて,読み出した複数のデータを浮動小数点SIMDリネーミングレジスタ331から浮動小数点SIMDレジスタ332に転送する。これらのレジスタ331,332は,SIMD幅の数のレジスタが一括してレジスタ番号で特定される。また,ストア命令の場合は,浮動小数点SIMDレジスタ332に格納されている複数のデータを一次キャッシュ312またはメモリ14に順次書き込む。   In the case of a load instruction, the primary data cache 312 stores a plurality of data read from the primary cache 312 or the memory 14 in the floating point SIMD renaming register 331. Then, in response to a command from the commit stack entry, a plurality of read data is transferred from the floating point SIMD renaming register 331 to the floating point SIMD register 332. In these registers 331 and 332, the registers having the number of SIMD widths are collectively specified by register numbers. In the case of a store instruction, a plurality of data stored in the floating point SIMD register 332 are sequentially written to the primary cache 312 or the memory 14.

SIMDインダイレクトメモリアクセス命令の処理の概略をより具体的に説明すると次の通りである。   The outline of processing of the SIMD indirect memory access instruction will be described more specifically as follows.

まず,命令デコーダ305はSIMDインダイレクトメモリアクセス命令をデコードし,RSF及びCSEにエントリを作成する。CSEのエントリ番号(エントリされた命令識別情報)をIIDと呼ぶ。演算やメモリアクセスの完了の際にCSEにこのIIDと完了信号を通知することにより,CSEは命令完了の判定を行う。エントリの作成と同時に,命令デコーダ305は,一次データキャッシュ312が管理する資源であるフェッチポートFPをSIMD幅と同数の連続した個数確保する。フェッチポートFPは,一次データキャッシュがメモリアクセスを行う際に必要なメモリアドレスを記憶しておく資源であり,通常のメモリアクセス命令では1つのFPが確保される。SIMDインダイレクトメモリアクセス命令ではSIMD幅と同数のアドレスによりアクセスを行うため,複数のプリフェッチポートFPを使用する。   First, the instruction decoder 305 decodes the SIMD indirect memory access instruction and creates entries in the RSF and CSE. The CSE entry number (entry instruction identification information) is called IID. By notifying the CSE of this IID and completion signal upon completion of computation or memory access, the CSE determines completion of the instruction. Simultaneously with the creation of the entry, the instruction decoder 305 secures a continuous number of fetch ports FP that are resources managed by the primary data cache 312 as many as the SIMD width. The fetch port FP is a resource for storing a memory address necessary when the primary data cache performs memory access, and one FP is secured for a normal memory access instruction. In the SIMD indirect memory access instruction, a plurality of prefetch ports FP are used in order to access with the same number of addresses as the SIMD width.

図7は,浮動小数点演算リザベーションステーションRSFにエントリとして格納されるフラグ構成を示す図である。SIMDインダイレクトメモリアクセス命令を実行するため,インダイレクトフラグINDIRECTとフェッチポートフラグFPが追加されている。INDIRECTフラグはデコードした命令がSIMDインダイレクトメモリアクセス命令の場合に「1」となる。FPフラグはデコード時に確保した先頭のFP番号を示す。また,RSFには,これら以外にもSIMD演算器330に演算種の指示を行うOPCODE,命令のSIMD幅を識別する4SIMDフラグ(幅が2なら「0」,4なら「1」),演算に使用するオペランドを示すR1_ADRS,CSEのエントリ番号を示すIIDなどを格納する。   FIG. 7 is a diagram showing a flag configuration stored as an entry in the floating-point arithmetic reservation station RSF. In order to execute the SIMD indirect memory access instruction, an indirect flag DIRECT and a fetch port flag FP are added. The DIRECT flag becomes “1” when the decoded instruction is a SIMD indirect memory access instruction. The FP flag indicates the first FP number secured at the time of decoding. In addition to these, the RSF includes an OPCODE that instructs the SIMD computing unit 330 to specify the type of operation, a 4 SIMD flag that identifies the SIMD width of the instruction (“0” if the width is 2, and “1” if the width is 4). R1_ADRS indicating the operand to be used, IID indicating the CSE entry number, and the like are stored.

RSFは,SIMDインダイレクトメモリアクセス命令のエントリに必要な資源が準備され実行可能となると,浮動小数点SIMDパイプラインFLAの演算用インタフェース333にその命令のエントリを出力または投入する。   When the resources necessary for the entry of the SIMD indirect memory access instruction are prepared and can be executed, the RSF outputs or inputs the instruction entry to the arithmetic interface 333 of the floating-point SIMD pipeline FLA.

演算用インタフェース333は,RSFから出力された命令がSIMDインダイレクトメモリアクセス命令のエントリである場合,そのエントリのインダイレクト命令,SIMD幅,IID,FP,FLAの命令が有効か否かを示すバリッドのフラグ信号群を,バス334を介して,アドレス用インタフェース310に転送する。アドレス用インタフェース310はこのフラグ信号群に基づいて,メモリアクセスパイプラインEAGAに複数のメモリアクセス命令のメモリアクセス要求をシリアルに生成する。   When the instruction output from the RSF is an entry of a SIMD indirect memory access instruction, the arithmetic interface 333 indicates whether the indirect instruction, SIMD width, IID, FP, or FLA instruction of the entry is valid. Are transferred to the address interface 310 via the bus 334. The address interface 310 serially generates memory access requests for a plurality of memory access instructions in the memory access pipeline EAGA based on the flag signal group.

上記の複数のメモリアクセス命令の生成と同時に,SIMD演算器330は,演算用インタフェース333からのフラグ信号に基づいて,SIMD幅の数のアドレスをSIMDレジスタ332から並列に読み出す。SIMDレジスタ332のレジスタ番号は,SIMDインダイレクトメモリアクセス命令のソースオペランドに示されている。SIMD演算器330は,SIMDレジスタ332からのアドレスの読み出しが完了すると,その複数のアドレスをアドレス選択回路313にバス335を介して転送する。そして,アドレス用インタフェース310が,アドレス用インタフェース310がパイプラインEAGAに順次生成した複数のメモリアクセス要求と,バス335を介して転送されてきた複数のアドレスとを,タイミングを整合させて,アドレス選択回路313に転送する。すなわち,アドレス選択回路313は,オペランドアドレス生成器331からのアドレスに代えて,SIMD演算器330から供給されてきたアドレスを選択し,複数のアドレスを一次データキャッシュ312にシリアルに転送する。一次データキャッシュ312は,複数のアドレスそれぞれについてデータの読み出しまたはSIMDレジスタ内のデータの書き込みを行う。   Simultaneously with the generation of the plurality of memory access instructions, the SIMD calculator 330 reads SIMD-width number addresses in parallel from the SIMD register 332 based on the flag signal from the calculation interface 333. The register number of the SIMD register 332 is indicated in the source operand of the SIMD indirect memory access instruction. When the reading of the address from the SIMD register 332 is completed, the SIMD arithmetic unit 330 transfers the plurality of addresses to the address selection circuit 313 via the bus 335. Then, the address interface 310 selects the addresses by matching the timings of the plurality of memory access requests sequentially generated by the address interface 310 to the pipeline EAGA and the plurality of addresses transferred via the bus 335. Transfer to circuit 313. That is, the address selection circuit 313 selects the address supplied from the SIMD calculator 330 instead of the address from the operand address generator 331, and serially transfers a plurality of addresses to the primary data cache 312. The primary data cache 312 reads data or writes data in the SIMD register for each of a plurality of addresses.

一次データキャッシュ312は,データの読み出しを完了すると読み出したデータを浮動小数点SIMDリネーミングレジスタに格納するとともに,CSEに読み出しが完了したエントリ識別情報IIDと完了通知を送る。データの書き込みの場合は,一次データキャッシュ312は,単にCSEに書き込みが完了したエントリ識別情報IIDと完了通知を送る。CSEはエントリ識別情報IIDと完了通知によりSIMD幅すべての要素の読み出しまたは書き込みが完了するのを待ち,SIMDインダイレクトメモリアクセス命令を完了させる。   When the primary data cache 312 completes the reading of data, the primary data cache 312 stores the read data in the floating-point SIMD renaming register, and sends entry identification information IID and completion notification to the CSE. In the case of data writing, the primary data cache 312 simply sends entry identification information IID and completion notification of writing completion to the CSE. The CSE waits for reading or writing of all the elements of the SIMD width by the entry identification information IID and the completion notification, and completes the SIMD indirect memory access instruction.

次に,演算用インタフェース333は,SIMDインダイレクト命令のエントリに基づいて生成されるメモリアクセス要求が,後続のメモリアクセス命令のアクセス要求と衝突することを防止するために,RSAとRSFに命令のエントリの出力を抑止する抑止信号を生成する。すなわち,第1に,演算用インタフェース333は,SIMDインダイレクトメモリアクセス命令のエントリに応答して,抑止信号336をRSAに出力し,RSAに,そのSIMDインダイレクトメモリアクセス命令に基づいてアドレス用インタフェース310で生成されるメモリアクセス要求と衝突する後続のメモリアクセス命令のエントリの出力を抑止させる。第2に,演算用インタフェース333は,SIMDインダイレクトメモリアクセス命令のエントリに応答して,抑止信号337をRSFに出力し,RSFに,後続のSIMDインダイレクトメモリアクセス命令のエントリの出力を抑止させる。これにより,先行するSIMDインダイレクトメモリアクセス命令によりアドレス用インタフェース310に生成された複数サイクルにわたるメモリアクセス要求と,後続のSIMDインダイレクトメモリアクセス命令に基づいて生成されるメモリアクセス要求とが衝突することを防止する。   Next, in order to prevent the memory access request generated based on the entry of the SIMD indirect instruction from colliding with the access request of the subsequent memory access instruction, the arithmetic interface 333 transmits the instruction to the RSA and RSF. Generates a suppression signal that suppresses entry output. That is, first, the arithmetic interface 333 outputs a suppression signal 336 to the RSA in response to the entry of the SIMD indirect memory access instruction, and the RSA receives the address interface based on the SIMD indirect memory access instruction. The output of the entry of the subsequent memory access instruction colliding with the memory access request generated at 310 is suppressed. Second, the operation interface 333 outputs a suppression signal 337 to the RSF in response to the entry of the SIMD indirect memory access instruction, and causes the RSF to suppress the output of the subsequent SIMD indirect memory access instruction entry. . As a result, a memory access request over a plurality of cycles generated in the address interface 310 by the preceding SIMD indirect memory access instruction collides with a memory access request generated based on the subsequent SIMD indirect memory access instruction. To prevent.

図8,図9は,SIMDインダイレクトロード命令と通常のロード命令の処理を示すフローチャートである。まず,命令フェッチ(S1),命令バッファに格納(S2),命令デコード(S3)が行われ,命令デコーダの結果,通常のロード命令の場合(S4のNO),工程S5以下の処理が行われ,SIMDインダイレクトメモリアクセス命令の場合(S4のYES),工程S21以下の処理が行われる。   8 and 9 are flowcharts showing the processing of the SIMD indirect load instruction and the normal load instruction. First, instruction fetch (S1), instruction buffer storage (S2), and instruction decode (S3) are performed. If the result of the instruction decoder is a normal load instruction (NO in S4), the process from step S5 is performed. In the case of a SIMD indirect memory access instruction (YES in S4), the processes in and after step S21 are performed.

通常のロード命令の場合(S4のNO),命令デコーダ305は,フェッチポートFPを1つ確保し,RSAへロード命令のエントリを作成する(S5)。RSAは,ロード命令のエントリを投入する準備が完了したことを確認し(S6のYES),先行するSIMDインダイレクトメモリアクセス命令に基づいて生成されるメモリアクセス命令と衝突していない場合(S7のNO),ロード命令のエントリをメモリアクセスパイプラインEAGAに出力または投入する。   In the case of a normal load instruction (NO in S4), the instruction decoder 305 secures one fetch port FP and creates an entry for the load instruction in the RSA (S5). The RSA confirms that the load instruction entry is ready (YES in S6), and does not collide with a memory access instruction generated based on the preceding SIMD indirect memory access instruction (in S7). NO), the entry of the load instruction is output or input to the memory access pipeline EAGA.

メモリアクセスパイプラインEAGAでは,オペランドアドレス生成器311が固定小数点レジスタ322などからデータを読み出し(S8),オペランドアドレス生成器311がアドレスを生成し(S9),アドレス選択回路313がオペランドアドレス生成器からのアドレスを選択する(S10)。そして,一次データキャッシュ312がそのアドレスを使用してデータを読み出す処理を実行する(S11)。一次データキャッシュ312が読み出したデータを浮動小数点SIMDリネーミングレジスタに格納してその処理を完了すると(S12),通常のロード命令の場合は,CSEがフェッチポートFPを1個開放し,SIMDリネーミングレジスタ331からSIMDレジスタ332に読み出しデータを転送する(S19)。   In the memory access pipeline EAGA, the operand address generator 311 reads data from the fixed-point register 322 or the like (S8), the operand address generator 311 generates an address (S9), and the address selection circuit 313 receives from the operand address generator. Address is selected (S10). Then, the primary data cache 312 executes a process of reading data using the address (S11). When the data read by the primary data cache 312 is stored in the floating-point SIMD renaming register and the processing is completed (S12), in the case of a normal load instruction, the CSE releases one fetch port FP and SIMD renaming. Read data is transferred from the register 331 to the SIMD register 332 (S19).

以上のように,通常のロード命令は,RSAにロード命令のエントリが生成され,メモリアクセスパイプラインEAGAのオペランドアドレス生成器331がアドレスの取得と生成を行い,一次データキャッシュへ312にロード要求を行う。   As described above, in the normal load instruction, an entry of the load instruction is generated in RSA, the operand address generator 331 of the memory access pipeline EAGA acquires and generates an address, and a load request is sent to the primary data cache 312. Do.

なお,連続するメモリアドレスに対するSIMDロード命令のエントリがRSAに生成された場合は,オペランドアドレス生成器311がその先頭のアドレスを固定小数点レジスタ322などから読み出し,一次データキャッシュ312が連続する例えば2つのアドレスのデータを2つのSIMDリネーミングレジスタに格納する。ただし,この連続するメモリアドレスに対するSIMDロード命令は,本実施の形態における複数のSIMDレジスタ内の独立した複数のアドレスに対するSIMDインダイレクトメモリアクセス命令とは異なる命令である。   If SIMD load instruction entries for consecutive memory addresses are generated in the RSA, the operand address generator 311 reads the head address from the fixed-point register 322 or the like, and the primary data cache 312 continues for example two Address data is stored in two SIMD renaming registers. However, the SIMD load instruction for the continuous memory addresses is different from the SIMD indirect memory access instruction for a plurality of independent addresses in the plurality of SIMD registers in the present embodiment.

次に,SIMDインダイレクトメモリアクセス命令の場合(S4のYES),命令デコーダはフェッチポートFPをSIMD幅の個数確保し,RSFにSIMD命令のエントリを生成する(S21)。RSFは,エントリを投入する準備が完了したことを確認し(S22のYES),先行するSIMDインダイレクトメモリアクセス命令に基づいて生成されるメモリアクセス命令と衝突していない場合(S23のNO),SIMDインダイレクトメモリアクセス命令のエントリをSIMD演算パイプラインFLAに出力または投入する。   Next, in the case of a SIMD indirect memory access instruction (YES in S4), the instruction decoder secures the number of fetch ports FP with the SIMD width, and generates an entry for the SIMD instruction in the RSF (S21). The RSF confirms that the entry is ready to be entered (YES in S22), and does not collide with a memory access instruction generated based on the preceding SIMD indirect memory access instruction (NO in S23). An entry of the SIMD indirect memory access instruction is output or input to the SIMD operation pipeline FLA.

そして,SIMD演算パイプラインFLAのSIMD演算器330が,SIMD幅の数のアドレスをSIMDレジスタ332から並列に読み出す(S23)。この読み出しには後述するとおり2サイクルを要する。そして,この読み出しとともに,SIMD演算パイプラインFLAの演算用インタフェース333がバス334を介してアドレス用インタフェース310にフラグ信号群を転送し,メモリアクセスパイプラインEAGAにメモリアクセスのリクエスト0を生成させる(S24)。生成されたリクエストはメモリアクセスパイプラインEAGAを転送する。さらに,SIMD演算器330はSIMDレジスタ332から取得したSIMD幅の数のアドレスを,バス335を介してアドレス選択回路313に供給し(S35),アドレス選択回路313は,リクエスト0に基づきSIMD演算器からのアドレスを選択し(S26),リクエスト0にフェッチポートFPを割り当てる(S27)。   Then, the SIMD arithmetic unit 330 of the SIMD arithmetic pipeline FLA reads addresses in the number of SIMD widths in parallel from the SIMD register 332 (S23). This reading requires two cycles as will be described later. Simultaneously with this reading, the calculation interface 333 of the SIMD calculation pipeline FLA transfers the flag signal group to the address interface 310 via the bus 334, and causes the memory access pipeline EAGA to generate a memory access request 0 (S24). ). The generated request transfers the memory access pipeline EAGA. Further, the SIMD arithmetic unit 330 supplies the address of the number of SIMD widths acquired from the SIMD register 332 to the address selection circuit 313 via the bus 335 (S35), and the address selection circuit 313 receives the SIMD arithmetic unit based on the request 0. (S26), and the fetch port FP is assigned to the request 0 (S27).

上記の工程S23-S27を2回繰り返す。2回目はメモリアクセスのリクエスト1が生成される。さらに,SIMD幅が4の場合(S28のYES),工程S23-S27と同じ処理工程S29-S32を2回繰り返す。これによりメモリアクセスのリクエスト2,3が生成される。   The above steps S23-S27 are repeated twice. A memory access request 1 is generated the second time. Further, when the SIMD width is 4 (YES in S28), the same processing steps S29-S32 as steps S23-S27 are repeated twice. As a result, memory access requests 2 and 3 are generated.

そして,一次データキャッシュ312は,フェッチポートFPのアドレスを利用してデータを読み出す処理を実行開始する(S11)。CSEは,SIMD幅が2の場合は2回の一次データキャッシュの処理完了通知(S12,S14)に応答して,SIMD幅が4の場合は4回の一次データキャッシュの処理完了通知(S12,S14,S16,S17)に応答して,SIMD処理の完了を検出し,フェッチポートFPをSIMD幅の個数開放し,SIMDリネーミングレジスタ331からSIMDレジスタ332に読み出しデータを転送する(S20)。   Then, the primary data cache 312 starts executing a process of reading data using the address of the fetch port FP (S11). When the SIMD width is 2, the CSE responds to the primary data cache processing completion notification (S12, S14) twice, and when the SIMD width is 4, the primary data cache processing completion notification (S12, S14). In response to S14, S16, S17), the completion of SIMD processing is detected, the number of fetch ports FP is released by the SIMD width, and read data is transferred from the SIMD renaming register 331 to the SIMD register 332 (S20).

以上のように,SIMDインダイレクトロード命令の場合は,命令デコーダがSIMDインダイレクトロード命令を1回デコードし,命令デコーダがRSFにSIMDインダイレクトロード命令のエントリを1つ生成し,SIMD演算パイプラインFLAがメモリアクセスパイプラインEAGAにSIMD幅の数のメモリアクセスのリクエストを生成し,複数のSIMD演算器に複数のアドレスをSIMDレジスタから並列に取得させ,SIMD演算器が取得した複数のアドレスをメモリアクセスパイプラインEAGAに転送して複数のメモリアクセスのリクエストに合体させ,メモリアクセスパイプラインEAGAが一次データキャッシュへのロードリクエストを行う。SIMDインダイレクトストア命令の場合も,一次データキャッシュがメモリにストアすることを除いて上記のロード命令と同じ動作である。   As described above, in the case of the SIMD indirect load instruction, the instruction decoder decodes the SIMD indirect load instruction once, the instruction decoder generates one entry of the SIMD indirect load instruction in the RSF, and the SIMD operation pipeline. The FLA generates a memory access request for the number of SIMD widths in the memory access pipeline EAGA, causes a plurality of SIMD computing units to obtain a plurality of addresses in parallel from the SIMD register, and stores the plurality of addresses obtained by the SIMD computing unit in the memory The data is transferred to the access pipeline EAGA and merged into a plurality of memory access requests, and the memory access pipeline EAGA makes a load request to the primary data cache. The SIMD indirect store instruction is the same operation as the above load instruction except that the primary data cache stores in the memory.

次に,本実施の形態のSIMDインダイレクトメモリアクセス命令のパイプライン処理を説明する。まず,SIMDインダイレクトロード命令のパイプラインステージを以下に示す。図6に括弧付きで示したステージを参照することで以下のパイプラインステージが明らかになる。
D(Decode):命令デコーダが命令をデコードする。
DT(Decode Transfer):Dサイクルの命令を転送し,RSFに格納する。
P(Priority):RSFがSIMD演算器へ投入する命令のエントリを決定し出力(投入)する。
PT(Priority Transfer):Pサイクルのエントリのフラグ信号群を,演算用インタフェースを介して転送し,SIMD演算器330に投入する。
B1,B2(Buffer):SIMD演算器が演算に必要なデータをレジスタから入力する。例えば,データは浮動小数点SIMDレジスタ332やリネーミングレジスタ331から取得される。この例では取得に2サイクルを要する。
X(eXecution):SIMD演算器がメモリアクセスに必要なデータを読み出す。
A(Address):SIMD演算器がメモリにアクセスするアドレスをアドレス選択回路313に転送する。
T(Tag):一次データキャッシュがアドレスに基づいてタグにアクセスする。
M(Match):一次データキャッシュが読み出したキャッシュタグを比較する。
B(Buffer):一次データキャッシュから読み出したデータをバッファする。
R(Result):一次データキャッシュアクセスを完了する。
RT(Result):Rサイクルのデータを転送し,リネーミングレジスタへの書き込みを行い,CSEへ完了通知を行う。
C(Commit):すべての要素が完了したかどうかの命令完了の判定を行う。
W(Write):完了した命令による各種レジスタの更新やリソースの解放を行う。このとき,浮動小数点SIMDリネーミングレジスタ331からSIMDレジスタ332に読み出したデータを転送する。
Next, the pipeline processing of the SIMD indirect memory access instruction of this embodiment will be described. First, the pipeline stage of the SIMD indirect load instruction is shown below. By referring to the stages shown in parentheses in FIG. 6, the following pipeline stages become clear.
D (Decode): The instruction decoder decodes the instruction.
DT (Decode Transfer): Transfers D-cycle instructions and stores them in the RSF.
P (Priority): Determines and outputs (inputs) an entry of an instruction that the RSF inputs to the SIMD computing unit.
PT (Priority Transfer): The flag signal group of the entry in the P cycle is transferred through the calculation interface and is input to the SIMD calculator 330.
B1, B2 (Buffer): SIMD calculator inputs data necessary for calculation from a register. For example, the data is acquired from the floating point SIMD register 332 or the renaming register 331. In this example, two cycles are required for acquisition.
X (eExection): The SIMD calculator reads data necessary for memory access.
A (Address): The address at which the SIMD computing unit accesses the memory is transferred to the address selection circuit 313.
T (Tag): The primary data cache accesses the tag based on the address.
M (Match): The cache tag read by the primary data cache is compared.
B (Buffer): Buffers data read from the primary data cache.
R (Result): The primary data cache access is completed.
RT (Result): Transfers R cycle data, writes to the renaming register, and notifies the CSE of completion.
C (Commit): It is determined whether or not the instruction has been completed.
W (Write): Various registers are updated and resources are released by a completed instruction. At this time, the read data is transferred from the floating point SIMD renaming register 331 to the SIMD register 332.

SIMDインダイレクトロード命令以外の通常ロード命令のパイプラインステージを以下に示す。
D(Decode):命令をデコードする。
DT(Decode Transfer):Dサイクルの命令を転送し,RSAに命令のエントリを格納する。
P(Priority):リザベーションステーションRSAから実行ユニットへ投入する命令のエントリを決定し出力(投入)する。
B1,B2(Buffer):オペランドアドレス生成器がロードアドレス生成に必要なデータを決定しレジスタから入力する。
A(Address):オペランドアドレス生成器がメモリにアクセスするアドレスを計算する。
T(Tag):一次データキャッシュが計算したアドレスに基づいてタグにアクセスする。
M(Match):一次データキャッシュが読み出したキャッシュタグを比較する。
B(Buffer):一次データキャッシュから読み出したデータをバッファする。
R(Result):一次データキャッシュアクセスを完了する。
RT(Result):Rサイクルのデータを転送し,リネーミングレジスタへの書き込みを行い,CSEへ完了通知を行う。
C(Commit):命令完了の判定を行う。
W(Write):完了した命令による,各種レジスタの更新やリソースの解放を行う。このとき,リネーミングレジスタからレジスタに転送する。
The pipeline stages of normal load instructions other than SIMD indirect load instructions are shown below.
D (Decode): Decodes an instruction.
DT (Decode Transfer): Transfers an instruction of D cycle and stores an instruction entry in RSA.
P (Priority): An entry of an instruction to be input from the reservation station RSA to the execution unit is determined and output (input).
B1, B2 (Buffer): Operand address generator determines data necessary for load address generation and inputs from a register.
A (Address): The address at which the operand address generator accesses the memory is calculated.
T (Tag): The tag is accessed based on the address calculated by the primary data cache.
M (Match): The cache tag read by the primary data cache is compared.
B (Buffer): Buffers data read from the primary data cache.
R (Result): The primary data cache access is completed.
RT (Result): Transfers R cycle data, writes to the renaming register, and notifies the CSE of completion.
C (Commit): The completion of the instruction is determined.
W (Write): Various registers are updated and resources are released by a completed instruction. At this time, the data is transferred from the renaming register to the register.

図10は,SIMDインダイレクトメモリアクセスの一つであるSIMDインダイレクトロード命令のパイプライン及びタイムチャートを示す図である。   FIG. 10 is a diagram showing a pipeline and a time chart of a SIMD indirect load instruction which is one of SIMD indirect memory accesses.

RSFは,タイミング3のPサイクルでSIMDインダイレクトロード命令のエントリをSIMD演算パイプラインFLAに投入する。そして,タイミング5のB1サイクルで,演算用インタフェース333がSIMDインダイレクトロード命令のフラグ信号を出力する。   The RSF inputs the SIMD indirect load instruction entry to the SIMD operation pipeline FLA in the P cycle of timing 3. Then, in the B1 cycle at timing 5, the arithmetic interface 333 outputs a flag signal of the SIMD indirect load instruction.

SIMD幅2のSIMDインダイレクトロード命令の場合は,SIMD演算パイプラインFLAが,タイミング6において,アドレス用インタフェース310内のパイプラインEAGAにメモリアクセス用のリクエスト0を生成し,次のタイミング7において,リクエスト1を生成する。生成されたメモリアクセスのリクエストは,メモリアクセスパイプラインEAGAにて,SIMDインダイレクトロード命令以外のロード命令におけるB1サイクルとなる。生成したメモリアクセスのエントリ識別情報IIDはSIMD演算パイプラインFLAから送られたものを使用し,フェッチポートFPはSIMD演算パイプラインFLAのFPの値とそれに1を加算した値を使用する。SIMD演算パイプラインFLAのSIMD演算器330が,タイミング7のX1サイクルでSIMDレジスタ(またはSIMDリネーミングレジスタ)から読み出した複数のデータのうち要素0を,タイミング8のX2サイクルでSIMDレジスタ(またはSIMDリネーミングレジスタ)から読み出した要素1をそれぞれシリアルにメモリアクセスパイプラインEAGAのアドレス選択回路313に転送する。タイミング8,9(Aサイクル)で,アドレス選択回路313は,SIMD演算パイプラインFLAから転送されてきた要素0と要素1のアドレスを選択し,一次データキャッシュ312に転送する。一次データキャッシュにアクセスしたデータすべてが存在した場合,一次データキャッシュ312は,タイミング13,14で読み出したデータをSIMDリネーミングレジスタ331に転送し,タイミング14ですべてのメモリアクセスの完了報告を行う。その結果,CSEは,命令完了の判定を行い,SIMDリネーミングレジスタ331のデータをSIMDレジスタ332に転送する。   In the case of a SIMD indirect load instruction with a SIMD width of 2, the SIMD operation pipeline FLA generates a memory access request 0 in the pipeline EAGA in the address interface 310 at timing 6, and at the next timing 7, Request 1 is generated. The generated memory access request is the B1 cycle in the load instruction other than the SIMD indirect load instruction in the memory access pipeline EAGA. The generated memory access entry identification information IID is sent from the SIMD operation pipeline FLA, and the fetch port FP uses the FP value of the SIMD operation pipeline FLA and a value obtained by adding 1 to it. The SIMD operator 330 of the SIMD operation pipeline FLA reads element 0 out of the plurality of data read from the SIMD register (or SIMD renaming register) in the X1 cycle at timing 7 and the SIMD register (or SIMD in the X2 cycle at timing 8). Each element 1 read from the renaming register is serially transferred to the address selection circuit 313 of the memory access pipeline EAGA. At timings 8 and 9 (A cycle), the address selection circuit 313 selects the addresses of the elements 0 and 1 transferred from the SIMD operation pipeline FLA and transfers them to the primary data cache 312. When all the data accessed to the primary data cache exists, the primary data cache 312 transfers the data read at timings 13 and 14 to the SIMD renaming register 331 and reports completion of all memory accesses at timing 14. As a result, the CSE determines completion of the instruction and transfers the data in the SIMD renaming register 331 to the SIMD register 332.

また,SIMD幅4のSIMDインダイレクトロード命令の場合は,SIMD演算パイプラインFLAが,タイミング6,7,8,9において,アドレス用インタフェース内のパイプラインEAGAにメモリアクセス用のリクエスト0,1,2,3をシリアルに生成する。生成された4つのメモリアクセスのリクエストは,メモリアクセスパイプラインEAGAにて,SIMDインダイレクトロード命令以外のロード命令におけるB1サイクルとなる。生成したメモリアクセスのリクエストのエントリ識別情報IIDはSIMD演算パイプラインFLAから送られたものを使用し,フェッチポートFPはSIMD演算パイプラインFLAのFP値とそれに1,2,3を加算した値を使用する。SIMD演算パイプラインFLAのSIMD演算器330が,タイミング7,8,9,10のX1,X2,X3,X4サイクルでSIMDレジスタ(またはSIMDリネーミングレジスタ)から読み出したSIMDのデータのうち要素0と要素1と要素2と要素3をそれぞれ,シリアルにメモリアクセスパイプラインEAGAのアドレス選択回路313に転送する。タイミング8,9,10,11(Aサイクル)で,アドレス選択回路313は,SIMD演算パイプラインFLAから転送されてきたアドレスをそれぞれ選択し,一次データキャッシュ312に転送する。一次データキャッシュにアクセスしたデータすべてが存在した場合,一次データキャッシュ312は,タイミング13,14,15,16で読み出したデータをSIMDリネーミングレジスタ331に転送し,タイミング16ですべてのメモリアクセスの完了報告を行う。その結果,CSEは,命令完了の判定を行い,SIMDリネーミングレジスタ331のデータをSIMDレジスタ332に転送する。   In the case of a SIMD indirect load instruction with a SIMD width of 4, the SIMD operation pipeline FLA sends requests 0, 1, and 0 for memory access to the pipeline EAGA in the address interface at timings 6, 7, 8, and 9. 2 and 3 are generated serially. The generated four memory access requests are B1 cycles in a load instruction other than the SIMD indirect load instruction in the memory access pipeline EAGA. The entry identification information IID of the generated memory access request uses the information sent from the SIMD operation pipeline FLA, and the fetch port FP uses the FP value of the SIMD operation pipeline FLA and a value obtained by adding 1, 2, and 3 to it. use. The SIMD arithmetic unit 330 of the SIMD operation pipeline FLA has element 0 of SIMD data read from the SIMD register (or SIMD renaming register) in the X1, X2, X3, and X4 cycles at timings 7, 8, 9, and 10. Element 1, element 2 and element 3 are serially transferred to the address selection circuit 313 of the memory access pipeline EAGA. At timings 8, 9, 10, and 11 (A cycle), the address selection circuit 313 selects the addresses transferred from the SIMD operation pipeline FLA and transfers them to the primary data cache 312. When all data accessed to the primary data cache exists, the primary data cache 312 transfers the data read at timings 13, 14, 15, and 16 to the SIMD renaming register 331, and all memory accesses are completed at timing 16. Make a report. As a result, the CSE determines completion of the instruction and transfers the data in the SIMD renaming register 331 to the SIMD register 332.

以上,SIMDインダイレクトロード命令について説明したが,SIMDインダイレクトストア命令でも,SIMD演算パイプラインFLAがメモリアクセスパイプラインEAGAにSIMD幅の数のメモリアクセスのリクエストを生成することと,SIMD演算器がSIMD幅の数のアドレスをSIMDレジスタから並列に取得してメモリアクセスパイプラインEAGAにシリアルに転送することと,一次データキャッシュにSIMD幅の数のメモリストアのリクエストを投入することは同じである。SIMDインダイレクトストア命令の場合は,一次データキャッシュはSIMDレジスタに格納されているSIMD幅の数のデータを一次キャッシュメモリまたはメモリに書き込む。   Although the SIMD indirect load instruction has been described above, even in the SIMD indirect store instruction, the SIMD arithmetic pipeline FLA generates a memory access request of the number of SIMD widths in the memory access pipeline EAGA, and the SIMD arithmetic unit Obtaining SIMD-width-number addresses in parallel from the SIMD registers and serially transferring them to the memory access pipeline EAGA is equivalent to submitting a SIMD-width-number memory store request to the primary data cache. In the case of the SIMD indirect store instruction, the primary data cache writes data of the number of SIMD widths stored in the SIMD register into the primary cache memory or the memory.

[本実施の形態におけるSIMDインダイレクトメモリアクセスの詳細説明]
図11は,本実施の形態のSIMDインダイレクトメモリアクセス(ロードまたはストア)命令を実行するCPUコアの構成を示す図である。図11のCPUコアの構成におけるSIMDダイレクトメモリアクセスの詳細な説明を行う。
[Detailed description of SIMD indirect memory access in this embodiment]
FIG. 11 is a diagram illustrating a configuration of a CPU core that executes a SIMD indirect memory access (load or store) instruction according to the present embodiment. A detailed description of SIMD direct memory access in the CPU core configuration of FIG. 11 will be given.

図11のCPUコア30は,図6と異なり,メモリアクセス用リザベーションステーションRSA(またはメモリアクセスエントリ部)が,メモリアクセス命令のエントリを出力するメモリアクセスパイプラインとして,2つのパイプラインEAGA,EAGBを有する。それに対応して,一次データキャッシュ312は,2つのメモリアクセス要求を並列に処理する構成を有する。また,浮動小数点SIMDリザベーションステーションRSF(またはマルチデータ命令エントリ部)が,SIMD命令のエントリを出力するSIMD演算パイプラインとして,2つのパイプラインFLA,FLBを有する。そして,SIMD演算パイプラインFLA,FLBは,最大SIMD幅4と同じ数の浮動小数点SIMD演算器330を,それぞれ有する。浮動小数点SIMDレジスタ332と浮動小数点SIMDリネーミングレジスタ331は,最大SIMD幅4と同じ数のレジスタが一括してレジスタ番号で指定可能である。それ以外の構成は,図6と同じである。   The CPU core 30 of FIG. 11 differs from FIG. 6 in that the memory access reservation station RSA (or the memory access entry unit) uses two pipelines EAGA and EAGB as memory access pipelines for outputting memory access instruction entries. Have. Correspondingly, the primary data cache 312 has a configuration for processing two memory access requests in parallel. The floating-point SIMD reservation station RSF (or multi-data instruction entry unit) has two pipelines FLA and FLB as SIMD operation pipelines that output SIMD instruction entries. The SIMD operation pipelines FLA and FLB have the same number of floating-point SIMD calculators 330 as the maximum SIMD width 4. As for the floating-point SIMD register 332 and the floating-point SIMD renaming register 331, the same number of registers as the maximum SIMD width 4 can be collectively designated by register numbers. Other configurations are the same as those in FIG.

したがって,SIMD演算パイプラインFLAは,SIMDインダイレクトアクセスメモリ命令のエントリに応答して,2つのメモリアクセス要求を2つのメモリアクセスパイプラインEAGA,EAGBに同時に生成することができ,SIMD演算器330は,SIMDレジスタ332から取得した2つのアドレスを2つのメモリアクセスパイプラインEAGA,EAGBのアドレス選択回路313に並列に転送することができる。後述する図13に示す通りである。   Therefore, the SIMD operation pipeline FLA can simultaneously generate two memory access requests to the two memory access pipelines EAGA and EAGB in response to the entry of the SIMD indirect access memory instruction. , Two addresses acquired from the SIMD register 332 can be transferred in parallel to the address selection circuits 313 of the two memory access pipelines EAGA and EAGB. This is as shown in FIG.

SIMD幅が2の場合は,SIMD演算パイプラインFLAは,バス334を介して,1サイクルで2つのメモリアクセス要求を2つのパイプラインEAGA,EAGBに生成する。すなわち,演算用インタフェース333がフラグ信号群をバス334を介してアドレス用インタフェース310に転送し,アドレス用インタフェース310は,その転送されたフラグ信号群に基づいて,1サイクルで2つのメモリアクセス要求を2つのパイプラインEAGA,EAGBに生成する。そして,SIMD演算器330は,バス335を介して,1サイクルで2つのアドレスを2つのパイプラインEAGA,EAGBのアドレス選択回路313に転送する。アドレス選択回路313内のセレクタL5(図6参照)は,前述のとおり,インダイレクトフラグ信号B1_EAGA_INDIRECT,B1_WAGB_INDIRECTの「1」により,バス335側を選択し,SIMD演算器330から供給される2つのアドレスを2つのパイプラインEAGA,EAGBに出力する。これにより,アドレス用インタフェース310が生成した2つのメモリアクセス要求に,アドレス選択回路313のサイクルAのステージで,バス335から供給された2つのアドレスが加えられる。   When the SIMD width is 2, the SIMD operation pipeline FLA generates two memory access requests to the two pipelines EAGA and EAGB in one cycle via the bus 334. That is, the arithmetic interface 333 transfers the flag signal group to the address interface 310 via the bus 334, and the address interface 310 makes two memory access requests in one cycle based on the transferred flag signal group. The two pipelines EAGA and EAGB are generated. Then, the SIMD computing unit 330 transfers two addresses to the address selection circuits 313 of the two pipelines EAGA and EAGB in one cycle via the bus 335. As described above, the selector L5 (see FIG. 6) in the address selection circuit 313 selects the bus 335 side by “1” of the indirect flag signals B1_EAGA_INDDIRECT, B1_WAGB_INDDIRECT, and two addresses supplied from the SIMD calculator 330 Are output to the two pipelines EAGA and EAGB. As a result, the two addresses supplied from the bus 335 are added to the two memory access requests generated by the address interface 310 at the stage of the cycle A of the address selection circuit 313.

また,SIMD幅が4の場合は,SIMD演算パイプラインFLAは,2サイクルで4つのメモリアクセス要求を2つのパイプラインEAGA,EAGBに生成し,2サイクルで4つのアドレスを転送する。図14に示すとおりである。   When the SIMD width is 4, the SIMD operation pipeline FLA generates four memory access requests in two cycles in two pipelines EAGA and EAGB, and transfers four addresses in two cycles. As shown in FIG.

図8,図9のフローチャート図は,図11のCPUコアの構成にも適用できる。ただし,図1のCPUコアは,2つのメモリアクセスパイプラインEAGA,EAGBを有するので,図8の工程S24-S27,工程S29-S32をそれぞれ1回行えば良い。   The flowcharts of FIGS. 8 and 9 can also be applied to the configuration of the CPU core of FIG. However, since the CPU core in FIG. 1 has two memory access pipelines EAGA and EAGB, each of steps S24 to S27 and steps S29 to S32 in FIG. 8 may be performed once.

[演算用インタフェース331とアドレス用インタフェース310によるインダイレクトメモリアクセス要求の生成]
図12は,演算用インタフェース331とアドレス用インタフェース310の構成を示す図である。演算用インタフェース331は,RSFから投入される演算命令のエントリから後段のSIMD演算器330などに対して制御信号を適切なタイミングで出力する。同様に,アドレス用インタフェース310は,RSAから投入されるメモリアクセス命令のエントリから後段のオペランドアドレス生成器311などに対して制御信号を適切なタイミングで出力する。
[Generation of Indirect Memory Access Requests by the Operation Interface 331 and the Address Interface 310]
FIG. 12 is a diagram showing the configuration of the calculation interface 331 and the address interface 310. The calculation interface 331 outputs a control signal at an appropriate timing from the entry of the calculation instruction input from the RSF to the subsequent SIMD calculator 330 or the like. Similarly, the address interface 310 outputs a control signal at an appropriate timing from the entry of the memory access instruction input from the RSA to the operand address generator 311 in the subsequent stage.

アドレス用インタフェース310は,RSAから2つのパイプラインEAGA,EAGBに投入された,SIMDインダイレクトメモリアクセス命令以外の通常メモリアクセス命令のエントリのフラグ信号を,ラッチ回路群F1_A,F1_Bでラッチし,後段のオペランドアドレス生成器311に転送する。一方,演算用インタフェース331は,RSFからSIMD演算パイプラインFLAに投入されたSIMDインダイレクトメモリアクセス命令のエントリのフラグ信号を,アドレス用インタフェース310にバス334を介して転送する。そして,アドレス用インタフェース310内のアンドゲートA1,A2,ラッチ回路群F2,F3,セレクタL1,L2,L3,L4,オアゲートアR1,R2,加算器ADD1,ADD2らの回路が,その転送されてきたフラグ信号に基づいて,2つのメモリアクセスパイプラインEAGA,EAGBに,それぞれメモリアクセスのリクエストを生成する。   The address interface 310 latches the flag signal of the entry of the normal memory access instruction other than the SIMD indirect memory access instruction, which is input from the RSA into the two pipelines EAGA and EAGB, by the latch circuit groups F1_A and F1_B. To the operand address generator 311. On the other hand, the arithmetic interface 331 transfers the flag signal of the entry of the SIMD indirect memory access instruction input from the RSF to the SIMD arithmetic pipeline FLA to the address interface 310 via the bus 334. Then, the AND gates A1, A2, the latch circuit groups F2, F3, the selectors L1, L2, L3, L4, the OR gates R1, R2, and the adders ADD1, ADD2 in the address interface 310 have been transferred. Based on the flag signal, a memory access request is generated in each of the two memory access pipelines EAGA and EAGB.

図12では,アドレス用インタフェース310が破線で囲まれた回路を有するように示されている。しかし,破線で囲まれた回路の一部を演算用インタフェース333が有するようにしてもよい。したがって,演算用インタフェース333とアドレス用インタフェース310とバス334の構成により,SIMD演算パイプラインFLAが,2つのメモリアクセスパイプラインEAGA,EAGBに,それぞれメモリアクセスのリクエストを生成する。   In FIG. 12, the address interface 310 is shown as having a circuit surrounded by a broken line. However, the arithmetic interface 333 may have a part of the circuit surrounded by the broken line. Therefore, the SIMD operation pipeline FLA generates a memory access request to each of the two memory access pipelines EAGA and EAGB by the configuration of the operation interface 333, the address interface 310, and the bus 334.

図12の各信号について説明する。   Each signal in FIG. 12 will be described.

パイプラインFLA側のエントリのフラグ信号については,次の通りである。入力信号(バリッド信号)B1_FLA_VALID_EAITFは,浮動小数点・SIMDパイプラインのB1サイクルでパイプラインFLAのSIMD演算器330に演算要求が出たときに1となる。   The flag signal of the entry on the pipeline FLA side is as follows. The input signal (valid signal) B1_FLA_VALID_EAITF becomes 1 when a calculation request is issued to the SIMD calculator 330 of the pipeline FLA in the B1 cycle of the floating point / SIMD pipeline.

入力信号(インダイレクト信号)B1_FLA_INDIRECT_EAITFは,浮動小数点・SIMDパイプラインのB1サイクルで演算要求がSIMDインダイレクトメモリアクセス命令であった場合1となる。   The input signal (indirect signal) B1_FLA_INDDIRECT_EAITF becomes 1 when the operation request is a SIMD indirect memory access instruction in the B1 cycle of the floating point / SIMD pipeline.

入力信号(4SIMD信号)B1_FLA_4SIMD_EAITFは,浮動小数点・SIMDパイプラインのB1サイクルでSIMD幅が4であるときに1となる。   The input signal (4 SIMD signal) B1_FLA_4SIMD_EAITF becomes 1 when the SIMD width is 4 in the B1 cycle of the floating point / SIMD pipeline.

入力信号(IID信号)B1_FLA_IID_EAITFには,パイプラインFLAで実行される命令のエントリの識別情報IIDが転送される。   The identification information IID of the entry of the instruction executed in the pipeline FLA is transferred to the input signal (IID signal) B1_FLA_IID_EAITF.

入力信号(FP信号)B1_FLA_FP_EAITFは,SIMDインダイレクトメモリアクセス命令において命令デコーダ305で確保したフェッチポートFPの先頭の番号を転送する。   The input signal (FP signal) B1_FLA_FP_EAITF transfers the leading number of the fetch port FP secured by the instruction decoder 305 in the SIMD indirect memory access instruction.

パイプラインEAGA,EAGB側のエントリのフラグ信号については,次の通りである。入力信号(バリッド信号)P_EAGA_VALID,P_EAGB_VALIDは,RSAからオペランドアドレス生成器331及び一次データキャッシュ312へメモリアクセス要求が出力された時に1となる。   The flag signals of the entries on the pipelines EAGA and EAGB are as follows. Input signals (valid signals) P_EAGA_VALID and P_EAGB_VALID become 1 when a memory access request is output from the RSA to the operand address generator 331 and the primary data cache 312.

入力信号(FP信号)P_EAGA_FP,P_EAGB_FPには,RSAからオペランドアドレス生成器331にメモリアクセス要求が出たとき,一次キャッシュメモリ312で使用するフェッチポート番号FP番号が転送される。   When a memory access request is issued from the RSA to the operand address generator 331, the fetch port number FP number used in the primary cache memory 312 is transferred to the input signals (FP signals) P_EAGA_FP and P_EAGB_FP.

入力信号(IID信号)P_EAGA_IID,P_EAGB_IIDには,RSAからオペランドアドレス生成器331にメモリアクセス要求が出たとき,それぞれの要求に対応するエントリ識別情報IIDが転送される。   When a memory access request is issued from the RSA to the operand address generator 331, entry identification information IID corresponding to each request is transferred to the input signals (IID signals) P_EAGA_IID and P_EAGB_IID.

アドレス用インタフェース回路310は,SIMDインダイレクトメモリアクセス命令のエントリがSIMD演算パイプラインFLAに投入された場合,演算用インタフェース333が出力するフラグ信号を用いて,メモリアクセスパイプラインEAGA,EAGBに2つもしくは4つのメモリアクセス要求を生成する。このメモリアクセス要求は,以下に説明する4つの出力信号B1_EAGA_***と,4つの出力信号B1_EAGB_***に対応する。また,アドレス用インタフェース回路310は,通常のメモリアクセス命令のエントリがメモリアクセスパイプラインEAGA,EAGBに投入された場合は,そのエントリのフラグ信号をそのままオペランドアドレス生成器311に転送する。   When the SIMD indirect memory access instruction entry is input to the SIMD operation pipeline FLA, the address interface circuit 310 uses the flag signal output from the operation interface 333 to generate two addresses in the memory access pipelines EAGA and EAGB. Alternatively, four memory access requests are generated. This memory access request corresponds to four output signals B1_EAGA _ *** and four output signals B1_EAGB _ *** described below. Further, when an entry of a normal memory access instruction is input to the memory access pipelines EAGA and EAGB, the address interface circuit 310 transfers the flag signal of the entry to the operand address generator 311 as it is.

出力信号(バリッド信号)B1_EAGA_VALID_ORは,オアゲートR1により出力され,RSFが投入したSIMDインダイレクトメモリアクセス命令により生成されたメモリアクセス要求と,RSAからの通常のメモリアクセス命令に対するメモリアクセス要求の論理和である。このバリッド信号が1であるとき,メモリアクセスパイプラインEAGAのオペランドアドレス生成器311及び一次データキャッシュ312へのメモリアクセス要求が有効となる。   The output signal (valid signal) B1_EAGA_VALID_OR is output by the OR gate R1, and is a logical sum of the memory access request generated by the SIMD indirect memory access instruction input by the RSF and the memory access request for the normal memory access instruction from the RSA. is there. When this valid signal is 1, a memory access request to the operand address generator 311 and the primary data cache 312 of the memory access pipeline EAGA is valid.

出力信号(バリッド信号)B1_EAGB_VALID_ORは,メモリアクセスパイプラインEAGB側のバリッド信号であり,上記と同様である。   The output signal (valid signal) B1_EAGB_VALID_OR is a valid signal on the memory access pipeline EAGB side and is the same as described above.

出力信号(インダイレクト信号)B1_EAGA_INDIRECT,出力信号B1_EAGB_INDIRECTは,対応するバリッド信号B1_EAGA_VALID_OR,B1_EAGB_VALID_OR信号が1であるときに有効になる信号であり,メモリアクセス要求がSIMDインダイレクトメモリアクセス命令により生成されたことを示す。オアゲートR2が出力する。この信号は,後続のオペランドアドレス生成器311を経由してアドレス選択回路313に転送され,アドレス選択回路313においてSIMD演算器330からバス335を介して転送されるアドレスを選択するために使用される。   The output signal (indirect signal) B1_EAGA_INDDIRECT and the output signal B1_EAGB_INDDIRECT are valid when the corresponding valid signal B1_EAGA_VALID_OR and B1_EAGB_VALID_OR signals are 1, and the memory access request is generated by the SIMD indirect memory access instruction. Indicates. OR gate R2 outputs. This signal is transferred to the address selection circuit 313 via the subsequent operand address generator 311 and is used to select an address transferred from the SIMD calculator 330 via the bus 335 in the address selection circuit 313. .

出力信号(IID信号)B1_EAGA_IID,出力信号(IID信号)B1_EAGB_IIDは,対応するバリッド信号B1_EAGA_VALID_OR,B1_EAGB_VALID_OR信号が1であるときに有効になる信号である。SIMDインダイレクトメモリアクセス命令である場合,セレクタL4が演算用インタフェース333から転送されてきた入力信号B1_FLA_IID_EAITFのエントリ識別情報IIDを選択する。もしそうでない場合,セレクタL4は,RSAからのIID信号P_EAGA_IID,P_EAGB_IIDを選択する。   The output signal (IID signal) B1_EAGA_IID and the output signal (IID signal) B1_EAGB_IID are signals that are valid when the corresponding valid signals B1_EAGA_VALID_OR and B1_EAGB_VALID_OR signals are 1. In the case of the SIMD indirect memory access instruction, the selector L4 selects the entry identification information IID of the input signal B1_FLA_IID_EAITF transferred from the calculation interface 333. Otherwise, the selector L4 selects the IID signals P_EAGA_IID and P_EAGB_IID from the RSA.

出力信号(FP信号)B1_EAGA_FP,出力信号(FP信号)B1_EAGB_FPは,対応するバリッド信号B1_EAGA_VALID_OR,B1_EAGB_VALID_OR信号が1であるときに有効になる信号である。SIMDインダイレクトメモリアクセス命令の場合の場合で,SIMD幅が2である場合は,入力FP信号B1_FLA_FP_EAITFで転送されてきたFP値と,加算器ADD2で+1加算したFP値とが,セレクタL3で選択され出力される。一方,SIMD幅が4である場合は,次のクロックサイクルで,入力FP信号B1_FLA_FP_EAITFで転送されてきたFP値に加算器ADD1で+2されたFP値と,加算器ADD2で+1加算したFP値とが,セレクタL3で選択され出力される。例えば,SIMD幅4であり,SIMDインダイレクトメモリアクセス命令でありかつFP信号B1_FLA_FP_EAITFで転送された値が5であった場合,図14のタイミング6でパイプラインEAGAに生成されたリクエストのFP信号B1_EAGA_FPは5,パイプラインEAGBに生成されたリクエストのFP信号B1_EAGB_FPは6,タイミング7でパイプラインEAGAに生成されたリクエストのFP信号B1_EAGA_FPは7,パイプラインEAGBに生成されたリクエストのFP信号B1_EAGB_FPは8になる。SIMDインダイレクトメモリアクセス命令でない場合は,RSAからのFP信号P_EAGA_FP,P_EAGB_FPがそれぞれセレクタL3で選択される。   The output signal (FP signal) B1_EAGA_FP and the output signal (FP signal) B1_EAGB_FP are signals that are valid when the corresponding valid signals B1_EAGA_VALID_OR and B1_EAGB_VALID_OR signals are 1. In the case of the SIMD indirect memory access instruction, when the SIMD width is 2, the selector FP selects the FP value transferred by the input FP signal B1_FLA_FP_EAITF and the FP value added by +1 by the adder ADD2. And output. On the other hand, when the SIMD width is 4, the FP value transferred by the adder ADD1 to the FP value transferred by the input FP signal B1_FLA_FP_EAITF in the next clock cycle, and the FP value obtained by adding +1 by the adder ADD2 Are selected and output by the selector L3. For example, when the SIMD width is 4, the SIMD indirect memory access instruction and the value transferred by the FP signal B1_FLA_FP_EAITF is 5, the FP signal B1_EAGA_FP of the request generated in the pipeline EAGA at the timing 6 in FIG. 5, the FP signal B1_EAGB_FP of the request generated in the pipeline EAGB is 6, the FP signal B1_EAGA_FP of the request generated in the pipeline EAGA at timing 7 is 7, and the FP signal B1_EAGB_FP of the request generated in the pipeline EAGB is 8 become. If it is not the SIMD indirect memory access instruction, the FP signals P_EAGA_FP and P_EAGB_FP from the RSA are selected by the selector L3.

図13は,SIMD幅が2のSIMDインダイレクトメモリアクセス命令の場合のパイプラインとアドレス用インタフェース310の入出力信号変化を示す図である。SIMD演算パイプラインFLAの演算用インタフェース333が,タイミング5のサイクルB1で図12の入力信号(B1_FLA_***)を出力し,アドレス用インタフェース310が,それらの入力信号に基づいてタイミング6で図12の出力信号(B1_EAGA_***,B1_EAGB_***)によるメモリアクセス要求を生成する。   FIG. 13 is a diagram showing input / output signal changes in the pipeline and address interface 310 in the case of a SIMD indirect memory access instruction with a SIMD width of 2. The operation interface 333 of the SIMD operation pipeline FLA outputs the input signal (B1_FLA _ ***) of FIG. 12 in the cycle B1 of timing 5, and the address interface 310 outputs the signal at timing 6 based on these input signals. A memory access request is generated by 12 output signals (B1_EAGA _ ***, B1_EAGB _ ***).

タイミング5の入力IID信号B1_FLA_IDD_EAITF(=2)がセレクタL1を介してラッチF2でラッチされ,タイミング6の出力IID信号B1_EAGA_IID,B1_EAGB_IIDが共に2になる。   The input IID signal B1_FLA_IDD_EAITF (= 2) at the timing 5 is latched by the latch F2 via the selector L1, and the output IID signals B1_EAGA_IID and B1_EAGB_IID at the timing 6 are both 2.

タイミング5の入力バリッド信号B1_FLA_VALID_EAITF(=1)と入力インダイレクト信号B1_FLA_INDIRECT_EAITF(=1)の論理積がアンドゲートA1を介してラッチF2でラッチされ,オアゲートR1,R2を介して,タイミング6の出力バリッド信号B1_EAGA_VALID_OR,B1_EAGB_VALID_ORが共に1になり,出力インダイレクト信号B1_EAGA_INDIRECT,B1_EAGB_INDIRECTも共に1になる。   The logical product of the input valid signal B1_FLA_VALID_EAITF (= 1) at the timing 5 and the input indirect signal B1_FLA_DIRECT_EAITF (= 1) is latched by the latch F2 through the AND gate A1, and the output valid at the timing 6 through the OR gates R1 and R2. The signals B1_EAGA_VALID_OR and B1_EAGB_VALID_OR are both 1, and the output indirect signals B1_EAGA_INDDIRECT and B1_EAGB_INDDIRECT are both 1.

そして,タイミング5の入力FP信号B1_FLA_EAITF(=4)がセレクタL2を介してラッチF2_FPでラッチされ,セレクタL3を介して,タイミング6の出力FP信号B1_EAGA_FP(=4),B1_EAGB_FP(=5)になる。   Then, the input FP signal B1_FLA_EAITF (= 4) at timing 5 is latched by the latch F2_FP via the selector L2, and becomes the output FP signals B1_EAGA_FP (= 4) and B1_EAGB_FP (= 5) via the selector L3. .

上記の動作により,SIMD演算用パイプラインFLAは,演算用インタフェース333が出力するフラグ信号により,タイミング6で,アドレス用インタフェース310内の2つのメモリアクセスパイプラインEAGA,EAGBに,2つのメモリアクセス要求を生成する。   By the above operation, the SIMD operation pipeline FLA makes two memory access requests to the two memory access pipelines EAGA and EAGB in the address interface 310 at timing 6 based on the flag signal output from the operation interface 333. Is generated.

図14は,SIMD幅が4のSIMDインダイレクトメモリアクセス命令の場合のパイプラインとアドレス用インタフェース回路310の入出力信号変化を示す図である。SIMD演算パイプラインFLAの演算用インタフェース333が,タイミング5のサイクルB1で図12の入力信号(B1_FLA_***)を出力し,アドレス用インタフェース310が,それらの入力信号に基づいて,タイミング6,7で図12の出力信号(B1_EAGA_***,B1_EAGB_***)によるメモリアクセス要求を生成する。   FIG. 14 is a diagram showing input / output signal changes in the pipeline and address interface circuit 310 in the case of a SIMD indirect memory access instruction having a SIMD width of 4. The operation interface 333 of the SIMD operation pipeline FLA outputs the input signal (B1_FLA _ ***) of FIG. 12 in the cycle B1 of the timing 5, and the address interface 310 receives the timing 6, 7 generates a memory access request by the output signals (B1_EAGA _ ***, B1_EAGB _ ***) in FIG.

タイミング5の演算用インタフェース333が出力する入力信号と,タイミング6でアドレス用インタフェース310内のメモリアクセスパイプラインEAGA,EAGBに生成される出力信号は,図13のSIMD幅2の場合と同じである。   The input signal output from the operation interface 333 at timing 5 and the output signal generated in the memory access pipelines EAGA and EAGB in the address interface 310 at timing 6 are the same as in the case of the SIMD width 2 in FIG. .

ただし,SIMD幅4の場合は,タイミング6のラッチF2の入力IID信号をセレクタL1を介してラッチF2が再度ラッチし,タイミング6のアンドゲートA1の出力と入力4SIMD信号B1_FLA_4SIMD_EAITFのラッチ信号の論理積を,アンドゲートA2を介してラッチF3がラッチする。また,タイミング6の入力FP信号B1_FLA_FP_EAITFの値に加算器ADD1で+2した値を,セレクタL2を介してラッチF2_FPがラッチする。それに対応して,タイミング7では,タイミング6と同様にして,メモリアクセスパイプラインEAGA,EAGBの出力バリッド信号,出力インダイレクト信号が1を維持し,出力IID信号が2を維持し,出力FP信号が6,7になる。   However, in the case of the SIMD width 4, the input IID signal of the latch F2 at timing 6 is latched again via the selector L1, and the logical product of the output of the AND gate A1 at timing 6 and the latch signal of the input 4 SIMD signal B1_FLA_4SIMD_EAITF Is latched by the latch F3 via the AND gate A2. Further, the value obtained by adding +2 by the adder ADD1 to the value of the input FP signal B1_FLA_FP_EAITF at timing 6 is latched by the latch F2_FP via the selector L2. Correspondingly, at timing 7, as in timing 6, the output valid signal and output indirect signal of the memory access pipelines EAGA and EAGB maintain 1, the output IID signal maintains 2, and the output FP signal Becomes 6,7.

上記の動作により,SIMD演算用パイプラインFLAは,演算用インタフェース333の出力する信号により,タイミング6で,アドレス用インタフェース310内の2つのメモリアクセスパイプラインEAGA,EAGBに,2つのメモリアクセス要求を生成し,さらに,タイミング7でメモリアクセスパイプラインEAGA,EAGBにさらに2つのメモリアクセス要求を生成する。   With the above operation, the SIMD operation pipeline FLA issues two memory access requests to the two memory access pipelines EAGA and EAGB in the address interface 310 at timing 6 according to the signal output from the operation interface 333. In addition, two more memory access requests are generated in the memory access pipelines EAGA and EAGB at timing 7.

図15は,図6の1つのメモリアクセスパイプラインEAGAを有する場合の演算用インタフェース331とアドレス用インタフェース310の構成を示す図である。SIMDインダイレクトメモリアクセス命令の場合,図12と異なり次のような動作になる。図10も参照して説明する。   FIG. 15 is a diagram showing the configuration of the arithmetic interface 331 and the address interface 310 when the single memory access pipeline EAGA of FIG. 6 is provided. In the case of the SIMD indirect memory access instruction, the following operation is performed unlike FIG. This will be described with reference to FIG.

まず,タイミング5の入力バリッド信号B1_FLA_VALID_EAITFと入力インダイレクト信号B1_FLA_INDIRECT_EAITFの論理積が,アンドゲートA1を介して2つのラッチF2_1でラッチされ,そのラッチF2_1の出力がさらに次のタイミングでラッチF2_2でラッチされ,タイミング6,7で,出力バリッド信号B1_EAGA_VALID_ORと出力インダイレクト信号B1_EAGA_INDIRECTが2サイクルにわたり1を出力する。   First, the logical product of the input valid signal B1_FLA_VALID_EAITF at timing 5 and the input indirect signal B1_FLA_INDDIRECT_EAITF is latched by the two latches F2_1 via the AND gate A1, and the output of the latch F2_1 is further latched by the latch F2_2 at the next timing. At timings 6 and 7, the output valid signal B1_EAGA_VALID_OR and the output indirect signal B1_EAGA_INDDIRECT output 1 over 2 cycles.

SIMD幅が4の場合は,さらに,タイミング7のラッチF2_2の出力と入力4SIMD信号のラッチF2_2の出力の論理積が,アンドゲートA2を介してラッチF3_1でラッチされ,そのラッチF3_1の出力がさらに次のタイミングでラッチされ,タイミング8,9で,出力バリッド信号B1_EAGA_VALID_ORと出力インダイレクト信号B1_EAGA_INDIRECTが2サイクルにわたり1を出力する。   When the SIMD width is 4, the logical product of the output of the latch F2_2 at timing 7 and the output of the latch F2_2 of the input 4 SIMD signal is latched by the latch F3_1 via the AND gate A2, and the output of the latch F3_1 is further increased. Latched at the next timing, and at timings 8 and 9, the output valid signal B1_EAGA_VALID_OR and the output indirect signal B1_EAGA_INDDIRECT output 1 over two cycles.

タイミング5の入力IID信号B1_FLA_IID_EAITFは,セレクタL1を介してラッチF2で4回ラッチされ,タイミング6,7,8,9でセレクタL4を介して出力IID信号B1_EAGA_IIDとして出力される。   The input IID signal B1_FLA_IID_EAITF at timing 5 is latched four times by the latch F2 through the selector L1, and is output as the output IID signal B1_EAGA_IID through the selector L4 at timings 6, 7, 8, and 9.

タイミング5の入力FP信号B1_FLA_FP_EAITFは,セレクタL2を介してラッチF2_FPがラッチし,その後,3サイクルで加算器ADD1でそれぞれ+1したフェッチポートFPの値をラッチF2_FPがラッチする。そして,タイミング6,7,8,9で,出力FP信号B1_EAGA_FPが,入力FP値,それに+1,+2,+3されたFP値になる。   An input FP signal B1_FLA_FP_EAITF at timing 5 is latched by the latch F2_FP via the selector L2, and then the value of the fetch port FP incremented by the adder ADD1 in three cycles is latched by the latch F2_FP. At timings 6, 7, 8, and 9, the output FP signal B1_EAGA_FP becomes the input FP value and the FP value that is +1, +2, or +3.

[衝突を回避するためのRSAとRAFによる新たなエントリ投入の抑止]
図16,図17は,SIMD幅2の場合と4の場合での後続するRSAから投入されるメモリアクセスとの衝突を示す図である。いずれも,図11の例で示している。
[Inhibition of new entry by RSA and RAF to avoid collision]
FIGS. 16 and 17 are diagrams showing a collision between a memory access input from a subsequent RSA in the case of SIMD width 2 and 4. Both are shown in the example of FIG.

本実施の形態では,RAFがSIMDインダイレクトメモリアクセス命令のエントリをSIMD演算パイプラインFLAに投入すると,SIMD演算パイプラインFLAが,演算用インタフェース333が出力する信号を利用して,アドレス用インタフェース310内のメモリアクセスパイプラインEAGA,EAGBに複数のメモリアクセス要求を生成する。そのため,その生成されたメモリアクセス要求と後続のRSAから投入されるメモリアクセス要求とが衝突する場合がある。図11の例では,SIMD幅が2の場合は1回メモリアクセス要求が生成されるので1回衝突する場合があり,SIMD幅が4の場合は2回メモリアクセス要求が生成されるので2回衝突する場合がある。図6のメモリアクセスパイプラインEAGAが1つの例では,SIMD幅2では2回衝突し,SIMD幅4では4回衝突する場合がある。   In the present embodiment, when the RAF inputs an entry for the SIMD indirect memory access instruction to the SIMD operation pipeline FLA, the SIMD operation pipeline FLA uses the signal output from the operation interface 333 to generate an address interface 310. A plurality of memory access requests are generated in the memory access pipelines EAGA and EAGB. Therefore, the generated memory access request may collide with a memory access request input from the subsequent RSA. In the example of FIG. 11, when the SIMD width is 2, the memory access request is generated once, so there is a case of collision once, and when the SIMD width is 4, the memory access request is generated twice. There may be a collision. In one example of the memory access pipeline EAGA of FIG. 6, there may be two collisions with SIMD width 2 and four collisions with SIMD width 4.

図11の例で説明すると以下のとおりである。図16,17には衝突がB1への取消線で示されている。   The description of the example of FIG. 11 is as follows. 16 and 17, the collision is indicated by a strike-through line to B1.

(1)図16のSIMD幅2の場合は,タイミング3でRSFがパイプラインFLAにSIMD幅2のSIMDインダイレクトメモリアクセス命令のエントリを出力し,タイミング5でRSAがパイプラインEAGAもしくはEAGBにメモリアクセス命令のエントリを出力した場合,タイミング6で,SIMDインダイレクトメモリアクセス命令により生成されるメモリアクセス要求のサイクルB1の信号と,RSAから転送されるメモリアクセス要求のサイクルB1の信号が衝突する。   (1) In the case of SIMD width 2 in FIG. 16, at timing 3, RSF outputs an SIMD indirect memory access instruction entry of SIMD width 2 to pipeline FLA, and at timing 5, RSA stores memory in pipeline EAGA or EAGB. When an access instruction entry is output, at timing 6, the memory access request cycle B1 signal generated by the SIMD indirect memory access instruction and the memory access request cycle B1 signal transferred from the RSA collide.

(2)図17のSIMD幅4の場合は,タイミング3でRSFがパイプラインFLAにSIMD幅4のインダイレクト命令のエントリを出力し,タイミング5もしくは6においてRSAがパイプラインEAGAもしくはEAGBにメモリアクセス命令のエントリを出力した場合,次の衝突が発生する。   (2) In the case of SIMD width 4 in FIG. 17, RSF outputs an indirect instruction entry of SIMD width 4 to pipeline FLA at timing 3, and RSA makes memory access to pipeline EAGA or EAGB at timing 5 or 6 When an instruction entry is output, the following collision occurs.

すなわち,タイミング5でRSAがパイプラインEAGAもしくはEAGBにメモリアクセス命令のエントリを出力した場合,タイミング6でSIMDインダイレクトメモリアクセス命令により生成されるメモリアクセス要求のサイクルB1の信号と,RSAから転送されるメモリアクセス要求のサイクルB1の信号が衝突する。   That is, when RSA outputs a memory access instruction entry to pipeline EAGA or EAGB at timing 5, it is transferred from memory access request cycle B1 generated by the SIMD indirect memory access instruction at timing 6 and from RSA. The memory access request cycle B1 signals collide with each other.

また,タイミング6でRSAがパイプラインEAGAもしくはEAGBにメモリアクセス命令のエントリを出力した場合,タイミング7でSIMDインダイレクトメモリアクセス命令により生成されるメモリアクセス要求のサイクルB1の信号と,RSAから転送されるメモリアクセス要求のサイクルB1の信号とが衝突する。   Also, when RSA outputs a memory access instruction entry to pipeline EAGA or EAGB at timing 6, the memory access request cycle B 1 signal generated by the SIMD indirect memory access instruction at timing 7 is transferred from RSA. Conflicts with the signal of the memory access request cycle B1.

図18は,SIMD幅4の場合での後続するSIMDインダイレクトメモリアクセス命令のエントリの投入により生成されるメモリアクセス要求との衝突を示す図である。いずれも,図11の2つのメモリアクセスパイプラインEAGA,EGABを有する例で示している。   FIG. 18 is a diagram showing a collision with a memory access request generated by inputting an entry of a subsequent SIMD indirect memory access instruction in the case of SIMD width 4. Both are shown in an example having two memory access pipelines EAGA and EGAB in FIG.

本実施の形態では,SIMDインダイレクトメモリアクセス命令のエントリの投入に応答して,SIMD演算パイプラインFLAが,演算用インタフェース333が出力する信号を利用して,メモリアクセスパイプラインEAGA,EAGBにメモリアクセス要求を生成する。そのため,その生成されたメモリアクセス要求が,後続のSIMDインダイレクトメモリアクセス命令のエントリの投入に応答してメモリアクセスパイプラインEAGA,EAGBに生成されるメモリアクセス要求と衝突する場合がある。図11の例では,SIMD幅が4の場合に2回メモリアクセス要求が生成されるので,後続のSIMDインダイレクトメモリアクセス命令に対応するメモリアクセス要求と,1回衝突する場合がある。図6の例では,SIMD幅2では1回衝突し,SIMD幅4では3回衝突する場合がある。   In this embodiment, in response to the entry of the entry of the SIMD indirect memory access instruction, the SIMD operation pipeline FLA uses the signal output from the operation interface 333 to store memory in the memory access pipelines EAGA and EAGB. Generate an access request. For this reason, the generated memory access request may collide with the memory access request generated in the memory access pipelines EAGA and EAGB in response to the entry of the entry of the subsequent SIMD indirect memory access instruction. In the example of FIG. 11, since the memory access request is generated twice when the SIMD width is 4, there may be a collision with the memory access request corresponding to the subsequent SIMD indirect memory access instruction. In the example of FIG. 6, there is a case where the collision occurs once for the SIMD width 2 and the collision occurs three times for the SIMD width 4.

図11の例で説明すると図18に示されるように以下のとおりである。図18には衝突がB1への取消線で示されている。   The description of the example of FIG. 11 is as follows as shown in FIG. In FIG. 18, the collision is indicated by a strikethrough to B1.

(3)タイミング3でRSFがSIMD幅4のSIMDインダイレクトメモリアクセス命令のエントリを出力し,タイミング4でRSFがSIMD幅2もしくは4のSIMDインダイレクトメモリアクセス命令のエントリを出力した場合,次のとおり衝突が発生する。すなわち,タイミング3でRSFから出力された4SIMDインダイレクトメモリアクセス命令により生成されたメモリアクセス要求のサイクルB1の信号と,次のタイミング4でRSFから出力された2または4SIMDインダイレクトメモリアクセス命令により生成されたメモリアクセス要求のサイクルB1の信号とが,タイミング7で衝突する。   (3) When the RSF outputs an entry for a SIMD indirect memory access instruction with a SIMD width of 4 at timing 3, and when the RSF outputs an entry for a SIMD indirect memory access instruction with a SIMD width of 2 or 4 at timing 4, A collision occurs. That is, the memory access request cycle B1 signal generated by the 4 SIMD indirect memory access instruction output from the RSF at timing 3 and the 2 or 4 SIMD indirect memory access instruction output from the RSF at the next timing 4 The signal in cycle B1 of the memory access request made collides at timing 7.

図19は,インダイレクトメモリアクセス要求の衝突を回避する抑止信号を生成する演算用インタフェース333の構成を示す図である。演算用インタフェース333は,RSFが投入するSIMDインダイレクトメモリアクセス命令のエントリのPサイクルのフラグ信号を入力し,ラッチ群F10でラッチし,さらにラッチ群F11でラッチする。それにより,演算用インタフェース333は,Pサイクルから2サイクル後のB1サイクルの出力信号を,SIMD演算パイプラインFLAのSIMD演算器330と,メモリアクセスパイプラインEAGA,EAGBのアドレス用インタフェース310に転送する。演算用インタフェース333が2つのラッチ群F10,F11を有するのは,例えば,タイミングを調整するためである。   FIG. 19 is a diagram illustrating a configuration of the calculation interface 333 that generates a suppression signal that avoids collision of indirect memory access requests. The calculation interface 333 receives the P cycle flag signal of the entry of the SIMD indirect memory access instruction input by the RSF, latches it in the latch group F10, and further latches it in the latch group F11. Thereby, the operation interface 333 transfers the output signal of the B1 cycle two cycles after the P cycle to the SIMD operation unit 330 of the SIMD operation pipeline FLA and the address interface 310 of the memory access pipelines EAGA and EAGB. . The reason why the calculation interface 333 includes the two latch groups F10 and F11 is, for example, to adjust timing.

そして,演算用インタフェース333は,Pサイクルの3つのフラグ信号からRSFへの後続のSIMDインダイレクトメモリアクセス命令のエントリの投入を抑止する抑止信号INH_FLA_INDIRECT_OPと,PTサイクルの2つのフラグ信号からとともに,B1サイクルの3つのフラグ信号からも,RSAへの後続のメモリアクセス命令の投入を抑止する抑止信号INH_RSA_PRIORITYを生成する。   Then, the arithmetic interface 333 receives the B1 together with the inhibition signal INH_FLA_INDDIRECT_OP for inhibiting the entry of the subsequent SIMD indirect memory access instruction entry from the three flag signals in the P cycle to the RSF, and the two flag signals in the PT cycle. Also from the three flag signals of the cycle, an inhibition signal INH_RSA_PRIORITY that inhibits the subsequent memory access instruction from being input to the RSA is generated.

演算用インタフェース333の動作は次のとおりである。   The operation of the calculation interface 333 is as follows.

入力信号(バリッド信号)P_FLA_VALIDは,浮動小数点・SIMDパイプラインのPサイクルでパイプラインFLAへのSIMD演算器に演算要求が出力されたときに1となる。   The input signal (valid signal) P_FLA_VALID becomes 1 when a calculation request is output to the SIMD calculator to the pipeline FLA in the P cycle of the floating point / SIMD pipeline.

入力信号(インダイレクト信号)P_FLA_INDIRECTは,入力バリッド信号P_FLA_VALIDが1のときに有効となる信号であり,演算要求がSIMDインダイレクトメモリアクセス命令の場合に,浮動小数点・SIMDパイプラインのPサイクルで1となる。   The input signal (indirect signal) P_FLA_INDDIRECT is a signal that is valid when the input valid signal P_FLA_VALID is 1, and is 1 in the P cycle of the floating point / SIMD pipeline when the operation request is a SIMD indirect memory access instruction. It becomes.

入力信号(4SIMD信号)P_FLA_4SIMDは,入力バリッド信号P_FLA_VALIDが1のときに有効となる信号であり,SIMD演算器の演算幅が4であるときに浮動小数点・SIMDパイプラインのPサイクルで1となる。   The input signal (4SIMD signal) P_FLA_4SIMD is a signal that becomes valid when the input valid signal P_FLA_VALID is 1, and becomes 1 in the P cycle of the floating-point / SIMD pipeline when the operation width of the SIMD arithmetic unit is 4. .

入力信号(IDD信号)P_FLA_IIDは,入力バリッド信号P_FLA_VALIDが1のときに有効となる信号であり,パイプラインFLAで実行される演算のCSEのエントリ番号を示す。   The input signal (IDD signal) P_FLA_IID is a signal that is valid when the input valid signal P_FLA_VALID is 1, and indicates the CSE entry number of the operation executed in the pipeline FLA.

入力信号(FP信号)P_FLA_FPは,入力バリッド信号P_FLA_VALIDが1かつ入力インダイレクト信号P_FLA_INDIRECTが1のときに有効となる信号であり,SIMDインダイレクトメモリアクセス命令において命令デコーダで確保された一次データキャッシュ内のフェッチポートFPの先頭番号を示す。   The input signal (FP signal) P_FLA_FP is a signal that is valid when the input valid signal P_FLA_VALID is 1 and the input indirect signal P_FLA_DIRECT is 1, and is in the primary data cache secured by the instruction decoder in the SIMD indirect memory access instruction. Of the first fetch port FP.

演算用インタフェース333は,5つの入力信号をラッチF10,F11でラッチして中継し,5つの出力信号B1_FLA_VALID_EAITF,B1_FLA_INDIRECT_EAITF,B1_FLA_4SIMD_EAITF,B1_FLA_IID_EAITF,B1_FLA_FP_EAITFを,アドレス用インタフェース310に転送し,メモリアクセスのリクエストを生成させる。   The arithmetic interface 333 latches and relays the five input signals by the latches F10 and F11, and transfers the five output signals B1_FLA_VALID_EAITF, B1_FLA_DIRECT_EAITF, B1_FLA_4SIMD_EAITF, B1_FLA_IID_EAITF, and B1_FLA_P address access to the B1_FLA_P address. Generate.

同様に,演算用インタフェース333は,4つの入力信号をラッチF10,F11でラッチして中継し,4つの出力信号B1_FLA_VALID,B1_FLA_INDIRECT,B1_FLA_4SIMD,B1_FLA_IIDを,SIMD演算器に転送する。   Similarly, the calculation interface 333 latches and relays four input signals by the latches F10 and F11, and transfers the four output signals B1_FLA_VALID, B1_FLA_DIRECT, B1_FLA_4SIMD, and B1_FLA_IID to the SIMD calculator.

演算用インタフェース333では,アンドゲートA4がPサイクルの2つの入力信号P_FLA_VALID,P_FLA_INDIRECTの論理積を後続の通常メモリアクセス命令の抑止信号INH_RSA_PRIORITYとして生成し,RSAに転送する。これにより,RSAは,後続のメモリアクセス命令のエントリのメモリアクセスパイプラインEAGA,EAGBへの投入を抑止する。   In the arithmetic interface 333, the AND gate A4 generates a logical product of the two input signals P_FLA_VALID and P_FLA_INDDIRECT of the P cycle as the inhibition signal INH_RSA_PRIORITY of the subsequent normal memory access instruction and transfers it to the RSA. As a result, the RSA suppresses the entry of the subsequent memory access instruction entry into the memory access pipelines EAGA and EAGB.

図16に示されるとおり,タイミング3のPサイクルの2つの信号が全て1の場合に,タイミング4で抑止信号INH_RSA_PRIORITYが1になり,タイミング5においてRSAがメモリアクセス命令のエントリのパイプラインEAGA,EAGBへの投入を抑止する。これにより,タイミング6でB1サイクルの信号が発生せず,衝突が回避される。   As shown in FIG. 16, when the two signals in the P cycle at timing 3 are all 1, the inhibition signal INH_RSA_PRIORITY becomes 1 at timing 4, and at timing 5, RSA is the pipelines EAGA and EAGB of the entry of the memory access instruction. Suppressing input to. As a result, the B1 cycle signal is not generated at timing 6, and collision is avoided.

さらに,演算用インタフェース333では,アンドゲートA5がPサイクルの3つの入力信号P_FLA_VALID,P_FLA_INDIRECT,P_FLA_4SIMDの論理積を後続の通常メモリアクセス命令の抑止信号INH_RSA_PRIORITYとして生成し,RSAに転送する。これにより,RSAは,後続のメモリアクセス命令のメモリアクセスパイプラインEAGA,EAGBへの投入を抑止する。   Further, in the arithmetic interface 333, the AND gate A5 generates a logical product of the three input signals P_FLA_VALID, P_FLA_INDDIRECT, and P_FLA_4SIMD in the P cycle as an inhibition signal INH_RSA_PRIORITY of the subsequent normal memory access instruction and transfers it to the RSA. As a result, the RSA inhibits subsequent memory access instructions from being input to the memory access pipelines EAGA and EAGB.

図17に示されるとおり,タイミング3のPサイクルの3つの信号が全て1の場合に,タイミング5で抑止信号INH_RSA_PRIORITYが1になり,タイミング6においてRSAがメモリアクセス命令のパイプラインEAGA,EAGBへの投入を抑止する。これにより,タイミング7でB1サイクルの信号が発生せず,衝突が回避される。図17では,図16と同様にして,タイミング4で抑止信号INH_RSA_PRIORITYが1になり,タイミング5におけるRSAでのメモリアクセス命令の投入が抑止されている。   As shown in FIG. 17, when all three signals in the P cycle at timing 3 are 1, the inhibition signal INH_RSA_PRIORITY becomes 1 at timing 5, and RSA is sent to the pipelines EAGA and EAGB of memory access instructions at timing 6. Suppress input. As a result, the B1 cycle signal is not generated at timing 7, and collision is avoided. In FIG. 17, as in FIG. 16, the inhibition signal INH_RSA_PRIORITY becomes 1 at timing 4, and the input of the memory access instruction at RSA at timing 5 is inhibited.

そして,演算用インタフェース333では,アンドゲートA3がPサイクルの3つの入力信号P_FLA_VALID,P_FLA_INDIRECT,P_FLA_4SIMDの論理積を後続のSIMDインダイレクトメモリアクセス命令の抑止信号INH_FLA_INDIRECT_OPとして生成し,RSFに転送する。これにより,RSFは,後続のSIMDインダイレクトメモリアクセス命令のエントリのSIMD演算パイプラインFLAへの投入を抑止する。   In the arithmetic interface 333, the AND gate A3 generates a logical product of the three input signals P_FLA_VALID, P_FLA_INDDIRECT, and P_FLA_4SIMD in the P cycle as a subsequent SIMD indirect memory access instruction suppression signal INH_FLA_INDDIRECT_OP and transfers it to the RSF. As a result, the RSF suppresses the entry of the subsequent SIMD indirect memory access instruction entry into the SIMD operation pipeline FLA.

図18に示されるとおり,タイミング3のPサイクルの3つの信号が全て1の場合に,抑止信号INH_FLA_INDIRECT_OPが1になり,次のタイミング4においてRSFがSIMDインダイレクトメモリアクセス命令のエントリのパイプラインFLAへの投入を抑止する。これにより,タイミング7で生成されたB1サイクルの信号が発生せず,衝突が回避される。   As shown in FIG. 18, when all three signals of the P cycle at timing 3 are 1, the inhibition signal INH_FLA_INDDIRECT_OP becomes 1, and at the next timing 4, the RSF becomes the pipeline FLA of the entry of the SIMD indirect memory access instruction. Suppressing input to. Thereby, the signal of the B1 cycle generated at the timing 7 is not generated, and the collision is avoided.

図20は,RSFとそのSIMDインダイレクトメモリアクセス命令のエントリの出力抑止回路を示す図である。RSFは,例えば20個のエントリ保持部337を有し,リザベーションステーションRSFに生成された命令のエントリに対応するフラグが格納されている。フラグの例は図7に示されている。   FIG. 20 is a diagram illustrating an output suppression circuit for an entry of an RSF and its SIMD indirect memory access instruction. The RSF has, for example, 20 entry holding units 337, and stores flags corresponding to the entries of instructions generated in the reservation station RSF. An example of the flag is shown in FIG.

各エントリ保持部337に対応するRSFエントリ出力条件検出回路338は,これらのフラグを用い,RSF内のエントリそれぞれについてパイプラインへの出力可能条件が成立したことを検出する。このRSFエントリ出力条件検出回路338は,RSFそれぞれに格納された命令のエントリが処理可能となった場合に1を出力し,出力が可能でない場合は0を出力する。   The RSF entry output condition detection circuit 338 corresponding to each entry holding unit 337 uses these flags to detect that an output enabling condition to the pipeline is established for each entry in the RSF. The RSF entry output condition detection circuit 338 outputs 1 when an entry of an instruction stored in each RSF can be processed, and outputs 0 when output is not possible.

抑止回路339は,演算用インタフェース333で生成された抑止信号INH_FLA_INDIRECT_OPと,RSFのエントリ保持部337に格納されているINDIRECTフラグが共に1の場合に,出力条件検出回路338の出力を強制的に0にする。これにより,対応するRSFエントリが出力可能であるか否かを示すREADY信号がラッチRSFxx_READYにラッチされる。xxは00−19である。   The inhibition circuit 339 forces the output of the output condition detection circuit 338 to 0 when both the inhibition signal INH_FLA_INDDIRECT_OP generated by the arithmetic interface 333 and the INDIRECT flag stored in the RSF entry holding unit 337 are 1. To. As a result, the READY signal indicating whether or not the corresponding RSF entry can be output is latched in the latch RSFxx_READY. xx is 00-19.

FLA出力選択回路340は,このREADY信号が1のRSFエントリから,次に出力するRSFエントリを選択し,演算用インタフェース333へ出力する。ただし,SIMDインダイレクトメモリアクセス命令の場合は,INDIRECTフラグが1になるので,抑止信号INH_FLA_INDIRECT_OPが1となったとき,そのエントリのREADY信号が0となるため,FLA出力選択回路340はそのSIMDインダイレクトメモリアクセス命令のエントリを選択することはない。SIMDインダイレクトメモリアクセス命令以外の命令の場合は,INDIRECTフラグが0になるので,エントリ出力条件検出回路338の出力がREADY信号として使用される。したがって,SIMDインダイレクトメモリアクセス命令以外の命令については,必要な資源が準備されたエントリがあればその命令のエントリが出力される。これによりRSFが,抑止信号INH_FLA_INDIRECT_OPに応じて,SIMDインダイレクトメモリアクセス命令のエントリの出力を抑止する。   The FLA output selection circuit 340 selects the RSF entry to be output next from the RSF entry whose READY signal is 1, and outputs it to the operation interface 333. However, in the case of a SIMD indirect memory access instruction, the INDIRECT flag is set to 1. Therefore, when the inhibition signal INH_FLA_INDDIRECT_OP is set to 1, the READY signal of the entry is set to 0, so that the FLA output selection circuit 340 has its SIMD input. The direct memory access instruction entry is not selected. In the case of an instruction other than the SIMD indirect memory access instruction, the DIRECT flag is set to 0, so that the output of the entry output condition detection circuit 338 is used as the READY signal. Therefore, for an instruction other than the SIMD indirect memory access instruction, if there is an entry in which necessary resources are prepared, the entry of that instruction is output. As a result, the RSF suppresses the output of the SIMD indirect memory access instruction entry in response to the suppression signal INH_FLA_INDDIRECT_OP.

図21は,RSAとその通常のメモリアクセス命令のエントリの出力抑止回路を示す図である。RSAは,例えば20個のエントリ保持部314を有する。各エントリ保持部314に対応するRSAエントリ出力条件検出回路315は,RSAエントリそれぞれについてパイプラインへの出力可能条件が成立したことを検出する。このRSAエントリ出力条件検出回路315は,RSAそれぞれに格納された命令が処理可能となった場合に1を出力し,出力が可能でない場合は0を出力する。   FIG. 21 is a diagram showing an output suppression circuit for an entry of RSA and its normal memory access instruction. The RSA has, for example, 20 entry holding units 314. The RSA entry output condition detection circuit 315 corresponding to each entry holding unit 314 detects that an output enabling condition to the pipeline is established for each RSA entry. The RSA entry output condition detection circuit 315 outputs 1 when an instruction stored in each RSA can be processed, and outputs 0 when the instruction cannot be output.

抑止回路316は,演算用インタフェース333で生成された抑止信号INH_RSA_PRIORITYが1の場合に,RSAエントリ出力条件検出回路315の出力を強制的に0にする。これにより,対応するRSAエントリが出力可能であるか否かを示すREADY信号がラッチRSAxx_READYにラッチされる。   The inhibition circuit 316 forcibly sets the output of the RSA entry output condition detection circuit 315 to 0 when the inhibition signal INH_RSA_PRIORITY generated by the arithmetic interface 333 is 1. As a result, a READY signal indicating whether or not the corresponding RSA entry can be output is latched in the latch RSAxx_READY.

EAGA/EAGB出力選択回路317は,READY信号が1のRSAエントリから出力するRSAエントリを選択し,メモリアクセスパイプラインEAGAまたはEAGBに出力し,アドレス用インタフェースへ転送する。抑止信号INH_RSA_PRIORITYが1のとき,RSAエントリ出力条件検出回路315から出力された値に関わらず,すべてのRSAのREADY信号が0になる。これによりEAGA/EAGB出力選択回路315は出力可能なエントリがないため,メモリリクエストをメモリアクセスパイプラインEAGA,EAGBにエントリを出力しない。これによりRSAが,抑止信号INH_RSA_PRIORITYに応じて,メモリアクセス命令のエントリの出力を抑止する。   The EAGA / EAGB output selection circuit 317 selects the RSA entry output from the RSA entry whose READY signal is 1, outputs it to the memory access pipeline EAGA or EAGB, and transfers it to the address interface. When the inhibition signal INH_RSA_PRIORITY is 1, the READY signals of all RSAs become 0 regardless of the value output from the RSA entry output condition detection circuit 315. As a result, the EAGA / EAGB output selection circuit 315 does not output an entry to the memory access pipelines EAGA and EAGB because there is no entry that can be output. As a result, the RSA inhibits output of the memory access instruction entry in response to the inhibit signal INH_RSA_PRIORITY.

図22は,CSE内の完了待ち合わせ回路を示す図である。図22には,CSEの1つのエントリに対する完了待ち合わせ回路が示されている。   FIG. 22 is a diagram showing a completion waiting circuit in the CSE. FIG. 22 shows a completion waiting circuit for one entry of the CSE.

まず,CSEのエントリにインダイレクトフラグCSE_INDIRECTが含まれている。CSEのエントリがSIMDインダイレクトメモリアクセス命令の場合,そのエントリのインダイレクトフラグCSE_INDIRECTが1になる。また,その命令が4SIMDの場合に4SIMD信号CSE_4SIMDが1になる。CSEにエントリされた命令がSIMDインダイレクトメモリアクセス命令であった場合,一次データキャッシュ312が同じCSEのエントリ番号IIDに対して2SIMDなら2回,4SIMDなら4回の完了報告をCSEに行う。   First, the indirect flag CSE_INDDIRECT is included in the CSE entry. When the CSE entry is a SIMD indirect memory access instruction, the indirect flag CSE_INDDIRECT of the entry becomes 1. Further, when the instruction is 4 SIMD, 4 SIMD signal CSE_4SIMD becomes 1. If the instruction entered in the CSE is a SIMD indirect memory access instruction, the primary data cache 312 sends a completion report to the CSE twice for 2 SIMD and 4 completions for 4 SIMD for the same CSE entry number IID.

入力信号(インダイレクト信号)CSE_INDIRECT,入力信号(4SIMD信号)CSE_4SIMDは,命令デコーダ305によりCSEに登録されたエントリのフラグである。入力信号CSE_INDIRECTが1のときCSEのエントリがSIMDインダイレクトメモリアクセス命令であることを示す。入力信号CSE_4SIMDが1のとき,CSEのエントリのSIMD幅が4であることを示し,0のときSIMD幅が2であることを示す。   An input signal (indirect signal) CSE_INDDIRECT and an input signal (4SIMD signal) CSE_4SIMD are flags of entries registered in the CSE by the instruction decoder 305. When the input signal CSE_INDDIRECT is 1, it indicates that the entry of CSE is a SIMD indirect memory access instruction. When the input signal CSE_4SIMD is 1, it indicates that the SIMD width of the CSE entry is 4, and when it is 0, it indicates that the SIMD width is 2.

本実施の形態の一次データキャッシュ312は,2つの独立したメモリアクセスを同時に処理する。そのため,一次データキャッシュ312は,メモリアクセス完了信号を2つ独立して通知する。   The primary data cache 312 of the present embodiment processes two independent memory accesses simultaneously. Therefore, the primary data cache 312 notifies two memory access completion signals independently.

入力信号RT_STV_0,RT_STV_1は一次データキャッシュから転送されるメモリアクセスの完了信号である。   Input signals RT_STV_0 and RT_STV_1 are memory access completion signals transferred from the primary data cache.

入力信号RT_STV_0_CSE_SEL,RT_STV_1_CSE_SELは,一次データキャッシュにおいて処理中のエントリ番号IIDが,CSEのエントリ番号と一致したとき1となる。   The input signals RT_STV_0_CSE_SEL and RT_STV_1_CSE_SEL are set to 1 when the entry number IID being processed in the primary data cache matches the entry number of the CSE.

RT_STV_0とRT_STV_0_CSE_SELが1となったとき,もしくはRT_STV_1とRT_STV_1_CSE_SELが1となったとき,アンドゲートA8またはA9の出力により,CSEへのメモリアクセス完了報告が有効となる。メモリアクセス完了報告が有効になると,加算器351が3ビットの入力信号に+1加算してメモリアクセス完了回数記憶素子353に出力する。   When RT_STV_0 and RT_STV_0_CSE_SEL become 1, or when RT_STV_1 and RT_STV_1_CSE_SEL become 1, the output of the AND gate A8 or A9 makes the memory access completion report to the CSE valid. When the memory access completion report becomes valid, the adder 351 adds +1 to the 3-bit input signal and outputs it to the memory access completion count storage element 353.

命令デコードがCSEにエントリを作成したときに,メモリアクセス完了回数記憶素子353を0にリセットする。その後,一次データキャッシュ312からの完了報告により,RT_STV_0とRT_STV_0_CSE_SEL両方が1になった場合,もしくはRT_STV_1とRT_STV_1_CSE_SEL両方が1となった場合,加算器351がメモリアクセス完了回数を+1加算する。   When the instruction decode creates an entry in the CSE, the memory access completion count storage element 353 is reset to zero. Thereafter, when both RT_STV_0 and RT_STV_0_CSE_SEL are set to 1 or both RT_STV_1 and RT_STV_1_CSE_SEL are set to 1 by the completion report from the primary data cache 312, the adder 351 adds +1 to the memory access completion count.

メモリアクセス命令の種類により,メモリアクセス完了回数が規定の値(1,2,4回)となったとき,出力信号(完了信号)CSE_MEM_COMPが1となる。アンドゲートA6により,SIMDインダイレクトメモリアクセス命令かつSIMD幅が4の場合,4回のメモリアクセス完了が通知されたとき,加算器351のビット2の出力が1になり,完了信号CSE_MEM_COMPが1となる。SIMDインダイレクトメモリアクセス命令かつSIMD幅が2の場合,2回のメモリアクセス完了が通知されたとき,加算器351のビット1の出力が1になり,完了信号が1となる。そして,SIMDインダイレクト命令でないメモリアクセス命令の場合は,1回メモリアクセス完了が通知されたとき,加算器351のビット0の出力が1になり,完了信号CSE_MEM_COMPが1となる。   Depending on the type of memory access instruction, the output signal (completion signal) CSE_MEM_COMP becomes 1 when the memory access completion count reaches a specified value (1, 2, 4). When the ANDD A6 notifies the SIMD indirect memory access instruction and the SIMD width is 4, when the completion of four memory accesses is notified, the output of bit 2 of the adder 351 becomes 1, and the completion signal CSE_MEM_COMP is set to 1. Become. When the SIMD indirect memory access instruction and the SIMD width are 2, when the completion of two memory accesses is notified, the output of bit 1 of the adder 351 becomes 1, and the completion signal becomes 1. In the case of a memory access instruction that is not a SIMD indirect instruction, the output of bit 0 of the adder 351 becomes 1 when the completion of memory access is notified once, and the completion signal CSE_MEM_COMP becomes 1.

完了判定回路354は,この完了信号CSE_MEM_COMPを入力し,命令が完了可能となったことを示す信号を生成する。完了判定回路354は,処理が完了した命令をプログラムの順番に完了したと判定し,例えばリネーミングレジスタからレジスタに処理結果を転送し,エントリを開放する。   The completion determination circuit 354 receives the completion signal CSE_MEM_COMP and generates a signal indicating that the instruction can be completed. The completion determination circuit 354 determines that the instructions that have been processed are completed in the order of the program, for example, transfers the processing result from the renaming register to the register, and releases the entry.

以上の通り,本実施の形態によれば,SIMDインダイレクトメモリアクセス命令のエントリをRSFに生成し,そのエントリがSIMD演算用パイプラインFLAに出力されると,メモリアクセスパイプラインEAGA,EGABにSIMD幅に応じた数のメモリアクセスを生成し,SIMD演算器330が複数のSIMDレジスタ332に格納されている独立した複数のアドレスを取得てメモリアクセスパイプラインEAGA,EGABに転送し,一次データキャッシュ312がその複数のアドレスを使用して複数のSIMDレジスタ332に格納されている複数のデータについてメモリアクセスを行う。したがって,命令デコーダやCSE,RSA,RSFのエントリなどの資源を効率的に使用してSIMDインダイレクトメモリアクセス命令を実行する。   As described above, according to the present embodiment, when an entry of a SIMD indirect memory access instruction is generated in the RSF and the entry is output to the SIMD operation pipeline FLA, the SIMD is transferred to the memory access pipelines EAGA and EGAB. The number of memory accesses corresponding to the width is generated, and the SIMD computing unit 330 acquires a plurality of independent addresses stored in the plurality of SIMD registers 332 and transfers them to the memory access pipelines EAGA and EGAB, and the primary data cache 312 Performs memory access to a plurality of data stored in the plurality of SIMD registers 332 using the plurality of addresses. Therefore, SIMD indirect memory access instructions are executed by efficiently using resources such as instruction decoders and CSE, RSA, and RSF entries.

以上の実施の形態をまとめると,次の付記のとおりである。   The above embodiment is summarized as follows.

(付記1)
命令をデコードする命令デコーダと,
前記命令デコーダによりメモリアクセス命令のエントリを生成されるメモリアクセスエントリ部と,
前記メモリアクセスエントリ部から出力された前記メモリアクセス命令のエントリをメモリに対して実行するメモリアクセスパイプラインと,
前記命令デコーダにより複数のデータを1つの命令で処理するマルチデータ命令のエントリを生成されるマルチデータ命令エントリ部と,
複数の演算器と複数のマルチデータ命令用レジスタとを有し,前記マルチデータ命令エントリ部から出力された前記マルチデータ命令のエントリの処理を前記複数の演算器により並列に処理し,前記複数のマルチデータ命令用レジスタに演算結果を格納する演算パイプラインとを有し,
前記演算パイプラインは,前記複数のマルチデータ命令用レジスタに格納されている複数のメモリアドレスについて前記メモリにメモリアクセスするマルチデータインダイレクトメモリアクセス命令のエントリの出力に応答して,前記メモリアクセスパイプラインに前記マルチデータインダイレクトメモリアクセス命令に対応する複数のメモリアクセス要求を生成し,前記複数の演算器が前記複数のマルチデータ命令用レジスタから取得した前記複数のメモリアドレスを前記メモリアクセスパイプラインに供給する演算処理装置。
(Appendix 1)
An instruction decoder for decoding instructions;
A memory access entry part for generating an entry of a memory access instruction by the instruction decoder;
A memory access pipeline for executing an entry of the memory access instruction output from the memory access entry unit with respect to a memory;
A multi-data instruction entry unit for generating an entry of a multi-data instruction for processing a plurality of data with one instruction by the instruction decoder;
A plurality of arithmetic units and a plurality of multi-data instruction registers; processing of the multi-data instruction entry output from the multi-data instruction entry unit is processed in parallel by the plurality of arithmetic units; An operation pipeline for storing operation results in a register for multi-data instructions,
The operation pipeline is responsive to an output of an entry of a multi-data indirect memory access instruction that performs memory access to the memory for a plurality of memory addresses stored in the plurality of multi-data instruction registers. A plurality of memory access requests corresponding to the multi-data indirect memory access instruction on a line, and the plurality of computing units obtain the plurality of memory addresses acquired from the plurality of multi-data instruction registers in the memory access pipeline. Arithmetic processing device to supply to.

(付記2)
前記演算パイプラインは,前記メモリアクセスパイプラインの第1サイクルのステージに前記複数のメモリアクセス要求を生成し,前記メモリアクセスパイプラインの前記第1サイクルより後の第2サイクルのステージに前記複数のメモリアドレスを供給する
付記1に記載された演算処理装置。
(Appendix 2)
The arithmetic pipeline generates the plurality of memory access requests at a stage of the first cycle of the memory access pipeline, and the plurality of stages at a stage of a second cycle after the first cycle of the memory access pipeline. The arithmetic processing unit according to attachment 1, which supplies a memory address.

(付記3)
前記演算パイプラインは,前記メモリアクセスパイプラインに生成した複数のメモリアクセス要求のパイプライン転送タイミングにあわせて前記複数のメモリアドレスを供給する
付記2に記載された演算処理装置。
(Appendix 3)
The arithmetic processing device according to appendix 2, wherein the arithmetic pipeline supplies the plurality of memory addresses in accordance with pipeline transfer timings of a plurality of memory access requests generated in the memory access pipeline.

(付記4)
さらに,前記メモリアクセスパイプラインに接続されたキャッシュユニットを有し,
前記演算パイプラインは,前記メモリアクセスパイプラインに生成する前記複数のメモリアクセス要求に前記キャッシュユニット内のアクセス先メモリアドレスを格納する複数のフェッチポートの識別情報を含める
付記1に記載された演算処理装置。
(Appendix 4)
A cache unit connected to the memory access pipeline;
The arithmetic pipeline includes the identification information of a plurality of fetch ports that store access destination memory addresses in the cache unit in the plurality of memory access requests generated in the memory access pipeline. apparatus.

(付記5)
前記演算パイプラインは,前記メモリアクセスパイプラインに,前記複数のメモリアクセス要求をシリアルに生成し,前記複数のメモリアドレスをシリアルに供給する
付記1,2,3のいずれかに記載された演算処理装置。
(Appendix 5)
The arithmetic processing pipeline according to any one of appendices 1, 2, and 3 that serially generates the plurality of memory access requests and supplies the plurality of memory addresses serially to the memory access pipeline. apparatus.

(付記6)
前記メモリアクセスパイプラインが複数設けられ,
前記演算パイプラインは,前記複数のメモリアクセスパイプラインに,前記複数のメモリアクセス要求の少なくとも一部のメモリアクセス要求を並列に生成し,前記複数のメモリアドレスの少なくとも一部のアドレスを並列に供給する
付記1,2,3のいずれかに記載された演算処理装置。
(Appendix 6)
A plurality of the memory access pipelines;
The arithmetic pipeline generates at least a part of the plurality of memory access requests in parallel to the plurality of memory access pipelines, and supplies at least a part of the plurality of memory addresses in parallel. The arithmetic processing device described in any one of Supplementary Notes 1, 2, and 3.

(付記7)
さらに,前記メモリアクセスパイプラインに接続されたキャッシュユニットを有し,
前記キャッシュユニットは,前記複数のメモリアクセス要求に応答して,前記複数のマルチデータ命令用レジスタとの間でデータ転送を行う
付記1に記載された演算処理装置。
(Appendix 7)
A cache unit connected to the memory access pipeline;
The arithmetic processing unit according to attachment 1, wherein the cache unit performs data transfer with the plurality of multi-data instruction registers in response to the plurality of memory access requests.

(付記8)
前記演算パイプラインは,前記メモリアクセスエントリ部に抑止信号を出力して,前記メモリアクセスエントリ部に,前記メモリアクセスパイプラインに生成する前記複数のメモリアクセス要求と衝突するメモリアクセス命令のエントリの出力を抑止させる
付記1に記載された演算処理装置。
(Appendix 8)
The operation pipeline outputs a suppression signal to the memory access entry unit, and outputs to the memory access entry unit an entry of a memory access instruction that collides with the plurality of memory access requests generated in the memory access pipeline. The arithmetic processing unit described in the supplementary note 1.

(付記9)
前記演算パイプラインは,前記マルチデータ命令エントリ部に抑止信号を出力して,前記マルチデータ命令エントリ部に,前記メモリアクセスパイプラインにシリアルに生成する前記メモリアクセス要求と衝突するマルチデータインダイレクトメモリアクセス命令のエントリの出力を抑止させる
付記5に記載された演算処理装置。
(Appendix 9)
The operation pipeline outputs a suppression signal to the multi-data instruction entry unit, and the multi-data indirect memory that collides with the memory access request generated serially in the memory access pipeline to the multi-data instruction entry unit The arithmetic processing unit according to attachment 5, wherein output of an access command entry is suppressed.

(付記10)
前記演算パイプラインに出力される前記マルチデータインダイレクトメモリアクセス命令のエントリは,マルチデータインダイレクトメモリアクセスを示すインダイレクトメモリアクセス信号と,前記複数のデータの数を示すマルチデータ幅情報信号とを有し,
前記演算パイプラインは,前記メモリアクセスパイプラインに,前記マルチデータ幅情報信号が示す数の前記メモリアクセス要求を生成し,前記マルチデータ幅情報信号が示す数の前記複数のメモリアドレスを供給する
付記1に記載された演算処理装置。
(Appendix 10)
The entry of the multi-data indirect memory access instruction output to the arithmetic pipeline includes an indirect memory access signal indicating multi-data indirect memory access and a multi-data width information signal indicating the number of the plurality of data. Have
The operation pipeline generates the number of memory access requests indicated by the multi-data width information signal and supplies the plurality of memory addresses indicated by the multi-data width information signal to the memory access pipeline. 1. The arithmetic processing apparatus according to 1.

(付記11)
命令をデコードする命令デコーダと,
前記命令デコーダによりメモリアクセス命令のエントリを生成されるメモリアクセスエントリ部と,
前記メモリアクセスエントリ部から出力された前記メモリアクセス命令のエントリをメモリに対して実行するメモリアクセスパイプラインと,
前記命令デコーダにより複数のデータを1つの命令で処理するマルチデータ命令のエントリを生成されるマルチデータ命令エントリ部と,
複数の演算器と複数のマルチデータ命令用レジスタとを有し,前記マルチデータ命令エントリ部から出力された前記マルチデータ命令のエントリの処理を前記複数の演算器により並列に処理し,前記複数のマルチデータ命令用レジスタに演算結果を格納する演算パイプラインとを有する演算処理装置の制御方法において,
前記演算パイプラインが,前記複数のマルチデータ命令用レジスタに格納されている複数のメモリアドレスについて前記メモリにメモリアクセスするマルチデータインダイレクトメモリアクセス命令のエントリの投入に応答して,前記メモリアクセスパイプラインに前記マルチデータインダイレクトメモリアクセス命令に対応する複数のメモリアクセス要求を生成し,
前記演算パイプラインが,前記複数の演算器が前記複数のマルチデータ命令用レジスタから取得した前記複数のメモリアドレスを前記メモリアクセスパイプラインに供給する演算処理装置の制御方法。
(Appendix 11)
An instruction decoder for decoding instructions;
A memory access entry part for generating an entry of a memory access instruction by the instruction decoder;
A memory access pipeline for executing an entry of the memory access instruction output from the memory access entry unit with respect to a memory;
A multi-data instruction entry unit for generating an entry of a multi-data instruction for processing a plurality of data with one instruction by the instruction decoder;
A plurality of arithmetic units and a plurality of multi-data instruction registers; processing of the multi-data instruction entry output from the multi-data instruction entry unit is processed in parallel by the plurality of arithmetic units; In a control method of an arithmetic processing unit having an arithmetic pipeline for storing an arithmetic result in a multi-data instruction register,
In response to input of an entry of a multi-data indirect memory access instruction for performing memory access to the memory with respect to a plurality of memory addresses stored in the plurality of multi-data instruction registers, the operation pipeline Generating a plurality of memory access requests corresponding to the multi-data indirect memory access instruction in a line;
A method for controlling an arithmetic processing unit, wherein the arithmetic pipeline supplies the plurality of memory addresses acquired by the plurality of arithmetic units from the plurality of multi-data instruction registers to the memory access pipeline.

(付記12)
前記演算パイプラインが,前記メモリアクセスパイプラインの第1サイクルのステージに前記複数のメモリアクセス要求を生成し,前記メモリアクセスパイプラインの前記第1サイクルより後の第2サイクルのステージに前記複数のメモリアドレスを供給する
付記11に記載された演算処理装置の制御方法。
(Appendix 12)
The arithmetic pipeline generates the plurality of memory access requests at a stage of the first cycle of the memory access pipeline, and the plurality of stages at a stage of a second cycle after the first cycle of the memory access pipeline. The method for controlling an arithmetic processing unit according to attachment 11, which supplies a memory address.

301:命令フェッチアドレス生成器
302:分岐予測機構
303:一次命令キャッシュ
304:命令バッファ
305:命令デコーダ
306:レジスタリネーミング部
RSA:メモリアクセス用リザベーションステーション(アドレス生成リザベーションステーション),メモリアクセスエントリ部
310:アドレス用インタフェース
311:オペランドアドレス生成器
312:一次データキャッシュ
313:アドレス選択回路
EAGA,EAGB:オペランドアドレス生成器,メモリアクセスパイプライン
STB:ストアバッファ
RSE:固定小数点演算用リザベーションステーション
320:固定小数点演算器
322:固定小数点レジスタ
321:固定小数点リネーミングレジスタ
RSF:浮動小数点演算用リザベーションステーション,マルチデータ命令エントリ部
330:浮動小数点SIMD演算器,マルチデータ命令用演算器
332:浮動小数点SIMDレジスタ,マルチデータ命令用レジスタ
331:浮動小数点SIMDリネーミングレジスタ
333:演算用インタフェース
FLA,FLB:浮動小数点SIMD演算パイプライン,SIMD演算パイプライン
CSE:コミットスタックエントリ
RSBR:分岐用リザベーションステーション
PC:プログラムカウンタ
301: Instruction fetch address generator 302: Branch prediction mechanism 303: Primary instruction cache 304: Instruction buffer 305: Instruction decoder 306: Register renaming unit RSA: Memory access reservation station (address generation reservation station), Memory access entry unit 310 : Address interface 311: Operand address generator 312: Primary data cache 313: Address selection circuit EAGA, EAGB: Operand address generator, memory access pipeline STB: Store buffer RSE: Reservation station 320 for fixed point arithmetic: Fixed point arithmetic 322: Fixed point register 321: Fixed point renaming register RSF: Reservation station for floating point arithmetic Multi-data instruction entry unit 330: floating-point SIMD arithmetic unit, multi-data instruction arithmetic unit 332: floating-point SIMD register, multi-data instruction register 331: floating-point SIMD renaming register 333: arithmetic interface FLA, FLB: floating-point SIMD operation pipeline, SIMD operation pipeline CSE: commit stack entry RSBR: branch reservation station PC: program counter

Claims (10)

命令をデコードする命令デコーダと,
前記命令デコーダによりメモリアクセス命令のエントリを生成されるメモリアクセスエントリ部と,
前記メモリアクセスエントリ部から出力された前記メモリアクセス命令のエントリをメモリに対して実行するメモリアクセスパイプラインと,
前記命令デコーダにより複数のデータを1つの命令で処理するマルチデータ命令のエントリを生成されるマルチデータ命令エントリ部と,
複数の演算器と複数のマルチデータ命令用レジスタとを有し,前記マルチデータ命令エントリ部から出力された前記マルチデータ命令のエントリの処理を前記複数の演算器により並列に処理し,前記複数のマルチデータ命令用レジスタに演算結果を格納する演算パイプラインとを有し,
前記演算パイプラインは,前記複数のマルチデータ命令用レジスタに格納されている複数のメモリアドレスについて前記メモリにメモリアクセスするマルチデータインダイレクトメモリアクセス命令のエントリの出力に応答して,前記メモリアクセスパイプラインに前記マルチデータインダイレクトメモリアクセス命令に対応する複数のメモリアクセス要求を生成し,前記複数の演算器が前記複数のマルチデータ命令用レジスタから取得した前記複数のメモリアドレスを前記メモリアクセスパイプラインに供給する演算処理装置。
An instruction decoder for decoding instructions;
A memory access entry part for generating an entry of a memory access instruction by the instruction decoder;
A memory access pipeline for executing an entry of the memory access instruction output from the memory access entry unit with respect to a memory;
A multi-data instruction entry unit for generating an entry of a multi-data instruction for processing a plurality of data with one instruction by the instruction decoder;
A plurality of arithmetic units and a plurality of multi-data instruction registers; processing of the multi-data instruction entry output from the multi-data instruction entry unit is processed in parallel by the plurality of arithmetic units; An operation pipeline for storing operation results in a register for multi-data instructions,
The operation pipeline is responsive to an output of an entry of a multi-data indirect memory access instruction that performs memory access to the memory for a plurality of memory addresses stored in the plurality of multi-data instruction registers. A plurality of memory access requests corresponding to the multi-data indirect memory access instruction on a line, and the plurality of computing units obtain the plurality of memory addresses acquired from the plurality of multi-data instruction registers in the memory access pipeline. Arithmetic processing device to supply to.
前記演算パイプラインは,前記メモリアクセスパイプラインの第1サイクルのステージに前記複数のメモリアクセス要求を生成し,前記メモリアクセスパイプラインの前記第1サイクルより後の第2サイクルのステージに前記複数のメモリアドレスを供給する
請求項1に記載された演算処理装置。
The arithmetic pipeline generates the plurality of memory access requests at a stage of the first cycle of the memory access pipeline, and the plurality of stages at a stage of a second cycle after the first cycle of the memory access pipeline. The arithmetic processing unit according to claim 1, wherein a memory address is supplied.
前記演算パイプラインは,前記メモリアクセスパイプラインに生成した複数のメモリアクセス要求のパイプライン転送タイミングにあわせて前記複数のメモリアドレスを供給する
請求項2に記載された演算処理装置。
The arithmetic processing device according to claim 2, wherein the arithmetic pipeline supplies the plurality of memory addresses in accordance with pipeline transfer timings of a plurality of memory access requests generated in the memory access pipeline.
さらに,前記メモリアクセスパイプラインに接続されたキャッシュユニットを有し,
前記演算パイプラインは,前記メモリアクセスパイプラインに生成する前記複数のメモリアクセス要求に前記キャッシュユニット内のアクセス先メモリアドレスを格納する複数のフェッチポートの識別情報を含める
請求項1に記載された演算処理装置。
A cache unit connected to the memory access pipeline;
2. The operation according to claim 1, wherein the operation pipeline includes identification information of a plurality of fetch ports storing access destination memory addresses in the cache unit in the plurality of memory access requests generated in the memory access pipeline. Processing equipment.
前記演算パイプラインは,前記メモリアクセスパイプラインに,前記複数のメモリアクセス要求をシリアルに生成し,前記複数のメモリアドレスをシリアルに供給する
請求項1,2,3のいずれかに記載された演算処理装置。
4. The operation according to claim 1, wherein the operation pipeline serially generates the plurality of memory access requests and supplies the plurality of memory addresses serially to the memory access pipeline. Processing equipment.
前記メモリアクセスパイプラインが複数設けられ,
前記演算パイプラインは,前記複数のメモリアクセスパイプラインに,前記複数のメモリアクセス要求の少なくとも一部のメモリアクセス要求を並列に生成し,前記複数のメモリアドレスの少なくとも一部のアドレスを並列に供給する
請求項1,2,3のいずれかに記載された演算処理装置。
A plurality of the memory access pipelines;
The arithmetic pipeline generates at least a part of the plurality of memory access requests in parallel to the plurality of memory access pipelines, and supplies at least a part of the plurality of memory addresses in parallel. The arithmetic processing device according to claim 1, 2, or 3.
さらに,前記メモリアクセスパイプラインに接続されたキャッシュユニットを有し,
前記キャッシュユニットは,前記複数のメモリアクセス要求に応答して,前記複数のマルチデータ命令用レジスタとの間でデータ転送を行う
請求項1に記載された演算処理装置。
A cache unit connected to the memory access pipeline;
The arithmetic processing unit according to claim 1, wherein the cache unit performs data transfer with the plurality of multi-data instruction registers in response to the plurality of memory access requests.
前記演算パイプラインは,前記メモリアクセスエントリ部に抑止信号を出力して,前記メモリアクセスエントリ部に,前記メモリアクセスパイプラインに生成する前記複数のメモリアクセス要求と衝突するメモリアクセス命令のエントリの出力を抑止させる
請求項1に記載された演算処理装置。
The operation pipeline outputs a suppression signal to the memory access entry unit, and outputs to the memory access entry unit an entry of a memory access instruction that collides with the plurality of memory access requests generated in the memory access pipeline. The arithmetic processing unit according to claim 1, wherein
前記演算パイプラインは,前記マルチデータ命令エントリ部に抑止信号を出力して,前記マルチデータ命令エントリ部に,前記メモリアクセスパイプラインにシリアルに生成する前記メモリアクセス要求と衝突するマルチデータインダイレクトメモリアクセス命令のエントリの出力を抑止させる
請求項5に記載された演算処理装置。
The operation pipeline outputs a suppression signal to the multi-data instruction entry unit, and the multi-data indirect memory that collides with the memory access request generated serially in the memory access pipeline to the multi-data instruction entry unit The arithmetic processing unit according to claim 5, wherein output of an access command entry is suppressed.
命令をデコードする命令デコーダと,
前記命令デコーダによりメモリアクセス命令のエントリを生成されるメモリアクセスエントリ部(RSA)と,
前記メモリアクセスエントリ部から出力された前記メモリアクセス命令のエントリをメモリに対して実行するメモリアクセスパイプラインと,
前記命令デコーダにより複数のデータを1つの命令で処理するマルチデータ命令のエントリを生成されるマルチデータ命令エントリ部と,
複数の演算器と複数のマルチデータ命令用レジスタとを有し,前記マルチデータ命令エントリ部から出力された前記マルチデータ命令のエントリの処理を前記複数の演算器により並列に処理し,前記複数のマルチデータ命令用レジスタに演算結果を格納する演算パイプラインとを有する演算処理装置の制御方法において,
前記演算パイプラインが,前記複数のマルチデータ命令用レジスタに格納されている複数のメモリアドレスについて前記メモリにメモリアクセスするマルチデータインダイレクトメモリアクセス命令のエントリの投入に応答して,前記メモリアクセスパイプラインに前記マルチデータインダイレクトメモリアクセス命令に対応する複数のメモリアクセス要求を生成し,
前記演算パイプラインが,前記複数の演算器が前記複数のマルチデータ命令用レジスタから取得した前記複数のメモリアドレスを前記メモリアクセスパイプラインに供給する演算処理装置の制御方法。
An instruction decoder for decoding instructions;
A memory access entry part (RSA) for generating an entry of a memory access instruction by the instruction decoder;
A memory access pipeline for executing an entry of the memory access instruction output from the memory access entry unit with respect to a memory;
A multi-data instruction entry unit for generating an entry of a multi-data instruction for processing a plurality of data with one instruction by the instruction decoder;
A plurality of arithmetic units and a plurality of multi-data instruction registers; processing of the multi-data instruction entry output from the multi-data instruction entry unit is processed in parallel by the plurality of arithmetic units; In a control method of an arithmetic processing unit having an arithmetic pipeline for storing an arithmetic result in a multi-data instruction register,
In response to input of an entry of a multi-data indirect memory access instruction for performing memory access to the memory with respect to a plurality of memory addresses stored in the plurality of multi-data instruction registers, the operation pipeline Generating a plurality of memory access requests corresponding to the multi-data indirect memory access instruction in a line;
A method for controlling an arithmetic processing unit, wherein the arithmetic pipeline supplies the plurality of memory addresses acquired by the plurality of arithmetic units from the plurality of multi-data instruction registers to the memory access pipeline.
JP2014082660A 2014-04-14 2014-04-14 Arithmetic processing device and control method of arithmetic processing device Active JP6340887B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014082660A JP6340887B2 (en) 2014-04-14 2014-04-14 Arithmetic processing device and control method of arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014082660A JP6340887B2 (en) 2014-04-14 2014-04-14 Arithmetic processing device and control method of arithmetic processing device

Publications (2)

Publication Number Publication Date
JP2015203950A true JP2015203950A (en) 2015-11-16
JP6340887B2 JP6340887B2 (en) 2018-06-13

Family

ID=54597385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014082660A Active JP6340887B2 (en) 2014-04-14 2014-04-14 Arithmetic processing device and control method of arithmetic processing device

Country Status (1)

Country Link
JP (1) JP6340887B2 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
JP2012150634A (en) * 2011-01-19 2012-08-09 Nec Corp Vector instruction control circuit and overtaking control method for list vector

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
JP2012150634A (en) * 2011-01-19 2012-08-09 Nec Corp Vector instruction control circuit and overtaking control method for list vector

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吉田 利雄,外3名: "「スーパーコンピュータ「京」のCPU SPARC64 VIII fx」", FUJITSU, vol. 第63巻,第3号, JPN6018003357, 10 May 2012 (2012-05-10), pages 254 - 259 *

Also Published As

Publication number Publication date
JP6340887B2 (en) 2018-06-13

Similar Documents

Publication Publication Date Title
US8930679B2 (en) Out-of-order execution microprocessor with reduced store collision load replay by making an issuing of a load instruction dependent upon a dependee instruction of a store instruction
JP6011194B2 (en) Arithmetic processing device and control method of arithmetic processing device
US10235219B2 (en) Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) Backward compatibility by restriction of hardware resources
US9946549B2 (en) Register renaming in block-based instruction set architecture
JP5209933B2 (en) Data processing device
US10437594B2 (en) Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
KR20190033084A (en) Store and load trace by bypassing load store units
US10496540B2 (en) Processor and control method of processor
JP4985452B2 (en) Vector processing equipment
US11055101B2 (en) Processing apparatus and controlling method for processing apparatus
JP7070384B2 (en) Arithmetic processing device, memory device, and control method of arithmetic processing device
JP7064135B2 (en) Arithmetic processing device and control method of arithmetic processing device
US20100100709A1 (en) Instruction control apparatus and instruction control method
JP6340887B2 (en) Arithmetic processing device and control method of arithmetic processing device
JP7032647B2 (en) Arithmetic processing unit and control method of arithmetic processing unit
JP5871298B2 (en) Information processing apparatus, information processing method, and information processing program
CN114514505A (en) Retirement queue compression
US11314505B2 (en) Arithmetic processing device
US20230205525A1 (en) Load and store matching based on address combination
JP2904624B2 (en) Parallel processing unit
JP2015191463A (en) Arithmetic processing unit and arithmetic processing unit control method
JP2003345589A (en) Information processor
JPH0277840A (en) Data processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180405

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: 20180417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180430

R150 Certificate of patent or registration of utility model

Ref document number: 6340887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150