This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2017-111695, filed on Jun. 6, 2017, the entire contents of which are incorporated herein by reference.
The embodiments discussed herein are related to an operation processing apparatus, an information processing apparatus, and a method of controlling an operation processing apparatus.
In a multiprocessor system, a plurality of processors are used.
Related technique are disclosed in Japanese Laid-open Patent Publication No. 64-57366, or Japanese Laid-open Patent Publication No. 60-37064.
According to an aspect of the embodiments, an operation processing apparatus includes: a plurality of operation elements; a plurality of first data storages disposed so as to correspond to the respective operation elements and each configured to store first data; and a shared data storage shared by the plurality of operation elements and configured to store second data, each of the plurality of operation elements are configured to perform an operation using the first data and the second data.
The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed.
In a multiprocessor system, for example, a set of vector registers is shared by at least two or more processors such that the processors are capable of accessing these vector registers. Each vector register has a capability of identifying processors that are allowed to access the vector register and a capability of storing a vector register value including a plurality of pieces of vector element data. Each vector register also has a capability of displaying a status of each vector element data and controlling a condition of referring to the vector element data.
The multiprocessor system includes, for example, a central storage apparatus having a plurality of access paths, a plurality of processing apparatuses, and a connection unit. Each of the plurality of processing apparatuses has an internal information path and is connected to the access path to the central storage apparatus via a plurality of ports. Each port is configured to receive a reference request from a processing apparatus via the internal information path and generate and control a memory reference to the central storage apparatus via the access path. The connection unit connects one or more shared registers to information paths of the respective processing apparatuses such that the one or more shared registers are allowed to be accessed at a rate corresponding to an internal operation speed of the processors.
In the multiprocessor system, use of a plurality of processors makes it possible to increase the operation speed. For example, in a case where a large amount of data is transferred in an operation performed by the processors, it takes a long time to transfer the data, and thus a reduction in operation efficiency occurs even if the number of processors provided in the multiprocessor system is increased. For example, in a case where the vector register has a large capacity, this may result in an increase in area size of the and an increase in cost.
For example, an operation processing apparatus may be provided that is configured to reduce the amount of data transferred in an operation performed by an operation unit and/or to reduce the capacity of a data storage unit.
The operation processing apparatus 101 is, for example, a processor and includes a load/store unit 104, a control unit 105, and an execution unit 106. The control unit 105 controls the load/store unit 104 and the execution unit 106. The load/store unit 104 includes a cache memory 107 and is configured to input/output data from/to the input/output apparatus 102, the main storage apparatus 103, and the execution unit 106. The cache memory 107 stores one or more instructions and data which are included in those stored in the main storage apparatus 103 and which are used frequently. The execution unit 106 performs an operation using data stored in the cache memory 107.
The control unit 105 performs transferring of data between the cache memory 107 and the local vector register LR1. The local vector register LR1 stores data OP1, data OP2, and data OP3. The register 201 stores the data OP1 output from the local vector register LR1. The register 202 stores the data OP2 output from the local vector register LR1. The register 203 stores the data OP3 output from the local vector register LR1.
The multiplier 204 multiplies the data OP1 stored in the register 201 by the data OP2 stored in the register 202 and outputs a result of the multiplication. The adder/subtractor 205 performs an addition or subtraction between the data output from the multiplier 204 and the data OP3 stored in the register 203 and output a result of the operation. The register 206 stores the data output from the adder/subtractor 205 and outputs the stored data RR to the local vector register LR1.
The execution unit 106 calculates a product of matrix data A and matrix data B as described in equation (1) and outputs matrix data C. The matrix data A is data having m rows and n columns. The matrix data B is data having n rows and p columns. The matrix data C is data having m rows and p columns.
Element data cij of the matrix data C is expressed by equation (2). Element data aik is element data of the matrix data A. Element data bkj is element data of the matrix data B.
c
ij=Σk=1naikbkj (2)
For example, element data c11 is described by equation (3). The execution unit 106 determines the element data c11 by calculating a sum of products between first row data a11, a11, a12, a13, a14, . . . , a1n of the matrix data A and first column data b11, b21, b31, b41, . . . , bn1 of the matrix data B.
c
11
=a
11
b
11
+a
12
b
21
+a
13
b
31
+a
14
b
41
+ . . . +a
1n
b
n1 (3)
The control unit 105 transfers the matrix data A and the matrix data B stored in the cache memory 107 to the local vector register LR1 serving as the data storage unit. In a first cycle, the local vector register LR1 outputs element data a11 as the data OP1, element data b11 as the data OP2, and 0 as the data OP3. The FMA operation unit 200 calculates OP1×OP2+OP3 thereby obtaining a11b11 as a result, and outputs the result as the data RR. The local vector register LR1 stores a11b11, as the data RR.
In a second cycle, the local vector register LR1 outputs element data a12 as the data OP1, element data b21 as the data OP2, and, as the data OP3, the data RR (=a11b11) obtained in the previous cycle. The FMA operation unit 200 calculates OP1×OP2+OP3 thereby obtaining a11b11+a12b21 as a result, and outputs the result as the data RR. The local vector register LR1 stores a11b11+a12b21 as the data RR.
In a third cycle, the local vector register LR1 outputs element data a13 as the data OP1, element data b31 as the data OP2, and, as the data OP3, the data RR (=a11b11+a12b21) obtained in the previous cycle. The FMA operation unit 200 calculates OP1×OP2+OP3 thereby obtaining a11b11+a12b21+a13b31 as a result, and outputs the result as the data RR. The local vector register LR1 stores a11b11+a12b21+a13b31 as the data RR. Thereafter, the execution unit 106 performs a similar process repeatedly to obtain element data c11 according to equation (3).
The control unit 105 may store data in the local vector register LR1 such that only the data RR obtained as element data c11 in a final cycle is stored, but data RR obtained in middle cycles is not stored in the local vector register LR1.
Element data c12 is described by equation (4). The execution unit 106 determines the element data c12 by calculating a sum of products between first row data a11, a12, a13, a14, . . . , a1n of the matrix data A and second column data b12, b22, b32, b42, . . . , bn2 of the matrix data B.
c
12
=a
11
b
12
+a
12
b
22
+a
13
b
32
+a
14
b
42
+ . . . +a
1n
b
n2 (4)
Element data c1p is described by equation (5). The execution unit 106 determines the element data c1p by calculating a sum of products between first row data a11, a12, a13, a14, . . . , a1n of the matrix data A and pth column data b1p, b2p, b3p, b4p, . . . , bnp of the matrix data B.
c
1p
=a
11
b
1p
+a
12
b
2p
+a
13
b
3p
+a
14
b
4p
+ . . . +a
1n
b
np (5)
Element data cm1 is described by equation (6). The execution unit 106 determines the element data cm1 by calculating a sum of products between mth row data am1, am2, am3, am4, . . . , amn of the matrix data A and first column data b11, b21, b31, b41, . . . , bn1 of the matrix data B.
c
m1
=a
m1
b
11
+a
m2
b
21
+a
m3
b
31
+a
m4
b
41
+ . . . +a
mn
b
n1 (6)
Element data cm2 is described by equation (7). The execution unit 106 determines the element data cm2 by calculating a sum of products between mth row data am1, am2, am3, am4, . . . , amn of the matrix data A and second column data b12, b22, b32, b42, . . . , bn2 of the matrix data B.
c
m2
=a
m1
b
12
+a
m2
b
22
+a
m3
b
32
+a
m4
b
42
+ . . . +a
mn
b
n2 (7)
Element data cmp is described by equation (8). The execution unit 106 determines the element data cmp by calculating a sum of products between mth row data am1, am2, am3, am4, . . . , amn of the matrix data A and pth column data b1p, b2p, b3p, b4p, . . . , bnp of the matrix data B.
c
mp
=a
m1
b
1p
+a
m2
b
2p
+a
m3
b
3p
+a
m4
b
4p
+ . . . +a
mn
b
np (8)
As described above, the data OP1 is the matrix data A, the data OP2 is the matrix data B, and the data RR is the matrix data C. In the local vector register LR1, the matrix data C is written. The control unit 105 transfers the matrix data C stored in the local vector register LR1 to the cache memory 107.
The cache memory 107 stores the matrix data A and the matrix data B. When the operation processing apparatus 101 determines the product of the matrix data A and the matrix data B each having a large number of elements, each of the operation execution units EX1 to EX8 repeatedly calculates the product of small-size submatrices. The matrix data A, the matrix data B, and the matrix data C are each 200×200 square matrix data. Each of the eight FMA operation units 200 calculates a 20×20 matrix at a time. One element data includes 4 bytes.
Each of the operation execution units EX1 to EX8 calculates a 20×20 matrix. The control unit 105 transfers submatrix data A1 with 20×20 matrix×4 bytes=1.6 kbytes in the matrix data A stored in the cache memory 107 to the local vector register LR1. The control unit 105 transfers submatrix data B1 with 20×20 matrix×4 bytes=1.6 kbytes in the matrix data B stored in the cache memory 107 to the local vector register LR1.
Similarly, the control unit 105 transfers different submatrix data A2 to A8 each having 20×20 matrix×4 bytes=1.6 kbytes in the matrix data A stored in the cache memory 107 to the respective local vector registers LR2 to LR8. The control unit 105 transfers different submatrix data B2 to B8 each having 20×20 matrix×4 bytes=1.6 kbytes in the matrix data B stored in the cache memory 107 to the respective local vector registers LR2 to LR8.
Each of the operation execution units EX1 to EX 8 calculates a product of given one of 20×20 submatrix data A1 to A8 and corresponding one of 20×20 submatrix data B1 to B8 thereby determining one of different 20×20 submatrix data C1 to C8 in the matrix data C. The control unit 105 writes the 20×20 submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 respectively in the local vector registers LR1 to LR8. The local vector registers LR1 to LR8 respectively store different submatrix data C1 to C8 each having 20×20 matrix×4 bytes=1.6 kbytes.
The local vector registers LR1 to LR8 each have a capacity of 1.6 kbytes×3 matrices=4.8 kbytes. The total capacity of the local vector registers LR1 to LR8 is 4.8 kbytes×8=38.4 kbytes.
A description is given below as to the number of multiply-add operation cycles performed to determine the product of 200×200 square matrices. To determine one element of a 20×20 square matrix, an operation is performed 20 times, and thus the operation is performed as many times as 20 times×400 elements=8000 times to determine the product of 20×20 square matrices. The execution unit 106 is capable of determining 20 elements of a 200×200 square matrix by performing an operation of determining the product of 20×20 square matrices 10 times. Thus, the number of multiply-add operation cycles is given as 20×106 cycles according to equation (9).
(8000 times×10 times/20 elements)×40000 elements/8[the number of operation execution units]=20×106 (9)
The amount of data used in determining the product of 200×200 square matrices is given as 96 Mbytes according to equation (10).
(4.8 kbytes×10 times/20 elements)×40000 elements=96 Mbytes (10)
As can be seen from the above discussion, the amount of data transferred between the cache memory 107 and the local vector registers LR1 to LR8 is 4.8 bytes/cycle as described in equation (11), In a case where the operation frequency is 1 GHz, the amount of data transferred per second is 4.8 Gbytes/s.
96 Mbytes/(20×106 cycles)=4.8 bytes/cycle (11)
Next, referring to
Next, a description is given below as to a data transfer rate between the cache memory 107 and the local vector registers LR1 to LR8. The data transfer rate in
Next, a method of controlling the operation processing apparatus 101 is described below. The cache memory 107 stores the matrix data A and the matrix data B. The control unit 105 transfers respective submatrix data A1 to A8 stored in the cache memory 107 to the local vector registers LR1 to LR8. Next, the control unit 105 transfers respective submatrix data B1 to B8 stored in the cache memory 107 to the local vector registers LR1 to LR8. Subsequently, the local vector registers LR1 to LR8 respectively output the data OP1 to OP3 to the operation execution units EX1 to EX8 in every cycle. The operation execution units EX1 to EX8 each perform repeatedly a multiply-add operation using eight FMA operation units 200 and output eight pieces of data RR. The control unit 105 writes the data RR output by the operation execution units EX1 to EX8, as submatrix data C1 to C8, in the respective local vector registers LR1 to LR8. The control unit 105 then transfers the submatrix data C1 to C8 stored in the local vector registers LR1 to LR8 sequentially to the cache memory 107 via the selector 300.
In a case where the operation processing apparatus 101 does not satisfy the data transfer rate of 38.4 Gbytes/s described above, the operation execution units EX1 to EX8 do not receive data used in operations, and thus may cause the operation execution units EX1 to EX8 to pause. For example, an insufficient bus bandwidth may cause a reduction in performance. To perform the operation on the submatrix repeatedly, the operation processing apparatus 101 transfers the same matrix elements from the cache memory 107 to the local vector registers LR1 to LR8 a plural of times, which may result in a reduction in data transfer efficiency in the operation process.
When the execution unit 106 determines the product of the matrix data A and the matrix data B each having a large number of elements, the operation execution units EX1 to EX8 repeatedly calculate elements of the product of the matrices such that each operation execution unit calculates elements of one row (ci1, . . . , cip) at a time. For example, the operation execution unit EX1 calculates first row data c11, . . . , c1p of the matrix data C. The operation execution unit EX2 calculates second row data c21, . . . , c2p of the matrix data C. The operation execution unit EX3 calculates third row data c31, . . . , c3p of the matrix data C. Similarly, the operation execution units EX4 to EX8 respectively calculate fourth to eighth row data of the matrix data C. When the execution unit 106 determines the product of 200×200 square matrices, each FMA operation unit 200 performs a calculation of a 1×200 matrix. One element includes 4 bytes.
The control unit 105 transfers submatrix data A1 with 1×200 matrix×4 bytes=0.8 kbytes of the matrix data A stored in the cache memory 107 to the local vector register LR1. The control unit 105 transfers matrix data B with 200×200 matrix×4 bytes=160 kbytes stored in the cache memory 107 to the local vector register LR1. Similarly, the control unit 105 transfers different submatrix data A2 to A8 each having 1×200 matrix×4 bytes=0.8 kbytes in the matrix data A stored in the cache memory 107 to the respective local vector registers LR2 to LR8. The control unit 105 transfers matrix data B with 200×200 matrix×4 bytes=160 kbytes stored in the cache memory 107 to the local vector registers LR2 to LR8. The local vector registers LR1 to LR8 each store all elements of the matrix data B.
Each of the operation execution units EX1 to EX8 calculates a product of given one of 1×200 submatrix data A1 to A8 and corresponding one of 200×200 matrix data B thereby determining one of different 1×200 submatrix data C1 to C8 in the matrix data C. For example, the operation execution unit EX1 calculates the multiply-add operation between first row data of the matrix data A and the matrix data B thereby determining first row data of the matrix data C. The operation execution unit EX 2 calculates the multiply-add operation between second row data of the matrix data A and the matrix data B thereby determining second row data of the matrix data C. The control unit 105 writes the 1×200 submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 in the respective local vector registers LR1 to LR8. The local vector registers LR1 to LR8 respectively store different submatrix data C1 to C8 each having 1×200 matrix×4 bytes=0.8 kbytes.
Each of the local vector registers LR1 to LR8 has a capacity of 0.8 kbytes+160 kbytes+0.8 kbytes 162 kbytes. The total capacity of the local vector registers LR1 to LR8 is 162 kbytes×8≈1.3 Mbytes.
A description is given below as to the number of multiply-add operation cycles performed to determine the product of 200×200 square matrices. To determine one element of a 1×200 submatrix of the matrix data C, an operation is performed 200 times, and thus, to determine the 200×200 matrix data C, the number of multiply-add operation cycles is 1×106 cycles according to equation (12).
200×200 matrix×200 times/8 [number of operation execution units]=1×106 cycles (12)
The amount of data used in determining the product of 200×200 square matrices is 480 kbytes according to equation (13).
200×200 matrix×3 [number of matrices]×4 bytes=480 kbytes (13)
As can be seen from the above discussion, the amount of data transferred per cycle between the cache memory 107 and the local vector registers LR1 to LR8 is given as 4.8 bytes/cycle according to equation (14). In a case where the operation frequency is 1 GHz, the amount of data transferred per second is 480 Mbytes/s.
480 kbytes/(1×106 cycles)=0.48 bytes/cycle (14)
The capacities of the local vector registers LR1 to LR8 are described below. The operation execution units EX1 to EX8 illustrated in
A description is given below as to a data transfer rate between the cache memory 107 and the local vector registers LR1 to LR8. The data transfer rate in
In the operation processing apparatus 101 illustrated in
The cache memory 107 stores the matrix data A and B. The control unit 105 transfers the submatrix data A1 to A8 stored in the cache memory 107 to the respective local vector registers LR1 to LR8, and transfers the matrix data B stored in the cache memory 107 to the local vector registers LR1 to LR8. Each of the local vector registers LR1 to LR8 stores all elements of the matrix data B. The local vector registers LR1 to LR8 respectively output the data OP1 to OP3 to the operation execution units EX1 to EX8 in every cycle. The operation execution units EX1 to EX8 each perform repeatedly a multiply-add operation using eight FMA operation units 200 and output eight pieces of data RR. The control unit 105 writes the data RR output by the operation execution units EX1 to EX8, as submatrix data C1 to C8, in the respective local vector registers LR1 to LR8. The control unit 105 then transfers the submatrix data C1 to C8 stored in the local vector registers LR1 to LR8 sequentially to the cache memory 107 via the selector 300.
The cache memory 107 stores 200×200 matrix data A and 200×200 matrix data B. When the execution unit 106 determines the product of the matrix data A and the matrix data B, the operation execution units EX1 to EX8 repeatedly calculate elements of the product of the matrices such that each operation execution unit calculates elements of one row (ci1, . . . , c1p) at a time. For example, the operation execution unit EX1 calculates first row data c11, . . . , c1p of the matrix data C. The operation execution unit EX 2 calculates second row data c21, . . . , c2p of the matrix data C. The operation execution unit EX3 calculates third row data c31, . . . , c3p of the matrix data C. Similarly, the operation execution units EX4 to EX8 respectively calculate fourth to eighth row data of the matrix data C. When the execution unit 106 determines the product of 200×200 square matrices, each FMA operation unit 200 calculates a 1×200 matrix. One element includes 4 bytes.
The control unit 105 transfers submatrix data A1 with 1×200 matrix×4 bytes=0.8 kbytes of the first row matrix data A stored in the cache memory 107 to the local vector register LR1. Similarly, the control unit 105 transfers submatrix data A2 to A8 each having 1×200 matrix×4 bytes=0.8 kbytes of second to eighth rows of the matrix data A stored in the cache memory 107 to the respective local vector registers LR2 to LR8. Furthermore, the control unit 105 transfers matrix data B with 200×200 matrix×4 bytes=160 kbytes stored in the cache memory 107 to the shared vector register SR. The shared vector register SR stores all elements of the matrix data B.
The local vector registers LR1 to LR8 respectively output data OP1 and OP3 to the operation execution units EX1 to EX8. The shared vector register SR outputs data OP2 to the operation execution units EX1 to EX8. The data OP1 is submatrix data A1 to A8. The data OP2 is the matrix data B. The data OP3 is data RR in a previous cycle, and its initial value is 0.
The operation execution units EX1 to EX8 respectively calculate products of 1th to 8th 8×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining respective 8×200 submatrix data C1 to C8 in the matrix data C. For example, the operation execution unit EX1 calculates the multiply-add operation between first row data of the matrix data A and the matrix data B thereby determining first row data of the matrix data C. The operation execution unit EX 2 calculates the multiply-add operation between second row data of the matrix data A and the matrix data B thereby determining second row data of the matrix data C. The control unit 105 writes the submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 respectively in the respective local vector registers LR1 to LR8. The local vector registers LR1 to LR8 respectively store different submatrix data C1 to C8 each having 1×200 matrix×4 bytes=0.8 kbytes.
Thereafter, the operation processing apparatus 101 repeatedly performs the process described above in units of eight rows. For example, the control unit 105 transfers 8×200 submatrix data A1 to A8 of 9th to 16th rows of the matrix data A stored in the cache memory 107 to the local vector registers LR1 to LR8. The operation execution units EX1 to EX8 calculate products of respective 9th to 16th 8×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining 9th to 16th 8×200 submatrix data C1 to C8. The operation processing apparatus 101 repeats the process described above until the 200th row.
The matrix data B has a data size of 160 kbytes. Therefore, the shared vector register SR has a capacity of 160 kbytes. The local vector registers LR1 to LR8 each have a capacity of 0.8 kbytes+0.8 kbytes=1.6 kbytes. The total capacity of the local vector registers LR1 to LR8 is 1.6 kbytes×8≈1.3 kbytes. The total capacity of the shared vector register SR and the local vector registers LR1 to LR8 is 160 kbytes+13 kbytes=173 kbytes.
A description is given below as to the number of multiply-add operation cycles performed to determine the product of 200×200 square matrices. To determine one element of a 1×200 submatrix of the matrix data C, an operation is performed 200 times, and thus, to determine the 200×200 matrix data C, the number of multiply-add operation cycles is 1×106 cycles according to equation (15).
200×200 matrix×200 times/8 [number of operation execution units]=1×106 cycles (15)
The amount of data used in determining the product of 200×200 square matrices is given as 480 kbytes according to equation (16).
200×200 matrix×3 [number of matrices]×4 bytes=480 kbytes (16)
As can be seen from the above discussion, the amount of data transferred between the cache memory 107 and the local vector registers LR1 to LR8 is given as 0.48 bytes/cycle according to equation (17). In a case where the operation frequency is 1 GHz, the amount of transferred data is 480 Mbytes/s.
480 kbytes/(1×106 cycles)=0.48 bytes/cycle (17)
The shared vector register SR in
A description is given below as to a data transfer rate between the cache memory 107 and the shared vector register SR and the local vector registers LR1 to LR8. The data transfer rate in
In the operation processing apparatus 101 illustrated in
Thus, the relative data transfer rate of the operation processing apparatus 101 in
The operation processing apparatus 101 illustrated in
In the operation processing apparatus 101 illustrated in
Each of the local vector registers LR1 to LR8 includes output ports for providing data OP1 and OP3 to corresponding one of the operation execution units EX1 to EX8 and includes an input port for inputting data RR from the corresponding one of the operation execution units EX1 to EX8. In contrast, the shared vector register SR includes an output port for outputting data OP2 to the operation execution units EX1 to EX8, but includes no data input port. Therefore, the operation processing apparatus 101 illustrated in
The control unit 105 transfers 200×200 matrix data B stored in the cache memory 107 to the shared vector register SR. The shared vector register SR stores all elements of the matrix data B. Each of the local vector registers LR1 to LR8 outputs data OP1 and OP3 to the operation execution units EX1 to EX8. The shared vector register SR outputs data OP2 to the operation execution units EX1 to EX8. The data OP1 is submatrix data A1 to A8. The data OP2 is the matrix data B, the data OP3 is data RR obtained in a previous cycle, and its initial value is 0. The matrix data B input to the operation execution units EX1 to EX8 from the shared vector register SR is equal for all operation execution units EX1 to EX8. Therefore, the shared vector register SR broadcasts the matrix data B to provide the matrix data B to all operation execution units EX1 to EX8.
The control unit 105 instructs the operation execution units EX1 to EX8 to start executing the multiply-add operation. The operation execution units EX1 to EX8 respectively calculate products of 8×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining different 8×200 submatrix data C1 to C8 in the matrix data C. For example, the operation execution unit EX1 calculates the sum of products between 1st to 8th row data of the matrix data A and the matrix data B thereby determining 1st to 8th row data of the matrix data C. The operation execution unit EX 2 calculates the sum of products between 9th to 16th row data of the matrix data A and the matrix data B thereby determining 9th to 16th row data of the matrix data C. The control unit 105 writes the submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 respectively in the respective local vector registers LR1 to LR8. The local vector registers LR1 to LR8 respectively store 8×200 submatrix data C1 to C8.
The control unit 105 transfers the submatrix data C1 to C8 stored in the local vector registers LR1 to LR8 sequentially to the cache memory 107 via the selector 300.
Thereafter, the operation processing apparatus 101 repeatedly performs the process described above in units of 64 rows. For example, the control unit 105 transfers 65th to 128th 64×200 submatrix data A1 to A8 of the matrix data A stored in the cache memory 107 to the local vector registers LR1 to LR8. The operation execution units EX1 to EX8 calculate products of 65th to 128th 64×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining 65th to 128th 64×200 submatrix data C1 to C8. The operation processing apparatus 101 is connected to repeats the process described above until the 200th row. As a result, 200×200 matrix data C is stored in the cache memory 107.
The transferring by the control unit 105 and the operations by the operation execution units EX1 to EX8 are performed in parallel. That is, the operation execution units EX1 to EX8 operate when the control unit 105 is performing transferring, and thus no reduction in operation efficiency occurs.
The local vector registers LRA1 and LRC 1 are local vector registers obtained by dividing the local vector register LR1 illustrated in
Similarly, the local vector registers LRA2 to LRA8 and LRC2 to LRC 8 are local vector registers obtained by dividing the respective local vector registers LR2 to LR8 illustrated in
The control unit 105 transfers the submatrix data C1 to C8 stored in the local vector registers LRC1 to LRC8 sequentially to the cache memory 107 via the selector 300.
The total capacity of the shared vector register SR and the local vector registers LRA1 to LRA8 and LRC1 to LRC8 is 173 kbytes, which is the same as the total capacity of the shared vector register SR and the local vector registers LR1 to LR8 illustrated in
The data transfer rate between the cache memory 107 and the shared vector register SR and the local vector registers LRA1 to LRA8 and LRC1 to LRC8 is 480 Mbytes/s, which is the same as the data transfer rate between the cache memory 107 and the shared vector register SR and the local vector registers LR1 to LR8 illustrated in
Each of the local vector registers LRC1 to LRC8 includes an output port for outputting data OP3 to the operation execution units EX1 to EX8, and includes an input port for inputting data RR from the corresponding one of the operation execution units EX1 to EX8. In contrast, each of the local vector registers LRA1 to LRA8 includes an output port for outputting data OP1 to the operation execution units EX1 to EX8, but includes no data input port. This makes it possible to reduce the number of parts and interconnections associated with the local vector registers LRA1 to LRA8 and increase efficiency in terms of the ratio of the capacity to the area of the vector registers.
The local vector registers LRA1 to LRA8 respectively store 8×200 submatrix data A1 to A8 and each of the local vector registers LRA1 to LRA8 has a data size of 6.4 kbytes. The local vector registers LRC1 to LRC8 respectively store 8×200 submatrix data C1 to C8 and each of the local vector registers LRC1 to LRC8 has a data size of 6.4 kbytes.
The total capacity of the shared vector register SR and the local vector registers LRA1 to LRA8 and LRC1 to LRC8 is 264 kbytes, which is the same as the total capacity of the shared vector register SR and the local vector registers LR1 to LR8 illustrated in
The data transfer rate between the cache memory 107 and the shared vector register SR and the local vector registers LRA1 to LRA8 and LRC1 to LRC8 is 3.84 Gbytes/s, which is the same as the data transfer rate between the cache memory 107 and the shared vector register SR and the local vector registers LR1 to LR8 illustrated in
The control unit 105 transfers 200×200 matrix data B stored in the cache memory 107 to the shared vector register SR. The shared vector register SR stores all elements of the matrix data B. The local vector registers LRA1 to LRA8 respectively output data OP1 to the operation execution units EX1 to EX8. The shared vector register SR outputs data OP2 to the operation execution units EX1 to EX8. The local vector registers LRC1 to LRC8 respectively output data OP3 to the operation execution units EX1 to EX8. The data OP1 is submatrix data A1 to A8. The data OP2 is matrix data B. The data OP3 is data RR in a previous cycle, and its initial value is 0.
The control unit 105 instructs the operation execution units EX1 to EX8 to start executing the multiply-add operation. The operation execution units EX1 to EX8 respectively calculate products of 8×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining respective different 8×200 submatrix data C1 to C8 in the matrix data C. For example, the operation execution unit EX1 calculates the sum of products between 1st to 8th row data of the matrix data A and the matrix data B thereby determining 1st to 8th row data of the matrix data C. The operation execution unit EX2 calculates the sum of products between 9th to 16th row data of the matrix data A and the matrix data B thereby determining 9th to 16th row data of the matrix data C. The control unit 105 writes the submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 respectively in the respective local vector registers LRC1 to LRC8. The local vector registers LRC1 to LRC8 respectively store 8×200 submatrix data C1 to C8.
The control unit 105 transfers the submatrix data C1 to C8 stored in the local vector registers LRC1 to LRC8 sequentially to the cache memory 107 via the selector 300.
Thereafter, the operation processing apparatus 101 repeatedly performs the process described above in units of 64 rows. For example, the control unit 105 transfers 65th to 128th 64×200 submatrix data A1 to A8 of the matrix data A stored in the cache memory 107 to the local vector registers LRA1 to LRA8. The operation execution units EX1 to EX 8 respectively calculate products of 65th to 128th 64×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining 65th to 128th 64×200 submatrix data C1 to C8. The operation processing apparatus 101 repeats the process described above until the 200th row. As a result, 200×200 matrix data C is stored in the cache memory 107.
The transferring by the control unit 105 and the operations by the operation execution units EX1 to EX8 are performed in parallel. That is, the operation execution units EX1 to EX8 operate when the control unit 105 is performing transferring, and thus no reduction in operation efficiency occurs.
A method of controlling the operation processing apparatus 101 illustrated in
The control unit 105 of the operation processing apparatus 101 illustrated in
The amount of data of the matrix data B transferred by the operation processing apparatus 101 illustrated in
The control unit 105 reads out 200×200 matrix data B stored in the cache memory 107. The cache memory 107 outputs the matrix data B to the local vector registers LR1 to LR8 by broadcasting. The control unit 105 writhes the same matrix data B in the local vector registers LR1 to LR8 simultaneously. The local vector registers LR1 to LR8 respectively output data OP1 to OP3 to the operation execution units EX1 to EX8. The data OP1 is submatrix data A1 to A8. The data OP2 is matrix data B. The data OP3 is data RR in a previous cycle, and its initial value is 0.
The control unit 105 instructs the operation execution units EX1 to EX8 to start executing the multiply-add operation. The operation execution units EX1 to EX8 respectively calculate products of 8×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining respective different 8×200 submatrix data C1 to C8 in the matrix data C. For example, the operation execution unit EX1 calculates the sum of products between 1st to 8th row data of the matrix data A and the matrix data B thereby determining 1st to 8th row data of the matrix data C. The operation execution unit EX2 calculates the sum of products between 9th to 16th row data of the matrix data A and the matrix data B thereby determining 9th to 16th row data of the matrix data C. The control unit 105 writes the submatrix data C1 to C8 determined by the operation execution units EX1 to EX8 respectively in the respective local vector registers LR1 to LR8. The local vector registers LR1 to LR8 respectively store 8×200 submatrix data C1 to C8.
The control unit 105 transfers submatrix data C1 to C8 stored in the local vector registers LR1 to LR8 sequentially to the cache memory 107 via the selector 300.
Thereafter, the operation processing apparatus 101 repeatedly performs the process described above in units of 64 rows. For example, the control unit 105 transfers 65th to 128th 64×200 submatrix data A1 to A8 of the matrix data A stored in the cache memory 107 to the local vector registers LR1 to LR8. The operation execution units EX1 to EX8 calculate products of 65th to 128th 64×200 submatrix data A1 to A8 and the 200×200 matrix data B thereby determining 65th to 128th 64×200 submatrix data C1 to C8. The operation processing apparatus 101 repeats the process described above until the 200th row. As a result, 200×200 matrix data C is stored in the cache memory 107.
In the operation processing apparatus, as described above, a reduction in the amount of data transferred in the operation by the operation execution units EX1 to EX8 is achieved and/or a reduction in the capacity of vector registers is achieved. This may make it possible for the operation processing apparatus 101 to provide an improved performance in calculation of a product of matrices or the like in scientific computing as much as the increased number of operation execution units EX1 to EX8.
All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2017-111695 | Jun 2017 | JP | national |