KR101028428B1 - Arithmetic operating apparatus and method for performing arithmetic operation - Google Patents

Arithmetic operating apparatus and method for performing arithmetic operation Download PDF

Info

Publication number
KR101028428B1
KR101028428B1 KR1020090023506A KR20090023506A KR101028428B1 KR 101028428 B1 KR101028428 B1 KR 101028428B1 KR 1020090023506 A KR1020090023506 A KR 1020090023506A KR 20090023506 A KR20090023506 A KR 20090023506A KR 101028428 B1 KR101028428 B1 KR 101028428B1
Authority
KR
South Korea
Prior art keywords
register
instruction
operator
value
simd
Prior art date
Application number
KR1020090023506A
Other languages
Korean (ko)
Other versions
KR20090101113A (en
Inventor
시게키 이토우
Original Assignee
후지쯔 가부시끼가이샤
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 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20090101113A publication Critical patent/KR20090101113A/en
Application granted granted Critical
Publication of KR101028428B1 publication Critical patent/KR101028428B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Abstract

본 발명은, 예컨대 SIMD 부동(浮動) 소수점 곱합 연산 등에 있어서의 각종 연산 조합을 적은 명령 종별 코드수로 실현한다.

연산 장치(1)가, 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 하나의 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 레지스터(11)와 연산기(12b, 12e) 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정부(20)를 갖는다.

Figure R1020090023506

The present invention realizes, for example, various combinations of operations in SIMD floating-point multiplication operations and the like with a small number of instruction type codes.

In the register 11 and the calculators 12b and 12e, the arithmetic unit 1 sends one or more unused bits in one instruction to execute an expansion process that is different from the normal processing executed by the one instruction. And a setting unit 20 for setting extended instruction information to be performed on at least one side.

Figure R1020090023506

Description

연산 장치 및 연산 방법{ARITHMETIC OPERATING APPARATUS AND METHOD FOR PERFORMING ARITHMETIC OPERATION}Calculation device and method of operation {ARITHMETIC OPERATING APPARATUS AND METHOD FOR PERFORMING ARITHMETIC OPERATION}

본 발명은, 예컨대 부동 소수점 곱합 연산기를 이용하여 복소수 행렬곱 연산 등의 연산을 행할 때에 이용하기에 적합한 기술에 관한 것이다. TECHNICAL FIELD This invention relates to the technique suitable for use when performing calculations, such as a complex matrix product operation using a floating-point multiplication operator, for example.

일반적으로, 복소수를 요소로 하는 행렬곱 연산은 하기와 같은 계산식(1)으로 실현된다. In general, a matrix multiplication operation using a complex number as an element is realized by the following equation (1).

X + Yi← X + Yi + (A + Bi) * (C + Di)X + Yi ← X + Yi + (A + Bi) * (C + Di)

= X + A * C - B * D + (Y + A * D + B * C)i (1)= X + A * C-B * D + (Y + A * D + B * C) i (1)

이 행렬곱 연산을, 하나의 부동 소수점 곱합 연산기를 이용하여 실행할 때에는, 하기 식(1-1)∼(1-4)에 의한 4회의 연산이 실행되게 된다. 즉, 하나의 부동 소수점 곱합 연산기를 이용하여 복소수의 행렬곱 연산을 행하는 경우, 연산기에 대해 4 명령을 발행해야 한다. When performing this matrix multiplication operation using one floating point multiplication operator, four operations by the following formulas (1-1) to (1-4) are performed. In other words, when performing a complex matrix multiplication operation using one floating point multiplication operator, four instructions must be issued to the operator.

X ← X + A * C (1-1) X ← X + A * C (1-1)

Y ← Y + A * D (1-2) Y ← Y + A * D (1-2)

X ← X - B * D (1-3) X ← X-B * D (1-3)

Y ← Y + B * C (1-4)Y ← Y + B * C (1-4)

한편, 일반적으로, 곱합 연산을 보다 적은 명령수로 효율적으로 실행하는 수법으로서, 예컨대, 하나의 명령으로 복수의 데이터 스트림을 처리하는 SIMD(Single Instruction stream Multiple Data stream) 방식에 의한 곱합 연산이 알려져 있다. 이 SIMD 방식을 채용한 연산 장치에는, 레지스터와, 이 레지스터에 저장된 데이터(레지스터값)에 기초하여 동일한 연산을 행하는 2개의 부동 소수점 곱합 연산기가 구비된다. 이들 2개의 부동 소수점 곱합 연산기는, 각각, 통상 부동 소수점 곱합 연산기(통상 연산기) 및 확장 부동 소수점 곱합 연산기(확장 연산기)라고 불린다.On the other hand, in general, a multiplication operation by the SIMD (Single Instruction stream Multiple Data stream) method, which processes a plurality of data streams with one instruction, is known as a method of efficiently performing a multiplication operation with a smaller number of instructions. . The arithmetic unit employing this SIMD system is provided with a register and two floating point multiplication operators that perform the same operation based on the data (register values) stored in this register. These two floating point multiply operators are commonly called floating point multiply operators (normal operators) and extended floating point multiply operators (extended operators), respectively.

통상 연산기에는, 레지스터 전반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력되고, 확장 연산기에는, 레지스터 후반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력된다. 여기서, 레지스터 후반 영역의 지정 레지스터 번호는, 레지스터 전반 영역의 지정 레지스터 번호에 소정 오프셋을 가산한 번호이다. 예컨대, 레지스터 번호의 수가 128이면, 소정 오프셋으로서 64가 설정된다. In the normal calculator, the register value in the designated register number of the register first half area is input as the calculation target data, and the register value in the designated register number in the late register region is input as the calculation target data to the expansion calculator. Here, the designated register number of the latter half of the register is a number obtained by adding a predetermined offset to the designated register number of the first half of the register. For example, if the number of register numbers is 128, 64 is set as the predetermined offset.

이와 같이 구성함으로써, 하나의 명령으로, 레지스터로부터 통상 연산기로 출력되어야 하는 레지스터값을 지정하는 레지스터 번호를 지시하는 것 만으로, 레지스터로부터 확장 연산기로 출력되어야 하는 레지스터값을 지정하는 레지스터 번호도 지시하는 것이 가능하게 된다. 즉, 하나의 명령으로 2개의 연산기에 대한 연산 처리 명령을 행할 수 있어, 종래, 4 명령으로 행하고 있었던 연산 처리를 2 명령으로 행할 수 있어, 작업 처리량을 배증시킬 수 있다. With this configuration, it is necessary to indicate a register number specifying a register value to be output from the register to the expansion operator by simply indicating a register number specifying the register value to be output from the register to the normal operator in one instruction. It becomes possible. That is, a single instruction can execute arithmetic processing instructions for two arithmetic operators, and arithmetic processing that has conventionally been performed by four instructions can be performed by two instructions, thereby doubling the throughput.

[특허 문헌 1] 일본 특허 공개 제2003-16051호 공보[Patent Document 1] Japanese Unexamined Patent Publication No. 2003-16051

그러나, 상기 식(1-1)∼(1-4)에 의한 4회의 연산(즉 4개의 명령)에 의해 실행되는 복소수 행렬곱 연산을, 그대로, 전술한 바와 같이 SIMD 방식을 채용한 연산 장치에 적용하고, 2 명령으로 실행하는 것은 할 수 없다. 이것은, 전술과 같이 통상 연산기가 레지스터 전반 영역을 사용하고 확장 연산기가 레지스터 후반 영역을 사용한다고 하는 레지스터의 제약과, 전술과 같이 통상 연산기와 확장 연산기가 동일한 연산을 행한다고 하는 연산 내용의 제약 때문이다. However, a complex matrix multiplication operation performed by four operations (that is, four instructions) according to the above formulas (1-1) to (1-4) is directly applied to the computing device employing the SIMD method as described above. Can not be applied and executed with 2 instructions. This is because of the constraints of registers in which the normal operator uses the front register area and the extended operator uses the late register area as described above, and the constraints on the operation contents that the normal operator and the extended operator perform the same operation as described above. .

본 발명의 목적의 하나는, 예컨대 SIMD 부동 소수점 곱합 연산 등에 있어서의 각종 연산 조합을 적은 명령 종별 코드수로 실현하는 것이다. One of the objects of the present invention is to realize various combinations of operations in, for example, SIMD floating-point multiplication operations and the like with a small number of instruction type codes.

또, 상기 목적에 한정되지 않고, 후술하는 발명을 실시하기 위한 최선의 형태에 나타내는 각 구성에 의해 유도되는 작용 효과로서, 종래의 기술에 의해서는 얻어지지 않는 작용 효과를 발휘하는 것도 본 발명의 다른 목적의 하나로서 위치를 부여할 수 있다. Moreover, it is not limited to the said objective, It is an effect of the action guide | induced by each structure shown by the best form for implementing the below-mentioned invention, It is another thing of this invention to show the action effect which is not obtained by the prior art. Position can be given as one of the objectives.

본 연산 장치는, 연산 대상의 데이터를 저장하는 레지스터와, 상기 레지스터로부터 판독된 데이터에 기초하는 연산을 실행하는 하나 이상의 연산기를 갖고 있다. 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 하나의 명령을 받고, 상기 연산기가, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행한다. 이 연산 장치가, 상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 하나의 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정부를 갖는다. The computing device includes a register that stores data to be calculated, and one or more calculators that perform calculations based on the data read from the registers. Receiving one instruction consisting of a plurality of bits, indicative of the data to be read from the register and the type of operation to be performed by the operator, wherein the operator is based on the data indicated by the one instruction; Perform the type operation indicated by the command. Expansion instructions in which the arithmetic unit issues, to at least one of the register and the operator, instructions for executing expansion processing different from the normal processing executed by the one instruction to one or more unused bits in the one instruction. It has a setting unit for setting information.

또한, 본 연산 방법에서는, 전술한 레지스터 및 연산기를 갖는 연산 장치에 있어서, 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 하나의 명령을 받고, 상기 연산기는, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행한다. 이 연산 방법은, 상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 하나의 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정 단계를 포함한다. In addition, in the arithmetic method having the above-described register and arithmetic unit, the arithmetic unit receives one instruction consisting of a plurality of bits instructing the type of data to be read from the register and the arithmetic operation to be executed by the arithmetic unit, The calculator executes the type of operation indicated by the one instruction based on the data indicated by the one instruction. This operation method includes an instruction for executing at least one of the registers and the operator to execute an instruction to perform an expansion process different from the normal processing executed by the one instruction to one or more unused bits in the one instruction. A setting step of setting information.

개시한 연산 장치 및 연산 방법에 따르면, 하나의 명령에 있어서의 하나 이상의 미사용 비트를 이용하여 통상 처리와는 상이한 확장 처리의 실행 지시를 행할 수 있기 때문에, 예컨대 SIMD 부동 소수점 곱합 연산 등에 있어서의 각종 연산 조합을 적은 명령 종별 코드수로 실현할 수 있다. 따라서, 예컨대, 4개의 명령에 의해 행하고 있었던 복소수 행렬곱 연산 등의 복잡한 연산을, 2개의 명령에 의해 실행하는 것이 가능하게 되어, 작업 처리량을 배증시킬 수 있다. According to the arithmetic unit and the arithmetic method disclosed above, since one or more unused bits in one instruction can be used to give an instruction to execute an extension process different from the normal process, for example, various operations in SIMD floating point multiplication and the like. The combination can be realized with fewer instruction type codes. Therefore, for example, it is possible to execute complex operations such as complex matrix product operations performed by four instructions by two instructions, thereby doubling the throughput.

이하, 도면을 참조하여 본 발명의 실시형태를 설명한다. EMBODIMENT OF THE INVENTION Hereinafter, embodiment of this invention is described with reference to drawings.

[1] 연산 장치의 구성[1] computing equipment

도 1은 본 발명의 일 실시형태로서의 연산 장치의 구성을 도시하는 블록도로, 이 도 1에 도시하는 본 실시형태의 연산 장치(1)는, 연산부(10), 명령 코드 발행부(설정부)(20) 및 생성부(30)를 갖고 있다. Fig. 1 is a block diagram showing the configuration of an arithmetic device as an embodiment of the present invention. The arithmetic device 1 of the present embodiment shown in Fig. 1 includes an arithmetic unit 10 and a command code issuing unit (setting unit). It has 20 and the generation part 30.

연산부(10)는, 레지스터(11)와, 2조의 통상 부동 소수점 곱합 연산기(통상 연산기 혹은 단순히 연산기)(12b) 및 확장 부동 소수점 곱합 연산기(확장 연산기 혹은 단순히 연산기)(12e)를 갖고 있다. 또, 이하에서는, 「통상 부동 소수점 곱합 연산기」를 「통상 곱합 연산기」, 「통상 연산기」혹은 단순히 「연산기」라고 기재하고, 「확장 부동 소수점 곱합 연산기」를 「확장 곱합 연산기」, 「확장 연산기」혹은 단순히 「연산기」라고 기재하는 경우가 있다. The arithmetic unit 10 has a register 11, two sets of ordinary floating point multiplication operators (normal operators or simply arithmetic operators) 12b, and an extended floating point multiplication arithmetic operator (extended operators or simply arithmetic operators) 12e. In the following description, the "normal floating point multiplication operator" is referred to as a "normal multiplication operator", a "normal operator" or simply an "operator", and the "extended floating point multiplication operator" is referred to as an "extended multiplication operator" and an "extension operator". Or it may be described simply as an "operator."

레지스터(11)는, 2N 개(본 실시형태에서는 N= 64)의 레지스터 번호 0∼2N-1로 지정되는 레지스터값(데이터)을 유지할 수 있는 것이다. 이 레지스터(11)는, 연산 대상 데이터 및 연산기(12b, 12e)에 의한 연산 결과를 저장하는 것이다. The register 11 is capable of holding register values (data) designated by 2N register numbers 0 to 2N-1 (N = 64 in this embodiment). This register 11 stores the calculation target data and the calculation results by the calculators 12b and 12e.

본 실시형태의 연산 장치(1)에서는, 후술하는 바와 같이, 명령 종별 코드(opcode)에 의해, 하나의 명령으로 복수(본 실시형태에서는 2개)의 데이터 스트림을 처리하는 SIMD 방식의 채용/불채용(SIMD/비SIMD)을 선택하는 것이 가능하게 구성되어 있다. SIMD 방식이 채용되면, 레지스터(11)의 영역이 전반 부분(레지스터 번호 0∼N-1) 및 후반 부분(레지스터 번호 N-1∼2N-1)의 2영역으로 분할되어, 이들 2영역이, 기본적으로, 각각 통상 연산기(12b) 및 확장 연산기(12e)에 의해 사 용된다. In the computing device 1 of the present embodiment, as will be described later, the SIMD system employs / disables a plurality of (two in the present embodiment) data streams in one command by an instruction type code (opcode). It is possible to select the adoption (SIMD / non-SIMD). When the SIMD method is adopted, the area of the register 11 is divided into two areas of the first half (register numbers 0 to N-1) and the second half (register numbers N-1 to 2N-1). Basically, they are normally used by the calculator 12b and the expander 12e, respectively.

또한, 레지스터(11)는, 후술하는 생성부(30)로부터, 6개의 출력 레지스터 번호, 2개의 입력 레지스터 번호 및 입력 레지스터 기록 제어 신호가 입력된다. 6개의 출력 레지스터 번호에 의해, 레지스터(11)로부터 각 연산기(12b, 12e)로 출력되어야 하는 3개의 레지스터값(곱합 연산 대상의 데이터)이 지정된다. 2개의 입력 레지스터 번호에 의해, 각 연산기(12b, 12e)에 의한 연산 결과를 레지스터값으로서 입력·기록해야 하는 저장처[레지스터(11)의 어드레스]가 지정된다. 입력 레지스터 기록 제어 신호에 의해, 각 연산기(12b, 12e)에 의한 연산 결과를 레지스터(11)에 기록하는지의 여부가 선택·제어된다. In the register 11, six output register numbers, two input register numbers, and an input register write control signal are input from the generation unit 30 to be described later. By the six output register numbers, three register values (data to be multiplied) to be output from the register 11 to each of the calculators 12b and 12e are designated. The two input register numbers designate a storage destination (address of the register 11) in which the result of the calculation by each of the calculators 12b and 12e is to be input and recorded as a register value. The input register write control signal selects and controls whether or not the result of calculation by each of the calculators 12b and 12e is recorded in the register 11.

여기서, 통상 연산기(12b)에 의한 연산 결과의 저장처를 지정하는 입력 레지스터 번호로서는 7비트의 값(b_rd[6:0])이 레지스터(11)에 입력된다. 레지스터(11)로부터 통상 연산기(12b)로 출력되어야 하는 3개의 레지스터값(곱합 연산 대상의 데이터)을 지정하는 3개의 출력 레지스터 번호로서는, 각각 7비트의 값(b_rs1[6:0], b_rs2[6:0], b_rs3[6:0])이 레지스터(11)에 입력된다. Here, as an input register number for specifying the storage destination of the operation result by the normal operator 12b, a 7-bit value b_rd [6: 0] is input to the register 11. As three output register numbers that designate three register values (data to be multiplied) to be output from the register 11 to the normal operator 12b, each of 7-bit values b_rs1 [6: 0] and b_rs2 [ 6: 0] and b_rs3 [6: 0]) are input to the register 11.

또한, 확장 연산기(12e)에 의한 연산 결과의 저장처를 지정하는 입력 레지스터 번호로서는 7비트의 값(e_rd[6:0])이 레지스터(11)에 입력된다. 레지스터(11)로부터 확장 연산기(12e)로 출력되어야 하는 3개의 레지스터값(연산 대상 데이터)을 지정하는 3개의 출력 레지스터 번호로서는, 각각 7비트의 값(e_rs1[6:0], e_rs2[6:0], e_rs3[6:0])이 레지스터(11)에 입력된다. In addition, a 7-bit value (e_rd [6: 0]) is input to the register 11 as an input register number for designating a storage destination of the calculation result by the expansion operator 12e. As three output register numbers that designate three register values (operation target data) that should be output from the register 11 to the expansion operator 12e, each of 7-bit values (e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0]) are input to the register 11.

이들 7비트의 값(b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0])으로서는, 0∼127의 범위의 정수가 설정되고, 연산기(12b, 12e)에 의한 곱합 연산에서 사용하는 레지스터 번호가 지정된다. 즉, 각 연산기(12b, 12e)에 대해, 곱연산 대상의 2개의 레지스터 번호, 합연산 대상의 레지스터 번호, 연산 결과 저장처의 레지스터 번호의 계 4개의 레지스터 번호가 0∼127의 범위에서 지정된다. 또, 레지스터(11)의 레지스터 번호 0∼63의 범위를 전반 영역, 레지스터(11)의 레지스터 번호 64∼127의 범위를 후반 영역이라고 부른다. These 7-bit values (b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [ 6: 0] and e_rs3 [6: 0]), an integer in the range of 0 to 127 is set, and the register number used in the multiplication operation by the calculators 12b and 12e is specified. That is, for each of the arithmetic operators 12b and 12e, four register numbers, i.e., two register numbers for the multiplication operation, a register number for the multiplication operation, and a register number for the operation result storage are specified in the range of 0 to 127. . In addition, the range of register numbers 0 to 63 of the register 11 is called the first half area, and the range of register numbers 64 to 127 of the register 11 is called the second half area.

또한, 본 실시형태에서는, 레지스터 번호 n(n= 0, 1, 2, …, 127)에 있어서의 레지스터값을 %r[n]로 나타낸다. 예컨대, 레지스터 번호 n= 0, 1, …, 127에 저장된 레지스터값은, 각각, %r[0], %r[1], …, %r[127]로 나타낸다. In the present embodiment, the register value in the register number n (n = 0, 1, 2, ..., 127) is represented by% r [n]. For example, register number n = 0, 1,... , The register values stored in 127 are% r [0],% r [1],... ,% R [127].

이들 레지스터값 %r[0], %r[1], …, %r[127] 중에서, 명령에 의해 지정된 레지스터 번호의 값은 이하와 같이 나타낸다. 통상 연산기(12b)에 따르는 4개의 레지스터값을 각각 %b1, %b2, %b3, %bd로 나타내면, 예컨대 b_rs1[6:0] ← 15인 경우, %b1은 %r[15]를 나타낸다. 마찬가지로, 확장 연산기(12e)에 따르는 4개의 레지스터값을 각각 %e1, %e2, %e3, %ed로 나타내면, 예컨대 e_rs1[6:0] ← 79인 경우, %e1은 %r[79]를 나타낸다. These register values% r [0],% r [1],... In% r [127], the value of the register number specified by the instruction is expressed as follows. When four register values of the normal operator 12b are represented by% b1,% b2,% b3, and% bd, respectively, for example, when b_rs1 [6: 0] ← 15,% b1 represents% r [15]. Similarly, if four register values of the expansion operator 12e are represented by% e1,% e2,% e3, and% ed, for example, e_rs1 [6: 0] ← 79,% e1 represents% r [79]. Indicates.

또한, 전술한 입력 레지스터 기록 제어 신호는, b_we, e_we로 나타낸다. 제어 신호(b_we)는, 통상 연산기(12b)에 의한 곱합 연산 결과를 레지스터(11)에 기록하는지의 여부를 선택하여 제어하기 위한 1비트의 신호로, 기록하는 경우에 "1"로 설정되고, 기록하지 않는 경우에 "0"으로 설정된다. 마찬가지로, 제어 신호(e_we) 는, 확장 연산기(12e)에 의한 곱합 연산 결과를 레지스터(11)에 기록하는지의 여부를 선택하여 제어하기 위한 1비트의 신호로, 기록하는 경우에 "1"로 설정되고, 기록하지 않는 경우에 "0"으로 설정된다. In addition, the above-described input register write control signals are represented by b_we and e_we. The control signal b_we is a 1-bit signal for selecting and controlling whether or not the result of the multiplication calculation by the normal operator 12b is recorded in the register 11, and is set to "1" when recording. When not recording, it is set to "0". Similarly, the control signal e_we is a 1-bit signal for selecting and controlling whether or not the result of the multiplication calculation by the expansion operator 12e is recorded in the register 11, and is set to "1" when recording. Is set to " 0 " when no recording is made.

한편, 연산기(12b, 12e)는, 각각, 3입력 1출력의 부동 소수점 곱합 연산기이고, 후술하는 생성부(30)로부터의 명령 세트에 포함되는 연산 종별 코드(단순히 「연산 코드」라고 부르는 경우도 있음)에 따라, 후술하는 바와 같이 연산 종별을 전환 가능하게 구성되어 있다. On the other hand, the arithmetic operators 12b and 12e are three-input and one-output floating-point multiplication operators, respectively, and may also be referred to as operation type codes (simply referred to as "operation codes") included in the instruction set from the generation unit 30 described later. As described later, the operation type can be switched.

통상 연산기(12b)는, 레지스터(11)로부터 판독된 3개의 레지스터값(%b1, %b2, %b3)이 각각 입력값(b_i1, b_i2, b_i3)으로서 입력되고, 연산 결과인 출력값(b_o)을 레지스터값(%bd)으로서 레지스터(11)에 출력한다. 마찬가지로, 확장 연산기(12e)는, 레지스터(11)로부터 판독된 3개의 레지스터값(%e1, %e2, %e3)이 각각 입력값(e_i1, e_i2, e_i3)으로서 입력되고, 연산 결과인 출력값(e_o)을 레지스터값(%ed)으로서 레지스터(11)에 출력한다. In the normal arithmetic operator 12b, three register values (% b1,% b2, and% b3) read out from the register 11 are input as input values b_i1, b_i2, and b_i3, respectively, and an output value b_o which is an operation result. Is output to the register 11 as a register value% bd. Similarly, in the expansion operator 12e, three register values (% e1,% e2, and% e3) read out from the register 11 are input as input values e_i1, e_i2, and e_i3, respectively, and the output value ( e_o) is output to the register 11 as a register value% ed.

즉, 통상 연산기(12b)는, 후술하는 생성부(30)로부터의 연산 코드(b_op[1:0])와, 레지스터(11)로부터의 데이터(%b1, %b2, %b3)가 입력되어, 이들 데이터(%b1, %b2, %b3)에 기초하여, 연산 코드(b_op[1:0])에 따른 종별의 연산을 행하여, 연산 결과 데이터(%bd)를 출력한다. 마찬가지로, 확장 연산기(12e)는, 후술하는 생성부(30)로부터의 연산 코드(e_op[1:0])와, 레지스터(11)로부터의 데이터(%e1, %e2, %e3)가 입력되고, 이들 데이터(%e1, %e2, %e3)에 기초하여, 연산 코드(e_op[1:0])에 따른 종별의 연산을 행하여, 연산 결과 데이터(%ed) 를 출력한다. That is, in the normal operator 12b, the operation code b_op [1: 0] from the generation unit 30 to be described later and the data (% b1,% b2,% b3) from the register 11 are inputted. Based on these data (% b1,% b2,% b3), a calculation according to the operation code b_op [1: 0] is performed to output the calculation result data% bd. Similarly, the arithmetic operation unit 12e inputs an operation code e_op [1: 0] from the generation unit 30 to be described later, and data (% e1,% e2,% e3) from the register 11. Based on these data (% e1,% e2, and% e3), the calculation according to the operation code e_op [1: 0] is performed to output the calculation result data% ed.

여기서, 본 실시형태의 연산기(12b, 12e)의 각각에 있어서, 2비트의 연산 코드(b_op[1:0], e_op[1:0])에 의해 지정되는 연산 내용(연산명)은, 하기 표 1과 같은 4종류이다. Here, in each of the calculators 12b and 12e of the present embodiment, the calculation contents (operation name) designated by the 2-bit operation codes b_op [1: 0] and e_op [1: 0] are as follows. Four types shown in Table 1.

[표 1]TABLE 1

Figure 112009016639198-pat00001
Figure 112009016639198-pat00001

명령 코드 발행부(설정부)(20)는, 후술하는 생성부(30)를 통해 연산부(10)로 명령 코드를 발행하는 것으로, 후술하는 설정부로서의 기능을 갖고 있다. The command code issuing unit (setting unit) 20 issues a command code to the calculating unit 10 through the generation unit 30 to be described later, and has a function as a setting unit to be described later.

여기서, 명령 코드 발행부(20)에 의해 발행되는 명령 코드는, 예컨대 하기 표 2나 하기 표 3에 나타내는 바와 같이, 명령 종별 코드와 4개의 레지스터 번호 지시로 구성된다. 명령 종별 코드는, opcode[3:0]로 표기되는 4비트의 데이터로, 16가지의 종별의 명령을 지시할 수 있다. 4개의 레지스터 번호 지시는, 각각, 도 5(a), 도 8(a), 도 11(a), 도 18(a), 도 22(a)에 도시하는 바와 같이, 7비트로 구성되고, 0∼127의 레지스터 번호 중 어느 하나를 지시할 수 있다. Here, the command code issued by the command code issuing unit 20 is composed of an instruction type code and four register number instructions, for example, as shown in Table 2 and Table 3 below. The instruction type code is 4 bits of data indicated by opcode [3: 0], and can indicate 16 kinds of instructions. The four register number instructions are composed of 7 bits, respectively, as shown in Figs. 5A, 8A, 11A, 18A, and 22A, respectively, and zero. Any one of the register numbers ˜127 can be indicated.

하기 표 2는, 연산 장치(1)에 있어서, opcode[3:2]를 00에 설정하고, 도 3∼도 5를 참조하면서 후술하는 비SIMD 방식을 채용한 상태에 대응하는, 명령 종별 코드와 명령 기술과 그 명령 종별 코드에 따른 연산 내용을 나타내고 있다. 이 상태에서, 연산부(10)는, 확장 연산기(12e)를 이용하지 않고 통상 연산기(12b)만을 이 용하여 레지스터(11)의 모든 영역에서의 레지스터값을 대상으로 하는 곱합 연산을 행하고 있다. Table 2 below shows an instruction type code corresponding to a state in which the opcode [3: 2] is set to 00 in the arithmetic unit 1 and the non-SIMD method described later with reference to FIGS. 3 to 5 is employed. The instruction description and the operation contents according to the instruction type code are shown. In this state, the arithmetic unit 10 performs the multiplication operation on the register values in all areas of the register 11 using only the normal arithmetic unit 12b without using the extended arithmetic unit 12e.

하기 표 3은, 연산 장치(1)에 있어서, opcode[3:2]를 01에 설정하고, 도 6∼도 8을 참조하면서 후술하는 SIMD 방식을 채용한 상태에 대응하는, 명령 종별 코드와 명령 기술과 그 명령 종별 코드에 따른 통상 연산기(12b)/확장 연산기(12e)의 연산 내용을 나타내고 있다. Table 3 below shows an instruction type code and a command corresponding to a state in which the opcode [3: 2] is set to 01 in the arithmetic unit 1 and the SIMD method described later with reference to FIGS. 6 to 8 is adopted. The calculation contents of the normal operator 12b / extension operator 12e according to the description and the instruction type code thereof are shown.

이 상태에서, 연산부(10)에 있어서, 통상 연산기(12b)에는, 레지스터(11)의 전반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력된다. 또한, 확장 연산기(12e)에는, 레지스터(11)의 후반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력된다. 여기서, 레지스터(11)의 후반 영역의 지정 레지스터 번호는, 레지스터(11)의 전반 영역의 지정 레지스터 번호에 소정 오프셋(본 실시형태에서는 64)을 가산한 번호이다. 연산기(12b, 12e)에 의한 연산 결과의 저장처를 지정하는 레지스터 번호에 대해서도 마찬가지이다. 이 때문에, SIMD 방식을 채용한 경우, 도 8(a)에 도시하는 바와 같이, 4개의 레지스터 번호 지시의 각각은 7비트 구성(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])이지만, 각 번호 지시에 있어서, 7비트 중의 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 사용되고, 1비트(rd[6], rs1[6], rs2[6], rs3[6])는 미사용의 상태가 된다. In this state, in the calculating section 10, the register value in the designated register number of the first half area of the register 11 is input to the normal calculating section 12b as the calculation target data. In addition, the register value in the designated register number of the latter half area of the register 11 is input to the expansion operator 12e as the calculation target data. Here, the designated register number of the latter half area of the register 11 is a number which added predetermined offset (64 in this embodiment) to the designated register number of the first half area of the register 11. The same applies to the register numbers specifying the storage destinations of the calculation results by the calculators 12b and 12e. For this reason, in the case of adopting the SIMD method, as shown in Fig. 8A, each of the four register number instructions has a 7-bit structure (rd [6: 0], rs1 [6: 0], rs2 [6). : 0] and rs3 [6: 0]), but in each number instruction, 6 bits of the 7 bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0]) is used, and one bit (rd [6], rs1 [6], rs2 [6], rs3 [6]) becomes unused.

[표 2]TABLE 2

Figure 112009016639198-pat00002
Figure 112009016639198-pat00002

[표 3][Table 3]

Figure 112009016639198-pat00003
Figure 112009016639198-pat00003

명령 코드 발행부(20)에 있어서의 설정부로서의 기능은, 하나의 명령(명령 세트)에 있어서의 하나 이상의 미사용 비트에, 확장 지시 정보를 설정하는 기능이다. 이 확장 지시 정보는, 해당 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 레지스터(11) 및 연산기(12b, 12e) 중 적어도 하나에 대해 행하는 것이다. The function as the setting unit in the command code issuing unit 20 is a function of setting extended instruction information in one or more unused bits in one instruction (instruction set). This extension instruction information is for executing at least one of the register 11 and the calculators 12b and 12e to execute an instruction for executing an extension process that is different from the normal process executed by the instruction.

미사용 비트로서는, 전술한 바와 같이, 예컨대, 연산 장치(1)에 있어서 SIMD 방식을 채용했을 때에 생기는, 미사용 비트인 레지스터 번호 지시 필드의 최상위 비트(rd[6], rs1[6], rs2[6], rs3[6])의 일부 혹은 전부가 이용된다. As the unused bits, as described above, for example, the most significant bits (rd [6], rs1 [6], rs2 [6) of the register number indicating field, which are unused bits, generated when the SIMD method is adopted in the computing device 1, for example. ], part or all of rs3 [6]) is used.

또, 미사용 비트를 이용하는 확장 지시 정보로서는, 하기 2종류를 들 수 있다. Moreover, the following two types can be mentioned as extended instruction information using an unused bit.

(a1) 예컨대 도 9∼도 24를 참조하면서 후술하는 바와 같이, 각 연산기(12b, 12e)로 출력되어야 하는 데이터를, 각 연산기(12b, 12e)에 대응하는 레지스터(11)의 영역 이외의 영역에서의 데이터로 전환하는 지시를 레지스터(11)에 대해 행하는 확장 지시 정보. 이러한 확장 지시 정보에 의하면, 각 연산기(12b, 12e)는, 레지스터(11)의 전반 영역의 레지스터값과 후반 영역의 레지스터를 혼재시킨 상태로 연산을 행할 수 있다. (a1) For example, as described below with reference to FIGS. 9 to 24, data to be output to each of the calculators 12b and 12e is an area other than the area of the register 11 corresponding to each of the calculators 12b and 12e. Extended instruction information for instructing the register 11 to switch to the data in. According to such extended instruction information, each of the calculators 12b and 12e can perform the operation in a state where the register value of the first half region of the register 11 and the register of the second half region are mixed.

(a2) 예컨대 도 20, 도 22(b), 도 23, 도 24를 참조하면서 후술하는 바와 같이, 각 연산기(12b, 12e)에 의한 연산의 종별을 전환하는 지시를 각 연산기(12b, 12e)에 대해 행하는 확장 지시 정보. 이러한 확장 지시 정보에 의하면, 연산기(12b, 12e)가 실행하는 연산 종별을 독립적으로 전환하여, 연산기(12b)와 연산기(12e)의 각각에 상이한 종별의 연산을 실행시킬 수 있다. (a2) For example, as described below with reference to FIGS. 20, 22 (b), 23, and 24, instructions for switching the type of operation by each of the calculators 12b and 12e are given to each of the calculators 12b and 12e. Extended instruction information for. According to this extended instruction information, it is possible to switch the types of operations executed by the calculators 12b and 12e independently, so that the different types of calculations can be executed by each of the calculator 12b and the calculator 12e.

생성부(30)는, 도 4, 도 7, 도 10, 도 17, 도 21, 도 25를 참조하면서 후술하는 바와 같이, 명령 코드 발행부(설정부)(20)에 의해 설정·발행된 명령 세트(명령 코드)로부터, 연산부(10)에 입력되는 명령 세트를 생성하는 것이다. The generation unit 30 is an instruction set and issued by the command code issuing unit (setting unit) 20 as described later with reference to FIGS. 4, 7, 7, 10, 17, 21, and 25. From the set (instruction code), an instruction set input to the calculating section 10 is generated.

여기서, 명령 코드 발행부(20)에 의해 발행되는 명령 코드는 opcode[3:0], rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0]의 32비트이다. 또한, 생성부(30)에 의해 생성되는 연산부(10)에 입력되는 명령 세트는, b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0]의 62비트이다. 즉, 명령 코드 발행부(20)로부터의 32비트의 명령 코드는, 생성부(30)에 있어서, 연산부(10)에 입력하기 위한 62비트의 명령 세트로 변환된다. Here, the command codes issued by the command code issuing unit 20 are opcode [3: 0], rd [6: 0], rs1 [6: 0], rs2 [6: 0], rs3 [6: 0] 32 bits of. In addition, the instruction set input to the calculating section 10 generated by the generating section 30 is b_we, e_we, b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6 : 62 bits of: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0], and e_op [1: 0]. That is, the 32-bit command code from the instruction code issuing unit 20 is converted into a 62-bit instruction set for input to the calculating unit 10 in the generating unit 30.

이 때, 생성부(30)는, 도 10, 도 11(d), 도 17, 도 18(d), 도 21, 도 22(b), 도 22(d), 도 25를 참조하면서 후술하는 바와 같이, 미사용 비트에 설정된 확장 지시 정보에 기초하는 명령의 생성을 행한다. 즉, 생성부(30)는, 미사용 비트에 설정된 확장 지시 정보와 미사용 비트 이외의 비트에 설정된 정보에 기초하여 확장 명령을 생성하고, 그 확장 명령을 레지스터(11) 및 연산기(12b, 12e) 중 적어도 하나에 대해 명령 세트로서 출력하는 기능도 수행한다. 여기서, 확장 명령은, 상기 항목 (a1), (a2)와 같은 확장 지시 정보에 의해 지시되는, 확장 처리의 실행 지시를 행하는 것이다. At this time, the generation unit 30 will be described later with reference to FIGS. 10, 11 (d), 17, 18 (d), 21, 22 (b), 22 (d), and 25. As described above, an instruction is generated based on the extended instruction information set in the unused bit. That is, the generation unit 30 generates an extension instruction based on the extended instruction information set in the unused bit and the information set in the bits other than the unused bit, and the extended instruction is generated in the registers 11 and the operators 12b and 12e. It also performs the function of outputting as at least one command set. Here, the extension command is for executing an extension process execution instruction indicated by extension instruction information such as the items (a1) and (a2).

[2] 연산부의 기본적인 동작[2] basic operations

여기서, 도 2에 도시하는 흐름도에 따라, 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 기본적인 동작(처리)에 대해 설명한다. Here, according to the flowchart shown in FIG. 2, the basic operation (process) of the calculating part 10 in the calculating device 1 shown in FIG. 1 is demonstrated.

또, 도 2에서는 도시하지 않지만, 연산 장치(1)에서는, 도 2에 도시하는 흐름도에 따르는 처리를 실행하기 전에는, 명령 코드 발행부(20)에 의해 명령 코드를 발행하는 단계(설정 단계를 포함함)와, 생성부(30)에 의한 생성 단계가 실행된다.In addition, although not shown in FIG. 2, in the arithmetic unit 1, a command code issuing unit 20 issues a command code (including a setting step) before executing a process according to the flowchart shown in FIG. 2. And the generation step by the generation unit 30 are executed.

설정 단계에서는, 전술한 바와 같이, 명령 코드 발행부(20)에 있어서의 설정부로서의 기능에 의해, 명령 세트에 있어서의 하나 이상의 미사용 비트에, 확장 지시 정보가 설정된다. 또한, 생성 단계에서는, 생성부(30)에 의해, 명령 코드 발행부(20)로부터의 명령 코드가 연산부(10)에 입력하기 위한 명령 세트로 변환되고, 그 때, 미사용 비트에 설정된 확장 지시 정보에 기초하는 명령의 생성이 행해진다.In the setting step, as described above, the extended instruction information is set in one or more unused bits in the instruction set by the function as the setting unit in the command code issuing unit 20. In addition, in the generation step, the generation unit 30 converts the command code from the command code issuing unit 20 into an instruction set for input to the operation unit 10, at which time the extended instruction information set in the unused bit. Is generated based on.

전술과 같이 생성부(30)(생성 단계)에서 생성된 명령 세트(b_we, e_we, b_rd, b_rs1, b_rs2, b_rs3, e_rd, e_rs1, e_rs2, e_rs3, b_op, e_op)가, 연산부(10)에 입력되면, 우선, 레지스터 판독이 행해진다(단계 S10). 이 레지스터 판독 단계에서는, 레지스터값(%r[b_rs1], %r[b_rs2], %r[b_rs3], %r[e_rs1], %r[e_rs2], %r[e_rs3])이, 레지스터(11)로부터 연산기(12b, 12e)로, 각각 입력값(b_i1, b_i2, b_i3, e_i1, e_i2, e_i3)으로서 입력된다(단계 S11). As described above, the instruction sets b_we, e_we, b_rd, b_rs1, b_rs2, b_rs3, e_rd, e_rs1, e_rs2, e_rs3, b_op, and e_op generated by the generation unit 30 (generation step) are input to the operation unit 10. First, a register read is performed (step S10). In this register reading step, the register values (% r [b_rs1],% r [b_rs2],% r [b_rs3],% r [e_rs1],% r [e_rs2], and% r [e_rs3]) are registers 11. ) Are input to the calculators 12b and 12e as input values b_i1, b_i2, b_i3, e_i1, e_i2 and e_i3, respectively (step S11).

이 후, 단계 S10(S11)에서 판독된 레지스터값에 기초하여, 통상 연산기(12b)에 의한 연산 실행(단계 S20) 및 확장 연산기(12e)에 의한 연산 실행(단계 S30)이 실행된다. Thereafter, based on the register value read in step S10 (S11), calculation execution by the normal calculator 12b (step S20) and calculation execution by the expansion calculator 12e (step S30) are executed.

단계 S20에서는, 우선, 연산 코드(b_op)가 연산명 fmadd의 연산 내용을 지정하는 00인지의 여부의 판정을 행한다(단계 S21). 연산 코드 b_op= 00인 경우(단계 S21의 Y 루트), b_i1 * b_i2 + b_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(b_o)으로서 출력하고(단계 S22), 단계 S30의 처리로 이행한다. In step S20, first, a determination is made as to whether or not the operation code b_op is 00 for specifying the operation content of the operation name fmadd (step S21). When the operation code b_op = 00 (Y root of step S21), an operation that results in b_i1 * b_i2 + b_i3 is executed, and the operation result is output as an output value b_o (step S22), and the process proceeds to step S30. .

연산 코드 b_op= 00이 아닌 경우(단계 S21의 N 루트), 연산 코드(b_op)가 연산명 fnmadd의 연산 내용을 지정하는 11인지의 여부의 판정을 행한다(단계 S23). 연산 코드 b_op= 11인 경우(단계 S23의 Y 루트), -b_i1 * b_i2 - b_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(b_o)으로서 출력하고(단계 S24), 단계 S30의 처리로 이행한다. If the operation code b_op is not 00 (N root of step S21), it is determined whether or not the operation code b_op is 11 specifying the operation content of the operation name fnmadd (step S23). When the operation code b_op = 11 (Y root of step S23), an operation that becomes -b_i1 * b_i2-b_i3 is executed, and the operation result is output as an output value b_o (step S24), and the process shifts to step S30. do.

연산 코드 b_op= 11이 아닌 경우(단계 S23의 N 루트), 연산 코드(b_op)가 연산명 fmsub의 연산 내용을 지정하는 01인지의 여부의 판정을 행한다(단계 S25). 연산 코드 b_op= 01인 경우(단계 S25의 Y 루트), b_i1 * b_i2 - b_i3이 되는 연산 을 실행하여, 그 연산 결과를 출력값(b_o)으로서 출력하고(단계 S26), 단계 S30의 처리로 이행한다. If the operation code b_op = 11 is not (N root of step S23), it is determined whether the operation code b_op is 01 for specifying the operation content of the operation name fmsub (step S25). If the operation code b_op = 01 (Y root of step S25), an operation that results in b_i1 * b_i2-b_i3 is executed, and the operation result is output as an output value b_o (step S26), and the processing proceeds to step S30. .

연산 코드 b_op= 01이 아닌 경우(단계 S25의 N 루트), 연산 코드(b_op)가 연산명 fnmsub의 연산 내용을 지정하는 10인지의 여부의 판정을 행한다(단계 S27). 연산 코드 b_op= 10인 경우(단계 S27의 Y 루트), -b_i1 * b_i2 + b_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(b_o)로서 출력하고(단계 S28), 단계 S30의 처리로 이행한다. 또, 연산 코드 b_op= 10이 아닌 경우(단계 S27의 N 루트)도, 단계 S30의 처리로 이행한다. If the operation code b_op is not 01 (N root of step S25), it is determined whether or not the operation code b_op is 10 specifying the operation content of the operation name fnmsub (step S27). When the operation code b_op = 10 (Y root of step S27), an operation that becomes -b_i1 * b_i2 + b_i3 is executed, and the result of the operation is output as an output value b_o (step S28), and the process proceeds to step S30. do. Also, when the operation code b_op = 10 is not (N root of step S27), the processing proceeds to step S30.

마찬가지로, 단계 S30에서는, 우선, 연산 코드(e_op)가 연산명 fmadd의 연산 내용을 지정하는 00인지의 여부의 판정을 행한다(단계 S31). 연산 코드 e_op= 00인 경우(단계 S31의 Y 루트), e_i1 * e_i2 + e_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(e_o)으로서 출력하고(단계 S32), 단계 S40의 처리로 이행한다. Similarly, in step S30, first, a determination is made as to whether or not the operation code e_op is 00 for specifying the operation content of the operation name fmadd (step S31). When the operation code e_op = 00 (Y root of step S31), an operation that results in e_i1 * e_i2 + e_i3 is executed, and the operation result is output as an output value e_o (step S32), and the process proceeds to step S40. .

연산 코드 e_op= 00이 아닌 경우(단계 S31의 N 루트), 연산 코드(e_op)가 연산명 fnmadd의 연산 내용을 지정하는 11인지의 여부의 판정을 행한다(단계 S33). 연산 코드 e_op= 11인 경우(단계 S33의 Y 루트), -e_i1 * e_i2 - e_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(e_o)으로서 출력하고(단계 S34), 단계 S40의 처리로 이행한다. If the operation code e_op is not 00 (N root of step S31), it is determined whether or not the operation code e_op is 11 specifying the operation content of the operation name fnmadd (step S33). When the operation code e_op = 11 (Y root of step S33), an operation of -e_i1 * e_i2-e_i3 is executed, and the operation result is output as an output value e_o (step S34), and the process proceeds to step S40. do.

연산 코드 e_op= 11이 아닌 경우(단계 S33의 N 루트), 연산 코드(e_op)가 연산명 fmsub의 연산 내용을 지정하는 01인지의 여부의 판정을 행한다(단계 S35). 연산 코드 e_op= 01인 경우(단계 S35의 Y 루트), e_i1 * e_i2 - e_i3이 되는 연산 을 실행하여, 그 연산 결과를 출력값(e_o)으로서 출력하고(단계 S36), 단계 S40의 처리로 이행한다. If the operation code e_op = 11 is not (N root of step S33), it is determined whether or not the operation code e_op is 01 for specifying the operation content of the operation name fmsub (step S35). If the operation code e_op = 01 (Y root of step S35), an operation of e_i1 * e_i2-e_i3 is executed, and the operation result is output as an output value e_o (step S36), and the process proceeds to step S40. .

연산 코드 e_op= 01이 아닌 경우(단계 S35의 N 루트), 연산 코드(e_op)가 연산명 fnmsub의 연산 내용을 지정하는 10인지의 여부의 판정을 행한다(단계 S37). 연산 코드 e_op= 10인 경우(단계 S37의 Y 루트), -e_i1 * e_i2 + e_i3이 되는 연산을 실행하여, 그 연산 결과를 출력값(e_o)으로서 출력하고(단계 S38), 단계 S40의 처리로 이행한다. 또, 연산 코드 e_op= 10이 아닌 경우(단계 S37의 N 루트)도, 단계 S40의 처리로 이행한다. If the operation code e_op = 01 is not (N root of step S35), it is judged whether or not the operation code e_op is 10 specifying the operation content of the operation name fnmsub (step S37). If the operation code e_op = 10 (Y root of step S37), an operation of -e_i1 * e_i2 + e_i3 is executed, and the operation result is output as an output value e_o (step S38), and the process proceeds to step S40. do. Also, when the operation code e_op = 10 is not (N root of step S37), the processing proceeds to step S40.

또, 도 2에서는, 단계 S20의 처리의 후에 단계 S30의 처리를 실행하도록 기재되어 있지만, 실제로는, 단계 S20의 처리와 단계 S30의 처리는 병렬적으로 실행된다. 또한, 단계 S21, S23, S25, S27에 의한 판정 처리나, 단계 S31, S33, S35, S37에 의한 판정 처리는, 도 2에 도시하는 순서에 한정되지 않는다. In addition, although FIG. 2 describes to perform the process of step S30 after the process of step S20, in practice, the process of step S20 and the process of step S30 are executed in parallel. In addition, the determination process by step S21, S23, S25, S27 and the determination process by step S31, S33, S35, S37 are not limited to the procedure shown in FIG.

단계 S40에서는, 제어 신호(b_we, e_we) 및 지정 레지스터 번호(b_rd, e_rd)에 기초하여, 연산기(12b, 12e)에 의한 연산 결과의 레지스터(11)에 대한 기록이 제어된다. In step S40, the recording of the register 11 of the calculation result by the calculators 12b and 12e is controlled based on the control signals b_we and e_we and the designated register numbers b_rd and e_rd.

즉, 제어 신호(b_we)가 1인지의 여부의 판정을 행한다(단계 S41). 제어 신호 b_we= 1인 경우(단계 S41의 Y 루트), 연산기(12b)의 출력값(b_o)이, 레지스터값(%r[b_rd])으로서 레지스터(11)에 기록된다(단계 S42). That is, it is determined whether the control signal b_we is 1 (step S41). When the control signal b_we = 1 (Y root of step S41), the output value b_o of the calculator 12b is written to the register 11 as a register value% r [b_rd] (step S42).

제어 신호 b_we= 0인 경우(단계 S41의 N 루트), 또는, 단계 S42에 의한 기록 처리를 끝낸 후에는, 제어 신호(e_we)가 1인지의 여부의 판정을 행한다(단계 S43). 제어 신호 e_we= 1인 경우(단계 S43의 Y 루트), 연산기(12e)의 출력값(e_o)이, 레지스터값(%r[e_rd])로서 레지스터(11)에 기록된다(단계 S44). 제어 신호 e_we= 0인 경우(단계 S43의 N 루트), 또는, 단계 S44에 의한 기록 처리를 끝낸 후에는, 연산부(10)의 연산 처리를 종료한다. When the control signal b_we = 0 (N route in step S41) or after the recording process in step S42 is finished, it is determined whether the control signal e_we is 1 (step S43). When the control signal e_we = 1 (Y root of step S43), the output value e_o of the calculator 12e is written to the register 11 as a register value% r [e_rd] (step S44). When the control signal e_we = 0 (N route in step S43) or after the recording process in step S44 is finished, the calculation process of the calculation unit 10 ends.

[3] 비SIMD 채용 시의 연산 장치의 동작[3] operation of arithmetic unit when using non-SIMD

표 2를 참조하면서 전술한 바와 같이, 연산 장치(1)에 있어서 비SIMD 방식을 채용하는 경우, 명령 코드 발행부(20)에 의해 발행되는 명령 종별 코드의 상위 2비트(opcode[3:2])에는 00이 설정된다. 이하, 도 3∼도 5를 참조하면서, 비SIMD 방식을 채용한 경우의 연산 장치(1)의 동작에 대해 설명한다. As described above with reference to Table 2, when the non-SIMD method is adopted in the computing device 1, the upper two bits of the instruction type code issued by the instruction code issuing unit 20 (opcode [3: 2] ) Is set to 00. 3 to 5, the operation of the arithmetic unit 1 when the non-SIMD method is adopted will be described.

도 3은 비SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 동작을 간단하게 설명하기 위한 도면이다. 도 4는 비SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드 발행부(20) 및 생성부(30)의 동작을 설명하기 위한 도면이다. 도 5(a)∼도 5(d)는, 각각, 비SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면이다. FIG. 3 is a diagram for briefly explaining the operation of the computing unit 10 in the computing device 1 shown in FIG. 1 when non-SIMD is employed. FIG. 4 is a diagram for explaining the operation of the instruction code issuing unit 20 and the generating unit 30 in the arithmetic unit 1 shown in FIG. 1 when employing a non-SIMD. 5 (a) to 5 (d) designate an instruction code, an operation code, a register write signal, and a register number in the arithmetic unit 1 shown in FIG. 1 when non-SIMD is employed, respectively (only the most significant bit). Is a diagram specifically illustrating.

도 3에 도시하는 바와 같이, 비SIMD 방식을 채용한 경우, 연산 장치(1)의 연산부(10)에서는, 확장 연산기(12e)를 이용하지 않고 통상 연산기(12b)만을 이용하여 레지스터(11)의 모든 영역에서의 레지스터값을 대상으로 하는 곱합 연산이 행해진다. 즉, 명령 종별 코드(opcode[1:0])와 레지스터(11)로부터의 입력값에 따라 통상 연산기(12b)에서 연산하여, 통상 연산기(12b)의 연산 결과를, 제어 신 호(b_we)의 값에 따라 레지스터(11)에 기록한다. As shown in FIG. 3, when the non-SIMD method is adopted, the calculating unit 10 of the computing device 1 uses the normal calculator 12b instead of the extended calculator 12e to perform the registration of the register 11. A multiplication operation is performed on the register values in all areas. That is, the normal operation unit 12b operates in accordance with the instruction type code opcode [1: 0] and the input value from the register 11, and calculates the operation result of the normal operation unit 12b of the control signal b_we. Write to register 11 according to the value.

이 때, 도 4 및 도 5(c)에 도시하는 바와 같이, 제어 신호(e_we)는 항상 0으로 설정되어 있고, 확장 연산기(12e)의 연산 결과는 레지스터(11)에 기록되지 않는다. 또한, 명령 코드 발행부(20)에 의해 발행되는 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])에서는 도 5(a)에 도시하는 바와 같이, 전부 7비트가 사용되어, 레지스터(11)의 모든 영역 중에서 4개의 레지스터값이 지시된다. At this time, as shown in Figs. 4 and 5 (c), the control signal e_we is always set to 0, and the calculation result of the expansion operator 12e is not recorded in the register 11. In addition, four register number instructions (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 [6: 0]) issued by the instruction code issuing unit 20 are shown in FIG. As shown in (a), seven bits are used in total, and four register values are indicated in all areas of the register 11.

비SIMD 채용 시에는, 명령 코드 발행부(20)에 의해 발행된 명령 코드(opcode[3:0]) 및 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가, 생성부(30)에 있어서, 도 4에 도시하는 바와 같이 변환되고, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로서 연산부(10)에 입력된다. When employing non-SIMD, the instruction code (opcode [3: 0]) issued by the instruction code issuing unit 20 and four register number instructions (rd [6: 0], rs1 [6: 0], rs2 [ 6: 0] and rs3 [6: 0]) are converted in the generation unit 30 as shown in FIG. 4, and the instruction set b_we, e_we, b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0 ], e_op [1: 0]).

여기서, 도 4 및 도 5(b)에 도시하는 바와 같이, 통상 연산기(12b)용 연산 코드(b_op[1:0])로서는, 명령 코드에 포함되는 명령 종별 코드의 하위 2비트의 값(opcode[1:0])이 이용된다. 이 때, 도 4 및 도 5(c)에 도시하는 바와 같이, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we)로서 1이 설정되고, 통상 연산기(12b)에 의한 연산 결과가 레지스터(11)에 기록된다. 4 and 5 (b), as the operation code b_op [1: 0] for the normal operator 12b, the lower two bits of the instruction type code included in the instruction code (opcode) [1: 0]) is used. At this time, as shown in Figs. 4 and 5 (c), 1 is set as the register write control signal b_we for the normal operator 12b, and the result of the operation by the normal operator 12b is registered in the register 11. ) Is recorded.

한편, 도 4 및 도 5(b)에 도시하는 바와 같이, 확장 연산기(12e)용 연산 코드(e_op[1:0])로서는, 00을 고정적으로 입력한다. 이 때, 도 4 및 도 5(c)에 도시 하는 바와 같이, 확장 연산기(12b)용의 레지스터 기록 제어 신호(b_we)로서 0이 설정되고, 확장 연산기(12b)에 의한 연산 결과를 레지스터(11)에 기록하지 않는다. On the other hand, as shown in FIG. 4 and FIG. 5 (b), 00 is fixedly input as the operation code e_op [1: 0] for the expansion operator 12e. At this time, as shown in Figs. 4 and 5 (c), 0 is set as the register write control signal b_we for the extension operator 12b, and the result of the calculation by the extension operator 12b is stored in the register 11. Do not write).

또한, 도 4 및 도 5(d)에 도시하는 바와 같이, 명령 코드에 포함되는 4개의 레지스터 번호 지시의 7비트(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가 통상 연산기(12b)용 레지스터 번호 지시(b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0])로서 입력된다. 한편, 확장 연산기(12e)용 레지스터 번호 지시(e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0])로서는, 도 4 및 도 5(d)에 도시하는 바와 같이, 전부 0이 입력된다. 4 and 5 (d), 7 bits (rd [6: 0], rs1 [6: 0], rs2 [6: 0] of four register number instructions included in the instruction code. , rs3 [6: 0]) is input as a register number instruction (b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0]) for the normal operator 12b. . On the other hand, as the register number instruction (e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0]) for the expansion operator 12e, Figs. 4 and 5 (d). As shown in the drawing, all zeros are input.

다음으로, 비SIMD 채용 시의 구체적인 동작예, 예컨대 fnmsub(%f80, %f10, %f20, %f40)의 연산을 실시하는 경우에 대해 설명한다. Next, a specific operation example when employing a non-SIMD, for example, a case where the calculation of fnmsub (% f80,% f10,% f20,% f40) is performed will be described.

그 연산 내용은, The operation content is

%f[80] ← -%f[10] * %f[20] + %f[40]% F [80] ←-% f [10] *% f [20] +% f [40]

으로서 나타낸다. It is shown as.

이 경우, 하기 표 4에 나타내는 명령 코드로 지정된 명령 종별 코드(opcode[3:0]) 및 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 값이, 하기 표 5에 나타내는 통상 연산기(12b)용의 입력 신호의 값, 즉 연산 코드(b_op[1:0]) 및 레지스터 번호 지시(b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0])의 값으로 변환되어 입력된다. 확장 연산기(12e)용의 연산 코드(e_op[1:0]) 및 레지스터 번호 지시(e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0])의 값으로서는, 하기 표 5에 나타내는 바와 같이 0이 입력된다. 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we)로서 1이 입력되고, 통상 연산기(12b)의 연산 결과가 레지스터(11)에 레지스터값(%r[80])으로서 기록된다. 확장 연산기(12e)용의 레지스터 제어 기록 신호(e_we)의 값으로서 0이 입력된다. In this case, the instruction type code (opcode [3: 0]) and the register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 specified by the instruction code shown in Table 4 below. [6: 0]) is the value of the input signal for the normal operator 12b shown in Table 5 below, that is, the operation code b_op [1: 0] and the register number instruction b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0]) are inputted after being converted. Operation code (e_op [1: 0]) and register number instruction (e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0]) for the extended arithmetic unit 12e. As a value of 0, 0 is input as shown in Table 5 below. 1 is input as the register write control signal b_we for the normal operator 12b, and the operation result of the normal operator 12b is written to the register 11 as a register value (% r [80]). 0 is input as the value of the register control write signal e_we for the expansion operator 12e.

[표 4][Table 4]

Figure 112009016639198-pat00004
Figure 112009016639198-pat00004

[표 5]TABLE 5

Figure 112009016639198-pat00005
Figure 112009016639198-pat00005

[4] SIMD 채용 시의 연산 장치의 동작[4] operation of arithmetic unit when using SIMD

표 3을 참조하면서 전술한 바와 같이, 연산 장치(1)에 있어서 SIMD 방식을 채용하는 경우, 명령 코드 발행부(20)에 의해 발행되는 명령 종별 코드의 상위 2비트(opcode[3:2])에는 01이 설정된다. 이하, 도 6∼도 8을 참조하면서, SIMD 방식을 채용한 경우의 연산 장치(1)의 동작에 대해 설명한다. As described above with reference to Table 3, when the SIMD method is adopted in the computing device 1, the upper two bits of the instruction type code issued by the instruction code issuing unit 20 (opcode [3: 2]) 01 is set. 6-8, the operation | movement of the arithmetic unit 1 when the SIMD system is employ | adopted is demonstrated.

도 6은 SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 동작을 간단하게 설명하기 위한 도면이다. 도 7은 SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드 발행부(20) 및 생성부(30)의 동작을 설명하기 위한 도면이다. 도 8(a)∼(d)는, 각각, SIMD 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면이다. FIG. 6 is a diagram for briefly explaining the operation of the computing unit 10 in the computing device 1 shown in FIG. 1 when employing the SIMD. FIG. 7 is a view for explaining the operation of the instruction code issuing unit 20 and the generating unit 30 in the arithmetic unit 1 shown in FIG. 1 when employing the SIMD. 8 (a) to 8 (d) specifically show the instruction code, the operation code, the register write signal, and the register number designation (only the most significant bit) in the arithmetic unit 1 shown in FIG. 1 when employing the SIMD. It is a figure shown.

도 6에 도시하는 바와 같이, SIMD를 채용한 경우, 연산 장치(1)의 연산부(10)에서는, 통상 연산기(12b)에, 레지스터(11)의 전반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력된다. 또한, 확장 연산기(12e)에, 레지스터(11)의 후반 영역의 지정 레지스터 번호에 있어서의 레지스터값이 연산 대상 데이터로서 입력된다. 여기서, 확장 연산기(12e)용의 지정 레지스터 번호는, 통상 연산기(12b)용의 지정 레지스터 번호에 소정 오프셋 N(본 실시형태에서는 64)을 가산한 번호이다. 즉, 통상 연산기(12b)와 확장 연산기(12e)에 있어서, 명령 종별 코드(opcode[1:0])에 따른 동일 종별의 연산이, 상이한 입력값(레지스터값)에 대해 실행된다. 그리고, 통상 연산기(12b)에 의한 연산 결과 및 확장 연산기(12e)에 의한 연산 결과가, 각각 레지스터(11)의 전반 영역 및 후반 영역에 기록된다. As shown in FIG. 6, in the case where the SIMD is employed, in the computing unit 10 of the computing device 1, the register value in the designated register number of the first half area of the register 11 is stored in the normal calculator 12b. It is input as calculation target data. In addition, the register value in the designated register number of the latter half area of the register 11 is input to the expansion operator 12e as the calculation target data. Here, the designated register number for the extension operator 12e is a number obtained by adding a predetermined offset N (64 in the present embodiment) to the designated register number for the ordinary operator 12b. That is, in the normal operator 12b and the extended operator 12e, the same type of calculation according to the instruction type code opcode [1: 0] is executed for different input values (register values). The operation result by the normal operator 12b and the operation result by the expansion operator 12e are recorded in the first half region and the second half region of the register 11, respectively.

이 때, 명령 코드 발행부(20)에 의해 발행되는 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])에서는, 도 8(a)에 도시하는 바와 같이, 전체 7비트 중의 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 사용 된다. 이러한 일조의 명령 코드에 의해, 통상 연산기(12b)용의 레지스터 번호와 확장 연산기(12e)용의 레지스터 번호가 동시에 지시된다. 따라서, SIMD 방식을 채용한 경우, 도 8(a)에 도시하는 바와 같이, 최상위 비트(rd[6], rs1[6], rs2[6], rs3[6])는 사용되지 않는다. At this time, in the four register number instructions (rd [6: 0], rs1 [6: 0], rs2 [6: 0], rs3 [6: 0]) issued by the instruction code issuing unit 20, As shown in Fig. 8 (a), the lower six bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0]) of all seven bits are used. . By such a set of instruction codes, the register number for the normal operator 12b and the register number for the expansion operator 12e are simultaneously indicated. Therefore, when the SIMD method is adopted, as shown in Fig. 8A, the most significant bits rd [6], rs1 [6], rs2 [6], and rs3 [6] are not used.

SIMD 채용 시에는, 명령 코드 발행부(20)에 의해 발행된 명령 코드(opcode[3:0]) 및 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가, 생성부(30)에 있어서, 도 7에 도시하는 바와 같이 변환되어, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로서 연산부(10)에 입력된다. When employing the SIMD, the instruction code (opcode [3: 0]) issued by the instruction code issuing unit 20 and four register number instructions (rd [6: 0], rs1 [6: 0], rs2 [6) : 0] and rs3 [6: 0]) are converted in the generation unit 30 as shown in FIG. 7 to generate the instruction sets b_we, e_we, b_rd [6: 0], b_rs1 [6: 0]. ], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0] , e_op [1: 0]) is input to the calculation unit 10.

여기서, 도 7 및 도 8(b)에 도시하는 바와 같이, 통상 연산기(12b)용 연산 코드(b_op[1:0]) 및 확장 연산기(12e)용 연산 코드(e_op[1:0])로서는, 명령 코드에 포함되는 명령 종별 코드의 하위 2비트의 값(opcode[1:0])이 이용된다. 통상 연산기(12b)와 확장 연산기(12e)에는 반드시 동일한 연산 코드가 입력되고, 이들 연산기(12b, 12e)는, 동일 종별의 연산을 실행한다. As shown in Figs. 7 and 8 (b), the operation codes b_op [1: 0] for the normal operator 12b and the operation codes e_op [1: 0] for the extended operator 12e are shown. The value (opcode [1: 0]) of the lower two bits of the instruction type code included in the instruction code is used. Normally, the same operation code is input to the arithmetic operator 12b and the extended arithmetic operator 12e, and these arithmetic operators 12b and 12e perform the same kind of calculation.

이 때, 도 7 및 도 8(c)에 도시하는 바와 같이, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 제어 신호(e_we)로서는, 고정값 1이 설정된다. 이에 따라, 통상 연산기(12b) 및 확장 연산기(12e)에 의한 연산 결과는, 항상 레지스터(11)의 전반 영역 및 후반 영역에 각각 기록된다. At this time, as shown in FIG. 7 and FIG. 8C, as the register write control signal b_we for the normal operator 12b and the register write control signal e_we for the expansion operator 12e, a fixed value. 1 is set. As a result, the result of calculation by the normal operator 12b and the extended operator 12e is always recorded in the first half region and the second half region of the register 11, respectively.

또한, 도 7에 도시하는 바와 같이, 명령 코드에 포함되는 4개의 레지스터 번호 지시의 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 통상 연산기(12b)용 레지스터 번호 지시(b_rd[5:0], b_rs1[5:0], b_rs2[5:0], b_rs3[5:0])로서 입력된다. 동시에, 동일한 rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0]이 확장 연산기(12e)용 레지스터 번호 지시(e_rd[5:0], e_rs1[5:0], e_rs2[5:0], e_rs3[5:0])로서도 입력된다. In addition, as shown in Fig. 7, the lower six bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5 :) of the four register number instructions included in the instruction code. 0]) is input as the register number instructions b_rd [5: 0], b_rs1 [5: 0], b_rs2 [5: 0], and b_rs3 [5: 0] for the normal operator 12b. At the same time, the same rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0] register register instructions (e_rd [5: 0], e_rs1 [ 5: 0], e_rs2 [5: 0], e_rs3 [5: 0]).

그리고, 도 7 및 도 8(d)에 도시하는 바와 같이, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs1[6], b_rs2[6], b_rs3[6])에는 고정값 0이 설정되고, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs1[6], e_rs2[6], e_rs3[6])에는 고정값 1이 설정된다. 이에 의해, 통상 연산기(12b)에서는 레지스터(11)의 전반 영역(레지스터 번호 0∼63)의 레지스터값이 사용된다. 또한, 확장 연산기(12e)에서는, 통상 연산기(12b)용 레지스터 번호에 64를 가산한 레지스터 번호의 레지스터값, 즉 레지스터(11)의 후반 영역(레지스터 번호 64∼127)의 레지스터값이 사용된다. As shown in Figs. 7 and 8 (d), the most significant bits b_rd [6], b_rs1 [6], b_rs2 [6], and b_rs3 [6] in the register number instruction for the normal operator 12b are shown. The fixed value 0 is set, and the fixed value 1 is set in the most significant bits e_rd [6], e_rs1 [6], e_rs2 [6], and e_rs3 [6] of the register number instruction for the expansion operator 12e. As a result, the register value of the first half area (register numbers 0 to 63) of the register 11 is used in the normal operator 12b. In the extended arithmetic operator 12e, the register value of the register number obtained by adding 64 to the register number for the arithmetic operator 12b, that is, the register value of the second half region (register numbers 64 to 127) of the register 11 is used.

다음으로, SIMD 채용 시의 구체적인 동작예, 예컨대 simd-fnmsub %f40, %f10, %f20, %f30의 연산을 실시하는 경우에 대해 설명한다. Next, the specific operation example at the time of employ | adopting SIMD, for example, the case where calculation of simd-fnmsub% f40,% f10,% f20,% f30 is performed is demonstrated.

이 경우, 연산부(10)의 연산기(12b, 12e)에 의해, 이하와 같은 내용의 2개의 연산이 각각 실행된다. In this case, the arithmetic units 12b and 12e of the arithmetic unit 10 execute two arithmetic operations as described below.

통상 연산기(12b)의 연산 내용: %r[40] ← -%r[10] * %r[20] + %r[30]Calculation content of the ordinary calculator 12b:% r [40] ←-% r [10] *% r [20] +% r [30]

확장 연산기(12e)의 연산 내용: %r[104] ← -%r[74] * %r[84] + %r[94]Calculation contents of the expansion operator 12e:% r [104] ←-% r [74] *% r [84] +% r [94]

이 경우, 하기 표 6에 나타내는 명령 코드로 지정된 명령 종별 코드(opcode[3:0]) 및 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 값이, 하기 표 7에 나타내는 연산기(12b, 12e)용의 입력 신호의 값으로 변환되어 입력된다. 즉, 통상 연산기(12b)용 레지스터 번호 지시 및 확장 연산기(12e)의 레지스터 번호 지시로서는, 하위 6비트에 동일한 값(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])이 입력되고, 최상위 비트에는 각각 고정값 0, 1이 입력된다. 또한, 통상 연산기(12b)용의 연산 코드(b_op[1:0]) 및 확장 연산기(12e)용의 연산 코드(e_op[1:0])로서는, 동일한 연산 코드 10이 입력된다. 이에 의해, 통상 연산기(12b) 및 확장 연산기(12e)에는, 각각 레지스터(11)로부터의 4개의 입력값과, 동일한 연산 코드가 입력되기 때문에, 통상 연산기(12b) 및 확장 연산기(12e)에서는, 동일 종별의 연산이, 각각 상이한 입력값에 대해 실행된다. 그리고, 레지스터 기록 제어 신호(b_we, e_we)로서 모두 1이 설정되어 있기 때문에, 통상 연산기(12b)에 의한 연산 결과는, 레지스터(11)의 전반 영역에 레지스터값 %r[40]로서 기록된다. 마찬가지로, 확장 연산기(12e)에 의한 연산 결과는, 레지스터(11)의 후반 영역에 레지스터값 %r[104]로서 기록된다. In this case, the instruction type code (opcode [3: 0]) and the register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 specified by the instruction code shown in Table 6 below. [6: 0]) is converted into the values of the input signals for the calculators 12b and 12e shown in Table 7 below and input. That is, as the register number instruction for the normal operator 12b and the register number instruction of the extended operator 12e, the same values (rd [5: 0], rs1 [5: 0], rs2 [5: 0] that are equal to the lower 6 bits. , rs3 [5: 0]) is input, and fixed values 0 and 1 are input to the most significant bit, respectively. The same operation code 10 is input as the operation code b_op [1: 0] for the normal operator 12b and the operation code e_op [1: 0] for the extended operator 12e. As a result, since the same operation code and the four input values from the register 11 are input to the normal operator 12b and the extended operator 12e, respectively, in the normal operator 12b and the extended operator 12e, The same kind of calculation is performed for different input values, respectively. Since all 1s are set as the register write control signals b_we and e_we, the calculation result by the normal operator 12b is recorded as the register value% r [40] in the first half area of the register 11. Similarly, the result of the calculation by the expansion operator 12e is recorded as the register value% r [104] in the second half area of the register 11.

[표 6]TABLE 6

Figure 112009016639198-pat00006
Figure 112009016639198-pat00006

[표 7]TABLE 7

Figure 112009016639198-pat00007
Figure 112009016639198-pat00007

[5] 제1 미사용 비트 이용 형태 채용 시의 연산 장치의 동작[5] Operation of arithmetic unit when employing first unused bit usage form

도 9는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 동작을 간단하게 설명하기 위한 도면이다. 도 10은 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드 발행부(설정부)(20) 및 생성부(30)의 동작을 설명하기 위한 도면이다. 도 11(a)∼ 도 11(d)는, 각각, 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면이다. 도 12∼도 15는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)에 의한 연산 조합의 구체예를 도시하는 도면이다. FIG. 9 is a diagram for briefly explaining the operation of the calculation unit 10 in the arithmetic unit 1 shown in FIG. 1 when the first unused bit usage mode is adopted. FIG. 10 is a diagram for explaining the operation of the instruction code issuing unit (setting unit) 20 and the generating unit 30 in the arithmetic unit 1 shown in FIG. 1 when the first unused bit use form is adopted. . 11 (a) to 11 (d) designate command codes, arithmetic codes, register write signals, and register numbers in the arithmetic unit 1 shown in FIG. 1 when employing the first unused bit use form, respectively. It is a figure which shows (most significant bit only) concretely. 12-15 is a figure which shows the specific example of the calculation combination by the calculation part 10 in the arithmetic unit 1 shown in FIG. 1 at the time of employ | adopting the 1st unused bit utilization form.

SIMD 방식을 채용한 경우, 레지스터(11)의 전반 영역의 값을 입력값으로 하는 통상 연산기(12b)와 레지스터(11)의 후반 영역의 값을 입력값으로 하는 확장 연 산기(12e)가, 동일 종별의 연산을 동시에 실행한다. 그리고, 연산기(12b, 12e)에 의한 연산 결과가, 각각, 레지스터(11)의 전반 영역 및 후반 영역에 기록된다. 그 때문에, 전술한 SIMD 방식에서는, 하나의 연산기(12b 또는 12e)에 있어서, 레지스터(11)의 전반 영역의 값과 후반 영역의 값을 입력값으로 하여 혼재시킨 연산을 행하는 것은 불가능하다. When the SIMD method is adopted, the normal operator 12b having the input value of the first half area of the register 11 and the extended operator 12e having the input value of the second half area of the register 11 are the same. Simultaneous operation is performed simultaneously. The calculation results by the calculators 12b and 12e are recorded in the first half region and the second half region of the register 11, respectively. Therefore, in the above-described SIMD system, it is impossible to perform a mixed operation in which one of the calculators 12b or 12e uses the value of the first half region and the second half region of the register 11 as input values.

본 항목에서 설명하는 실시형태에서는, 전술한 4개의 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에, 4개의 명령 세트(cross-fmadd1, cross-fmadd2, cross-fmadd3, cross-fmadd4)[도 11(a) 참조]가 더 추가되어 있다. 이들 명령 세트(cross-fmadd1, …, cross-fmadd4)는, 도 9의 좌측예에 도시하는 바와 같이, 통상 연산기(12b)에의 3입력값을 레지스터(11)의 후반 영역의 값으로 하고, 확장 연산기(12e)에의 3입력값을 레지스터(11)의 전반 영역의 값으로 하도록 전환하는 명령이다. In the embodiments described in this section, the four instruction sets (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd) described above have four instruction sets (cross-fmadd1, cross-fmadd2, and cross-fmadd3). cross-fmadd4) (see Fig. 11 (a)) is further added. These instruction sets (cross-fmadd1, ..., cross-fmadd4) are expanded by setting three input values to the normal operator 12b as the values in the latter half region of the register 11, as shown in the left example of FIG. It is an instruction to switch the three input values to the calculator 12e to be the values of the first half area of the register 11.

즉, 이들 명령을 이용함으로써 레지스터(11)의 전반 영역의 값 및 레지스터(11)의 후반 영역의 값이 크로스되어, 각각 통상 연산기(12b) 및 확장 연산기(12e)에 입력된다. 이 때, 통상 연산기(12b)와 확장 연산기(12e)에서는 상이한 종별의 연산을 실행하는 것이 가능하게 되어 있다. 이들 명령 세트(cross-fmadd1, …, cross-fmadd4)에 있어서도, SIMD 방식의 명령 코드와 동일하게, 각 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 전체 7비트 중, 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 사용되고, 최상위 비트(rd[6], rs1[6], rs2[6], rs3[6])는 사용되지 않는다. That is, by using these instructions, the value of the first half region of the register 11 and the value of the second half region of the register 11 are crossed and input to the normal operator 12b and the expansion operator 12e, respectively. At this time, it is possible to perform different kinds of calculations in the normal operator 12b and the extended operator 12e. Also in these instruction sets (cross-fmadd1, ..., cross-fmadd4), each register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0) is the same as that of the SIMD type instruction code. ], among the 7 bits of rs3 [6: 0]), the lower 6 bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0]) are used. The most significant bits (rd [6], rs1 [6], rs2 [6], rs3 [6]) are not used.

이하에 설명하는 실시형태(제1 미사용 비트 이용 형태)에서는, 명령 세트(cross-fmadd1, …, cross-fmadd4)에 있어서의 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6]) 중 2개, 구체적으로는 rs1[6], rs2[6]이 이용된다. 이들 2개의 미사용 비트(rs1[6], rs2[6])에, 명령 코드 발행부(20)에 있어서의 설정부로서의 기능에 의해, 확장 지시 정보가 설정된다. 이 확장 지시 정보는, rs1[6], rs2[6]을 사용하지 않는 명령 세트(cross-fmadd1, …, cross-fmadd4)에 의한 통상 처리와는 상이한 확장 처리(예컨대 도 12∼도 15의 연산 조합 참조)의 실행 지시를 레지스터(11) 및 연산기(12b, 12e)에 대해 행하는 것이다. 그리고, 생성부(30)는, 도 10 및 도 11을 참조하면서 후술하는 바와 같이, 미사용 비트에 설정된 확장 지시 정보와 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 레지스터(11) 및 연산기(12b, 12e)에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 출력한다. In the embodiment (first unused bit usage form) described below, the unused bits rd [6], rs1 [6], rs2 [6], in the instruction set cross-fmadd1, ..., cross-fmadd4. Two of rs3 [6]), specifically rs1 [6] and rs2 [6], are used. The extended instruction information is set to these two unused bits rs1 [6] and rs2 [6] by the function as the setting unit in the instruction code issuing unit 20. This extended instruction information is different from the normal processing by the instruction sets (cross-fmadd1, ..., cross-fmadd4) not using rs1 [6] and rs2 [6] (for example, the calculations in Figs. 12 to 15). Instruction of execution) is given to the register 11 and the calculators 12b and 12e. 10 and 11, the generation unit 30, based on the extended instruction information set in the unused bit and the information set in the bits other than the unused bit, the generator 11 and the calculator 12b. , 12e) generates and outputs an extension command for instructing execution of the extension processing.

이에 따라, 도 9의 우측예에 도시하는 바와 같이, 하나의 연산기(12b 또는 12e)에 있어서, 레지스터(11)의 전반 영역의 값과 후반 영역의 값을 입력값으로 하여 혼재시킨 연산을 실현할 수 있다. 특히, 미사용 비트(rs1[6], rs2[6])를 이용하여 확장 처리의 실행 지시를 행함으로써 각 연산기(12b, 12e)에 있어서의 곱연산 대상이 되는 2개의 입력값을, 각각 레지스터(11)의 전반 영역 및 후반 영역으로부터 입력시키는 것이 가능하게 된다. 따라서, 상기 식(1-1)∼(1-4)에 따른 4회의 연산(즉 4개의 명령)에 의해 실행되는 복소수 행렬곱 연산을, 후술하는 바와 같이, 2 명령으로 실행하는 것이 가능하게 된다. As a result, as shown in the right example of FIG. 9, in one calculator 12b or 12e, a calculation in which the value of the first half region and the second half region of the register 11 are input values can be realized. have. In particular, the instruction to execute the expansion process using the unused bits rs1 [6] and rs2 [6] registers the two input values to be subjected to multiplication in each of the calculators 12b and 12e, respectively. It becomes possible to input from the first half region and the second half region of 11). Therefore, it is possible to execute a complex matrix product operation performed by four operations (that is, four instructions) according to the above formulas (1-1) to (1-4) in two instructions, as described later. .

이 제1 미사용 비트 이용 형태를 채용하는 경우[즉 명령 세트(cross-fmadd1, …, cross-fmadd4)에 의한 처리를 채용하는 경우], 명령 코드 발행부(20)에 의해 발행되는 명령 종별 코드의 상위 2비트(opcode[3:2])에는 11이 설정된다. 이하, 도 10∼도 15를 참조하면서, 이 제1 미사용 비트 이용 형태를 채용한 경우의 연산 장치(1)의 동작에 대해 설명한다. When adopting this first unused bit usage form (i.e., employing processing by the instruction set (cross-fmadd1, ..., cross-fmadd4)), the instruction type code issued by the instruction code issuing unit 20 11 is set in the upper two bits (opcode [3: 2]). Hereinafter, with reference to FIGS. 10-15, the operation | movement of the arithmetic unit 1 in the case of employing this 1st unused bit utilization form is demonstrated.

제1 미사용 비트 이용 형태 채용 시에는, 명령 코드 발행부(20)에 의해 발행된 명령 코드(opcode[3:0]) 및 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가, 생성부(30)에 있어서, 도 10에 도시하는 바와 같이 변환되어, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로서 연산부(10)에 입력된다. When employing the first unused bit usage form, the instruction code (opcode [3: 0]) issued by the instruction code issuing unit 20 and four register number instructions (rd [6: 0], rs1 [6: 0) ], rs2 [6: 0], rs3 [6: 0]) are converted in the generation unit 30 as shown in FIG. 10, and the instruction sets b_we, e_we, b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0] and e_op [1: 0]) are input to the calculation unit 10.

여기서, cross-fmadd1, …, cross-fmadd4에 있어서는, 도 10, 도 11(b) 및 하기 표 8에 나타내는 바와 같이, 명령 코드에 포함되는 명령 종별 코드의 하위 2비트의 값(opcode[1:0])에 기초하여, 통상 연산기(12b)용 연산 코드(b_op[1:0]) 및 확장 연산기(12e)용 연산 코드(e_op[1:0])가 각각 생성된다. 전술한 SIMD 방식의 경우와 상이하고, 통상 연산기(12b) 및 확장 연산기(12e)에 있어서 실행되는 연산의 종별은, 독립적으로 제어되어 전환된다. 이에 따라, 통상 연산기(12b) 및 확장 연산기(12e)는, 동일 종별의 연산을 실행하는 것도, 상이한 종별의 연산을 실행하는 것도 가능하게 되어 있다. Where cross-fmadd1,... In cross-fmadd4, as shown in FIG. 10, FIG. 11 (b) and Table 8 below, based on the lower two bits of the instruction type code included in the instruction code (opcode [1: 0]), The operation code b_op [1: 0] for the normal operator 12b and the operation code e_op [1: 0] for the extended operator 12e are generated, respectively. Different from the case of the SIMD system described above, the type of the calculation executed in the normal operator 12b and the extended operator 12e is independently controlled and switched. As a result, the normal arithmetic operator 12b and the extended arithmetic operator 12e can perform the same kind of calculation or the different kind of calculation.

[표 8][Table 8]

Figure 112009016639198-pat00008
Figure 112009016639198-pat00008

이 때, 도 10 및 도 11(c)에 도시하는 바와 같이, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 제어 신호(e_we)로서는, 고정값 1이 설정된다. 이에 따라, 통상 연산기(12b) 및 확장 연산기(12e)에 의한 연산 결과는, 항상 레지스터(11)의 전반 영역 및 후반 영역에 각각 기록된다. At this time, as shown in Figs. 10 and 11 (c), as the register write control signal b_we for the normal operator 12b and the register write control signal e_we for the expansion operator 12e, fixed values are shown. 1 is set. As a result, the result of calculation by the normal operator 12b and the extended operator 12e is always recorded in the first half region and the second half region of the register 11, respectively.

또한, 도 10에 도시하는 바와 같이, 명령 코드에 포함되는 4개의 레지스터 번호 지시의 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 통상 연산기(12b)용 레지스터 번호 지시(b_rd[5:0], b_rs1[5:0], b_rs2[5:0], b_rs3[5:0])로서 입력된다. 동시에, 동일한 rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0]이 확장 연산기(12e)용 레지스터 번호 지시(e_rd[5:0], e_rs1[5:0], e_rs2[5:0], e_rs3[5:0])로서도 입력된다. As shown in Fig. 10, the lower six bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5 :) of the four register number instructions included in the instruction code. 0]) is input as the register number instructions b_rd [5: 0], b_rs1 [5: 0], b_rs2 [5: 0], and b_rs3 [5: 0] for the normal operator 12b. At the same time, the same rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0] register register instructions (e_rd [5: 0], e_rs1 [ 5: 0], e_rs2 [5: 0], e_rs3 [5: 0]).

그리고, 도 10, 도 11(d) 및 하기 표 9에 나타내는 바와 같이, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs3[6])에는 고정값 0이 설정되고, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs3[6])에는 고정값 1이 설정된다. 한편, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rs1[6], b_rs2[6]) 및 확장 연산기(12e)용 레지스터 번호 지시 의 최상위 비트(e_rs1[6], e_rs2[6])에는, 명령 종별 코드(opcode[1:0])와 레지스터 번호 지시의 최상위 비트(rs1[6], rs2[6])의 값(확장 지시 정보)에 기초하여 산출·생성된 값이 설정된다. 그 값은, 도 10, 도 11(d) 및 하기 표 9에 나타내는 바와 같이, 명령 종별 코드에 따라, 레지스터 번호 지시의 최상위 비트(rs1[6], rs2[6])의 값에 기초하여 산출된다. 이에 의해, 각 연산기(12b, 12e)에 있어서의 곱연산 대상이 되는 2개의 입력값을, 각각 레지스터(11)의 전반 영역 및 후반 영역으로부터 입력시키는 것이 가능하게 된다. 즉, 미사용 비트(rs1[6], rs2[6])에 설정한 확장 지시 정보에 의해, 레지스터(11)로부터 각 연산기(12b, 12e)에의 값을, 각 연산기(12b, 12e)에 대응하는 레지스터(11)의 영역 이외의 영역에서의 값으로 전환하는 지시가, 레지스터(11)에 대해 행해진다. 또, "~X"는 X의 반전값을 나타낸다. 10, 11 (d) and Table 9 below, the fixed value 0 is set in the most significant bits b_rd [6] and b_rs3 [6] of the register number instruction for the normal operator 12b. A fixed value 1 is set in the most significant bits e_rd [6] and e_rs3 [6] of the register number instruction for the expansion operator 12e. On the other hand, the most significant bits (b_rs1 [6], b_rs2 [6]) of the register number instruction for the normal operator 12b and the most significant bits (e_rs1 [6], e_rs2 [6]) of the register number instruction for the extended operator 12e. The calculated and generated values are set based on the instruction type code (opcode [1: 0]) and the values (extended instruction information) of the most significant bits (rs1 [6] and rs2 [6]) of the register number instruction. The value is calculated based on the values of the most significant bits (rs1 [6], rs2 [6]) of the register number instruction, as shown in Figs. 10, 11 (d) and Table 9 below. do. As a result, the two input values to be subjected to the multiplication in each of the calculators 12b and 12e can be input from the first half region and the second half region of the register 11, respectively. That is, the value from the register 11 to each operator 12b, 12e corresponds to each operator 12b, 12e by the extended instruction information set in the unused bits rs1 [6], rs2 [6]. Instructions for switching to values in areas other than the area of the register 11 are given to the register 11. In addition, "~ X" represents an inverted value of X.

[표 9]TABLE 9

Figure 112009016639198-pat00009
Figure 112009016639198-pat00009

다음으로, 제1 미사용 비트 이용 형태 채용 시의 구체적인 동작예, 예컨대 cross-fmadd1 %f30, %f10, %f20, %f30의 연산을 실시하는 경우에 대해 설명한다. Next, a specific operation example when employing the first unused bit usage mode, for example, a case where the calculation of cross-fmadd1% f30,% f10,% f20, and% f30 is performed will be described.

이 경우, 연산부(10)의 연산기(12b, 12e)에 의해, 이하와 같은 내용의 2개의 연산이 각각 실행된다. In this case, the arithmetic units 12b and 12e of the arithmetic unit 10 execute two arithmetic operations as described below.

통상 연산기(12b)의 연산 내용: %r[30] ← %r[10] * %r[20] + %r[30]Calculation content of the ordinary calculator 12b:% r [30] ←% r [10] *% r [20] +% r [30]

확장 연산기(12e)의 연산 내용: %r[94] ← %r[10] * %r[84] + %r[94]Calculation contents of the expansion operator 12e:% r [94] ←% r [10] *% r [84] +% r [94]

이들 2개의 연산은, 레지스터(11)의 전반 영역에 실수 파트의 값을, 레지스터(11)의 후반 영역에 허수 파트의 값을 유지한 경우의, 이하의 복소수 연산에 대응하고 있다. These two operations correspond to the following complex operations when the value of the real part in the first half region of the register 11 and the value of the imaginary part in the second half region of the register 11 are maintained.

X ← X + A * C (1-1)X ← X + A * C (1-1)

Y ← Y + A * D (1-2)Y ← Y + A * D (1-2)

이 경우, 하기 표 10에 나타내는 명령 코드로 지정된 명령 종별 코드(opcode[3:0]) 및 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 값이, 하기 표 11에 나타내는 연산기(12b, 12e)용의 입력 신호의 값으로 변환되어 입력된다. 즉, 하기 표 10에 나타내는 바와 같이, 명령 코드 발행부(20)에 의해 명령 종별 코드(opcode[3:0])로서 1100이 설정되고, 명령 코드 발행부(20)의 설정부로서의 기능에 의해, 미사용 비트(rs1[6], rs2[6])에 0, 0이 설정된다(후술하는 도 12의 좌측 위 예 참조). 이들 값에 따라, 생성부(30)에 의해, 도 11(d)나 표 9에 나타내는 식에 기초하여, 통상 연산기(12b)용의 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs1[6], b_rs2[6], b_rs3[6])로서 0, 0, 0, 0이 산출·설정된다(하기 표 11 참조). 또한, 마찬가지로 하여, 확장 연산기(12e)용의 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs1[6], e_rs2[6], e_rs3[6])로서 1, 0, 1, 1이 산출·설정된다(하기 표 11 참조). 또한, 통상 연산기(12b) 및 확장 연산기(12e) 에는, 도 11(b)나 위의 표 8에 나타내는 바와 같이 명령 종별 코드(opcode[1:0])에 의해 결정되는 연산 코드 00, 00이 각각 입력된다. 따라서, 이 구체예에서는, 통상 연산기(12b)와 확장 연산기(12e)는 동일 종별의 연산(fmadd)을 행하게 된다. 또, 통상 연산기(12b)용 레지스터 번호 지시 및 확장 연산기(12e)의 레지스터 번호 지시의 하위 6비트에는, 동일한 값(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])이 입력된다. In this case, the instruction type code (opcode [3: 0]) and the register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 specified by the instruction code shown in Table 10 below [6: 0]) is converted into the values of the input signals for the calculators 12b and 12e shown in Table 11 below and input. That is, as shown in Table 10 below, 1100 is set as the command type code opcode [3: 0] by the command code issuing unit 20, and the function as the setting unit of the command code issuing unit 20 is set. 0 and 0 are set in the unused bits rs1 [6] and rs2 [6] (see the upper left example in FIG. 12 described later). According to these values, the generation unit 30 uses the most significant bits b_rd [6] and b_rs1 [6 of the register number instruction for the ordinary operator 12b based on the equations shown in Fig. 11 (d) and Table 9. ], b_rs2 [6], b_rs3 [6]), and 0, 0, 0, 0 are calculated and set (refer Table 11 below). Similarly, 1, 0, 1, 1 are calculated and calculated as the most significant bits (e_rd [6], e_rs1 [6], e_rs2 [6], e_rs3 [6]) of the register number instruction for the extension operator 12e. Is set (see Table 11 below). In addition, in the normal operator 12b and the extended operator 12e, operation codes 00 and 00 determined by the instruction type code opcode [1: 0], as shown in Fig. 11B and Table 8 above, are assigned. Each is input. Therefore, in this specific example, the normal operator 12b and the extended operator 12e perform the same kind of operation fmadd. In addition, the same values (rd [5: 0], rs1 [5: 0], rs2 [5: 0] in the lower 6 bits of the register number instruction for the normal operator 12b and the register number instruction of the extended operator 12e. , rs3 [5: 0]) is input.

이에 따라, 도 12의 좌측 위 예와 같이, 통상 연산기(12b)는, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0에 의해 선택된 레지스터 전반 영역으로부터의 3개의 값 A(%r[rs1]= %r[10]), C(%r[rs2]= %r[20]), X(%r[rs3]= %r[30])을 입력값으로 하여 상기 식(1-1)에 기초하는 연산을 행한다. 또한, 도 12의 좌측 위 예와 같이, 확장 연산기(12e)는, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1에 의해 선택된 레지스터 전반 영역으로부터의 하나의 값 A(%r[rs1]= %r[10])과 레지스터 후반 영역으로부터의 2개의 값 D(%r[N+ rs2]= %r[84]), Y(%r[N+ rs3]= %r[94])를 입력값으로 하여 상기 식(1-2)에 기초하는 연산을 행한다. 따라서, 통상 연산기(12b) 및 확장 연산기(12e)로부터 상이한 입력값을 사용한 동일 종별의 연산에 의한 연산 결과가 출력된다. 또, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 신호에는 고정값 1이 설정되어 있다. 이 때문에, 통상 연산기(12b)에 의한 연산 결과는, 레지스터(11)의 전반 영역에 레지스터값(%r[rd]= %r[30])으로서 기록된다. 마찬가지로, 확장 연산기(12e)에 의한 연산 결 과는, 레지스터(11)의 후반 영역에 레지스터값(%r[N+ rd]= %r[94])으로서 기록된다. 즉, 상기 식(1-1), (1-2)에 의한 2종류의 연산을 하나의 명령에 의해 실행할 수 있다. 마찬가지로 하여, 상기 식(1-3), (1-4)에 대해서도 하나의 명령에 의해 실행하는 것이 가능하다. 따라서, 종래, 4개의 명령에 의해 실행되어 있던 복소수 연산을, 2개의 명령에 의해 실행할 수 있다. Accordingly, as in the upper left example of FIG. 12, the normal operator 12b uses the most significant bits b_rs1 [6], b_rs2 [6], and b_rs3 [6] = 0, 0, 0 selected in the register number indication. Three values A (% r [rs1] =% r [10]), C (% r [rs2] =% r [20]) from the region, and X (% r [rs3] =% r [30]). A calculation is performed based on the above formula (1-1) as the input value. In addition, as shown in the upper left example of FIG. 12, the extended arithmetic unit 12e includes the register first half area selected by the most significant bits e_rs1 [6], e_rs2 [6], e_rs3 [6] = 0, 1, 1 of the register number indication. One value A (% r [rs1] =% r [10]) from and two values D (% r [N + rs2] =% r [84]) from the late register region, and Y (% r [N + rs3] =% r [94]) is used as an input value, and an operation based on Equation (1-2) is performed. Therefore, the arithmetic result by the same kind of calculation using the different input values is output from the normal operator 12b and the extended operator 12e. In addition, a fixed value 1 is set in the register write control signal b_we for the normal operator 12b and the register write signal for the extended operator 12e. For this reason, the operation result by the normal operator 12b is recorded as a register value (% r [rd] =% r [30]) in the first half area of the register 11. Similarly, the result of the calculation by the expansion operator 12e is recorded as a register value (% r [N + rd] =% r [94]) in the latter region of the register 11. That is, two kinds of operations according to the above formulas (1-1) and (1-2) can be executed by one instruction. Similarly, the above formulas (1-3) and (1-4) can also be executed by one instruction. Therefore, the complex arithmetic operation conventionally executed by four instructions can be executed by two instructions.

[표 10]TABLE 10

Figure 112009016639198-pat00010
Figure 112009016639198-pat00010

[표 11]TABLE 11

Figure 112009016639198-pat00011
Figure 112009016639198-pat00011

전술한 구체적인 동작예로서는, 명령 종별 코드(opcode[3:0])에 1100이 설정되고 또한 미사용 비트(rs1[6], rs2[6])에 0, 0이 설정된 경우에 대해 설명했다. 그러나, 제1 미사용 비트 이용 형태 채용 시에는, 그 외에 15종류의 연산 조합을 실현할 수도 있다. 연산부(10)에 의한 16종류의 연산 조합에 대해, 도 12∼도 15를 참조하면서 설명한다. As a specific operation example described above, the case where 1100 is set in the instruction type code opcode [3: 0] and 0 and 0 are set in the unused bits rs1 [6] and rs2 [6] has been described. However, when employing the first unused bit use form, 15 kinds of arithmetic combinations can be realized. 16 kinds of combinations of operations by the calculation unit 10 will be described with reference to FIGS. 12 to 15.

도 12는, 명령 종별 코드 opcode[3:0]= 1100인 경우의, 4종류의 연산 조합을 나타내고 있다. 이 때, 연산기(12b, 12e)는 동일 종별의 연산(fmadd)을 실행한다. Fig. 12 shows four types of combinations of operations when the instruction type code opcode [3: 0] = 1100. At this time, the arithmetic operators 12b and 12e perform the same kind of arithmetic operation fmadd.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 12의 좌측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. At this time, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bit b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0 in the register number indication. , 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, as in the upper left example of FIG. 12, the normal operator 12b uses three values (% r [rs1],% r [rs2], and% r [rs3]) from the first register area as input values. An operation (fmadd) is performed. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 12의 좌측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the lower left example of FIG. 12, the normal operator 12b has two values (% r [rs1],% r [rs3]) from the first register area and one value (%) from the late register area. An operation (fmadd) is performed using r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation (fmadd) is performed.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 12의 우측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number instruction. Thus, as in the upper right example of FIG. 12, the normal operator 12b has two values (% r [rs2],% r [rs3]) from the first register area and one value (%) from the late register area. An operation (fmadd) is performed using r [N + rs1]) as an input value. In addition, the expansion operator 12e performs an operation (fmadd) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 12의 우측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number indication. Accordingly, as in the lower right example of FIG. 12, the normal operator 12b includes one value (% r [rs3]) from the first register area and two values (% r [N + rs1], The operation (fmadd) is performed using% r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

도 13은, 명령 종별 코드 opcode[3:0]= 1101인 경우의, 4종류의 연산 조합을 나타내고 있다. 이 때, 통상 연산기(12b)는 연산(fnmsub)을 실행하고, 확장 연산기(12e)는 연산(fmadd)을 실행한다. Fig. 13 shows four types of combinations of operations when the instruction type code opcode [3: 0] = 1101. At this time, the normal operator 12b executes the operation fnmsub, and the expansion operator 12e executes the operation fmadd.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번 호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 13의 좌측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. At this time, if the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number instruction. Therefore, as in the upper left example of FIG. 13, the normal operator 12b includes one value (% r [rs3]) from the first register region and two values (% r [N + rs1], The calculation (fnmsub) is performed using% r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 13의 좌측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number instruction. Therefore, as in the lower left example of FIG. 13, the normal operator 12b has two values (% r [rs2],% r [rs3]) from the first half register area and one value (%) from the late register area. Arithmetic (fnmsub) is performed with r [N + rs1]) as the input value. In addition, the expansion operator 12e performs an operation (fmadd) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 13의 우측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the upper right example of FIG. 13, the normal operator 12b has two values (% r [rs1],% r [rs3]) from the first register area and one value (%) from the late register area. Arithmetic (fnmsub) is performed using r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation (fmadd) is performed.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 13의 위쪽 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, as in the upper and lower example of FIG. 13, the normal operator 12b uses three values (% r [rs1],% r [rs2], and% r [rs3]) from the register front area as input values. The operation fnmsub is performed. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

도 14는, 명령 종별 코드 opcode[3:0]= 1110인 경우의, 4종류의 연산 조합을 도시하고 있다. 이 때, 통상 연산기(12b)는 연산(fmadd)을 실행하고, 확장 연산기(12e)는 연산(fnmsub)을 실행한다. Fig. 14 shows four types of combinations of operations when the instruction type code opcode [3: 0] = 1110. At this time, the normal operator 12b executes the operation fmadd, and the expansion operator 12e executes the operation fnmsub.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 14의 좌측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. At this time, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bit b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1 of the register number indication , 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number instruction. Therefore, as in the upper left example of FIG. 14, the normal operator 12b includes one value (% r [rs3]) from the first register region and two values (% r [N + rs1], The operation (fmadd) is performed using% r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. An operation (fnmsub) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 14의 좌측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2]), %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number instruction. Thus, as in the lower left example of FIG. 14, the normal operator 12b has two values (% r [rs2]),% r [rs3] from the first half register area, and one value from the second half area register. The operation (fmadd) is performed using% r [N + rs1]) as an input value. In addition, the expansion operator 12e performs calculation (fnmsub) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 14의 우측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the upper right example of FIG. 14, the normal operator 12b has two values (% r [rs1],% r [rs3]) from the first register area and one value (%) from the late register area. An operation (fmadd) is performed using r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation fnmsub is performed.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 14의 우측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, as in the lower right example of FIG. 14, the normal operator 12b uses three values (% r [rs1],% r [rs2], and% r [rs3]) from the register front region as input values. An operation (fmadd) is performed. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fnmsub) is performed with the value.

도 15는, 명령 종별 코드 opcode[3:0]= 1111인 경우의, 4종류의 연산 조합을 나타내고 있다. 이 때, 연산기(12b, 12e)는 동일 종별의 연산(fnmsub)을 실행한다. Fig. 15 shows four types of combinations of operations when the instruction type code opcode [3: 0] = 1111. At this time, the arithmetic units 12b and 12e perform the same type of operation fnmsub.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 15의 좌측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2]), %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. At this time, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bit b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0 in the register number indication. , 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number indication. Therefore, as in the upper left example of FIG. 15, the normal operator 12b has two values (% r [rs2]),% r [rs3] from the first half register area, and one value from the second half area register. The calculation (fnmsub) is performed using% r [N + rs1]) as an input value. In addition, the expansion operator 12e performs calculation (fnmsub) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시 의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 15의 좌측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number indication. Therefore, as in the lower left example of FIG. 15, the normal operator 12b includes one value (% r [rs3]) from the first register area and two values (% r [N + rs1], The calculation (fnmsub) is performed using% r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. An operation (fnmsub) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 15의 우측 위 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, as in the upper right example of FIG. 15, the normal operator 12b uses three values (% r [rs1],% r [rs2], and% r [rs3]) from the register front area as input values. The operation fnmsub is performed. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fnmsub) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 15의 우측 아래 예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fnmsub)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the lower right example of FIG. 15, the normal operator 12b has two values (% r [rs1],% r [rs3]) from the first half register area and one value (%) from the late register area. Arithmetic (fnmsub) is performed using r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation fnmsub is performed.

[6] 제2 미사용 비트 이용 형태 채용 시의 연산 장치의 동작[6] operation of arithmetic unit when employing second unused bit type

도 16은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 동작을 간단하게 설명하기 위한 도면이다. 도 17은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드 발행부(설정부)(20) 및 생성부(30)의 동작을 설명하기 위한 도면이다. 도 18(a)∼도 18(d)는, 각각, 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면이다. FIG. 16 is a diagram for briefly explaining the operation of the arithmetic unit 10 in the arithmetic unit 1 shown in FIG. 1 when the second unused bit use mode is adopted. FIG. 17 is a diagram for explaining the operation of the instruction code issuing unit (setting unit) 20 and the generating unit 30 in the arithmetic unit 1 shown in FIG. 1 when the second unused bit use form is adopted. . 18 (a) to 18 (d) designate command codes, arithmetic codes, register write signals, and register numbers in the arithmetic unit 1 shown in FIG. 1 when employing the second unused bit usage form, respectively. It is a figure which shows (most significant bit only) concretely.

전술한 제1 미사용 비트 이용 형태에서는, 명령 세트(cross-fmadd1, …, cross-fmadd4)에 있어서의 미사용 비트(rs1[6], rs2[6])를 이용하여, 도 12∼도 15를 참조하면서 설명한 확장 처리의 실행 지시를 행하는 경우에 대해 설명했다. 여기서 설명하는 제2 미사용 비트 이용 형태에서는, 제1 이용형태에 부가하여, 도 6∼도 8을 참조하면서 설명한 SIMD 방식의 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에 있어서의, 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])를 이용한다. 특히, 이들 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6]) 중 2개, 구체적으로는 rs1[6], rs2[6]이 이용된다[도 18(a) 참조]. In the above-described first unused bit usage form, the unused bits rs1 [6], rs2 [6] in the instruction sets cross-fmadd1, ..., cross-fmadd4 are used to refer to Figs. The case where execution instruction of the extension processing described above is given is described. In the second unused bit use form described herein, in addition to the first use form, the SIMD instruction set (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd) described above with reference to FIGS. Unused bits (rd [6], rs1 [6], rs2 [6], and rs3 [6]) are used. In particular, two of these unused bits rd [6], rs1 [6], rs2 [6], rs3 [6], specifically rs1 [6], rs2 [6], are used (Fig. 18 (a). ) Reference].

이들 2개의 미사용 비트(rs1[6], rs2[6])에, 명령 코드 발행부(20)에 있어서 의 설정부로서의 기능에 의해, 확장 지시 정보가 설정된다. 이 확장 지시 정보는, rs1[6], rs2[6]을 사용하지 않는 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에 의한 통상 처리(도 16의 좌측예 참조)와는 상이한 다른 확장 처리의 실행 지시를 레지스터(11) 및 연산기(12b, 12e)에 대해 행하는 것이다. 그리고, 생성부(30)는, 도 17 및 도 18을 참조하면서 후술하는 바와 같이, 미사용 비트에 설정된 확장 지시 정보와 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 레지스터(11) 및 연산기(12b, 12e)에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 출력한다. The extended instruction information is set in these two unused bits rs1 [6] and rs2 [6] by the function as the setting unit in the instruction code issuing unit 20. This extended instruction information is the normal processing by the instruction set (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd) not using rs1 [6] and rs2 [6] (see the example on the left in FIG. 16). The instruction to execute another extension process different from that is given to the register 11 and the calculators 12b and 12e. And the generation part 30 is based on the expansion instruction information set to the unused bit and the information set to bits other than the unused bit, as mentioned later, referring FIG. 17 and FIG. 18, and the register 11 and the calculator 12b. , 12e) generates and outputs an extension command for instructing execution of the extension processing.

이에 따라, 도 16의 우측예에 도시하는 바와 같이, 하나의 연산기(12b 또는 12e)에 있어서, 레지스터(11)의 전반 영역의 값과 후반 영역의 값을 입력값으로 하여 혼재시킨 연산을 실현할 수 있다. 특히, 미사용 비트(rs1[6], rs2[6])를 이용하여 확장 처리의 실행 지시를 행함으로써 각 연산기(12b, 12e)에 있어서의 곱연산 대상이 되는 2개의 입력값을, 각각 레지스터(11)의 전반 영역 및 후반 영역으로부터 입력시키는 것이 가능하게 된다. 이러한 확장 처리에 의해, SIMD 방식에 의한 연산의 레지스터 조합수를 증가시킬 수 있어, 복소수 연산만이 아니라, 여러가지의 연산에 있어서, 레지스터 전반 영역의 값과 레지스터 후반 영역의 값의 여러 가지 조합을 실현할 수 있다. As a result, as shown in the right example of FIG. 16, in one calculator 12b or 12e, a calculation in which the value of the first half region and the second half region of the register 11 are input values can be realized. have. In particular, the instruction to execute the expansion process using the unused bits rs1 [6] and rs2 [6] registers the two input values to be subjected to multiplication in each of the calculators 12b and 12e, respectively. It becomes possible to input from the first half region and the second half region of 11). By such an extension process, the number of register combinations of operations by the SIMD method can be increased, and not only complex operations but also various combinations of values in the first register area and the second register area value can be realized in various operations. Can be.

이 제2 미사용 비트 이용 형태를 채용하는 경우[즉 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에 의한 처리를 채용하는 경우, 명령 코드 발행부(20)에 의해 발행되는 명령 종별 코드의 상위 2비트(opcode[3:2])에는 01이 설정된다. 이하, 도 17 및 도 18을 참조하면서, 이 제2 미사용 비트 이용 형태를 채용한 경우의 연산 장치(1)의 동작에 대해 설명한다. Issued by the instruction code issuing unit 20 when adopting this second unused bit use form (i.e., processing by the instruction set (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)). 01 is set in the upper two bits (opcode [3: 2]) of the instruction type code. Hereinafter, with reference to FIG. 17 and FIG. 18, operation | movement of the arithmetic unit 1 when this 2nd unused bit utilization form is employ | adopted is demonstrated.

제2 미사용 비트 이용 형태의 채용 시에는, 명령 코드 발행부(20)에 의해 발행된 명령 코드(opcode[3:0]) 및 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가, 생성부(30)에 있어서, 도 17에 도시하는 바와 같이 변환되어, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로서 연산부(10)에 입력된다. When employing the second unused bit usage form, the instruction code (opcode [3: 0]) issued by the instruction code issuing unit 20 and four register number instructions (rd [6: 0], rs1 [6: 0], rs2 [6: 0], rs3 [6: 0]) are converted in the generation unit 30 as shown in FIG. 17, and the instruction set b_we, e_we, b_rd [6: 0] , b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0] and e_op [1: 0]) are input to the calculation unit 10.

여기서, 도 17 및 도 18(b)에 도시하는 바와 같이, 통상 연산기(12b)용 연산 코드(b_op[1:0]) 및 확장 연산기(12e)용 연산 코드(e_op[1:0])로서는, 명령 코드에 포함되는 명령 종별 코드의 하위 2비트의 값(opcode[1:0])이 이용된다. 통상 연산기(12b)와 확장 연산기(12e)에는 반드시 동일한 연산 코드가 입력되어, 이들 연산기(12b, 12e)는, 동일 종별의 연산을 실행한다. As shown in Figs. 17 and 18 (b), the operation codes b_op [1: 0] for the normal operator 12b and the operation codes e_op [1: 0] for the extended operator 12e are shown. The value (opcode [1: 0]) of the lower two bits of the instruction type code included in the instruction code is used. The same operation code is always input to the normal calculator 12b and the extended calculator 12e, and these calculators 12b and 12e execute the same type of calculation.

이 때, 도 17 및 도 18(c)에 도시하는 바와 같이, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 제어 신호(e_we)로서는, 고정값 1이 설정된다. 이에 의해, 통상 연산기(12b) 및 확장 연산기(12e)에 의한 연산 결과는, 항상 레지스터(11)의 전반 영역 및 후반 영역에 각각 기록된다. At this time, as shown in Figs. 17 and 18 (c), as the register write control signal b_we for the normal operator 12b and the register write control signal e_we for the expansion operator 12e, fixed values are shown. 1 is set. As a result, the result of calculation by the normal operator 12b and extended operator 12e is always recorded in the first half region and the second half region of the register 11, respectively.

또한, 도 17에 도시하는 바와 같이, 명령 코드에 포함되는 4개의 레지스터 번호 지시의 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 통상 연산 기(12b)용 레지스터 번호 지시(b_rd[5:0], b_rs1[5:0], b_rs2[5:0], b_rs3[5:0])로서 입력된다. 동시에, 동일한 rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0]이 확장 연산기(12e)용 레지스터 번호 지시(e_rd[5:0], e_rs1[5:0], e_rs2[5:0], e_rs3[5:0])로서도 입력된다. In addition, as shown in FIG. 17, the lower six bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5 :) of the four register number instructions included in the instruction code. 0]) is input as the register number instructions b_rd [5: 0], b_rs1 [5: 0], b_rs2 [5: 0], and b_rs3 [5: 0] for the normal operation 12b. At the same time, the same rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0] register register instructions (e_rd [5: 0], e_rs1 [ 5: 0], e_rs2 [5: 0], e_rs3 [5: 0]).

그리고, 도 17 및 도 18(d)에 도시하는 바와 같이, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs3[6])에는 고정값 0이 설정되고, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs3[6])에는 고정값 1이 설정된다. 한편, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rs1[6], b_rs2[6])에는, rs1[6]의 값 및 rs2[6]의 값이 각각 설정된다. 또한, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rs1[6], e_rs2[6])에는, ~rs1[6]의 값 및 ~rs2[6]의 값이 각각 설정된다. 이에 의해, 각 연산기(12b, 12e)에 있어서의 곱연산 대상이 되는 2개의 입력값을, 각각 레지스터(11)의 전반 영역 및 후반 영역으로부터 입력시키는 것이 가능하게 된다. 즉, 미사용 비트(rs1[6], rs2[6])에 설정한 확장 지시 정보에 의해, 레지스터(11)로부터 각 연산기(12b, 12e)에의 값을, 각 연산기(12b, 12e)에 대응하는 레지스터(11)의 영역 이외의 영역에 있어서의 값으로 전환하는 지시가, 레지스터(11)에 대해 행해진다. 또, "~X"는 X의 반전값을 나타낸다. As shown in Figs. 17 and 18 (d), the fixed value 0 is set in the most significant bits b_rd [6] and b_rs3 [6] of the register number instruction for the normal operator 12b. A fixed value 1 is set in the most significant bits e_rd [6] and e_rs3 [6] of the register number instruction for 12e). On the other hand, the values of rs1 [6] and rs2 [6] are set in the most significant bits b_rs1 [6] and b_rs2 [6] of the register number instruction for the normal operator 12b, respectively. In addition, the most significant bit of the extended arithmetic unit (12e) register number assignments for (e_rs1 [6], e_rs2 [ 6]) , the value of ~ rs1 [6] value and ~ rs2 [6] are the respective setting. As a result, the two input values to be subjected to the multiplication in each of the calculators 12b and 12e can be input from the first half region and the second half region of the register 11, respectively. That is, the value from the register 11 to each operator 12b, 12e corresponds to each operator 12b, 12e by the extended instruction information set in the unused bits rs1 [6], rs2 [6]. Instructions for switching to values in areas other than the area of the register 11 are issued to the register 11. In addition, "~ X" represents an inverted value of X.

다음으로, 제2 미사용 비트 이용 형태 채용 시의 구체적인 동작예, 예컨대 simd-fnmsub %f40, %f10, %f80, %f30의 연산을 실시하는 경우에 대해 설명한 다. Next, a specific operation example when employing the second unused bit usage mode, for example, the calculation of simd-fnmsub% f40,% f10,% f80, and% f30 will be described.

이 경우, 연산부(10)의 연산기(12b, 12e)에 의해, 이하와 같은 내용의 2개의 연산이 각각 실행된다. In this case, the arithmetic units 12b and 12e of the arithmetic unit 10 execute two arithmetic operations as described below.

통상 연산기(12b)의 연산 내용: %r[40] ← %r[10] * %r[80] - %r[30]Calculation content of the ordinary calculator 12b:% r [40] ←% r [10] *% r [80]-% r [30]

확장 연산기(12e)의 연산 내용: %r[104] ← %r[74] * %r[16] - %r[94]Calculation contents of the expansion operator 12e:% r [104] ←% r [74] *% r [16]-% r [94]

이 경우, 하기 표 12에 나타내는 명령 코드에서 지정된 명령 종별 코드(opcode[3:0]) 및 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 값이, 하기 표 13에 나타내는 연산기(12b, 12e)용의 입력 신호의 값으로 변환되어 입력된다. 즉, 하기 표 12에 나타내는 바와 같이, 명령 코드 발행부(20)에 의해 명령 종별 코드(opcode[3:0])로서 0101이 설정되고, 명령 코드 발행부(20)의 설정부로서의 기능에 의해, 미사용 비트(rs1[6], rs2[6])에 0, 1이 설정된다. 이들 값에 따라, 생성부(30)에 의해, 도 18(d)에 도시하는 식에 기초하여, 통상 연산기(12b)용의 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs1[6], b_rs2[6], b_rs3[6])로서 0, 0, 1, 0이 산출·설정된다(하기 표 13 참조). 또한, 마찬가지로 하여, 확장 연산기(12e)용의 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs1[6], e_rs2[6], e_rs3[6])로서 1, 1, 0, 1이 산출·설정된다(하기 표 13 참조). 또한, 통상 연산기(12b)용의 연산 코드(b_op[1:0]) 및 확장 연산기(12e)용의 연산 코드(e_op[1:0])로서는, 동일한 연산 코드 01이 입력된다. 여기서는, 통상 연산기(12b)와 확장 연산기(12e)는 동일 종별의 연산을 행한다. 또, 통상 연산기(12b)용 레지스터 번호 지시 및 확장 연산기(12e)의 레지스터 번호 지시의 하위 6비트에는, 동일한 값(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])이 입력된다. In this case, the instruction type code (opcode [3: 0]) and the register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 specified in the instruction code shown in Table 12 below. [6: 0]) is converted into the values of the input signals for the calculators 12b and 12e shown in Table 13 below and input. That is, as shown in Table 12 below, 0101 is set as the command type code opcode [3: 0] by the command code issuing unit 20, and the function as the setting unit of the command code issuing unit 20 is set. 0 and 1 are set in the unused bits rs1 [6] and rs2 [6]. According to these values, the generation unit 30, based on the equation shown in Fig. 18D, most significant bits b_rd [6], b_rs1 [6], of the register number instruction for the normal operator 12b. 0, 0, 1, and 0 are calculated and set as b_rs2 [6] and b_rs3 [6]) (see Table 13 below). Similarly, 1, 1, 0, 1 are calculated and calculated as the most significant bits (e_rd [6], e_rs1 [6], e_rs2 [6], and e_rs3 [6]) of the register number instruction for the expansion operator 12e. Is set (see Table 13 below). The same operation code 01 is input as the operation code b_op [1: 0] for the normal operator 12b and the operation code e_op [1: 0] for the extended operator 12e. Here, the normal operator 12b and the extended operator 12e perform the same kind of calculation. In addition, the same values (rd [5: 0], rs1 [5: 0], rs2 [5: 0] in the lower 6 bits of the register number instruction for the normal operator 12b and the register number instruction of the extended operator 12e. , rs3 [5: 0]) is input.

이에 의해, 통상 연산기(12b)는, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0에 의해 선택된 레지스터 전반 영역으로부터의 2개의 값(%r[rs1]= %r[10], %r[rs3]= %r[30])과 레지스터 후반 영역으로부터의 하나의 값(%r[rs2]= %r[80])을 입력값으로 하여 연산(fnmsub)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1에 의해 선택된 레지스터 전반 영역으로부터의 하나의 값(%r[N+ rs2]= %r[16])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1]= %r[74], %r[N+ rs3]= %r[94])을 입력값으로 하여 연산을 행한다. 따라서, 통상 연산기(12b) 및 확장 연산기(12e)로부터, 상이한 입력값을 사용한 동일 종별의 연산에 의한 연산 결과가 출력된다. 또, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 신호에는 고정값 1이 설정되어 있다. 이 때문에, 통상 연산기(12b)에 의한 연산 결과는, 레지스터(11)의 전반 영역에 레지스터값(%r[40])으로서 기록된다. 마찬가지로, 확장 연산기(12e)에 의한 연산 결과는, 레지스터(11)의 후반 영역에 레지스터값(%r[104])으로서 기록된다.As a result, the normal operator 12b causes the two values (% r) from the first register region selected by the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0 of the register number indication. [rs1] =% r [10],% r [rs3] =% r [30]) and one value from the late register area (% r [rs2] =% r [80]) as an input value (fnmsub) is performed. In addition, the extension operator 12e is one value (% r [) from the register first half area selected by the most significant bits e_rs1 [6], e_rs2 [6], e_rs3 [6] = 1, 0, 1 of the register number indication. N + rs2] =% r [16]) and two values from the late register area (% r [N + rs1] =% r [74],% r [N + rs3] =% r [94]) as input values. To perform the operation. Therefore, the arithmetic result by the same kind of calculation using a different input value is output from the normal computing unit 12b and the extended computing unit 12e. In addition, a fixed value 1 is set in the register write control signal b_we for the normal operator 12b and the register write signal for the extended operator 12e. For this reason, the arithmetic result by the normal operator 12b is recorded as a register value (% r [40]) in the first half area of the register 11. Similarly, the result of the calculation by the expansion operator 12e is recorded as a register value (% r [104]) in the second half region of the register 11.

[표 12]TABLE 12

Figure 112009016639198-pat00012
Figure 112009016639198-pat00012

[표 13]TABLE 13

Figure 112009016639198-pat00013
Figure 112009016639198-pat00013

전술한 구체적인 동작예에서는, 명령 종별 코드(opcode[3:0])에 0101이 설정되고 또한 미사용 비트(rs1[6], rs2[6])에 0, 1이 설정된 경우에 대해 설명했지만, 제2 미사용 비트 이용 형태 채용 시에는, 다른 연산 조합을 실현할 수도 있다. 여기서, opcode[1:0]에 의해 연산기(12b, 12e)에 의한 4종류의 연산 종별이 선택된다. 그리고, 각 연산 종별마다, 미사용 비트(rs1[6], rs2[6])의 값에 의해, 각 연산기(12b, 12e)에 입력되는 2개의 값(곱대상의 데이터)을 레지스터 전반 영역 혹은 레지스터 후반 영역 중 어느쪽으로부터 판독할 것인지가 지시·선택된다. In the above specific operation example, the case where 0101 is set in the instruction type code opcode [3: 0] and 0 and 1 are set in the unused bits rs1 [6] and rs2 [6] has been described. When employing two unused bit usage forms, other combinations of operations can be realized. Here, four types of operations by the calculators 12b and 12e are selected by opcode [1: 0]. For each operation type, two values (data to be multiplied) which are input to each of the calculators 12b and 12e by the values of the unused bits rs1 [6] and rs2 [6] are registered in the first register area or in the register. Which of the latter areas is to be read and indicated.

예컨대, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], % r[rs2], %r[rs3])을 입력값으로 하여 연산을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 %r[N+ rs1], %r[N+ rs2], %r[N+ rs3]를 입력값으로 하여 연산을 행한다. For example, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0, 0, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number instruction. Therefore, the normal arithmetic operator 12b performs calculation with three values (% r [rs1],% r [rs2], and% r [rs3]) from the register first half area as input values. In addition, the expansion operator 12e performs calculations using three% r [N + rs1],% r [N + rs2], and% r [N + rs3] from the second half of the register as input values.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number indication. Therefore, the normal operator 12b inputs two values (% r [rs1],% r [rs3]) from the first register area and one value (% r [N + rs2]) from the late register area. The operation is performed. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. The operation is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, the normal operator 12b inputs two values (% r [rs2],% r [rs3]) from the first register area and one value (% r [N + rs1]) from the late register area. The operation is performed. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. The operation is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시 의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, the normal operator 12b inputs one value (% r [rs3]) from the first register area and two values (% r [N + rs1] and% r [N + rs2]) from the register late area. The operation is performed with the value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation is performed.

[7] 제3 미사용 비트 이용 형태 채용 시의 연산 장치의 동작[7] Operation of arithmetic unit when employing third unused bit type

도 19 및 도 20은 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 연산부(10)의 동작을 간단하게 설명하기 위한 도면이다. 도 21은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드 발행부(설정부)(20) 및 생성부(30)의 동작을 설명하기 위한 도면이다. 도 22(a)∼도 22(d)는, 각각, 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면이다. 도 23 및 도 24는 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부(10)에 의한 연산 조합의 구체예를 도시하는 도면이다. 도 25는 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 생성부(30)의 구체적인 실현예를 도시하는 회로도이다. 19 and 20 are diagrams for briefly explaining the operation of the arithmetic unit 10 in the arithmetic unit 1 shown in FIG. 1 when the third unused bit usage mode is adopted. FIG. 21 is a view for explaining the operation of the instruction code issuing unit (setting unit) 20 and the generating unit 30 in the arithmetic unit 1 shown in FIG. 1 when the second unused bit use form is adopted. . 22 (a) to 22 (d) designate command codes, arithmetic codes, register write signals, and register numbers in the arithmetic unit 1 shown in FIG. 1 at the time of employing the third unused bit use form. It is a figure which shows (most significant bit only) concretely. FIG. 23 and FIG. 24 are diagrams showing a specific example of a combination of calculations by the arithmetic unit 10 in the arithmetic unit shown in FIG. 1 when employing the third unused bit usage form. FIG. 25 is a circuit diagram showing a concrete implementation example of the generation unit 30 in the arithmetic unit 1 shown in FIG. 1 when employing the third unused bit usage form.

여기서 설명하는 제3 미사용 비트 이용 형태에서는, 도 22(a)에 도시하는 바 와 같이, 전술한 SIMD 방식의 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에 있어서의, 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])의 모두를 이용한다. 제2 이용형태에 있어서는, 미사용 비트(rs1[6], rs2[6])를 이용하여 SIMD 명령을 확장했지만, 이 제3 이용형태에서는, 미사용 비트(rs3[6], rd[6])를 이용함으로써, SIMD 명령을 더 확장한다. In the third unused bit usage form described here, as shown in Fig. 22A, the above-described SIMD instruction set (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd) is used. , All of the unused bits (rd [6], rs1 [6], rs2 [6], rs3 [6]) are used. In the second usage form, the SIMD instruction is extended using the unused bits rs1 [6] and rs2 [6]. In this third usage form, the unused bits rs3 [6] and rd [6] are stored. By using this, the SIMD instruction is further extended.

여기서, 미사용 비트(rs3[6])의 값은, 확장 연산기(12e) 측의 곱입력 레지스터 번호의 선택을 위해 사용되고, 미사용 비트(rd[6])의 값은, 확장 연산기(12e)의 연산 코드(e_op[1:0])의 선택을 위해 사용된다. 이러한 확장에 의해, 도 19 및 도 20에 도시하는 바와 같이, 제1 이용형태에서 추가한 신규 명령과 동일한 연산을 SIMD 명령의 확장에 의해 실현할 수 있다. 따라서, 제3 이용형태에서는, 제1 이용형태에서 신규로 추가한 명령(cross-fmadd1, …, cross-fmadd4)은 불필요하게 된다. Here, the value of the unused bit rs3 [6] is used for the selection of the product input register number on the expansion operator 12e side, and the value of the unused bit rd [6] is calculated by the expansion operator 12e. Used for the selection of the code e_op [1: 0]. By this extension, as shown in Figs. 19 and 20, the same operation as that of the new instruction added in the first use mode can be realized by the extension of the SIMD instruction. Therefore, in the third use form, the instructions newly added in the first use form (cross-fmadd1, ..., cross-fmadd4) become unnecessary.

이들 4개의 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])에, 명령 코드 발행부(20)에 있어서의 설정부로서의 기능에 의해, 확장 지시 정보가 설정된다. 이 확장 지시 정보는, rd[6], rs1[6], rs2[6], rs3[6]을 사용하지 않는 명령 세트(simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd)에 의한 통상 처리(도 19의 좌측 예 참조)와는 상이한 확장 처리(예컨대 도 23, 도 24의 연산 조합 참조)의 실행 지시를 레지스터(11) 및 연산기(12b, 12e)에 대해 행하는 것이다. 그리고, 생성부(30)는, 도 21 및 도 22를 참조하면서 후술하는 바와 같이, 미사용 비트에 설정된 확장 지시 정보와 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 레지스터(11) 및 연산기(12b, 12e)에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 출력한다. The extended instruction information is set in these four unused bits rd [6], rs1 [6], rs2 [6], and rs3 [6] by a function as a setting unit in the instruction code issuing unit 20. do. This extended instruction information is generated by the instruction set (simd-fmadd, simd-fmsub, simd-fnmsub, simd-fnmadd) that does not use rd [6], rs1 [6], rs2 [6], or rs3 [6]. Instructions for executing expansion processing different from the normal processing (see the left example in FIG. 19) (for example, the combination of operations in FIGS. 23 and 24) are given to the registers 11 and the calculators 12b and 12e. 21 and 22, the generation unit 30, based on the extended instruction information set in the unused bit and the information set in the bits other than the unused bit, the generation unit 30 and the calculator 12b. , 12e) generates and outputs an extension command for instructing execution of the extension processing.

이에 따라, 도 19의 우측 예나 도 20에 도시하는 바와 같이, 하나의 연산기(12b 또는 12e)에 있어서, 레지스터(11)의 전반 영역의 값과 후반 영역의 값을 입력값으로 하여 혼재시킨 연산을 실현할 수 있다. 또한, 확장 연산기(12e)에 의한 연산의 종별을 전환하는 지시를 행하여, 연산기(12e)에 있어서의 연산 종별이 변경 제어된다. 따라서, 상기 식(1-1)∼(1-4)에 의한 4회의 연산(즉 4개의 명령)에 의해 실행되는 복소수 행렬곱 연산을, 후술하는 바와 같이, 2 명령으로 실행하는 것이 가능하게 된다. Accordingly, as shown in the right example of FIG. 19 or in FIG. 20, in one calculator 12b or 12e, a calculation is performed in which the first half region and the second half region of the register 11 are mixed as input values. It can be realized. Further, the instruction to switch the type of operation by the expansion calculator 12e is given, and the operation type in the calculator 12e is changed and controlled. Therefore, it is possible to execute a complex matrix multiplication operation performed by four operations (that is, four instructions) according to the above formulas (1-1) to (1-4) in two instructions, as described later. .

이 제3 미사용 비트 이용 형태를 채용하는 경우, 명령 코드 발행부(20)에 의해 발행되는 명령 종별 코드의 상위 2비트(opcode[3:2])에는 01이 설정된다. 이하, 도 21∼도 25를 참조하면서, 이 제3 미사용 비트 이용 형태를 채용한 경우의 연산 장치(1)의 동작에 대해 설명한다. In the case of adopting this third unused bit use form, 01 is set in the upper two bits (opcode [3: 2]) of the instruction type code issued by the instruction code issuing unit 20. Hereinafter, with reference to FIGS. 21-25, operation | movement of the arithmetic unit 1 when this 3rd unused bit utilization form is employ | adopted is demonstrated.

제3 미사용 비트 이용 형태 채용 시에는, 명령 코드 발행부(20)에 의해 발행된 명령 코드(opcode[3:0]) 및 4개의 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])가, 생성부(30)에 있어서, 도 21에 도시하는 바와 같이 변환되어, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로서 연산부(10)에 입력된다. When adopting the third unused bit usage form, the instruction code (opcode [3: 0]) issued by the instruction code issuing unit 20 and four register number instructions (rd [6: 0], rs1 [6: 0) ], rs2 [6: 0], rs3 [6: 0]) are converted in the generation unit 30 as shown in FIG. 21, and the instruction sets b_we, e_we, b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0] and e_op [1: 0]) are input to the calculation unit 10.

여기서, 통상 연산기(12b)용 연산 코드(b_op[1:0])로서는, 명령 코드에 포함 되는 명령 종별 코드의 하위 2비트의 값(opcode[1:0])이 이용된다. 또한, 생성부(30)에 있어서는, 도 22(b) 및 하기 표 14에 나타내는 바와 같이, 미사용 비트(rd[6])의 값에 기초하여, 확장 연산기(12e)용 연산 코드(e_op[1:0])가 생성된다. 전술한 SIMD 방식의 경우와 상이하게, 통상 연산기(12b) 및 확장 연산기(12e)에 있어서 실행되는 연산의 종별은, 독립적으로 제어되어 전환된다. 이에 의해, 통상 연산기(12b) 및 확장 연산기(12e)는, 동일 종별의 연산을 실행하는 것도, 상이한 종별의 연산을 실행하는 것도 가능하게 되어 있다. 이와 같이, SIMD 명령과 미사용 비트(rd[6])에 설정된 값(확장 지시 정보)을 조합시킴으로써 제1 이용형태에서 추가된 명령과 동등한 수의 연산 조합을, SIMD 명령만으로 실현할 수 있다. Here, as the operation code b_op [1: 0] for the normal operator 12b, the value (opcode [1: 0]) of the lower two bits of the instruction type code included in the instruction code is used. In addition, in the generation unit 30, as shown in Fig. 22B and Table 14 below, the operation code e_op [1 for the extension operator 12e based on the value of the unused bit rd [6]. : 0]) is generated. Unlike the case of the SIMD system described above, the type of the calculation executed in the normal operator 12b and the extended operator 12e is independently controlled and switched. As a result, the normal arithmetic unit 12b and the extended arithmetic unit 12e can perform the same type of calculation or the different type of calculation. In this manner, by combining the SIMD instruction and the value (extension instruction information) set in the unused bit rd [6], the same number of operation combinations as the instructions added in the first use mode can be realized by the SIMD instruction only.

[표 14][Table 14]

Figure 112009016639198-pat00014
Figure 112009016639198-pat00014

이 때, 도 21 및 도 22(c)에 도시하는 바와 같이, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 제어 신호(e_we)로서는, 고정값 1이 설정된다. 이에 따라, 통상 연산기(12b) 및 확장 연산기(12e)에 의한 연산 결과는, 항상 레지스터(11)의 전반 영역 및 후반 영역에 각각 기록된다. At this time, as shown in Figs. 21 and 22 (c), as the register write control signal b_we for the normal operator 12b and the register write control signal e_we for the expansion operator 12e, fixed values are shown. 1 is set. As a result, the result of calculation by the normal operator 12b and the extended operator 12e is always recorded in the first half region and the second half region of the register 11, respectively.

또한, 도 21에 도시하는 바와 같이, 명령 코드에 포함되는 4개의 레지스터 번호 지시의 하위 6비트(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])가 통상 연산기(12b)용 레지스터 번호 지시(b_rd[5:0], b_rs1[5:0], b_rs2[5:0], b_rs3[5:0])로서 입력된다. 동시에, 동일한 rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0]이 확장 연산기(12e)용 레지스터 번호 지시(e_rd[5:0], e_rs1[5:0], e_rs2[5:0], e_rs3[5:0])로서도 입력된다. In addition, as shown in Fig. 21, the lower six bits (rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5 :) of the four register number instructions included in the instruction code. 0]) is input as the register number instructions b_rd [5: 0], b_rs1 [5: 0], b_rs2 [5: 0], and b_rs3 [5: 0] for the normal operator 12b. At the same time, the same rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0] register register instructions (e_rd [5: 0], e_rs1 [ 5: 0], e_rs2 [5: 0], e_rs3 [5: 0]).

그리고, 도 21, 도 22(d) 및 하기 표 15에 나타내는 바와 같이, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs3[6])에는 고정값 0이 설정되고, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs3[6])에는 고정값 1이 설정된다. 또한, 통상 연산기(12b)용 레지스터 번호 지시의 최상위 비트(b_rs1[6], b_rs2[6])에는, rs1[6]의 값 및 rs2[6]의 값이 각각 설정된다. 한편, 확장 연산기(12e)용 레지스터 번호 지시의 최상위 비트(e_rs1[6], e_rs2[6])에는, 각각 ~rs1[6] ^ rs3[6] 및 ~rs2[6]의 값이 산출·생성되어 설정된다. 이에 의해, 각 연산기(12b, 12e)에 있어서의 곱연산 대상이 되는 2개의 입력값을, 각각 레지스터(11)의 전반 영역 및 후반 영역으로부터 입력시키는 것이 가능하게 된다. 즉, 미사용 비트(rs1[6], rs2[6], rs3[6])에 설정한 확장 지시 정보에 의해, 레지스터(11)로부터 각 연산기(12b, 12e)에의 값을, 각 연산기(12b, 12e)에 대응하는 레지스터(11)의 영역 이외의 영역에서의 값으로 전환하는 지시가, 레지스터(11)에 대해 행해진다. 또, "~X"는 X의 반전값을 나타낸다. 또 한, "A^ B"은 A와 B의 배타적 논리합(EOR: Exclusive OR)을 나타낸다. 21, 22 (d) and Table 15 below, the fixed value 0 is set in the most significant bits b_rd [6] and b_rs3 [6] of the register number instruction for the normal operator 12b. A fixed value 1 is set in the most significant bits e_rd [6] and e_rs3 [6] of the register number instruction for the expansion operator 12e. In addition, the values of rs1 [6] and rs2 [6] are set in the most significant bits b_rs1 [6] and b_rs2 [6] of the register number instruction for the normal operator 12b, respectively. On the other hand, extended operator (12e), the most significant bit (e_rs1 [6], e_rs2 [ 6]) of the register number assignments for each ~ rs1 [6] ^ rs3 [ 6] and ~ value of rs2 [6] are calculated, generated Is set. As a result, the two input values to be subjected to the multiplication in each of the calculators 12b and 12e can be input from the first half region and the second half region of the register 11, respectively. That is, the value from the register 11 to each of the calculators 12b and 12e is determined by the extended instruction information set in the unused bits rs1 [6], rs2 [6], and rs3 [6]. An instruction to switch to a value in an area other than that of the register 11 corresponding to 12e) is given to the register 11. In addition, "~ X" represents an inverted value of X. In addition, "A ^ B" represents an exclusive OR of E and A.

미사용 비트(rs1[6], rs2[6], rs3[6])에 설정된 값(확장 지시 정보)과, 그 값에 의해 최상위 비트(b_rs1[6], b_rs2[6], e_rs1[6], e_rs2[6])에 설정되는 값과의 대응 관계를 하기 표 15에 나타낸다. The value set in the unused bits (rs1 [6], rs2 [6], rs3 [6]) (extended instruction information) and the most significant bits (b_rs1 [6], b_rs2 [6], e_rs1 [6], The correspondence with the value set in e_rs2 [6]) is shown in Table 15 below.

[표 15]TABLE 15

Figure 112009016639198-pat00015
Figure 112009016639198-pat00015

여기서, 전술한 바와 같이 미사용 비트(rs1[6], rs2[6], rs3[6])에 각각 설정되는 값(확장 지시 정보)은, 이하와 같이 기능하는 것이 된다. As described above, the values (expansion instruction information) set in the unused bits rs1 [6], rs2 [6], and rs3 [6], respectively, function as follows.

rs1[6]: 1이 설정된 경우, 통상 연산기(12b)의 첫번째의 입력값(b_i1)을 레지스터 후반 영역으로부터 공급한다. rs1 [6]: When 1 is set, the first input value b_i1 of the normal operator 12b is supplied from the late register region.

rs2[6]: 1이 설정된 경우, 통상 연산기(12b)의 2번째의 입력값(b_i2)을 레지스터 후반 영역으로부터 공급한다. rs2 [6]: When 1 is set, the second input value b_i2 of the normal operator 12b is supplied from the second half of the register.

rs3[6]: 1이 설정된 경우, 확장 연산기(12e)의 첫번째의 입력값(b_i1)을 통상 연산기(12b)의 첫번째의 입력값(b_i1)과 동일한 레지스터 영역으로부터 공급한다(rs1 복사 플래그). rs3 [6]: When 1 is set, the first input value b_i1 of the extended operator 12e is supplied from the same register area as the first input value b_i1 of the normal operator 12b (rs1 copy flag).

rd[6]: 확장 연산기(12e)의 연산 코드(e_op[1:0])를 변경한다(곱연산의 결과 에 -1을 곱셈함). rd [6]: Changes the operation code e_op [1: 0] of the expansion operator 12e (multiply the result of the multiplication by -1).

다음으로, 제1 미사용 비트 이용 형태 채용 시의 구체적인 동작예, 예컨대 simd-fmadd %f30, %f10, %f20, %f{30+ 64}의 연산을 실시하는 경우에 대해 설명한다. Next, a specific operation example when employing the first unused bit usage mode, for example, the calculation of simd-fmadd% f30,% f10,% f20, and% f {30 + 64} will be described.

이 경우, 연산부(10)의 연산기(12b, 12e)에 의해, 이하와 같은 내용의 2개의 연산이 각각 실행된다. In this case, the arithmetic units 12b and 12e of the arithmetic unit 10 execute two arithmetic operations as described below.

통상 연산기(12b)의 연산 내용: %r[30] ← %r[10] * %r[20] + %r[30]Calculation content of the ordinary calculator 12b:% r [30] ←% r [10] *% r [20] +% r [30]

확장 연산기(12e)의 연산 내용: %r[94] ← %r[10] * %r[84] + %r[94]Calculation contents of the expansion operator 12e:% r [94] ←% r [10] *% r [84] +% r [94]

이들 2개의 연산은, 레지스터(11)의 전반 영역에 실수 파트의 값을, 레지스터(11)의 후반 영역에 허수 파트의 값을 유지한 경우의, 이하의 복소수 연산에 대응하고 있다. These two operations correspond to the following complex operations when the value of the real part in the first half region of the register 11 and the value of the imaginary part in the second half region of the register 11 are maintained.

X ← X + A * C (1-1) X ← X + A * C (1-1)

Y ← Y + A * D (1-2)Y ← Y + A * D (1-2)

이 경우, 하기 표 16에 나타내는 명령 코드에서 지정된 명령 종별 코드(opcode[3:0]) 및 레지스터 번호 지시(rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])의 값이, 하기 표 17에 나타내는 연산기(12b, 12e)용의 입력 신호의 값으로 변환되어 입력된다. 즉, 하기 표 16에 나타내는 바와 같이, 명령 코드 발행부(20)에 의해 명령 종별 코드(opcode[3:0])로서 0100이 설정되고, 명령 코드 발행부(20)의 설정부로서의 기능에 의해, 4개의 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])에 0, 0, 0, 1이 설정된다(후술하는 도 23의 좌측으로부터 3번째의 상단예 참조). 이들 값에 따라, 생성부(30)에 의해, 도 22(d)에 도시하는 식이나 상기 표 15에 기초하여, 통상 연산기(12b)용의 레지스터 번호 지시의 최상위 비트(b_rd[6], b_rs1[6], b_rs2[6], b_rs3[6])로서 0, 0, 0, 0이 산출·설정된다(하기 표 17 참조). 또한, 마찬가지로 하여, 확장 연산기(12e)용의 레지스터 번호 지시의 최상위 비트(e_rd[6], e_rs1[6], e_rs2[6], e_rs3[6])로서 1, 0, 1, 1이 산출·설정된다(하기 표 17 참조). 통상 연산기(12b)에는, 명령 종별 코드(opcode[1:0])에 의해 결정되는 연산 코드 00이 입력된다. 또한, 확장 연산기(12e)에는, 도 22(b)에 도시하는 식이나 상기 표 14에 나타내는 바와 같이 미사용 비트(rd[6])의 값 및 명령 종별 코드(opcode[1:0])에 의해 결정되는 연산 코드 00이 입력된다. 따라서, 이 구체예에서는, 통상 연산기(12b)와 확장 연산기(12e)는 동일 종별의 연산(fmadd)을 행하게 된다. 또, 통상 연산기(12b)용 레지스터 번호 지시 및 확장 연산기(12e)의 레지스터 번호 지시의 하위 6비트에는, 동일한 값(rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0])이 입력된다. In this case, the instruction type code (opcode [3: 0]) and the register number instruction (rd [6: 0], rs1 [6: 0], rs2 [6: 0], and rs3 specified in the instruction code shown in Table 16 below. [6: 0]) is converted into the values of the input signals for the calculators 12b and 12e shown in Table 17 below and input. That is, as shown in Table 16 below, 0100 is set as the command type code (opcode [3: 0]) by the command code issuing unit 20, and the function as the setting unit of the command code issuing unit 20 is set. , 0, 0, 0, 1 are set to four unused bits rd [6], rs1 [6], rs2 [6], and rs3 [6] (third upper example from the left in FIG. 23 to be described later). Reference). According to these values, the generation unit 30 uses the most significant bits b_rd [6] and b_rs1 of the register number instruction for the ordinary operator 12b based on the equation shown in Fig. 22D and Table 15 above. [6], b_rs2 [6], b_rs3 [6]), 0, 0, 0, 0 are calculated and set (see Table 17 below). Similarly, 1, 0, 1, 1 are calculated and calculated as the most significant bits (e_rd [6], e_rs1 [6], e_rs2 [6], e_rs3 [6]) of the register number instruction for the extension operator 12e. Is set (see Table 17 below). The arithmetic code 00 determined by the instruction type code opcode [1: 0] is input to the normal arithmetic operator 12b. The extended arithmetic operator 12e uses the equation shown in Fig. 22B and the value of the unused bit rd [6] and the instruction type code opcode [1: 0] as shown in Table 14 above. The operation code 00 to be determined is input. Therefore, in this specific example, the normal operator 12b and the extended operator 12e perform the same kind of operation fmadd. In addition, the same values (rd [5: 0], rs1 [5: 0], rs2 [5: 0] in the lower 6 bits of the register number instruction for the normal operator 12b and the register number instruction of the extended operator 12e. , rs3 [5: 0]) is input.

이에 의해, 도 23의 좌측으로부터 3번째의 상단예와 같이, 통상 연산기(12b)는, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0에 의해 선택된 레지스터 전반 영역으로부터의 3개의 값 A(%r[rs1]= %r[10]), C(%r[rs2]= %r[20]), X(%r[rs3]= %r[30])을 입력값으로 하여 상기 식(1-1)에 기초하는 연산을 행한다. 또한, 도 23의 좌측으로부터 3번째의 상단예와 같이, 확장 연산기(12e)는, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1에 의해 선택된 레지스터 전반 영역으로부터의 하나의 값 A(%r[rs1]= % r[10])과 레지스터 후반 영역으로부터의 2개의 값 D(%r[N+ rs2]= %r[84]), Y(%r[N+ rs3]= %r[94])를 입력값으로 하여 상기 식(1-2)에 기초하는 연산을 행한다. 따라서, 통상 연산기(12b) 및 확장 연산기(12e)로부터, 상이한 입력값을 사용한 동일 종별의 연산에 의한 연산 결과가 출력된다. 또, 통상 연산기(12b)용의 레지스터 기록 제어 신호(b_we) 및 확장 연산기(12e)용의 레지스터 기록 신호에는 고정값 1이 설정되어 있다. 이 때문에, 통상 연산기(12b)에 의한 연산 결과는, 레지스터(11)의 전반 영역에 레지스터값(%r[rd]= %r[30])으로서 기록된다. 마찬가지로, 확장 연산기(12e)에 의한 연산 결과는, 레지스터(11)의 후반 영역에 레지스터값(%r[N+ rd]= %r[94])으로서 기록된다. 즉, 상기 식(1-1), (1-2)에 의한 2 종류의 연산을 하나의 명령에 의해 실행할 수 있다. 마찬가지로 하여, 상기 식(1-3), (1-4)에 대해서도 하나의 명령에 의해 실행하는 것이 가능하다. 따라서, 종래, 4개의 명령에 의해 실행되어 있던 복소수 연산을, 2개의 명령에 의해 실행할 수 있다. Thus, as in the upper third example from the left in FIG. 23, the normal operator 12b is assigned to the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0, 0 of the register number instruction. Three values A (% r [rs1] =% r [10]), C (% r [rs2] =% r [20]), X (% r [rs3] =% r [30] is used as an input value, and an operation based on Equation (1-1) is performed. In addition, as in the upper third example from the left in FIG. 23, the expansion operator 12e uses the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. One value A (% r [rs1] =% r [10]) from the selected register front region and two values D (% r [N + rs2] =% r [84]) from the late register region, Y ( The calculation based on Formula (1-2) is performed using% r [N + rs3] =% r [94]) as an input value. Therefore, the arithmetic result by the same kind of calculation using a different input value is output from the normal computing unit 12b and the extended computing unit 12e. In addition, a fixed value 1 is set in the register write control signal b_we for the normal operator 12b and the register write signal for the extended operator 12e. For this reason, the operation result by the normal operator 12b is recorded as a register value (% r [rd] =% r [30]) in the first half area of the register 11. Similarly, the result of the calculation by the expansion operator 12e is recorded as a register value (% r [N + rd] =% r [94]) in the latter region of the register 11. That is, two kinds of operations according to the above formulas (1-1) and (1-2) can be executed by one instruction. Similarly, the above formulas (1-3) and (1-4) can also be executed by one instruction. Therefore, the complex arithmetic operation conventionally executed by four instructions can be executed by two instructions.

[표 16]TABLE 16

Figure 112009016639198-pat00016
Figure 112009016639198-pat00016

[표 17]TABLE 17

Figure 112009016639198-pat00017
Figure 112009016639198-pat00017

전술한 구체적인 동작예에서는, 명령 종별 코드(opcode[3:0])에 0100(simd-fmadd)이 설정되고 또한 4개의 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])에 0, 0, 0, 1이 설정된 경우에 대해 설명했다. 그러나, 제3 미사용 비트 이용 형태 채용 시에는, 그 외에 63종류의 연산 조합을 실현할 수도 있다. 4종류의 SIMD 명령[명령 종별 코드 opcode[3:0]= 0100(simd-fmadd), 0101(simd-fmsub), 0110(simd-fnmsub), 0111(simd-fnmadd)]의 각각에 대해 16종류의 연산 조합을 실현할 수 있다. 즉, 제3 이용형태에서는, 전부해서 64종류의 연산 조합 패턴을 실현할 수 있다. 여기서는, 4종류의 SIMD 명령 중, 명령 종별 코드 opcode[3:0]= 0100(simd-fmadd)에 대한 전부(16종류)의 연산 조합 패턴을, 도 23 및 도 24를 참조하면서 설명한다. 또, 다른 3종류의 SIMD 명령의 각각에 대해서도, 도 23 및 도 24와 같이 16종류의 연산 조합 패턴이 실현된다. In the above specific operation example, 0100 (simd-fmadd) is set in the instruction type code opcode [3: 0], and four unused bits rd [6], rs1 [6], rs2 [6], and rs3. [6]) has been described in the case where 0, 0, 0, 1 is set. However, when employing the third unused bit use form, 63 kinds of arithmetic combinations can be realized. 16 types for each of four types of SIMD instructions [command type code opcode [3: 0] = 0100 (simd-fmadd), 0101 (simd-fmsub), 0110 (simd-fnmsub), and 0111 (simd-fnmadd)] A combination of operations can be realized. That is, in the third use mode, 64 types of arithmetic combination patterns can be realized in total. Here, all (16 types) of operation combination patterns for the instruction type code opcode [3: 0] = 0100 (simd-fmadd) among the four types of SIMD instructions will be described with reference to FIGS. 23 and 24. Also, for each of the three other types of SIMD instructions, 16 types of arithmetic combination patterns are realized as shown in FIGS. 23 and 24.

도 23은, 명령 종별 코드 opcode[3:0]= 0100인 경우에서 또한 미사용 비트 rd[6]= 0인 경우의, 8종류의 연산 조합을 나타내고 있다. 이 때, 연산기(12b, 12e)는 동일 종별의 연산(fmadd)을 실행한다. FIG. 23 shows eight types of combinations of operations when the instruction type code opcode [3: 0] = 0100 and when the unused bit rd [6] = 0. FIG. At this time, the arithmetic operators 12b and 12e perform the same kind of arithmetic operation fmadd.

또한, 도 23의 좌측 절반부는, 미사용 비트 rd[6]= 0 또한 미사용 비트(rs3[6]= 0)인 경우의, 4종류의 연산 조합을 나타내고 있다. In addition, the left half of FIG. 23 shows four types of arithmetic combinations when unused bits rd [6] = 0 and unused bits rs3 [6] = 0.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 23의 좌측으로부터 첫번째의 상단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. At this time, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bit b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0 in the register number indication. , 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number indication. Therefore, as in the first upper example from the left in FIG. 23, the normal operator 12b inputs three values (% r [rs1],% r [rs2], and% r [rs3]) from the register front area. An operation (fmadd) is performed with the value. In addition, the expansion operator 12e performs an operation (fmadd) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 23의 좌측으로부터 첫번째의 하단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연 산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number indication. Therefore, as in the first lower example from the left in Fig. 23, the normal operator 12b has two values (% r [rs1],% r [rs3]) from the first register area and one from the latter register area. An operation (fmadd) is performed using the value% r [N + rs2] as an input value. In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. The calculation (fmadd) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 23의 좌측으로부터 2번째의 상단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Therefore, as in the second upper example from the left in FIG. 23, the normal operator 12b has two values (% r [rs2],% r [rs3]) from the first register area and one from the second register area. The operation (fmadd) is performed using the value (% r [N + rs1]) as an input value. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 23의 좌측으로부터 2번째의 하단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the second lower example from the left in FIG. 23, the normal operator 12b uses one value (% r [rs3]) from the first register area and two values (% r [) from the second register area. N + rs1] and% r [N + rs2]) are used as input values to perform an operation (fmadd). In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation (fmadd) is performed.

또한, 도 23의 우측 절반부는, 미사용 비트 rd[6]= 0 또한 미사용 비트 rs3[6]= 1인 경우의, 4종류의 연산 조합을 나타내고 있다. In addition, the right half of FIG. 23 shows four types of arithmetic combinations when unused bits rd [6] = 0 and unused bits rs3 [6] = 1.

이 때, 미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 0, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 1, 1이 된다. 따라서, 도 23의 좌측으로부터 3번째의 상단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 3개의 값(%r[rs1], %r[rs2], %r[rs3])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs1])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. At this time, if the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 0 or 0, the most significant bit b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 0 in the register number indication. , 0, and most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 1, 1 of the register number instruction. Accordingly, as in the upper third example from the left in FIG. 23, the normal operator 12b selects three values (% r [rs1],% r [rs2], and% r [rs3]) from the register front area. An operation (fmadd) is performed as an input value. In addition, the expansion operator 12e inputs one value (% r [rs1]) from the first register area and two values (% r [N + rs2] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 0, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 0, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 0, 0, 1이 된다. 따라서, 도 23의 좌측으로부터 3번째의 하단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs1], %r[rs2])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 0, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 0, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 0, 0, 1 of the register number instruction. Therefore, as in the lower third example from the left in FIG. 23, the normal operator 12b includes two values (% r [rs1],% r [rs3]) from the first register region and one from the latter register region. The operation (fmadd) is performed using the value (% r [N + rs2]) as an input value. In addition, the expansion operator 12e inputs two values (% r [rs1],% r [rs2]) from the first register area and one value (% r [N + rs3]) from the late register area. The operation (fmadd) is performed.

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 0이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 0, 0, 또한, 레지스터 번호 지 시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 1, 1이 된다. 따라서, 도 23의 좌측으로부터 4번째의 상단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 2개의 값(%r[rs2], %r[rs3])과 레지스터 후반 영역으로부터의 하나의 값(%r[N+ rs1])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 후반 영역으로부터의 3개의 값(%r[N+ rs1], %r[N+ rs2], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다. If the unused bit (highest bit) (rs1 [6], rs2 [6]) is 1, 0, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 0, 0, In addition, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 1, 1 of the register number instruction. Therefore, as in the fourth upper example from the left in FIG. 23, the normal operator 12b has two values (% r [rs2],% r [rs3]) from the first register area and one from the late register area. The operation (fmadd) is performed using the value (% r [N + rs1]) as an input value. In addition, the expansion operator 12e performs an operation (fmadd) using three values (% r [N + rs1],% r [N + rs2], and% r [N + rs3]) from the second half of the register as input values. .

미사용 비트(최상위 비트)(rs1[6], rs2[6])가 1, 1이면, 레지스터 번호 지시의 최상위 비트 b_rs1[6], b_rs2[6], b_rs3[6]= 1, 1, 0, 또한, 레지스터 번호 지시의 최상위 비트 e_rs1[6], e_rs2[6], e_rs3[6]= 1, 0, 1이 된다. 따라서, 도 23의 좌측으로부터 4번째의 하단예와 같이, 통상 연산기(12b)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs3])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs2])을 입력값으로 하여 연산(fmadd)을 행한다. 또한, 확장 연산기(12e)는, 레지스터 전반 영역으로부터의 하나의 값(%r[rs2])과 레지스터 후반 영역으로부터의 2개의 값(%r[N+ rs1], %r[N+ rs3])을 입력값으로 하여 연산(fmadd)을 행한다.If the unused bit (most significant bit) (rs1 [6], rs2 [6]) is 1, 1, the most significant bits b_rs1 [6], b_rs2 [6], b_rs3 [6] = 1, 1, 0, Further, the most significant bits e_rs1 [6], e_rs2 [6], and e_rs3 [6] = 1, 0, 1 of the register number indication. Accordingly, as in the fourth lower example from the left in FIG. 23, the normal operator 12b uses one value (% r [rs3]) from the first register area and two values (% r [) from the second register area. N + rs1] and% r [N + rs2]) are used as input values to perform an operation (fmadd). In addition, the expansion operator 12e inputs one value (% r [rs2]) from the first register area and two values (% r [N + rs1] and% r [N + rs3]) from the late register area. An operation (fmadd) is performed with the value.

도 24는 명령 종별 코드 opcode[3:0]= 0100인 경우에 또한 미사용 비트(rd[6]= 1)인 경우의, 8종류의 연산 조합을 도시하고 있다. 이 때, 통상 연산기(12b)는 연산(fmadd)을 실행하고, 확장 연산기(12e)는 연산(fnmsub)을 실행한다. 또한, 도 24의 좌측 절반부는, 미사용 비트 rd[6]= 1 또한 미사용 비트 rs3[6]= 0인 경우의, 4종류의 연산 조합을 도시하고, 도 24의 우측 절반부는, 미사용 비트 rd[6]= 1 또한 미사용 비트 rs3[6]= 1인 경우의, 4종류의 연산 조합을 나타내고 있다. 이 도 24에 도시하는 연산 조합에서는, 미사용 비트 rd[6]= 1로 함으로써 확장 연산기(12e)가 통상 연산기(12b)와는 상이한 연산(fnmsub)을 실행하도록 전환되고 있는 것 이외에는, 도 23에 도시하는 연산 조합과 동일하기 때문에, 도 24에 대한 상세한 설명은 생략한다. Fig. 24 shows eight types of combinations of operations when the instruction type code opcode [3: 0] = 0100 and when unused bits (rd [6] = 1). At this time, the normal operator 12b executes the operation fmadd, and the expansion operator 12e executes the operation fnmsub. In addition, the left half of FIG. 24 shows four types of arithmetic combinations when unused bits rd [6] = 1 and unused bits rs3 [6] = 0, and the right half of FIG. 24 shows unused bits rd [ 6] = 1 and four types of arithmetic combinations when unused bits rs3 [6] = 1 are shown. In the combination of operations shown in FIG. 24, the unused bit rd [6] = 1 means that the extended arithmetic unit 12e is switched to perform a different operation fnmsub from the normal arithmetic operator 12b. Since it is the same as the combination of operations to be performed, detailed description of FIG. 24 is omitted.

여기서, 도 25를 참조하면서, 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치(1)에 있어서의 생성부(30)의 구체적인 실현예에 대해 설명한다. 도 25에 도시하는 생성부(30)는, 4개의 논리곱 회로(AND 게이트)(31, 32, 33, 34)와, 2개의 배타적 논리합 회로(EOR 게이트)(35, 36)와, 반전 회로(NOT게이트, 인버터)(31a, 32a, 34a, 36a)를 구비하여 구성되고 있다. 또, 이 생성부(30)는, 명령 종별 코드의 opcode[2]에 의해, 도 3∼도 5를 참조하면서 전술한 비SIMD 방식에도 대응 가능하게 되어 있다. 즉, opcode[2]= 1인 경우, 도 19∼도 24를 참조하면서 설명한 제3 이용형태가 채용되는 한편, opcode[2]= 0인 경우, 도 3∼도 5를 참조하면서 비SIMD 방식이 채용된다. Here, with reference to FIG. 25, the specific implementation example of the generation | generation part 30 in the arithmetic unit 1 shown in FIG. 1 at the time of employ | adopting a 3rd unused bit utilization form is demonstrated. The generation unit 30 shown in FIG. 25 includes four AND logic circuits (AND gates) 31, 32, 33, and 34, two exclusive OR circuits (EOR gates) 35, 36, and an inverting circuit. (NOT gate, inverter) 31a, 32a, 34a, 36a. The generation unit 30 is also capable of coping with the non-SIMD system described above with reference to FIGS. 3 to 5 by opcode [2] of the instruction type code. That is, when opcode [2] = 1, the third usage mode described with reference to Figs. 19 to 24 is adopted, while when opcode [2] = 0, the non-SIMD method is described with reference to Figs. Are employed.

논리곱 회로(31)는, rd[6]과 opcode[2]의 반전값과의 논리곱을 산출하여, 레지스터 번호 지시(b_rd[6])로서 출력한다. 논리곱 회로(31)에 입력되는 opcode[2]의 반전값은, 반전 회로(31a)에 의해 생성·출력된다. 즉, opcode[2]= 0이고 비SIMD 방식이 채용된 경우, opcode[2]의 반전값 1이 논리곱 회로(31)에 입력되어, rd[6]의 값이 b_rd[6]로서 출력된다. 한편, opcode[2]= 1이고 제3 이용형태가 채용된 경우, opcode[2]의 반전값 0이 논리곱 회로(31)에 입력되어, b_rd[6]이 0에 고정된다. The AND circuit 31 calculates the AND of the inverse of rd [6] and opcode [2], and outputs it as a register number instruction b_rd [6]. The inversion value of opcode [2] input to the AND circuit 31 is generated and output by the inversion circuit 31a. That is, when opcode [2] = 0 and the non-SIMD method is adopted, the inverted value 1 of opcode [2] is input to the AND circuit 31, and the value of rd [6] is output as b_rd [6]. . On the other hand, when opcode [2] = 1 and the third usage mode is adopted, the inversion value 0 of opcode [2] is input to the AND circuit 31, so that b_rd [6] is fixed to zero.

논리곱 회로(32)는, rs3[6]과 opcode[2]의 반전값과의 논리곱을 산출하여, 레지스터 번호 지시(b_rs3[6])로서 출력한다. 논리곱 회로(31)에 입력되는 opcode[2]의 반전값은, 반전 회로(32a)에 의해 산출된다. 즉, opcode[2]= 0이고 비SIMD 방식이 채용된 경우, opcode[2]의 반전값 1이 논리곱 회로(32)에 입력되며, rs6[6]의 값이 b_rs3[6]로서 출력된다. 한편, opcode[2]= 1이고 제3 이용형태가 채용된 경우, opcode[2]의 반전값 0이 논리곱 회로(31)에 입력되어, b_rs3[6]이 0에 고정된다. The logical product circuit 32 calculates the logical product of rs3 [6] and the inverted value of opcode [2], and outputs it as a register number instruction (b_rs3 [6]). The inversion value of opcode [2] input to the AND circuit 31 is calculated by the inversion circuit 32a. That is, when opcode [2] = 0 and the non-SIMD method is adopted, the inverted value 1 of opcode [2] is input to the AND circuit 32, and the value of rs6 [6] is output as b_rs3 [6]. . On the other hand, when opcode [2] = 1 and the third usage mode is adopted, the inversion value 0 of opcode [2] is input to the AND circuit 31, so that b_rs3 [6] is fixed to zero.

배타적 논리합 회로(36)는, rs3[6]과 rs1[6]의 반전값과의 배타적 논리합을 산출하여 출력한다. 배타적 논리합 회로(36)에 입력되는 rs1[6]의 반전값은, 반전 회로(36a)에 의해 산출된다. 이 배타적 논리합 회로(36)에 의해 산출되는 배타적 논리합은, 표 15, 도 21, 도 22(d)를 참조하면서 설명한 값(~rs1[6]^ rs3[6])이다.The exclusive OR circuit 36 calculates and outputs an exclusive OR between the inversion values of rs3 [6] and rs1 [6]. The inversion value of rs1 [6] input to the exclusive OR circuit 36 is calculated by the inversion circuit 36a. The exclusive OR calculated by this exclusive OR circuit 36 is a value ( ˜ rs1 [6] ^ rs3 [6]) described with reference to Tables 15, 21 and 22 (d).

논리곱 회로(33)는, 배타적 논리합 회로(36)의 출력과 opcode[2]와의 논리곱을 산출하여, 레지스터 번호 지시(e_rs1[6])로서 출력한다. 즉, opcode[2]= 0이고 비SIMD 방식이 채용된 경우, e_rs1[6]이 0에 고정된다. 한편, opcode[2]= 1이고 제3 이용형태가 채용된 경우, ~rs1[6]^ rs3[6]이 e_rs1[6]로서 출력된다[도 22(d) 참조]. The AND circuit 33 calculates the AND of the output of the exclusive OR circuit 36 and opcode [2], and outputs it as a register number instruction (e_rs1 [6]). That is, when opcode [2] = 0 and the non-SIMD method is employed, e_rs1 [6] is fixed to zero. On the other hand, and opcode [2] = 1 if the third mode employed, ~ rs1 [6] ^ rs3 [6] is output as e_rs1 [6] [Fig. 22 (d), see.

논리곱 회로(34)는, rs2[6]의 반전값과 opcode[2]와의 논리곱을 산출하여, 레지스터 번호 지시(e_rs2[6])로서 출력한다. rs2[6]의 반전값(~rs2[6])는, 반전 회로(34a)에 의해 산출된다. 즉, opcode[2]= 0이고 비SIMD 방식이 채용된 경우, e_rs2[6]이 0에 고정된다. 한편, opcode[2]= 1이고 제3 이용형태가 채용된 경우, ~rs2[6]이 e_rs2[6]로서 출력된다[도 22(d) 참조]. The AND circuit 34 calculates the AND of the inverse value of rs2 [6] and opcode [2], and outputs it as a register number instruction (e_rs2 [6]). inverse of rs2 [6] (~ rs2 [ 6]) is calculated by inverting circuit (34a). That is, when opcode [2] = 0 and the non-SIMD scheme is employed, e_rs2 [6] is fixed to zero. On the other hand, opcode [2] = 1, and when the third mode employed, ~ rs2 [6] is output as e_rs2 [6] [Fig. 22 (d), see.

배타적 논리합 회로(35)는, rd[6]과 opcode[1]과의 배타적 논리합을 산출하여, 연산 코드(e_op[1])로서 출력한다. 또한, 도 25에 도시하는 생성부(30)는, opcode[1:0]을 연산 코드(b_op[1:0])로서 그대로 출력하고, opcode[0]를 연산 코드(e_op[0])로서 그대로 출력한다. 이에 따라, 생성부(25)는, 표 14와 같이, 연산 코드(b_op[1:0], e_op[1:0])를 출력한다. The exclusive-OR circuit 35 calculates an exclusive-OR between rd [6] and opcode [1] and outputs it as an operation code e_op [1]. In addition, the generation unit 30 shown in FIG. 25 outputs opcode [1: 0] as it is as an operation code b_op [1: 0] and outputs opcode [0] as an operation code e_op [0]. Output as is. Accordingly, the generation unit 25 outputs the operation codes b_op [1: 0] and e_op [1: 0] as shown in Table 14.

그리고, 도 25에 도시하는 생성부(30)는, 레지스터 기록 제어 신호(b_we)로서 1을 고정적으로 출력하고, opcode[2]를 레지스터 기록 제어 신호(e_w) 및 레지스터 번호 지정(e_rd[6], e_rs3[6])으로서 그대로 출력한다. 또한, 생성부(30)는, rd[5:0], rs1[6:0], rs2[6:0], rs3[5:0]을 각각 레지스터 번호 지정(b_rd[5:0], b_rs1[6:0], b_rs2[6:0], b_rs3[5:0])으로서 출력하고, rd[5:0], rs1[5:0], rs2[5:0], rs3[5:0]을 각각 레지스터 번호 지정(e_rd[5:0], e_rs1[5:0], e_rs2[5:0], e_rs3[5:0])으로서 출력한다. The generator 30 shown in FIG. 25 fixedly outputs 1 as the register write control signal b_we, and assigns the opcode [2] to the register write control signal e_w and the register number (e_rd [6]). , e_rs3 [6]). In addition, the generation unit 30 designates rd [5: 0], rs1 [6: 0], rs2 [6: 0], and rs3 [5: 0] respectively as register numbers (b_rd [5: 0], b_rs1). Output as [6: 0], b_rs2 [6: 0], b_rs3 [5: 0]), rd [5: 0], rs1 [5: 0], rs2 [5: 0], rs3 [5: 0 ] Are output as register number designations (e_rd [5: 0], e_rs1 [5: 0], e_rs2 [5: 0], e_rs3 [5: 0]), respectively.

이에 따라, 도 25에 도시하는 생성부(30)는, opcode[2]= 1이고 제3 이용형태가 채용된 경우, 명령 코드 발행부(20)로부터의 명령 코드(opcode[1:0], rd[6:0], rs1[6:0], rs2[6:0], rs3[6:0])를, 표 14, 표 15, 도 21, 도 22를 참조하면서 설명했던, 명령 세트(b_we, e_we, b_rd[6:0], b_rs1[6:0], b_rs2[6:0], b_rs3[6:0], e_rd[6:0], e_rs1[6:0], e_rs2[6:0], e_rs3[6:0], b_op[1:0], e_op[1:0])로 변환하여 출력한다. 또한, opcode[2]= 0이고 비SIMD 방식이 채용된 경우, 명령 코드 발행부(20)로부터의 명령 코드를, 도 4 및 도 5를 참조하면서 설명한 명령 세트로 변환하여 출력한다. Accordingly, the generation unit 30 shown in FIG. 25 has the instruction code (opcode [1: 0],) from the instruction code issuing unit 20 when opcode [2] = 1 and the third usage mode is adopted. rd [6: 0], rs1 [6: 0], rs2 [6: 0], rs3 [6: 0]) were described with reference to Table 14, Table 15, FIG. 21 and FIG. b_we, e_we, b_rd [6: 0], b_rs1 [6: 0], b_rs2 [6: 0], b_rs3 [6: 0], e_rd [6: 0], e_rs1 [6: 0], e_rs2 [6: 0], e_rs3 [6: 0], b_op [1: 0], e_op [1: 0]) and output. When opcode [2] = 0 and the non-SIMD method is adopted, the command code from the command code issuing unit 20 is converted into the command set described with reference to Figs. 4 and 5 and output.

[8] 본 실시형태의 효과[8] Effects of the Embodiment

이와 같이, 본 발명의 일 실시형태로서의 연산 장치(1) 및 연산 방법에 따르면, 명령 코드 발행부(설정부)(20) 및 생성부(30)의 기능을 이용함으로써 하나의 명령에 있어서의 하나 이상의 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])를 이용하여 통상 처리와는 상이한 확장 처리의 실행 지시를 행할 수 있다. 이에 의해, 예컨대 SIMD 부동 소수점 곱합 연산 등에 있어서의 각종 연산 조합을 적은 명령 종별 코드수로 실현할 수 있다. 따라서, 전술한 바와 같이, 예컨대, 4개의 명령에 의해 행하고 있었던 복소수 행렬곱 연산 등의 복잡한 연산을, 2개의 명령에 의해 실행하는 것이 가능하게 되어, 작업 처리량을 배증시킬 수 있다. As described above, according to the arithmetic unit 1 and the arithmetic method as one embodiment of the present invention, one in one instruction by utilizing the functions of the instruction code issuing unit (setting unit) 20 and the generating unit 30. By using the above unused bits rd [6], rs1 [6], rs2 [6], and rs3 [6], execution instructions for extension processing different from the normal processing can be given. Thus, for example, various combinations of operations in the SIMD floating point multiplication operation and the like can be realized with a small number of instruction type codes. Therefore, as described above, for example, complex operations such as complex matrix multiplication operations performed by four instructions can be executed by two instructions, thereby doubling the throughput.

또한, 연산 장치(1)에서는, 통상 연산기(12b)에 대한 연산 종별 및 입력 레지스터 번호 지시와, 확장 연산기(12e)에 대한 연산 종별 및 입력 레지스터 번호 지시를 독립적으로 입력하고 있다. 이 때문에, 통상 연산기(12b)와 확장 연산기(12e)에 있어서, 상이한 입력값(레지스터값)이나 상이한 연산 종별에 의한 연산을 실행시킬 수 있게 된다. 따라서, 연산 장치(1)에서는, 미사용 비트(rd[6], rs1[6], rs2[6], rs3[6])를 이용함으로써, 전술한 바와 같은 복소수 행렬곱 연산 뿐만 아니라, 도 12∼도 15, 도 23, 도 24를 참조하면서 설명한 각종 연산 조합 패 턴에 의한 연산을 용이하게 실행할 수 있다. In addition, the arithmetic unit 1 inputs the operation type and input register number instruction with respect to the normal calculator 12b, and the operation type and input register number instruction with respect to the expansion calculator 12e independently. For this reason, in the normal calculator 12b and the extended calculator 12e, it is possible to execute calculations by different input values (register values) or different types of operations. Therefore, in the arithmetic unit 1, by using the unused bits rd [6], rs1 [6], rs2 [6], and rs3 [6], not only the complex matrix multiplication operation described above, but also FIGS. It is possible to easily perform calculations by various calculation combination patterns described with reference to FIGS. 15, 23, and 24.

[9] 그 외[9] others

또, 본 발명은 전술한 실시형태에 한정되지 않고, 본 발명의 취지를 일탈하지 않는 범위에서 여러 가지 변형하여 실시할 수 있다. In addition, this invention is not limited to embodiment mentioned above, It can variously deform and implement in the range which does not deviate from the meaning of this invention.

예컨대, 전술한 실시형태에서는, 연산기로서 통상 연산기와 확장 연산기의 2개를 구비한 경우에 대해 설명했지만, 본 발명은, 여기에 한정되지 않고, 3이상의 연산기를 구비한 경우에도 마찬가지로 적용되어, 전술한 실시형태와 동일한 작용 효과를 얻을 수 있다. For example, in the above-described embodiment, the case in which two calculators are normally provided as the calculator and the extended calculator is described. However, the present invention is not limited thereto, and the present invention is similarly applied to the case where three or more calculators are provided. The same effect as that of one embodiment can be obtained.

또한, 미사용 비트로서, SIMD 방식을 채용함으로써 미사용이 된 비트를 이용하고 있지만, 본 발명은, 여기에 한정되지 않고, 각종 방식의 채용 등에 의해 생긴 미사용 비트에 상기 확장 처리 정보를 설정함으로써도, 전술한 실시형태와 동일한 작용 효과를 얻을 수 있다. In addition, although the bit unused by employing the SIMD method is used as the unused bit, the present invention is not limited thereto, and the above-described information is also set by setting the extended processing information in the unused bit generated by the adoption of various methods. The same effect as that of one embodiment can be obtained.

또한, 전술한 설정부(20)(설정 단계) 및 생성부(30)(생성 단계)로서의 기능(전부 혹은 일부의 기능)은, 컴퓨터(CPU, 정보 처리 장치, 각종 단말을 포함함)가 소정의 애플리케이션 프로그램을 실행함으로써 실현된다. In addition, the functions (all or part of the functions) as the setting unit 20 (setting step) and the generation unit 30 (creation step) described above are predetermined by a computer (including a CPU, an information processing apparatus, and various terminals). This is realized by executing the application program.

그 프로그램은, 예컨대 플렉서블 디스크, CD(CD-ROM, CD-R, CD-RW 등), DVD(DVD-ROM, DVD-RAM, DVD-R, DVD-RW, DVD+ R, DVD+ RW 등) 등의 컴퓨터 판독 가능한 기록 매체에 기록된 형태로 제공된다. 이 경우, 컴퓨터는 그 기록 매체로부터 프로그램을 판독하여 내부 기억 장치 또는 외부 기억 장치에 전송하고 저장하여 이용한다. 또한, 그 프로그램을, 예컨대 자기 디스크, 광 디스크, 광자기 디스크 등의 기억 장치(기록 매체)에 기록해 두고, 그 기억 장치로부터 통신 회선을 통해 컴퓨터에 제공하도록 하여도 좋다. The program is, for example, a flexible disk, a CD (CD-ROM, CD-R, CD-RW, etc.), a DVD (DVD-ROM, DVD-RAM, DVD-R, DVD-RW, DVD + R, DVD + RW, etc.) and the like. In the form of a computer readable recording medium. In this case, the computer reads the program from the recording medium, transfers it to an internal storage device or an external storage device, and stores and uses the program. The program may be recorded in a storage device (recording medium) such as a magnetic disk, an optical disk, a magneto-optical disk, or the like, and the program may be provided to the computer from the storage device through a communication line.

여기서, 컴퓨터란, 하드웨어와 OS(Operating System)를 포함하는 개념이고, OS의 제어 하에서 동작하는 하드웨어를 의미하고 있다. 또한, OS가 불필요하고 애플리케이션 프로그램 단독으로 하드웨어를 동작시키는 경우에는, 그 하드웨어 자체가 컴퓨터에 상당한다. 하드웨어는, 적어도, CPU 등의 마이크로 프로세서와, 기록 매체에 기록된 컴퓨터 프로그램을 판독하기 위한 수단을 구비하고 있다. 상기 프로그램은, 전술한 바와 같이 컴퓨터에, 설정부(20)(설정 단계) 및 생성부(30)(생성 단계)로서의 기능을 실현시키는 프로그램 코드를 포함하고 있다. 또한, 그 기능의 일부는, 애플리케이션 프로그램이 아니라 OS에 의해 실현되어도 좋다. The computer is a concept including hardware and an operating system (OS), and refers to hardware operating under the control of the OS. In addition, when the OS is unnecessary and the hardware is operated by the application program alone, the hardware itself corresponds to the computer. The hardware includes at least a microprocessor such as a CPU and means for reading a computer program recorded on a recording medium. As described above, the program includes a program code for realizing the functions of the setting unit 20 (setting step) and the generating unit 30 (generation step) in the computer. In addition, some of the functions may be realized by the OS, not the application program.

또한, 본 실시형태에 있어서의 기록 매체로서는, 전술한 플렉서블 디스크, CD, DVD, 자기 디스크, 광 디스크, 광자기 디스크 외에, IC 카드, ROM 카트리지, 자기 테이프, 펀치 카드(punch card), 컴퓨터의 내부 기억 장치(RAM이나 ROM 등의 메모리), 외부 기억 장치 등이나, 바코드 등의 부호가 인쇄된 인쇄물 등의, 컴퓨터판독 가능한 여러 가지의 매체를 이용할 수도 있다. In addition, as the recording medium in the present embodiment, in addition to the above-described flexible disk, CD, DVD, magnetic disk, optical disk, magneto-optical disk, IC card, ROM cartridge, magnetic tape, punch card, computer Various computer-readable media, such as an internal storage device (memory such as RAM or ROM), an external storage device, or a printed matter printed with a code such as a barcode, can also be used.

[10] 부기 [10] bookkeeping

이상의 제1∼제4 실시형태를 포함하는 실시형태에 대해, 또한 이하의 부기를 개시한다. About the embodiment including the above first to fourth embodiments, the following supplementary notes are also disclosed.

(부기 1)(Book 1)

연산 대상의 데이터를 저장하는 레지스터와, 상기 레지스터로부터 판독된 데 이터에 기초하는 연산을 실행하는 하나 이상의 연산기를 가지고, 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 하나의 명령을 받고, 상기 연산기는, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행하는 연산 장치로서, A register that stores data to be operated on, and one or more calculators that perform an operation based on data read from the registers, indicating a type of data to be read from the registers and an operation to be performed by the calculator. A computing device that receives a single command composed of a plurality of bits, and executes the type of operation indicated by the one command based on the data indicated by the one command,

상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 하나의 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정부를 갖는 것을 특징으로 하는, 연산 장치. Setting to set one or more unused bits in the one instruction to execute extended instruction information for at least one of the register and the operator, the execution instruction of an extension process being different from the normal processing executed by the one instruction. An arithmetic unit characterized by having a part.

(부기 2)(Book 2)

상기 설정부에 의해 상기 미사용 비트에 설정된 상기 확장 지시 정보와 상기 하나의 명령에 있어서의 상기 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 상기 하나의 명령으로서 출력하는 생성부를 더 갖는 것을 특징으로 하는, 부기 1에 기재한 연산 장치. Execution of the expansion processing for at least one of the register and the calculator based on the expansion instruction information set in the unused bit by the setting unit and information set in bits other than the unused bit in the one instruction. The computing device according to Appendix 1, further comprising a generation unit for generating an instruction to give an instruction and outputting the instruction as one command.

(부기 3)(Supplementary Note 3)

상기 미사용 비트는, 상기 레지스터의 영역을 분할하여 사용하는 둘 이상의 상기 연산기를 구비하고 상기 하나의 명령으로 복수의 데이터 스트림을 처리하는 SIMD 방식을 채용함으로써 상기 통상 처리 시에는 미사용이 된 비트인 것을 특징으로 하는, 부기 1 또는 부기 2에 기재한 연산 장치. The unused bit is a bit that is not used during the normal processing by adopting a SIMD method for processing a plurality of data streams with the one instruction and having two or more the above-mentioned operators for dividing the register area. The arithmetic unit as described in the appendix 1 or the appendix 2.

(부기 4)(Appendix 4)

상기 둘 이상의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, The two or more operators are multi-input multi-output operators that can switch the type of operation according to the operation type code included in the one instruction, respectively,

상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기로 출력되어야 하는 상기 레지스터에 있어서의 각 데이터를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는, 부기 3에 기재한 연산 장치. The unused bit is the most significant bit of the register number indicating field indicating each data in the register to be output to each multiplication operator contained in the one instruction. .

(부기 5)(Note 5)

상기 둘 이상의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, The two or more operators are multi-input multi-output operators that can switch the type of operation according to the operation type code included in the one instruction, respectively,

상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기에 의한 연산 결과의, 상기 레지스터에 있어서의 저장처를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는, 부기 3 또는 부기 4에 기재한 연산 장치. The unused bit is the most significant bit of the register number indicating field indicating a storage destination in the register of the result of the operation by each multiplication operator included in the one instruction. The computing device described in the above.

(부기 6)(Note 6)

상기 확장 지시 정보는, 각 곱합 연산기로 출력되어야 하는 데이터를, 각 곱합 연산기에 대응하는 상기 레지스터의 영역 이외의 영역에서의 데이터로 전환하는 지시를 상기 레지스터에 대해 행하는 것을 특징으로 하는, 부기 4 또는 부기 5에 기재한 연산 장치. The extended instruction information is an instruction for changing the data to be output to each multiplication operator to data in an area other than the area of the register corresponding to each multiplication operator. The computing device described in Appendix 5.

(부기 7)(Appendix 7)

상기 확장 지시 정보는, 각 곱합 연산기에 의한 연산의 종별을 전환하는 지시를 각 곱합 연산기에 대해 행하는 것을 특징으로 하는, 부기 4 내지 부기 6 중 어느 하나에 기재한 연산 장치. The arithmetic unit according to any one of appendices 4 to 6, wherein the extended instruction information provides an instruction for switching the type of operation by each multiplication operator to each multiplication operator.

(부기 8)(Appendix 8)

연산 대상의 데이터를 저장하는 레지스터와, 상기 레지스터로부터 판독된 데이터에 기초하는 연산을 실행하는 하나 이상의 연산기를 갖는 연산 장치에 있어서, 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 하나의 명령을 받고, 상기 연산기는, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행하는 연산 방법으로서, An arithmetic apparatus having a register for storing data of arithmetic object and at least one arithmetic operator which executes an operation based on the data read from the register, the arithmetic unit of the data to be read from the register and the arithmetic operation to be performed by the arithmetic operator. Receiving an instruction consisting of a plurality of bits indicating a type, the calculator is an operation method for performing the operation of the type indicated by the one instruction based on the data indicated by the one instruction,

상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 하나의 명령에 의해 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정 단계를 포함하는 것을 특징으로 하는 연산 방법. Setting to set one or more unused bits in the one instruction to execute extended instruction information for at least one of the register and the operator, the execution instruction of an extension process being different from the normal processing executed by the one instruction. And a step of computing.

(부기 9)(Appendix 9)

상기 설정 단계에 있어서 상기 미사용 비트에 설정된 상기 확장 지시 정보와 상기 하나의 명령에 있어서의 상기 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 상기 하나의 명령으로서 출력하는 생성 단계를 더 포함하는 것을 특징으로 하는, 부기 8에 기재한 연산 방법. Execution of the expansion processing for at least one of the register and the calculator based on the expansion instruction information set in the unused bit in the setting step and information set in bits other than the unused bit in the one instruction. The generation method according to Appendix 8, further comprising a generation step of generating an extension command for giving an instruction and outputting the command as the one command.

(부기 10)(Book 10)

상기 미사용 비트는, 상기 레지스터의 영역을 분할하여 사용하는 둘 이상의 상기 연산기를 구비하고 상기 하나의 명령으로 복수의 데이터스트림을 처리하는 SIMD 방식을 채용함으로써 상기 통상 처리 시에는 미사용이 된 비트인 것을 특징으로 하는 부기 8 또는 부기 9에 기재한 연산 방법. The unused bit is a bit that is not used during the normal processing by adopting a SIMD method for processing a plurality of data streams with the one instruction and having two or more the above-mentioned operators for dividing the register area. The calculation method described in Appendix 8 or Appendix 9.

(부기 11)(Note 11)

상기 둘 이상의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, The two or more operators are multi-input multi-output operators that can switch the type of operation according to the operation type code included in the one instruction, respectively,

상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기로 출력되어야 하는 상기 레지스터에 있어서의 각 데이터를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는 부기 10에 기재한 연산 방법. The unused bit is the most significant bit of the register number indicating field indicating each data in the register to be output to each multiplication operator contained in the one instruction.

(부기 12)(Appendix 12)

상기 둘 이상의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, The two or more operators are multi-input multi-output operators that can switch the type of operation according to the operation type code included in the one instruction, respectively,

상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기에 의한 연산 결과의, 상기 레지스터에 있어서의 저장처를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는, 부기 10 또는 부기 11에 기재한 연산 방법. The unused bit is the most significant bit of the register number indicating field indicating a storage destination in the register of the result of the operation by each multiplication operator included in the one instruction. The calculation method described in.

(부기 13)(Appendix 13)

상기 확장 지시 정보는, 각 곱합 연산기로 출력되어야 하는 데이터를, 각 곱합 연산기에 대응하는 상기 레지스터의 영역 이외의 영역에서의 데이터로 전환하는 지시를 상기 레지스터에 대해 행하는 것을 특징으로 하는, 부기 11 또는 부기 12에 기재한 연산 방법. The extended instruction information is an instruction to convert the data to be output to each multiplication operator to data in an area other than the area of the register corresponding to each multiplication operator. The calculation method described in Appendix 12.

(부기 14)(Book 14)

상기 확장 지시 정보는, 각 곱합 연산기에 의한 연산의 종별을 전환하는 지시를 각 곱합 연산기에 대해 행하는 것을 특징으로 하는, 부기 11 내지 부기 13 중 어느 하나에 기재한 연산 방법. The extended instruction information is any one of appendices 11 to 13, characterized in that an instruction for switching the type of operation by each multiplication operator is given to each multiplication operator.

도 1은 본 발명의 일 실시형태로서의 연산 장치의 구성을 도시하는 블록도. BRIEF DESCRIPTION OF THE DRAWINGS The block diagram which shows the structure of the arithmetic unit as one Embodiment of this invention.

도 2는 도 1에 도시하는 연산 장치에 있어서의 연산부의 기본적인 동작을 설명하기 위한 흐름도. FIG. 2 is a flowchart for explaining the basic operation of the calculation unit in the calculation device shown in FIG. 1. FIG.

도 3은 비SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 3 is a diagram for briefly explaining the operation of the computing unit in the computing device shown in FIG. 1 when employing a non-SIMD. FIG.

도 4는 비SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드 발행부 및 생성부의 동작을 설명하기 위한 도면. 4 is a view for explaining the operation of an instruction code issuing unit and a generating unit in the arithmetic unit shown in FIG. 1 when employing a non-SIMD.

도 5(a)∼도 5(d)는, 각각, 비SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면. 5 (a) to 5 (d) respectively specify the instruction code, operation code, register write signal, and register number designation (only the most significant bit) in the arithmetic unit shown in FIG. 1 when non-SIMD is employed. Drawings shown by.

도 6은 SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 6 is a diagram for briefly explaining the operation of the computing unit in the computing device shown in FIG. 1 when employing a SIMD. FIG.

도 7은 SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드 발행부 및 생성부의 동작을 설명하기 위한 도면. FIG. 7 is a view for explaining the operation of an instruction code issuing unit and a generating unit in the arithmetic unit shown in FIG. 1 when employing a SIMD. FIG.

도 8(a)∼도 8(d)는, 각각, SIMD 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면. 8A to 8D specifically show the instruction code, the operation code, the register write signal, and the register number designation (only the most significant bit) in the arithmetic unit shown in FIG. 1 when employing the SIMD, respectively. The figure which shows.

도 9는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 9 is a diagram for briefly explaining the operation of the calculation unit in the arithmetic unit shown in FIG. 1 when the first unused bit use form is employed. FIG.

도 10은 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드 발행부(설정부) 및 생성부의 동작을 설명하기 위한 도면. FIG. 10 is a view for explaining the operation of an instruction code issuing unit (setting unit) and a generating unit in the arithmetic unit shown in FIG. 1 when the first unused bit use form is employed. FIG.

도 11(a)∼도 11(d)는, 각각, 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면. 11 (a) to 11 (d) designate command codes, arithmetic codes, register write signals, and register numbers in the arithmetic unit shown in FIG. 1 when employing the first unused bit usage form (highest order bits). Only).

도 12는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. FIG. 12 is a diagram showing a specific example of a combination of calculations by an arithmetic unit in the arithmetic unit shown in FIG. 1 when a first unused bit use form is employed. FIG.

도 13은 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. Fig. 13 is a diagram showing a specific example of a combination of calculations by a calculation unit in the arithmetic unit shown in Fig. 1 when the first unused bit use form is adopted.

도 14는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. FIG. 14 is a diagram showing a specific example of a combination of calculations by a calculation unit in the arithmetic unit shown in FIG. 1 when the first unused bit use mode is adopted. FIG.

도 15는 제1 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. Fig. 15 is a diagram showing a specific example of the calculation combination by the calculation unit in the arithmetic unit shown in Fig. 1 when the first unused bit use form is adopted.

도 16은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 16 is a diagram for easily explaining the operation of the calculation unit in the arithmetic unit shown in FIG. 1 when the second unused bit use form is employed. FIG.

도 17은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 설정부 및 생성부의 동작을 설명하기 위한 도면. FIG. 17 is a view for explaining the operation of the setting unit and the generation unit in the arithmetic unit shown in FIG. 1 when the second unused bit use form is employed. FIG.

도 18(a)∼도 18(d)는, 각각, 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면. 18A to 18D show the instruction code, the operation code, the register write signal, and the register number (highest bit) in the arithmetic unit shown in FIG. 1 when the second unused bit use form is adopted. Only).

도 19는 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 19 is a diagram for briefly explaining the operation of the calculation unit in the arithmetic unit shown in FIG. 1 when the third unused bit use form is employed. FIG.

도 20은 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부의 동작을 간단하게 설명하기 위한 도면. FIG. 20 is a diagram for briefly explaining the operation of the calculation unit in the arithmetic unit shown in FIG. 1 when the third unused bit use form is employed. FIG.

도 21은 제2 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드 발행부(설정부) 및 생성부의 동작을 설명하기 위한 도면. FIG. 21 is a view for explaining the operation of an instruction code issuing unit (setting unit) and a generating unit in the arithmetic unit shown in FIG. 1 when the second unused bit use form is employed. FIG.

도 22(a)∼도 22(d)는, 각각, 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 명령 코드, 연산 코드, 레지스터 기록 신호 및 레지스터 번호 지정(최상위 비트만)을 구체적으로 도시하는 도면. 22A to 22D show an instruction code, an operation code, a register write signal, and a register number designation (highest bit) in the arithmetic unit shown in FIG. 1 when the third unused bit use form is adopted, respectively. Only).

도 23은 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. Fig. 23 is a diagram showing a specific example of calculation combination by the calculation unit in the arithmetic unit shown in Fig. 1 when employing the third unused bit usage form.

도 24는 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 연산부에 의한 연산 조합의 구체예를 도시하는 도면. Fig. 24 is a diagram showing a specific example of a combination of calculations by a calculation unit in the arithmetic unit shown in Fig. 1 when employing a third unused bit use form.

도 25는 제3 미사용 비트 이용 형태 채용 시의 도 1에 도시하는 연산 장치에 있어서의 생성부의 구체적인 실현예를 도시하는 회로도. FIG. 25 is a circuit diagram showing a concrete implementation example of a generation unit in the arithmetic unit shown in FIG. 1 when a third unused bit use form is employed. FIG.

<도면의 주요 부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

1: 연산 장치 10: 연산부1: arithmetic unit 10: arithmetic unit

11: 레지스터11: register

12b: 통상 부동 소수점 곱합 연산기(통상 연산기, 연산기)12b: Normal floating point multiply operators (normal operators, operators)

12e: 확장 부동 소수점 곱합 연산기(확장 연산기, 연산기)12e: Extended Floating Point Multiply Operators (Extended Operators, Operators)

20: 명령 코드 발행부(설정부) 30: 생성부20: command code issuing unit (setting unit) 30: generating unit

31, 32, 33, 34: 논리곱 회로(AND 게이트)31, 32, 33, 34: AND circuit (AND gate)

35, 36: 배타적 논리합 회로(EOR 게이트)35, 36: exclusive OR circuit (EOR gate)

31a, 32a, 34a, 36a: 반전 회로(NOT 게이트, 인버터)31a, 32a, 34a, 36a: inversion circuit (NOT gate, inverter)

Claims (10)

연산 대상의 데이터를 저장하는 레지스터와, 상기 레지스터로부터 판독된 데이터에 기초하는 연산을 실행하는 복수의 연산기와, 상기 복수의 연산기가 상기 레지스터의 영역을 분할하여 사용하는 것에 의해 하나의 명령으로 복수의 데이터스트림을 처리하는 SIMD(Single Instruction stream Multiple Data stream) 방식의 채용 또는 불채용을 선택하는 기능을 갖고, 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 복수의 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 상기 하나의 명령을 받고, 상기 복수의 연산기는, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행하는 연산 장치로서, A register for storing data to be operated on, a plurality of calculators for performing calculations based on data read from the registers, and the plurality of calculators divide a region of the register into a plurality of commands in one instruction. Has a function of selecting the adoption or non-adoption of the SIMD (Single Instruction stream Multiple Data stream) method for processing the data stream, and indicates the type of data to be read from the register and the operation to be performed by the plurality of calculators And a plurality of calculators, wherein the plurality of arithmetic units are operable to execute a type of operation indicated by the one instruction on the basis of the data indicated by the one instruction, 상기 기능에 의해 상기 SIMD 방식을 채용하는 것에 의해 상기 SIMD 방식의 불채용시에는 사용되나 상기 SIMD 방식의 채용시에는 미사용이 되는, 상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 SIMD 방식으로 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정부One or more unused bits in the one instruction, which are used when the SIMD method is not employed by the function, but which are not used when the SIMD method is employed, are executed by the SIMD method. A setting unit that sets extension instruction information for executing at least one of the register and the operator instructing execution of an extension process different from the normal process 를 포함하는 것을 특징으로 하는 연산 장치. Computing device comprising a. 제1항에 있어서, The method of claim 1, 상기 설정부에 의해 상기 미사용 비트에 설정된 상기 확장 지시 정보와 상기 하나의 명령에 있어서의 상기 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 상기 하나의 명령으로서 출력하는 생성부를 더 포함하는 것을 특징으로 하는 연산 장치. Execution of the expansion processing for at least one of the register and the calculator based on the expansion instruction information set in the unused bit by the setting unit and information set in bits other than the unused bit in the one instruction. And a generation unit for generating an extension command for giving an instruction and outputting the command as one command. 삭제delete 제1항에 있어서, The method of claim 1, 상기 복수의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, Each of the plurality of calculators is a multi-input one-output multiplication operator capable of switching the type of operation according to the operation type code included in the one instruction, 상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기로 출력되어야 하는 상기 레지스터에 있어서의 각 데이터를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는 연산 장치. And the unused bit is the most significant bit of a register number indicating field indicating each data in the register to be output to each multiplication operator included in the one instruction. 제1항에 있어서, The method of claim 1, 상기 복수의 연산기는, 각각, 상기 하나의 명령에 포함되는 연산 종별 코드에 따라 연산의 종별을 전환할 수 있는 다입력 일출력의 곱합 연산기이고, Each of the plurality of calculators is a multi-input one-output multiplication operator capable of switching the type of operation according to the operation type code included in the one instruction, 상기 미사용 비트는, 상기 하나의 명령에 포함되는, 각 곱합 연산기에 의한 연산 결과의, 상기 레지스터에 있어서의 저장처를 지시하는 레지스터 번호 지시 필드의 최상위 비트인 것을 특징으로 하는 연산 장치. And the unused bit is the most significant bit of a register number indicating field indicating a storage destination in the register of the result of the operation by each multiplication operator included in the one instruction. 제4항에 있어서, The method of claim 4, wherein 상기 확장 지시 정보는, 각 곱합 연산기로 출력되어야 하는 데이터를, 각 곱합 연산기에 대응하는 상기 레지스터의 영역 이외의 영역에 있어서의 데이터로 전환하는 지시를 상기 레지스터에 대해 행하는 것을 특징으로 하는 연산 장치. And the extension instruction information instructs the register to switch data to be output to each multiplication operator to data in an area other than the area of the register corresponding to each multiplication operator. 제4항에 있어서, The method of claim 4, wherein 상기 확장 지시 정보는, 각 곱합 연산기에 의한 연산의 종별을 전환하는 지시를 각 곱합 연산기에 대해 행하는 것을 특징으로 하는 연산 장치. And the expansion instruction information gives an instruction to switch the type of operation by each multiplication operator to each multiplication operator. 연산 대상의 데이터를 저장하는 레지스터와, 상기 레지스터로부터 판독된 데이터에 기초하는 연산을 실행하는 복수의 연산기와, 상기 복수의 연산기가 상기 레지스터 영역을 분할하여 사용하는 것에 의해 하나의 명령으로 복수의 데이터스트림을 처리하는 SIMD(Single Instruction stream Multiple Data stream) 방식의 채용 또는 불채용을 선택하는 기능을 포함하는 연산 장치에 있어서, 상기 레지스터로부터 판독되어야 하는 데이터 및 상기 복수의 연산기에 의해 실행되어야 하는 연산의 종별을 지시하는, 복수 비트로 이루어지는 상기 하나의 명령을 받고, 상기 복수의 연산기는, 상기 하나의 명령에 의해 지시된 데이터에 기초하여, 상기 하나의 명령에 의해 지시된 종별의 연산을 실행하는 연산 방법으로서, A register for storing data to be operated on, a plurality of calculators for performing calculations based on data read from the registers, and the plurality of calculators divide the register area and use a plurality of data in one instruction. A computing device comprising a function of selecting the adoption or non-adoption of a single instruction stream multiple data stream (SIMD) method for processing a stream, comprising: data of data to be read from the register and operations to be executed by the plurality of calculators; An arithmetic method that receives the one instruction composed of a plurality of bits indicative of a classification, and the plurality of calculators perform the calculation of the classification indicated by the one instruction based on the data indicated by the one instruction; As 상기 기능에 의해 상기 SIMD 방식을 채용하는 것에 의해 상기 SIMD 방식의 불채용시에는 사용되나 상기 SIMD 방식의 채용시에는 미사용이 되는, 상기 하나의 명령에 있어서의 하나 이상의 미사용 비트에, 상기 SIMD 방식으로 실행되는 통상 처리와는 상이한 확장 처리의 실행 지시를 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 행하는 확장 지시 정보를 설정하는 설정 단계One or more unused bits in the one instruction, which are used when the SIMD method is not employed by the function, but which are not used when the SIMD method is employed, are executed by the SIMD method. A setting step of setting expansion instruction information for giving execution instructions for expansion processing different from the normal processing to at least one of the register and the operator; 를 포함하는 것을 특징으로 하는 연산 방법. Operation method comprising a. 제8항에 있어서, The method of claim 8, 상기 설정 단계에 있어서 상기 미사용 비트에 설정된 상기 확장 지시 정보와 상기 하나의 명령에 있어서의 상기 미사용 비트 이외의 비트에 설정된 정보에 기초하여, 상기 레지스터 및 상기 연산기 중 적어도 한쪽에 대해 상기 확장 처리의 실행 지시를 행하는 확장 명령을 생성하여 상기 하나의 명령으로서 출력하는 생성 단계를 더 포함하는 것을 특징으로 하는 연산 방법. Execution of the expansion processing for at least one of the register and the calculator based on the expansion instruction information set in the unused bit in the setting step and information set in bits other than the unused bit in the one instruction. And a generating step of generating an extended command for giving an instruction and outputting the same as the one command. 삭제delete
KR1020090023506A 2008-03-21 2009-03-19 Arithmetic operating apparatus and method for performing arithmetic operation KR101028428B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008073864A JP5481793B2 (en) 2008-03-21 2008-03-21 Arithmetic processing device and method of controlling the same
JPJP-P-2008-073864 2008-03-21

Publications (2)

Publication Number Publication Date
KR20090101113A KR20090101113A (en) 2009-09-24
KR101028428B1 true KR101028428B1 (en) 2011-04-14

Family

ID=40785594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090023506A KR101028428B1 (en) 2008-03-21 2009-03-19 Arithmetic operating apparatus and method for performing arithmetic operation

Country Status (5)

Country Link
US (1) US9513914B2 (en)
EP (1) EP2104034B1 (en)
JP (1) JP5481793B2 (en)
KR (1) KR101028428B1 (en)
CN (1) CN101539851B (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011160353A (en) * 2010-02-03 2011-08-18 Nec Access Technica Ltd Communication system, communication device, and communication method
GB2486739B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
JP6307975B2 (en) * 2014-03-28 2018-04-11 富士通株式会社 Arithmetic processing device and control method of arithmetic processing device
CN106485318B (en) * 2015-10-08 2019-08-30 上海兆芯集成电路有限公司 With mixing coprocessor/execution unit neural network unit processor
CN112214244A (en) * 2016-08-05 2021-01-12 中科寒武纪科技股份有限公司 Arithmetic device and operation method thereof
CN111930426A (en) * 2020-08-14 2020-11-13 西安邮电大学 Reconfigurable computing dual-mode instruction set architecture and application method thereof
CN112764810B (en) * 2021-01-20 2022-09-20 重庆邮电大学 Register control SIMD instruction expansion method applied to processor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09114664A (en) * 1995-10-18 1997-05-02 Sharp Corp Data driven information processor
WO2000068783A2 (en) * 1999-05-12 2000-11-16 Analog Devices, Inc. Digital signal processor computation core

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761755A (en) * 1984-07-11 1988-08-02 Prime Computer, Inc. Data processing system and method having an improved arithmetic unit
US4807124A (en) * 1986-09-26 1989-02-21 Performance Semiconductor Corporation Register addressing system for efficient microroutine sharing and optimization
EP0483967A3 (en) 1990-10-29 1993-07-21 Sun Microsystems, Inc. Apparatus for increasing the number of registers available in a computer processor
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
KR100325658B1 (en) 1995-03-17 2002-08-08 가부시끼가이샤 히다치 세이사꾸쇼 Processor
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
EP0798633B1 (en) * 1996-03-29 2005-06-08 Matsushita Electric Industrial Co., Ltd. Data processor having a variable number of pipeline stages
US6230259B1 (en) * 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6625724B1 (en) * 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6877084B1 (en) * 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
JP2003016051A (en) 2001-06-29 2003-01-17 Nec Corp Operational processor for complex vector
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US20040193838A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney Vector instructions composed from scalar instructions
JP4283131B2 (en) 2004-02-12 2009-06-24 パナソニック株式会社 Processor and compiling method
CN100552622C (en) * 2005-03-31 2009-10-21 松下电器产业株式会社 Arithmetic processing apparatus
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09114664A (en) * 1995-10-18 1997-05-02 Sharp Corp Data driven information processor
WO2000068783A2 (en) * 1999-05-12 2000-11-16 Analog Devices, Inc. Digital signal processor computation core

Also Published As

Publication number Publication date
KR20090101113A (en) 2009-09-24
CN101539851A (en) 2009-09-23
CN101539851B (en) 2013-01-09
EP2104034A1 (en) 2009-09-23
EP2104034B1 (en) 2015-06-10
JP2009230375A (en) 2009-10-08
JP5481793B2 (en) 2014-04-23
US20090240926A1 (en) 2009-09-24
US9513914B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
KR101028428B1 (en) Arithmetic operating apparatus and method for performing arithmetic operation
KR20110100381A (en) Reconfigurable processor and control method using the same
CN107851013B (en) Data processing apparatus and method
JP6920277B2 (en) Mixed width SIMD operation with even and odd element operations using a pair of registers for a wide data element
IL267998B2 (en) Element by vector operations in a data processing apparatus
JPH0667851A (en) Multiplier provided with overflow detecting function
KR20180063542A (en) Vector processor and control methods thererof
JP3753991B2 (en) Processor, arithmetic instruction processing method and arithmetic control method in processor
JP3935678B2 (en) SIMD product-sum operation method, product-sum operation circuit, and semiconductor integrated circuit device
JP2001209670A (en) High order synthesis method and recording medium used for execution of high order synthesis method
JP4502040B2 (en) SIMD arithmetic unit, arithmetic method of SIMD arithmetic unit, arithmetic processing unit and compiler
JP4613992B2 (en) SIMD arithmetic unit, arithmetic method of SIMD arithmetic unit, arithmetic processing unit and compiler
JP2001209664A (en) High order synthesis method and recording medium used for execution of high order synthesis method
US8423748B2 (en) Register control circuit and register control method
JP5813484B2 (en) VLIW processor, instruction structure and instruction execution method
JP7140201B2 (en) Arithmetic processing device and method of controlling arithmetic processing device
JP2013037613A (en) Arithmetic circuit and arithmetic unit
JPS6186839A (en) Arithmetic processor
JP2008003663A (en) Data processor and processing method
JP2007122209A (en) Three-dimensional graphics drawing device, method therefor and program
JP2013210837A (en) Arithmetic circuit and arithmetic method
JPH01185732A (en) Microprogram branching system
JPH01109445A (en) Register filing device
GR20170200090U (en) Element by vector operations in a data processing apparatus
JPH0480675A (en) Memory ic tester

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 7