WO2020090025A1 - 演算処理装置および演算処理装置の制御方法 - Google Patents
演算処理装置および演算処理装置の制御方法 Download PDFInfo
- Publication number
- WO2020090025A1 WO2020090025A1 PCT/JP2018/040476 JP2018040476W WO2020090025A1 WO 2020090025 A1 WO2020090025 A1 WO 2020090025A1 JP 2018040476 W JP2018040476 W JP 2018040476W WO 2020090025 A1 WO2020090025 A1 WO 2020090025A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- arithmetic
- circuit
- calculation
- arithmetic processing
- threshold value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/556—Logarithmic or exponential functions
Definitions
- the present invention relates to an arithmetic processing device and a control method for the arithmetic processing device.
- FIG. 8 is a diagram showing a configuration of a conventional arithmetic processing circuit 500.
- the arithmetic processing circuit 500 shown in FIG. 8 includes registers 501 to 504, a determination circuit 505, CSA (Carry-Save Adder) 506, 507, a Log Table circuit 508, a right shift circuit (RSFT) 509, 510 and arithmetic circuits 511 to 514 are provided.
- CSA Carry-Save Adder
- RSFT right shift circuit
- the arithmetic processing circuit 500 is an arithmetic circuit that performs exponential (EXP) arithmetic and logarithmic (LOG) arithmetic.
- EXP exponential
- LOG logarithmic
- STL Simple Table Lookup
- the arithmetic processing circuit 500 inputs x and obtains exp (x).
- L is a variable in the power space and E is a variable in the exponential space.
- i is the number of times the calculation is repeated.
- n -2, -1, 0, +1, +2, the magnitude relationship between L i and 0 and the difference are determined, and n is selected so that L i comes closest to 0.
- register values stored in the registers 501, 502, 503, and 504 may be referred to as LS, LC, ES, and EC, respectively.
- the registers 501, 502, 503, 504 may be referred to as registers LS, LC, ES, EC, respectively.
- LS + LC L 1
- x is set in either one of LS and LC and 0 is set in the other.
- ES + EC E 1
- 1 is set to either ES or EC and 0 is set to the other.
- the arithmetic processing circuit 500 inputs x and obtains log (x).
- L is a logarithmic space variable
- E is an antilogarithmic space variable.
- i is the number of repeated calculations.
- the Log Table circuit 508 and the CSA 506 implement L i arithmetic in exponential arithmetic or logarithmic arithmetic. Further, the right shift circuits 509 and 510, the arithmetic circuits 511 to 514, and the CSA 507 realize E i arithmetic in exponential arithmetic or logarithmic arithmetic.
- the decision circuit 505 selects n based on L i .
- the determination circuit 505 determines the magnitude relationship and difference between L i and 0, and selects the value of n where L i comes closest to 0.
- the determination circuit 505 selects n based on E i .
- the determination circuit 505 determines the magnitude relationship and difference between E i and 1, and selects the value of n at which E i is closest to 1.
- the selected n is output to the Log Table circuit 508.
- log (1 + n * 2 ⁇ -2i) corresponding to the variables i and n is set in advance in the Log Table circuit 508, and log (1) depending on i and n input from the determination circuit 505
- the value of 1 + n * 2 ⁇ -2i) is output to the CSA 506.
- the CSA 506 is an adder that outputs as it is without propagating the carry, and performs L i calculation (reference) using the above equation (1).
- the sequence of partial sum bits of the output (calculation result) of the CSA 506 is input to the register 501.
- the carry bit string of the output (calculation result) of the CSA 506 is input to the register 502.
- the right shift circuits 509 and 510, the arithmetic circuits 511 to 514, and the CSA 507 realize the E i arithmetic (see the above equation (2)) in the exponential arithmetic.
- the right shift circuits 509 and 510 realize 2 ⁇ -2i multiplication by performing a 2i bit right shift operation on the values ES and EC read from the registers 503 and 504. As a result, the calculation of 2 ⁇ -2i in the above equation (2) is realized. After that, the arithmetic circuits 511 to 514 realize the arithmetic operation of E i ⁇ n ⁇ 2 ⁇ -2i.
- the arithmetic circuits 511 and 512 perform 1-fold ( ⁇ 1) or 2-fold ( ⁇ 2) calculation on the values output from the right shift circuits 509 and 510. For example, when n determined by the determination circuit 505 is +2 or -2, the arithmetic circuits 511 and 512 perform ⁇ 2 arithmetic operation. On the other hand, when n determined by the determination circuit 505 is +1 or -1, the arithmetic circuits 511 and 512 perform ⁇ 1 arithmetic operation.
- the arithmetic circuits 513 and 514 output the values output from the arithmetic circuits 511 and 512 by passing through (+) or inverting the sign (-). For example, when n determined by the determination circuit 505 is any one of +2, +1 and 0, the arithmetic circuits 513 and 514 output through. On the other hand, when n determined by the determination circuit 505 is -2 or -1, the arithmetic circuits 513 and 514 invert the sign and output.
- the CSA 507 is an adder that outputs as it is without propagating to the carry and performs E i calculation using the above equation (2).
- the sequence of partial sum bits of the output (calculation result) of the CSA 507 is input to the register 503.
- the carry bit string of the output (calculation result) of the CSA 507 is input to the register 504.
- the arithmetic processing circuit 500 outputs the value E i of the registers 503 and 504 as the result of the exponential operation and the value L i of the registers 501 and 502 as the result of the logarithmic operation.
- FIG. 9 is a diagram showing a configuration of a conventional arithmetic processing circuit 600 for solving the problem caused by the arithmetic processing circuit 500 as described above.
- the arithmetic processing circuit 600 shown in FIG. 9 includes a determination circuit 601, a 1st_n table circuit 602 and a selector 603 instead of the determination circuit 505 of the arithmetic processing circuit 500 shown in FIG. Further, arithmetic circuits 604 and 605 are provided instead of the arithmetic circuits 511 and 512 of the arithmetic processing circuit 500, and a Log Table circuit 606 is provided instead of the Log Table circuit 508. The other parts are configured similarly to the arithmetic processing circuit 500 of FIG.
- Each output of the 1st_n table circuit 602 and the determination circuit 601 is input to the selector 603.
- the selector 603 selects and outputs the output of the determination circuit 601 after the second calculation. Further, in the judgment circuit 601, ⁇ 3 is added to the options of n as compared with the judgment circuit 505 shown in FIG. That is, the determination circuit 601 has -3, -2, -1, 0, +1, +2, +3 as the option n.
- the output of the selector 603 is input to the arithmetic circuits 513, 514, 604, 605 and the Log Table circuit 606.
- the arithmetic circuits 604 and 605 are each a ⁇ 1 or ⁇ 2 or ⁇ 3 circuit, and depending on n output from the determination circuit 601, a through ( ⁇ 1), a left shift ( ⁇ 2) or a ⁇ 3 multiplication is performed. Do either of the above.
- the circuit scale becomes large by including the 1st_n table circuit 602, the selector 603, and the arithmetic circuits 604 and 605.
- the circuit scale becomes large by including the 1st_n table circuit 602, the selector 603, and the arithmetic circuits 604 and 605.
- the present invention was created in view of such problems, and an object thereof is to enable convergence to a solution in exponential calculation or logarithmic calculation without increasing the circuit scale.
- this arithmetic processing device includes an arithmetic circuit for performing exponential arithmetic or logarithmic arithmetic, and a bit calculated by the arithmetic circuit per cycle when the number of times of arithmetic repetition by the arithmetic circuit is less than or equal to a threshold value.
- a setting unit that sets the number to a first number and sets the number of bits calculated by the arithmetic circuit per cycle to a second number, which is larger than the first number, when the number of operation repetitions is larger than the threshold value.
- FIG. 3 is a diagram illustrating a relationship between an index and an entry of a Log Table circuit in an arithmetic processing circuit as an example of an embodiment.
- FIG. 3 is a diagram illustrating a circuit configuration of a right shift circuit in an arithmetic processing circuit as an example of an embodiment.
- FIG. 4 is a diagram illustrating a selector switching rule of the right shift circuit illustrated in FIG. 3.
- 6 is a flowchart for explaining an outline of processing of an arithmetic processing circuit as an example of the embodiment. 6 is a flowchart for explaining arithmetic processing in an arithmetic processing circuit as an example of the embodiment.
- FIG. 1 is a diagram illustrating a configuration of an arithmetic processing circuit 1 as an example of an embodiment.
- the arithmetic processing circuit (arithmetic unit) 1 is provided, for example, in a processor (arithmetic processing unit) of an information processing device and realizes arithmetic.
- the arithmetic processing circuit 1 shown in FIG. 1 is an arithmetic processing circuit that realizes two types of arithmetic operations, an exponential (EXP) arithmetic operation and a logarithmic (LOG) arithmetic operation. That is, the arithmetic processing circuit 1 selectively implements either exponential arithmetic or logarithmic arithmetic.
- a radix4 STL (Sequential Table Lookup) method for obtaining a quotient of 2 bits by one operation may be used. For example, with x as input, exp (x) is obtained. L is a variable in the power space and E is a variable in the exponential space. Further, i is the number of times the calculation is repeated.
- the STL method may be used for logarithmic calculation. For example, log (x) is obtained by inputting x.
- L is a logarithmic space variable and E is an antilogarithmic space variable. Further, i is the number of repeated calculations.
- the arithmetic processing circuit 1 shown in FIG. 1 includes registers 101 to 104, a determination circuit 105, CSAs 107 and 114, a Log Table circuit 106, right shift circuits (RSFT2) 108 and 109, and arithmetic circuits 110 to 113.
- arithmetic processing circuit 1 shown in FIG. 1 includes registers 101 to 104, a determination circuit 105, CSAs 107 and 114, a Log Table circuit 106, right shift circuits (RSFT2) 108 and 109, and arithmetic circuits 110 to 113.
- RSFT2 right shift circuits
- the register 101 may be referred to as the register LS.
- the register 102 may be referred to as a register LC
- the register 103 may be referred to as a register ES
- the register 104 may be referred to as a register EC.
- the register 101 is connected to the determination circuit 105 and the CSA 107, respectively.
- the register 101 stores the result (sum) of the Li operation performed by the CSA 107 described later. That is, the register 101 stores the mid-calculation value generated by the CSA 107 during the calculation process.
- the register value L i read from the register 101 is input to each of the determination circuit 105 and the CSA 107.
- the register 102 is connected to the determination circuit 105 and the CSA 107, respectively.
- the result (carry) of the L i calculation by the CSA 107 is stored in the register 102. That is, the register 102 stores the mid-calculation value generated by the CSA 107 during the calculation process.
- the register value L i read from the register 102 is input to each of the determination circuit 105 and the CSA 107.
- the Log Table circuit 106 and the CSA 107 realize L i operation in exponential operation or logarithmic operation.
- the right shift circuits 108 and 109, the arithmetic circuits 110 to 113, and the CSA 114 realize E i arithmetic in exponential arithmetic or logarithmic arithmetic.
- the number of bits (first number) required per cycle is reduced (for example, once). ..
- the number of bits (second number) required per cycle is increased (for example, two times or more). The second number is larger than the first number.
- n -2, -1, 0, +1, +2.
- the number of bits (first number) required per cycle is 1 when i ⁇ k
- the number of bits (second number) required per cycle is 2 when i> k.
- the determination circuit 105 selects n based on L i .
- the determination circuit 105 determines the magnitude relationship and difference between L i and 0, and selects the value of n where L i comes closest to 0.
- the determination circuit 105 selects n based on E i .
- the determination circuit 105 determines the magnitude relationship and difference between E i and 1, and selects the value of n at which E i is closest to 1.
- n determined by the determination circuit 105 is input to the arithmetic circuits 110 to 113 and the Log Table circuit 106.
- the Log Table circuit 106 outputs the value of log (1 + n * 2 ⁇ -A).
- A i
- A 2i-k.
- log (1 + n * 2 ⁇ -A) corresponding to the variables i and n is preset in the Log Table circuit 106, and the value corresponding to i and n input from the determination circuit 105 is set. Output the value of log (1 + n * 2 ⁇ -A).
- the Log Table circuit 106 has i and n as indexes and each value of log (1 + n ⁇ 2 ⁇ -i) or log (1 + n ⁇ 2 ⁇ -(2i-k)) as an entry. Have.
- FIG. 2 is a diagram illustrating a relationship between an index and an entry of the Log Table circuit 106 in the arithmetic processing circuit 1 as an example of the embodiment.
- each entry is shown in a logarithmic format with log for convenience, but in reality, each entry holds a numerical value obtained by calculating the logarithm.
- the part where “don't care” is shown is not selected.
- the Log Table circuit 106 outputs the entry values corresponding to the input i and n to the CSA 107.
- the Log Table circuit 106 stores the information in which the index and the entry are associated with each other as illustrated in FIG. 2 in a storage device (not shown), and when i and n are input, this information is input.
- the value of the corresponding entry may be acquired and output by referring to i and n as indexes.
- the Log Table circuit 106 may acquire the information illustrated in FIG. 2 from the control unit 10 or the like.
- the CSA 107 is a carry-in save adder with three inputs and two outputs (3 in-2 out), and each output is input from the registers 101 and 102 and the Log Table circuit 106. Further, of the output (calculation result) of the CSA 107, the sequence of partial sum bits is input to the register 101. On the other hand, of the output (calculation result) of the CSA 107, the carry bit string is input to the register 102.
- the CSA 107 performs a calculation of L i + 1 (L i calculation).
- the CSA 107 uses the value of log (1 + n * 2 ⁇ -A) output from the Log Table circuit 106 to calculate L i based on the above equation (3).
- the register 103 is connected to the determination circuit 105, the right shift circuit 108, and the CSA 114, respectively, and the result (sum) of the E i operation by the CSA 114 described later is stored in the register 103. That is, the register 103 stores the midway calculation value generated by the CSA 114 during the calculation process.
- the register value E i read from the register 103 is input to each of the determination circuit 105, the right shift circuit 108, and the CSA 114.
- the register 104 is connected to the determination circuit 105, the right shift circuit 109, and the CSA 114, respectively.
- the result (carry) of the E i calculation by the CSA 114 is stored in this register 104. That is, the register 104 stores the mid-calculation value generated by the CSA 114 during the calculation process.
- the register value E i read from the register 104 is input to each of the determination circuit 105, the right shift circuit 109, and the CSA 114.
- the CSA 114 is a carry-in save adder with four inputs and two outputs (4 in-2 out), and the outputs from the registers 103 and 104 and the arithmetic circuits 112 and 113 are input.
- the CSA 114 is used for exponential operation or logarithmic operation.
- the CSA 114 calculates E i + 1 .
- the CSA 114 uses the values output from the registers 103 and 104 and the arithmetic circuits 112 and 113, respectively, to calculate E i based on the above equation (3).
- the partial sum bit string of the output (calculation result) of the CSA 114 is input to the register 103.
- the carry bit string of the output (calculation result) of the CSA 114 is input to the register 104.
- the right shift circuits 108 and 109 perform a right shift on the bit string of the processing target data, and perform a number of bit shifts on the processing target data according to the number of operation repetitions i.
- the right shift circuit 108 performs a right shift operation on the register output ES of the register 103
- the right shift circuit 109 performs a right shift operation on the register output EC of the register 104 to obtain E i ⁇ 2 ⁇ -i. Or the operation of E i ⁇ 2 ⁇ -(2i-k) is realized.
- the right shift circuits 108 and 109 perform the operation of E i ⁇ 2 ⁇ -i when i ⁇ k, and the operation of E i ⁇ 2 ⁇ -(2i-k) when i> k.
- Right shift circuit 108 and 109, i only achieves calculation of E i ⁇ 2 ⁇ -i by right shifting the E i, 2i-k only E by right shifting the E i i ⁇ 2 ⁇ - ( 2i-k) is realized.
- the right shift circuits 108 and 109 have the same configuration as each other.
- FIG. 3 illustrates a circuit configuration of the right shift circuits 108 and 109 in the arithmetic processing circuit 1 as an example of the embodiment
- FIG. 4 illustrates a switching rule of the selector 1081 of the right shift circuits 108 and 109 illustrated in FIG. FIG.
- the right shift circuits 108 and 109 output the operation result of E i ⁇ 2 ⁇ -i when i ⁇ k by performing selection output by each selector 1081 according to the switching rule illustrated in FIG. 4, and i> k In the case of, the output of the operation result of E i ⁇ 2 ⁇ -(2i-k) is realized.
- D [15: 0] indicates the data to be shifted
- R [15: 0] indicates the data after the shift. Note that [15] is the sign bit. Further, i is the number of times of repeated calculation.
- the right shift circuits 108 and 109 each include a selector 1081 that receives D for each bit of R (R [0] to R [15]).
- the selector 1081 refers to the switching rule illustrated in FIG. 4 to perform selection and output according to i.
- the number of inputs to the selector 1801 is the number that i can take (9 in the example shown in FIG. 4).
- the right shift circuits 108 and 109 perform bit shift on the data to be processed by the number of times corresponding to the number of times of operation repetition i.
- the input D [15: 0] is right-shifted by i bits to become R [15: 0].
- the arithmetic circuits 110 and 111 perform a 1 ⁇ ( ⁇ 1) operation or a 2 ⁇ ( ⁇ 2) operation on the input value.
- the arithmetic circuits 110 and 111 realize a 1 ⁇ ( ⁇ 1) operation by passing the input value and a 2 ⁇ ( ⁇ 2) operation by shifting the input register value by 1 bit to the left.
- n determined by the determination circuit 105 when n determined by the determination circuit 105 is +2 or -2, the arithmetic circuits 110 and 111 perform ⁇ 2 arithmetic operation. On the other hand, when n determined by the determination circuit 105 is +1 or -1, the arithmetic circuits 110 and 111 perform x1 arithmetic operation.
- the calculation result of the calculation circuit 110 is input to the calculation circuit 112, and the calculation result of the calculation circuit 111 is input to the calculation circuit 113.
- the arithmetic circuits 112 and 113 output (through) (+) or invert (-) the input value.
- the output from the determination circuit 105 is input to the arithmetic circuits 112 and 113.
- the arithmetic circuits 112 and 113 select and set a code according to the code of n determined by the determination circuit 105.
- the control unit 10 controls the arithmetic processing in the arithmetic processing circuit 1.
- the control unit 10 operates according to an instruction from the program.
- the control unit 10 has a function as an instruction decoder, decodes the content of the instruction read in an instruction register (not shown), and controls the arithmetic processing circuit 1.
- the memory 11 is, for example, a RAM (Random Access Memory).
- the memory 11 stores, for example, initial values of the registers 101 to 104.
- the initial value is provided according to the type of arithmetic processing (exponential arithmetic and logarithmic arithmetic).
- the control unit 10 initializes the registers 101 to 104 at the start of the arithmetic processing in the arithmetic processing circuit 1.
- the control unit 10 may perform initialization by reading an initial value corresponding to the type of operation executed in the arithmetic processing circuit 1 from the memory 11 and storing it in the registers 101 to 104.
- the control unit 10 also reads out and outputs the calculation result from the registers 101 to 104 that store the result of the calculation process.
- the control unit 10 may store the information (see FIG. 2) in which the index and the entry referred to by the Log Table circuit 106 are associated with each other in the memory 11 and provide the information to the Log Table circuit 106 as appropriate.
- control unit 10 may store the switching rule (see FIG. 4) of the selector 1081 referred to by the right shift circuits 108 and 109 in the memory 11 and provide it to the right shift circuits 108 and 109 as appropriate.
- the control unit 10 may also give an instruction to start the arithmetic processing in the arithmetic processing circuit 1.
- the control unit 10 may manage i, which indicates the number of iterations (loops) of computation in the computation processing circuit 1.
- the control unit 10 may count i, and compare the value of i with a preset threshold value (imax) to determine that the loop has ended.
- step A1 the control unit 10 confirms the calculation type. If the calculation type is exponential calculation (see EXP route in step A1), the process proceeds to step A2.
- step A3 the arithmetic processing circuit 1 sets a prescribed first number (first bit number: 1 bit, for example) as the number of bits to be obtained per cycle.
- step A4 the arithmetic processing circuit 1 sets a second number (second bit number: for example, 2 bits) larger than the first number as the number of bits to be obtained per cycle.
- the right shift circuits 108 and 109 execute right shift operations according to the set number of shifts.
- step A5 the determination circuit 105 selects n based on L i .
- step A6 the exponential operation is executed with the number of bits according to the first number or the second number set in step A3 or step A4.
- step A7 the control unit 10 confirms whether the exponentiation operation is completed. If the result of this confirmation is that the exponentiation operation has not ended (see NO route in step A7), the value of i is incremented (i ++) in step A8, and the flow returns to step A2.
- step A7 when the exponential calculation is completed (see YES route in step A7), the process proceeds to step A15.
- step A15 the values of the registers 103 and 104 are output as the result of the E i calculation.
- step A1 if the result of the confirmation in step A1 is that the operation type is logarithmic operation (see the LOG route of step A1), the process proceeds to step A9.
- step A10 the arithmetic processing circuit 1 sets a prescribed first number (first bit number: 1 bit, for example) as the number of bits to be obtained per cycle.
- step A11 the arithmetic processing circuit 1 sets a second number (second bit number: for example, 2 bits) larger than the first number as the number of bits to be obtained per cycle.
- the right shift circuits 108 and 109 execute right shift operations according to the set number of shifts.
- step A12 the determination circuit 105 selects n based on E i .
- step A6 the logarithmic operation is executed with the number of bits according to the first number or the second number set in step A10 or step A11.
- step A13 the control unit 10 confirms whether the logarithmic calculation is completed. As a result of this confirmation, when the logarithmic calculation is not completed (see NO route in step A13), the value of i is incremented (i ++) in step A14, and then the process returns to step A9.
- step A13 If, as a result of the confirmation in step A13, the logarithmic calculation is completed (see YES route in step A13), the process proceeds to step A15.
- step A15 the values of the registers 101 and 102 are output as the result of the Li calculation.
- step B1 the control unit 10 confirms the type of calculation. If the calculation type is exponential calculation (see EXP route in step B1), the process proceeds to step B2.
- step B2 the registers 101 to 104 are initialized.
- the initialization of the register is performed by the control unit 10, for example.
- LS + LC L 1
- x is set in either one of LS and LC and 0 is set in the other.
- ES + EC E 1
- 1 is set to either ES or EC and 0 is set to the other.
- step B3 a loop process for repeatedly executing the control up to step B11 is started until i reaches a predetermined maximum value (imax) in the exponent calculation of the processing target.
- step B7 the determination circuit 105 determines the magnitude relationship and difference between L i and 0, and selects the value of n where L i is closest to 0.
- the Log Table circuit 106 outputs the value of log (1 + n * 2 ⁇ -A) corresponding to i and n selected by the determination circuit 105.
- step B11 loop end processing corresponding to step B3 is performed.
- i imax
- step B12 E i is output to the processing unit in the subsequent stage (for example, another arithmetic circuit or the like), and the processing ends.
- step B1 As a result of checking the operation type in step B1, if the operation type is logarithmic operation (see LOG route of step B1), the process proceeds to step B13.
- step B13 the registers 101 to 104 are initialized.
- the initialization of the register is performed by the control unit 10, for example.
- LS + LC L 1 , and for example, 0 is set for each of LS and LC.
- ES + EC E 1 , and x is set to either ES or EC and 0 is set to the other.
- step B14 a loop process for repeatedly performing the control up to step B22 is started until i reaches a predetermined maximum value (imax) in the exponent calculation of the processing target.
- step B18 the determination circuit 105 determines the magnitude relationship and difference between E i and 1, and selects the value of n at which E i is closest to 0.
- the Log Table circuit 106 outputs the value of log (1 + n * 2 ⁇ -A) corresponding to i and n selected by the determination circuit 105.
- step B22 loop end processing corresponding to step B14 is performed.
- i imax
- step B23 L i is output to the subsequent processing unit (for example, another arithmetic circuit or the like), and the process is terminated.
- the subsequent processing unit for example, another arithmetic circuit or the like
- FIG. 7 is a diagram showing a configuration example in which the arithmetic processing circuit 1 as an example of the above-described embodiment is mounted on, for example, a processor for applications such as deep learning.
- a processor for deep learning, etc. has a plurality of arithmetic units as shown in FIG. 7, and performs parallel arithmetic.
- Each arithmetic unit is provided with an EXP / LOG arithmetic unit that performs exponential arithmetic and logarithmic arithmetic, and as shown in FIG. 7, the arithmetic processing circuit 1 may be used as the EXP / LOG arithmetic unit provided in the processor.
- the processor illustrated in FIG. 7 includes an instruction unit, a plurality of register files # 1 to #m, and a plurality of execution units # 1 to #m.
- Each execution unit includes a plurality (n) of arithmetic units # 1 to #n, and the arithmetic processing circuit 1 is provided in these arithmetic units.
- the processor system illustrated in FIG. 7 has a large occupation ratio of the arithmetic units to the whole, but by applying the arithmetic processing circuit 1 to each such arithmetic unit, the effect of reducing the circuit scale of the arithmetic units can be obtained. Can be played.
- control unit 11 memory 12 processor 101-104 register 105 determination circuit 107, 114 CSA 106 Log Table circuit 108, 109 Right shift circuit 110-113 Operation circuit 1081 Selector
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
指数演算または対数演算を行なう演算回路107,114と、演算回路107,114による演算繰り返し回数が閾値以下の場合に、1サイクル当たりに演算回路107,114が求めるビット数を第1数に設定し、演算繰り返し回数が閾値よりも多い場合に、1サイクル当たりに演算回路107,114が求めるビット数を、第1数よりも多い第2数に設定する設定部106,108,109とを備えることで、回路規模を大きくすることなく指数演算または対数演算において解に収束できるようにする。
Description
本発明は、演算処理装置および演算処理装置の制御方法に関する。
図8は従来の演算処理回路500の構成を示す図である。
この図8に示す演算処理回路500は、レジスタ501~504,判定回路505,CSA(Carry-Save Adder:桁上げ保存加算器)506,507,Log Table回路508,右シフト回路(RSFT)509,510および演算回路511~514を備える。
この図8に示す演算処理回路500は、レジスタ501~504,判定回路505,CSA(Carry-Save Adder:桁上げ保存加算器)506,507,Log Table回路508,右シフト回路(RSFT)509,510および演算回路511~514を備える。
演算処理回路500は指数(EXP)演算および対数(LOG)演算を行なう演算回路である。例えば、演算1回で商2bitを求めるradix-4のSTL(Sequential Table Lookup)法を用いる。
演算処理回路500は、指数演算において、xを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
Liの算出(Li演算)には、以下の式(1)を用いる。
Li+1= Li - log(1 + n × 2^-2i) ・・・(1)
Li+1= Li - log(1 + n × 2^-2i) ・・・(1)
また、Eiの算出(Ei演算)には、以下の式(2)を用いる。
Ei+1= Ei × (1 + n × 2^-2i)
=Ei+ Ei × n × 2^-2i ・・・(2)
Ei+1= Ei × (1 + n × 2^-2i)
=Ei+ Ei × n × 2^-2i ・・・(2)
ただし、n = -2, -1, 0, +1, +2であり、Liと0との大小関係および差分を判定し、Liが0に一番近づくようにnを選ぶ。
なお、レジスタ501,502,503,504に格納される値(レジスタ値)を、それぞれLS,LC,ES,ECという場合がある。また、レジスタ501,502,503,504を、それぞれレジスタLS,LC,ES,ECという場合がある。
演算処理回路500においては、初期値をL1 = x,E1 = exp(0) = 1となるよう、レジスタ501~504の初期化が行なわれる。
なお、LS + LC = L1であり、例えば、LSとLCとのいずれか一方にxを設定し、他方に0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方に1を設定し、他方に0を設定する。
演算処理回路500においては、x = log(Ei) + Liを満たしつつ、演算を繰り返してLiを少しずつ0に近づけることで、Eiがexp(x)に近づく(Li=x→0、Ei=exp(0)→exp(x))。
すなわち、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、Liを算出するLi演算とEiを算出するEi演算とを繰り返し行なう。
演算処理回路500は、対数演算において、xを入力とし、log(x)を求める。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
初期値をL1= log(1) = 0,E1 = xとし、x = Ei × exp(Li)を満たしつつ、演算を繰り返してEiを少しずつ1に近づけることで、Liがlog(x)に近づく(Ei=x→1、Li=log(1)→log(x))。
対数演算におけるLiおよびEiの演算方法(Li演算,Ei演算)は概ね指数演算と同様であるが、nの選び方は異なる。すなわち、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくようにnを選ぶ。
演算処理回路500において、Log Table回路508およびCSA506が、指数演算または対数演算におけるLi演算を実現する。また、右シフト回路509,510,演算回路511~514およびCSA507が、指数演算または対数演算におけるEi演算を実現する。
指数演算を行なう場合、判定回路505は、Liに基づき、nを選択する。判定回路505は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。一方、対数演算を行なう場合、判定回路505は、Eiに基づき、nを選択する。判定回路505は、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくnの値を選択する。選択されたnはLog Table回路508に出力される。
Log Table回路508には、予め変数i, nに対応するlog(1+n*2^-2i)の値が設定されており、iと判定回路505から入力されるnとに応じたlog(1+n*2^-2i)の値をCSA506に出力する。
CSA506は、桁上を伝播させずにそのまま出力する加算器であり、上記式(1)を用いてLi演算(参照)を行なう。CSA506の出力(演算結果)のうち部分和ビットの列は、レジスタ501に入力される。一方、CSA506の出力(演算結果)のうち桁上げビットの列はレジスタ502に入力される。
また、右シフト回路509,510,演算回路511~514およびCSA507が、指数演算におけるEi演算(上記式(2)参照)を実現する。
右シフト回路509,510は、レジスタ503,504から読み出された値ES,ECに対して2iビットの右シフト演算を行なうことで2^-2i倍算を実現する。これにより、上記式(2)の2^-2iの演算が実現される。なお、その後、演算回路511~514によりEi×n×2^-2iの演算が実現される。
演算回路511,512は、右シフト回路509,510から出力された値に対して、1倍(×1)演算または2倍(×2)演算を行なう。例えば、判定回路505において決定されたnが+2または-2である場合に、演算回路511,512は×2演算を行なう。一方、判定回路505において決定されたnが+1または-1である場合に、演算回路511,512は×1演算を行なう。
演算回路513,514は、演算回路511,512から出力された値をスルー(+)または符号反転(-)して出力する。例えば、判定回路505において決定されたnが+2,+1,0のいずれかである場合に、演算回路513,514はスルー出力する。一方、判定回路505において決定されたnが-2または-1である場合に、演算回路513,514は符号反転して出力する。
CSA507は、桁上を伝播させずにそのまま出力する加算器であり、上記式(2)を用いてEi演算を行なう。CSA507の出力(演算結果)のうち部分和ビットの列は、レジスタ503に入力される。一方、CSA507の出力(演算結果)のうち桁上げビットの列はレジスタ504に入力される。
演算処理回路500においては、指数演算の結果としてレジスタ503,504の値Eiを出力し、対数演算の結果としてレジスタ501,502の値Liを出力する。
しかしながら、このような従来の演算処理回路500においては、指数演算を行なう場合に、Liが0から遠い時点では、1回の演算でEiがexp(x)に十分近づかず、結果として演算を繰り返してもEiがexp(x)に収束しないことがある。同様に、対数演算を行なう場合に、Eiが1から遠い時点では、1回の演算でLiがlog(x)に十分近づかず、結果として演算を繰り返してもLiがlog(x)に収束しないことがある。EiもしくはLiが解にある程度近い範囲にあることを想定しているのに対し、繰り返し回数(i)が少ない時点では、その範囲から外れる場合があるからである。
すなわち、演算を繰り返しても指数演算のEiもしくは対数演算のLiが解に収束しない場合がある。
図9は上述の如き演算処理回路500による問題を解消するための従来の演算処理回路600の構成を示す図である。
この図9に示す演算処理回路600においては、図8に示した演算処理回路500の判定回路505に代えて判定回路601,1st_nテーブル回路602およびセレクタ603を備える。また、演算処理回路500の演算回路511,512に代えて演算回路604,605を備えるとともに、Log Table回路508に代えてLog Table回路606を備える。その他の部分は図8の演算処理回路500と同様に構成されている。
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
この図9に示す演算処理回路600においては、演算1回目(i=1)だけnの選択論理を変更する。
1st_nテーブル回路602および判定回路601の各出力がセレクタ603に入力される。
1st_nテーブル回路602は、演算1回目(i=1)においてのみ参照される参照テーブル(lookup table)である。演算1回目(i=1)だけ、L1もしくはE1(つまり入力x)をインデックスとして1st_nテーブル回路602が参照され、セレクタ603は1st_n テーブル回路602の出力を選択して出力する。
なお、演算2回目以降は、セレクタ603は判定回路601の出力を選択して出力する。また、判定回路601においては、図8に示した判定回路505に比べてnの選択肢に±3が追加されている。すなわち、判定回路601は、選択肢nとして、-3,-2,-1,0,+1,+2,+3を有する。
セレクタ603の出力は、演算回路513,514,604,605およびLog Table回路606に入力される。
Log Table回路606においては、Log Table回路508に比べて、エントリにn=-3,+3に対応する値を追加して備える。
演算回路604,605は、それぞれ、×1 or ×2 or ×3回路であり、判定回路601から出力されるnに応じて、スルー(×1)または、左シフト(×2)または×3乗算のいずれかを行なう。
しかしながら、このような図9に示す従来の演算処理回路600においては、1st_nテーブル回路602やセレクタ603,演算回路604,605を備えることで、回路規模が大きくなる。これにより、クリティカルパスの論理段数が多くなり、ディレイが大きくなるという課題がある。
本発明は、このような課題に鑑み創案されたもので、回路規模を大きくすることなく指数演算または対数演算において解に収束できるようにすることを目的とする。
上記の目的を達成するために、この演算処理装置は、指数演算または対数演算を行なう演算回路と、前記演算回路による演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する設定部とを備える。
回路規模を大きくすることなく指数演算または対数演算において解に収束できる。
以下、図面を参照して本演算処理装置および演算処理装置の制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
図1は実施形態の一例としての演算処理回路1の構成を例示する図である。
演算処理回路(演算器)1は、例えば情報処理装置のプロセッサ(演算処理装置)に備えられ、演算を実現する。図1に示す演算処理回路1は、指数(EXP)演算および対数(LOG)演算の2種類の演算を実現する演算処理回路である。すなわち、本演算処理回路1は、指数演算および対数演算のいずれかを選択的に実現する。
[指数演算]
指数演算においては、例えば、演算1回で商2bitを求めるradix4のSTL(Sequential Table Lookup)法を用いてもよい。
例えば、xを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
指数演算においては、例えば、演算1回で商2bitを求めるradix4のSTL(Sequential Table Lookup)法を用いてもよい。
例えば、xを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
初期値をL1= x,E1 = exp(0) = 1とし、x = log(Ei) + Liを満たしつつ、演算を繰り返してLiを少しずつ0に近づけることで、Eiがexp(x)に近づく(Li=x→0、Ei=exp(0)→exp(x))。
[対数演算]
対数演算にSTL法を用いてもよい。
例えば、xを入力とし、log(x)を求める。
対数演算にSTL法を用いてもよい。
例えば、xを入力とし、log(x)を求める。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
初期値をL1= log(1) = 0,E1 = xとし、x = Ei × exp(Li)を満たしつつ、演算を繰り返してEiを少しずつ1に近づけることで、Liがlog(x)に近づく(Ei=x→1、Li=log(1)→log(x))。
対数演算におけるLiおよびEiの演算方法(Li演算,Ei演算)は概ね指数演算と同様であるが、nの選び方は異なる。すなわち、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくようにnを選ぶ。
(A)構成
図1に示す演算処理回路1は、レジスタ101~104,判定回路105,CSA107,114,Log Table回路106,右シフト回路(RSFT2)108,109および演算回路110~113を備える。
図1に示す演算処理回路1は、レジスタ101~104,判定回路105,CSA107,114,Log Table回路106,右シフト回路(RSFT2)108,109および演算回路110~113を備える。
以下、レジスタ101をレジスタLSと表す場合がある。同様に、レジスタ102をレジスタLCと表す場合があり、レジスタ103をレジスタESと表す場合があり、レジスタ104をレジスタECと表す場合がある。
レジスタ101は、判定回路105およびCSA107にそれぞれ接続されている。レジスタ101には、後述するCSA107によるLi演算の結果(sum)が格納される。すなわち、レジスタ101には、演算処理の過程でCSA107によって生成された演算途中値が格納される。
また、レジスタ101から読み出されたレジスタ値Liは、判定回路105およびCSA107のそれぞれに入力される。
レジスタ102は、判定回路105およびCSA107にそれぞれ接続されている。レジスタ102にCSA107によるLi演算の結果(carry)が格納される。すなわち、レジスタ102には、演算処理の過程でCSA107によって生成された演算途中値が格納される。
レジスタ102から読み出されたレジスタ値Liは判定回路105およびCSA107のそれぞれに入力される。
Log Table回路106およびCSA107が、指数演算または対数演算におけるLi演算を実現する。右シフト回路108,109,演算回路110~113およびCSA114が、指数演算または対数演算におけるEi演算を実現する。
ここで、本演算処理回路1においては、繰り返し回数(i)が少ない時点、すなわちiが閾値k以下の時点では1サイクルあたりに求めるビット数(第1数)を少なくする(例えば、1回)。そして、繰り返し回数(i)が閾値kよりも大きくなった以降は1サイクルあたりに求めるビット数(第2数)を増やす(例えば、2回以上)。第2数は第1数よりも多くする。
なお、n = -2, -1, 0, +1, +2である。
本実施形態においては、i≦kのときには1サイクルあたりに求めるビット数(第1数)は1であり、i>kのときには1サイクルあたりに求めるビット数(第2数)は2である。
本実施形態においては、i≦kのときには1サイクルあたりに求めるビット数(第1数)は1であり、i>kのときには1サイクルあたりに求めるビット数(第2数)は2である。
指数演算を行なう場合、判定回路105は、Liに基づき、nを選択する。判定回路105は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。対数演算を行なう場合、判定回路105は、Eiに基づき、nを選択する。判定回路105は、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくnの値を選択する。
判定回路105によって決定されたnの値は、演算回路110~113およびLog Table回路106に入力される。
Log Table回路106は、log(1+n*2^-A)の値を出力する。ここで、i≦kのとき A=iであり、i>kのときA=2i-kである。
Log Table回路106には、変数であるi, nに対応するlog(1+n*2^-A)の値が予め設定されており、iと判定回路105から入力されるnとに応じたlog(1+n*2^-A)の値を出力する。
すなわち、Log Table回路106は、インデックスとしてiおよびnを有し、エントリとしてlog(1+n×2^-i)やlog(1+n×2^-(2i-k))の各値を有する。
図2は実施形態の一例としての演算処理回路1におけるLog Table回路106のインデックスとエントリとの関係を例示する図である。
この図2においては、1≦i≦9であり、k=3の例について示す。また、図2中においては、便宜上、各エントリをlogを冠した対数の形式で示しているが、実際には各エントリには対数を計算した数値が保持される。また、図2中において“don't care”が示された箇所は選択されることがない。
Log Table回路106は、入力されたiおよびnに対応するエントリの値をCSA107に出力する。
なお、Log Table回路106は、図2に例示するようなインデックスとエントリとを対応付けた情報を図示しない記憶装置に格納し、iおよびnが入力された場合に、この情報を、入力されたi,nをインデックスとして参照して、対応するエントリの値を取得し、出力してもよい。
また、Log Table回路106は、図2に例示するような情報を制御ユニット10等から取得してもよい。
CSA107は、3入力-2出力(3 in - 2 out)の桁上げ保存加算器であり、レジスタ101,102およびLog Table回路106から各出力が入力される。また、このCSA107の出力(演算結果)のうち、部分和ビットの列はレジスタ101に入力される。一方、CSA107の出力(演算結果)のうち、桁上げビットの列はレジスタ102に入力される。
CSA107は、Li+1の演算(Li演算)を行なう。CSA107は、Log Table回路106から出力されたlog(1+n*2^-A)の値を用いて、上記式(3)に基づきLiを算出する。
レジスタ103は、判定回路105,右シフト回路108およびCSA114にそれぞれ接続されており、このレジスタ103に後述するCSA114によるEi演算の結果(sum)が格納される。すなわち、レジスタ103には、演算処理の過程でCSA114によって生成された演算途中値が格納される。
レジスタ103から読み出されたレジスタ値Eiは、判定回路105,右シフト回路108およびCSA114のそれぞれに入力される。
レジスタ104は、判定回路105,右シフト回路109およびCSA114にそれぞれ接続されている。このレジスタ104にCSA114によるEi演算の結果(carry)が格納される。すなわち、レジスタ104には、演算処理の過程でCSA114によって生成された演算途中値が格納される。
レジスタ104から読み出されたレジスタ値Eiは、判定回路105,右シフト回路109およびCSA114のそれぞれに入力される。
CSA114は、4入力-2出力(4 in - 2 out)の桁上げ保存加算器であり、レジスタ103,104および演算回路112,113からの各出力が入力される。
CSA114は、指数演算または対数演算に用いられる。CSA114は、Ei+1の演算を行なう。CSA114は、レジスタ103,104および演算回路112,113のそれぞれから出力された値を用いて、上記式(3)に基づきEiを算出する。
CSA114の出力(演算結果)のうち部分和ビットの列は、レジスタ103に入力される。一方、CSA114の出力(演算結果)のうち桁上げビットの列はレジスタ104に入力される。
右シフト回路108,109は、処理対象データのビット列に対して右シフトを行なうものであり、処理対象データに対して、演算繰り返し回数iに応じた数のビットシフトを行なう。右シフト回路108は、レジスタ103のレジスタ出力ESに対して、また、右シフト回路109は、レジスタ104のレジスタ出力ECに対して、それぞれ右シフト演算を行なうことで、Ei×2^-iの演算またはEi×2^-(2i-k)の演算を実現する。
右シフト回路108,109は、i≦kのとき Ei×2^-iの演算を行ない、i>kのときEi×2^-(2i-k)の演算を行なう。
右シフト回路108,109は、iだけEiを右シフトすることでEi×2^-iの演算を実現し、2i-kだけEiを右シフトすることでEi×2^-(2i-k)の演算を実現する。なお、右シフト回路108,109は互いに同様の構成を有する。
図3は実施形態の一例としての演算処理回路1における右シフト回路108,109の回路構成を例示する図、図4は図3に例示した右シフト回路108,109のセレクタ1081の切り替えルールを例示する図である。
右シフト回路108,109は図4に例示する切り替えルールに従って各セレクタ1081による選択出力を行なうことで、i≦kの場合にEi×2^-iの演算結果の出力を行ない、i>kの場合にEi×2^-(2i-k)の演算結果の出力を実現する。
図3および図4においてはデータ幅が16bitの右シフト回路108,109を例示しており、また、k=3の場合について示すものとする。
D[15:0]は、シフト対象のデータを示し、R[15:0]はシフト後のデータを示す。なお、[15]は符号ビットである。また、iは繰り返し演算の回数である。
右シフト回路108,109は、Rの各ビット(R[0]~R[15])に対し、Dを入力とするセレクタ1081をそれぞれ備える。セレクタ1081は、図4に例示する切り替えルールを参照してiに応じた選択および出力を行なう。セレクタ1801の入力数はiのとり得る数(図4に示す例では9)である。
図4に例示する切り替えルールにおいて、例えばR[0]は、i≦3の場合にはシフト量がiのデータが出力データとして選択され、i≧4の場合にはシフト量が2i-kのデータが出力データとして選択されている。すなわち、右シフト回路108,109においては、閾値k(図4に示す例ではk=3)を境にシフト量が変更され、i≦3の場合にEi×2^-iの演算によりシフト量=iビットとなり、i>kの場合にEi×2^-(2i-k)の演算によりシフト量=2i-kビットとなる。
このように、右シフト回路108,109は、処理対象データに対して、演算繰り返し回数iに応じた数のビットシフトを行なう。入力D[15:0]がiビット右シフトしたものがR[15:0]となる。
演算回路110,111は、入力された値に対して、1倍(×1)演算または2倍(×2)演算を行なう。演算回路110,111は、入力された値をスルーすることで1倍(×1)演算を実現し、入力されたレジスタ値を1bit左シフトすることで2倍(×2)演算を実現する。
例えば、判定回路105において決定されたnが+2または-2である場合に、演算回路110,111は×2演算を行なう。一方、判定回路105において決定されたnが+1または-1である場合に、演算回路110,111は×1演算を行なう。
演算回路110による演算結果は演算回路112に入力され、演算回路111による演算結果は演算回路113に入力される。
演算回路112,113は、入力された値をスルー(+)または符号反転(-)して出力する。演算回路112,113には、判定回路105からの出力が入力される。演算回路112,113は、判定回路105において決定されたnの符号に応じた符号を選択して設定する。
制御ユニット10は本演算処理回路1における演算処理を制御する。制御ユニット10は、プログラムからの指示で動作する。
制御ユニット10は、命令デコーダとしての機能を備え、図示しない命令レジスタに読み込まれた命令の内容を解読し、本演算処理回路1を制御する。
メモリ11は、例えばRAM(Random Access Memory)である。メモリ11には、例えば、各レジスタ101~104の初期値が格納されている。初期値は演算処理の種類(指数演算および対数演算)に応じて、それぞれ備えられている。
制御ユニット10は、本演算処理回路1における演算処理の開始時に、各レジスタ101~104の初期化を行なう。制御ユニット10は本演算処理回路1において実行する演算種類に応じた初期値をメモリ11から読み出し、各レジスタ101~104に格納することで初期化を行なってもよい。
また、制御ユニット10は、演算処理の結果を格納するレジスタ101~104から演算結果を読み出し、出力させる。
制御ユニット10は、Log Table回路106が参照するインデックスとエントリとを対応付けた情報(図2参照)を、メモリ11に格納し、適宜、Log Table回路106に提供してもよい。
また、制御ユニット10は、右シフト回路108,109が参照するセレクタ1081の切り替えルール(図4参照)をメモリ11に格納し、適宜、右シフト回路108,109に提供してもよい。
また、制御ユニット10は、本演算処理回路1における演算処理の開始指示を行なってもよい。
制御ユニット10は、本演算処理回路1における演算の繰り返し(ループ)回数を示すiを管理してもよい。制御ユニット10は、iのカウントを行ない、このiの値と予め設定された閾値(imax)とを比較することでループが終わったという判断を行なってもよい。
(B)動作
上述の如く構成された実施形態の一例としての演算処理回路1の処理の概要を、図5に示すフローチャート(ステップA1~A15)に従って説明する。
上述の如く構成された実施形態の一例としての演算処理回路1の処理の概要を、図5に示すフローチャート(ステップA1~A15)に従って説明する。
ステップA1において、制御ユニット10は演算種類の確認を行なう。演算種類が指数演算である場合には(ステップA1のEXPルート参照)、ステップA2に移行する。
ステップA2において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップA2のYESルート参照)、ステップA3に移行する。ステップA3において、演算処理回路1は、1サイクルあたりに求めるビット数として規定の第1の数(第1のビット数:例えば1bit)を設定する。
一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップA2のNOルート参照)、ステップA4に移行する。ステップA4において、演算処理回路1は、1サイクルあたりに求めるビット数として、第1の数よりも多い第2の数(第2のビット数:例えば2bit)を設定する。右シフト回路108,109が、設定されたシフト数に応じた右シフト演算を実行する。
ステップA5において、判定回路105は、Liに基づいてnを選択する。
ステップA6において、ステップA3またはステップA4において設定された第1の数または第2の数に応じたビット数で、指数演算が実行される。
ステップA7において、制御ユニット10は指数演算が終了したかを確認する。この確認の結果、指数演算が終了していない場合には(ステップA7のNOルート参照)、ステップA8においてiの値をインクリメント(i++)した後、ステップA2に戻る。
また、ステップA7における確認の結果、指数演算が終了している場合には(ステップA7のYESルート参照)、ステップA15に移行する。
ステップA15においては、レジスタ103,104の値がEi演算の結果として出力される。
一方、ステップA1における確認の結果、演算種類が対数演算である場合には(ステップA1のLOGルート参照)、ステップA9に移行する。
ステップS9において、制御ユニット10は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップA9のYESルート参照)、ステップA10に移行する。ステップA10において、演算処理回路1は、1サイクルあたりに求めるビット数として規定の第1の数(第1のビット数:例えば1bit)を設定する。
一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップA9のNOルート参照)、ステップA11に移行する。ステップA11において、演算処理回路1は、1サイクルあたりに求めるビット数として、第1の数よりも多い第2の数(第2のビット数:例えば2bit)を設定する。右シフト回路108,109が、設定されたシフト数に応じた右シフト演算を実行する。
ステップA12において、判定回路105は、Eiに基づいてnを選択する。
その後、ステップA6において、ステップA10またはステップA11において設定された第1の数または第2の数に応じたビット数で、対数演算が実行される。
ステップA13において、制御ユニット10は対数演算が終了したかを確認する。この確認の結果、対数演算が終了していない場合には(ステップA13のNOルート参照)、ステップA14においてiの値をインクリメント(i++)した後、ステップA9に戻る。
また、ステップA13における確認の結果、対数演算が終了している場合には(ステップA13のYESルート参照)、ステップA15に移行する。
ステップA15においては、レジスタ101,102の値がLi演算の結果として出力される。
次に、実施形態の一例としての演算処理回路1における演算処理を、図6に示すフローチャート(ステップB1~B23)に従って説明する。
演算処理の開始に際して、xが入力される。ステップB1において、制御ユニット10は演算種類の確認を行なう。演算種類が指数演算である場合には(ステップB1のEXPルート参照)、ステップB2に移行する。
ステップB2において、レジスタ101~104の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット10によって行なわれる。例えば、レジスタ101~104に対して、L1=x,E1=1となるように初期化が行なわれる。なお、LS + LC = L1であり、例えば、LSとLCとのいずれか一方にxを設定し、他方に0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方に1を設定し、他方に0を設定する。
ステップB3において、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、ステップB11までの制御を繰り返し実施するループ処理を開始する。
ステップB4において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップB4のYESルート参照)、ステップB5において、A=iが設定される。一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップB4のNOルート参照)、ステップB6において、A=2i-kが設定される。
その後、ステップB7において、判定回路105は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。
ステップB8において、Log Table回路106は、iと判定回路105によって選択されたnとに対応するlog(1+n*2^-A)の値を出力する。
ステップB9において、CSA107が、Log Table回路106から取得したlog(1+n*2^-A)を用いて、上記式(3)に基づきLi演算を行なう。すなわち、CSA107は、Li+1 = Li- log(1 + n × 2^-A)を算出する。
また、ステップB10において、右シフト回路108,109,演算回路110~113およびCSA114が、指数演算におけるEi演算(上記式(3)参照)を実現する。すなわち、CSA114等は、Ei+1 = Ei + Ei × n × 2^-A を算出する。
その後、制御がステップB11に進む。ステップB11では、ステップB3に対応するループ端処理が実施される。ここで、iがimaxに到達すると(i = imax)、ステップB12に移行する。
ステップB12において、Eiは後段の処理部(例えば、他の演算回路等)に出力され、処理を終了する。
ステップB1における演算種類の確認の結果、演算種類が対数演算である場合には(ステップB1のLOGルート参照)、ステップB13に移行する。
ステップB13において、レジスタ101~104の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット10によって行なわれる。例えば、レジスタ101~104に対して、L1=0,E1=xとなるように初期化が行なわれる。なお、LS + LC = L1であり、例えば、LSとLCとのそれぞれに0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方にxを設定し、他方に0を設定する。
ステップB14において、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、ステップB22までの制御を繰り返し実施するループ処理を開始する。
ステップB15において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップB15のYESルート参照)、ステップB16において、A=iが設定される。一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップB15のNOルート参照)、ステップB17において、A=2i-kが設定される。
その後、ステップB18において、判定回路105は、Eiと1との大小関係および差分を判定し、Eiが0に一番近づくnの値を選択する。
ステップB19において、Log Table回路106は、iと判定回路105によって選択されたnとに対応するlog(1+n*2^-A)の値を出力する。
ステップB20において、CSA107が、Log Table回路106から取得したlog(1+n*2^-A)を用いて、上記式(3)に基づきLi演算を行なう。すなわち、CSA107は、Li+1 = Li- log(1 + n × 2^-A)を算出する。
また、ステップB21において、右シフト回路108,109,演算回路110~113およびCSA114が、指数演算におけるEi演算(上記式(3)参照)を実現する。すなわち、CSA114等は、Ei+1 = Ei + Ei × n × 2^-A を算出する。
その後、制御がステップB22に進む。ステップB22では、ステップB14に対応するループ端処理が実施される。ここで、iがimaxに到達すると(i = imax)、ステップB23に移行する。
ステップB23において、Liは後段の処理部(例えば、他の演算回路等)に出力され、処理を終了する。
(C)効果
このように、実施形態の一例としての演算処理回路1によれば、演算の繰り返し回数iが閾値k以下の時点において、1サイクル当たりに求めるビット数を少なくするとともに、演算の繰り返し回数iが閾値kよりも多い時点において、1サイクル当たりに求めるビット数を多くする。これにより、指数演算のEiをexp(x)に、対数演算のLiをlog(x)にそれぞれ収束させることができる。
このように、実施形態の一例としての演算処理回路1によれば、演算の繰り返し回数iが閾値k以下の時点において、1サイクル当たりに求めるビット数を少なくするとともに、演算の繰り返し回数iが閾値kよりも多い時点において、1サイクル当たりに求めるビット数を多くする。これにより、指数演算のEiをexp(x)に、対数演算のLiをlog(x)にそれぞれ収束させることができる。
また、図9に示した従来の演算処理回路と比べて、1st_nテーブル回路等を備える必要がなく、回路規模を削減することができる。これにより、クリティカルパスの論理段数を減らし、ディレイを小さくすることができる。
すなわち、回路規模を大きくすることなく指数演算または対数演算において解に収束できるのである。
(D)その他
図7は上述した実施形態の一例としての演算処理回路1を、例えば、ディープラーニング等の用途のプロセッサに実装する構成例を示す図である。
図7は上述した実施形態の一例としての演算処理回路1を、例えば、ディープラーニング等の用途のプロセッサに実装する構成例を示す図である。
ディープラーニング等を用途とするプロセッサは、図7に例示するように、複数の演算器を備え、並列演算を行なう。
各演算器は、それぞれ指数演算および対数演算を行なうEXP/LOG演算器を備え、図7に示すように、プロセッサに備えられるEXP/LOG演算器として本演算処理回路1を用いてもよい。
図7に例示するプロセッサは、命令ユニットと、複数のレジスタファイル#1~#mと、複数の実行ユニット#1~#mを備える。
各実行ユニットは複数(n個)の演算器#1~#nを備え、これらの演算器に演算処理回路1が備えられる。
この図7に例示するプロセッサシステムは、全体に対する演算器の占有率が大きいものであるが、このような各演算器に本演算処理回路1を適用することで、演算器の回路規模削減の効果を奏することができる。
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
1 演算処理回路
10 制御ユニット
11 メモリ
12 プロセッサ
101~104 レジスタ
105 判定回路
107,114 CSA
106 Log Table回路
108,109 右シフト回路
110~113 演算回路
1081 セレクタ
10 制御ユニット
11 メモリ
12 プロセッサ
101~104 レジスタ
105 判定回路
107,114 CSA
106 Log Table回路
108,109 右シフト回路
110~113 演算回路
1081 セレクタ
Claims (8)
- 指数演算または対数演算を行なう演算回路と、
前記演算回路による演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する設定部と
を備えること特徴とする、演算処理装置。 - 前記設定部が、処理対象データのビット列に対して右シフトを行なう右シフト回路であって、
前記右シフト回路が、前記処理対象データに対して、前記演算繰り返し回数に応じた数のビットシフトを行なう
ことを特徴とする、請求項1に記載の演算処理装置。 - 前記演算回路が、指数演算を実施する指数演算回路であり、
演算繰り返し回数(i)が閾値以下の場合に、Li+1 = Li - log(1 + n × 2^-i)を演算し、
前記演算繰り返し回数(i)が前記閾値よりも多い場合に、Li+1 = Li- log(1 + n × 2^-(2i-k))を演算する
ことを特徴とする、請求項1または2記載の演算処理装置。 - 前記演算回路が、対数演算を実施する指数演算回路であり、
演算繰り返し回数(i)が閾値以下の場合に、Ei+1 = Ei + Ei× n × 2^-iを演算し、
前記演算繰り返し回数(i)が前記閾値よりも多い場合に、Ei+1 = Ei+ Ei × n × 2^-(2i-k)を演算する
ことを特徴とする、請求項1~3のいずれか1項に記載の演算処理装置。 - 指数演算または対数演算を行なう演算回路を備える演算処理装置において、
前記演算回路による演算繰り返し回数を確認する処理と、
前記演算回路による前記演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する処理
とを備えること特徴とする、演算処理装置の制御方法。 - 処理対象データのビット列に対して右シフトを行なう右シフト回路が、前記処理対象データに対して、前記演算繰り返し回数に応じた数のビットシフトを行なう
ことを特徴とする、請求項5に記載の演算処理装置の制御方法。 - 前記演算回路が、指数演算を実施する指数演算回路であり、
演算繰り返し回数(i)が閾値以下の場合に、Li+1 = Li - log(1 + n × 2^-i)を演算し、
前記演算繰り返し回数(i)が前記閾値よりも多い場合に、Li+1 = Li- log(1 + n × 2^-(2i-k))を演算する
ことを特徴とする、請求項5または6記載の演算処理装置の制御方法。 - 前記演算回路が、対数演算を実施する指数演算回路であり、
演算繰り返し回数(i)が閾値以下の場合に、Ei+1 = Ei + Ei× n × 2^-iを演算し、
前記演算繰り返し回数(i)が前記閾値よりも多いの場合に、Ei+1 = Ei+ Ei × n × 2^-(2i-k)を演算する
ことを特徴とする、請求項5~7のいずれか1項に記載の演算処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/040476 WO2020090025A1 (ja) | 2018-10-31 | 2018-10-31 | 演算処理装置および演算処理装置の制御方法 |
JP2020554661A JP7006808B2 (ja) | 2018-10-31 | 2018-10-31 | 演算処理装置および演算処理装置の制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/040476 WO2020090025A1 (ja) | 2018-10-31 | 2018-10-31 | 演算処理装置および演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020090025A1 true WO2020090025A1 (ja) | 2020-05-07 |
Family
ID=70462894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/040476 WO2020090025A1 (ja) | 2018-10-31 | 2018-10-31 | 演算処理装置および演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7006808B2 (ja) |
WO (1) | WO2020090025A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210365239A1 (en) * | 2020-05-25 | 2021-11-25 | Realtek Semiconductor Corp. | Logarithm calculation method and logarithm calculation circuit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02118725A (ja) * | 1988-10-28 | 1990-05-07 | Nec Corp | 対数関数演算装置 |
JPH0934693A (ja) * | 1995-07-21 | 1997-02-07 | Nec Corp | 指数対数変換回路 |
JP2009276990A (ja) * | 2008-05-14 | 2009-11-26 | Sharp Corp | 演算装置およびその演算方法、信号処理装置、演算装置制御プログラム、並びに該プログラムを記録した記録媒体 |
-
2018
- 2018-10-31 WO PCT/JP2018/040476 patent/WO2020090025A1/ja active Application Filing
- 2018-10-31 JP JP2020554661A patent/JP7006808B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02118725A (ja) * | 1988-10-28 | 1990-05-07 | Nec Corp | 対数関数演算装置 |
JPH0934693A (ja) * | 1995-07-21 | 1997-02-07 | Nec Corp | 指数対数変換回路 |
JP2009276990A (ja) * | 2008-05-14 | 2009-11-26 | Sharp Corp | 演算装置およびその演算方法、信号処理装置、演算装置制御プログラム、並びに該プログラムを記録した記録媒体 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210365239A1 (en) * | 2020-05-25 | 2021-11-25 | Realtek Semiconductor Corp. | Logarithm calculation method and logarithm calculation circuit |
Also Published As
Publication number | Publication date |
---|---|
JP7006808B2 (ja) | 2022-01-24 |
JPWO2020090025A1 (ja) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6540725B2 (ja) | 演算処理装置、方法、およびプログラム | |
JP6694880B2 (ja) | 有効度整合 | |
US8271571B2 (en) | Microprocessor | |
US11681497B2 (en) | Concurrent multi-bit adder | |
JPH1078863A (ja) | 浮動小数点式ハードウェアを用いたマイクロプロセッサ整数除法演算を実行するための方法および装置 | |
JP7096828B2 (ja) | 入力オペランド値を処理するための装置及び方法 | |
JPH0863353A (ja) | 掛け算累算命令を使用したデータ処理 | |
WO2013109532A1 (en) | Algebraic processor | |
KR100744216B1 (ko) | 계산 장치 및 방법과 컴퓨터 프로그램 저장 매체 | |
US20030212723A1 (en) | Computer methods of vector operation for reducing computation time | |
WO2020090025A1 (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP6877812B2 (ja) | 重複伝搬演算 | |
US9612800B2 (en) | Implementing a square root operation in a computer system | |
JPH0234054B2 (ja) | ||
US20150178045A1 (en) | Partially and Fully Parallel Normaliser | |
US7016927B2 (en) | Method and apparatus for modular multiplication | |
CN115079997A (zh) | 对数执行硬件高效无偏舍入的方法 | |
JP2007500388A (ja) | 長整数乗算器 | |
JP7131627B2 (ja) | 演算処理装置 | |
Maxfield | An introduction to different rounding algorithms | |
JP2003084969A (ja) | 浮動小数点剰余演算器、情報処理装置及びコンピュータプログラム | |
JP7120320B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
KR100900790B1 (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
JPH10333883A (ja) | 乗算方法および乗算回路 | |
TW202427178A (zh) | 處理電路及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18938969 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020554661 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18938969 Country of ref document: EP Kind code of ref document: A1 |