PARALLEL OPERATION DEVICE ALLOWING EFFICIENT PARALLEL OPERATIONAL PROCESSING
In arithmetic/logic units (ALU) provided corresponding to entries, an MIMD instruction decoder generating a group of control signals in accordance with a Multiple Instruction-Multiple Data (MIMD) instruction and an MIMD register storing data designating the MIMD instruction are provided, and an inter-ALU communication circuit is provided. The amount and direction of movement of the inter-ALU communication circuit are set by data bits stored in a movement data register. It is possible to execute data movement and arithmetic/logic operation with the amount of movement and operation instruction set individually for each ALU unit. Therefore, in a Single Instruction-Multiple Data type processing device, Multiple Instruction-Multiple Data operation can be executed at high speed in a flexible manner.
Latest Renesas Technology Corp. Patents:
- Manufacturing method for semiconductor device, semiconductor device and semiconductor chip
- Solid-state image sensor device and differential interface thereof
- Manufacturing method for semiconductor device
- Communication system, authentication method, information processing device, information processing method, and battery
- Mask defect measurement method, mask quality determination and method, and manufacturing method of semiconductor device
This application is a continuation of U.S. application Ser. No. 11/840,116, filed Aug. 16, 2007, the content of which is herein incorporated in its entirety by reference.
BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates to a semiconductor processing device and, more specifically, to a configuration of a processing circuit performing arithmetic/logic operations on a large amount of data at high speed using semiconductor memories.
2. Description of the Background Art
Recently, along with wide spread use of portable terminal equipment, digital signal processing allowing high speed processing of a large amount of data such as voice data and image data comes to have higher importance. For such digital signal processing, generally, a DSP (Digital Signal Processor) is used as a dedicated semiconductor device. Digital signal processing of voice and image includes data processing such as filtering, which in turn frequently requires arithmetic operations with repetitive sum-of-products operations. Therefore, a DSP is generally configured to have a multiplication circuit, an adder circuit and a register for accumulation. When such a dedicated DSP is used the sum-of-products operation can be executed in one machine cycle, enabling a high-speed arithmetic/logic operation.
When the amount of data to be processed is very large, however, even a dedicated DSP is insufficient to attain dramatic improvement in performance. By way of example, when the data to be operated assume 10,000 sets and an operation of each data set can be executed in one machine cycle, at least 10,000 cycles are necessary to finish the operation. Therefore, though each process can be done at high speed in an arrangement in which the sum-of-products operation is done using a register file, when the amount of data increases, the time of processing increases in proportion thereto as the data are processed in series, and therefore, such an arrangement cannot achieve high speed processing.
When such a dedicated DSP is used, the processing performance much depends on operating frequency, and therefore, if high speed processing is given priority, power consumption would considerably be increased.
In view of the foregoing, the applicant of the present invention has already proposed a configuration allowing arithmetic/logic operations on a large amount of data at high speed (Reference 1 (Japanese Patent Laying-Open No. 2006-127460)).
In the configuration described in Reference 1, a memory cell mat is divided into a plurality of entries, and an arithmetic logic unit (ALU) is arranged corresponding to each entry. Between the entries and the corresponding arithmetic logic units (ALUs), data are transferred in bit-serial manner, and operations are executed in parallel among a plurality of entries. For a binary operation, for example, data of two terms are read, operated and the result of operation is stored. Such operation on data is executed on bit-by-bit basis. Assuming that reading (load), operation and writing (store) of the operation result each require one machine cycle and the data word of the operation target has the bit width N, operation of each entry requires 4×N machine cycles. The data word of the operation target generally has the bit width of 8 to 64 bits. Therefore, when the number of entries is set relatively large to 1024 and data of 8-bit width are to be processed in parallel, 1024 results of arithmetic operations can be obtained after 32 machine cycles. Thus, necessary time of processing can significantly be reduced as compared with sequential processing of 1024 sets of data.
Further, in the configuration disclosed in Reference 1, data transfer circuits are provided corresponding to the entries. Inter-ALU connecting switch circuit (data transfer circuit: ECM (entry communicator)) is provided for data transfer between processors (ALUs), whereby data are transferred through dedicated buses among the entries. Therefore, as compared with a configuration in which data are transferred between entries through a system bus, arithmetic/logic operations can be executed with high-speed data transfer. Further, use of the inter-ALU connecting switch circuit achieves operations on data stored in various regions in the memory cell mat, whereby degree of freedom in operation can be increased, and a semiconductor processing device performing various operations can be realized.
In the configuration described in Reference 1, it is possible to execute one same arithmetic/logic operation in parallel in processors among all entries of the memory mat. Specifically, the parallel processing device (MTX) described in Reference 1 is a processing device based on an SIMD (Single Instruction Stream Multiple Data Stream) architecture. Further, it uses the inter-ALU connecting switch circuit, so that communications between physically apart entries can be executed simultaneously in each entry, and processes over entries can also be executed.
In the configuration described in Reference 1, it is possible to execute a pointer register instruction for operating contents of a pointer register representing an access location in the memory cell mat, a 1-bit load/store instruction, a 2-bit load/store instruction, a 1-bit inter-entry data moving instruction, a 2-bit inter-entry data moving instruction for transferring data between a data storage portion of an entry and a corresponding operational processing element(ALU), a 1-bit arithmetic/logic operation instruction, and a 2-bit arithmetic/logic operation instruction. Further, by setting to “0” the value of a mask register (V register) provided in the processing element, the operation of the corresponding entry can be masked and the operation can be set to an non-execution state.
The processing device of Reference 1 is on SIMD basis, and all entries execute one same arithmetic/logic operation in parallel. Therefore, when one same arithmetic/logic operation is to be executed on a plurality of data sets, high-speed operation becomes possible and, therefore, filtering of image data, for example, can be executed at high speed.
Arithmetic/logic operations with low degree of parallelism, however, must be executed one by one successively while operations other than the target operation are masked, or it must be processed by a host CPU. Such successive processing of arithmetic/logic operations with low degree of parallelism hinders increase in processing speed, and hence, the performance of the parallel processing device cannot be fully exhibited.
Further, in communication between entries, in a configuration of SIMD type architecture, all entries communicate in parallel with entries apart by the same distance (in accordance with the data moving instruction between entries). For each entry, to communicate with an entry apart by an arbitrary distance, however, it is necessary to adjust distance of data movement by combining the moving instruction between entries (data moving instruction) and the mask bit of the V register in the processing element. Therefore, parallel processing of data movement between entries at different distances is impossible.
If the arithmetic/logic operation and/or data moving process of low degree of parallelism could be performed efficiently, the processor would have wider applications.
SUMMARY OF THE INVENTIONAn object of the present invention is to provide a parallel processing device capable of efficiently performing processes such as arithmetic/logic operation and/or data moving process of low degree of parallelism.
According to a first aspect, the present invention provides a parallel processing device, including: a data storage unit having a plurality of data entries each having a bit width of a plurality of bits and arranged corresponding to each entry; and a plurality of arithmetic/logic processing elements arranged corresponding to the data entries of the data storage unit, of which content of an operational processing (arithmetic or logic operation) is set individually, for executing the set operation on applied data.
According to a second aspect, the present invention provides a parallel processing device, including: a data storage unit having a plurality of data entries each having a bit width of a plurality of bits and arranged corresponding to each entry; a plurality of arithmetic/logic processing elements arranged corresponding to the entries and each executing a set operational processing (arithmetic or logic operation) on applied data; and a plurality of data communication circuits provided corresponding to the plurality of entries and each performing data communication between the corresponding entry and another entry. The plurality of data communication circuits each have inter-entry (entry-to-entry) distance and direction of data movement set individually.
According to a third aspect, the present invention provides a parallel processing device, including: a data storage unit having a plurality of data entries each having a bit width of a plurality of bits and arranged corresponding to each entry; a plurality of arithmetic/logic processing elements arranged corresponding to the entries, having contents of an operational processing (arithmetic or logic operation) set individually, for executing the set operational processing such as arithmetic/logic operation on applied data; and a plurality of data communication circuits provided corresponding to the plurality of entries and each performing data communication between the corresponding entry and another entry. The plurality of data communication circuits each have entry-to-entry distance and direction of data movement set individually.
Further, contents of (arithmetic/logic) operation of the arithmetic/logic processing element of each entry and the amount and direction of data movement of the data communication circuit are set in registers for storing data to be processed and mask data for masking an operation, provided in the arithmetic/logic element.
The parallel processing device, in accordance with the first aspect of the present invention, is configured to set contents of operation in each arithmetic/logic processing element individually, and therefore, operations of low degree of parallelism can be executed concurrently in different entries, whereby performance can be improved. Particularly, data processing can be executed in a closed manner in the processing device, without the necessity of transferring data to the host CPU. Accordingly, the time required for data transfer can be reduced.
In the parallel processing device in accordance with the second aspect of the present invention, the amount of data movement is set in each entry and data can be moved between entries at a high speed. Accordingly, the time required for data transfer can be reduced.
In the parallel processing device in accordance with the third aspect of the present invention, contents of operation and data for setting the amount of data movement are stored in each operational processing register of the arithmetic or logic operation. Therefore, a dedicated register is unnecessary, and increase in layout area can be avoided. Further, the amount of data movement and contents of operation are set for each entry, so that high speed processing can be realized.
The foregoing and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.
Host CPU 2, memory 3, DMA circuit 4 and semiconductor processing device 1 are connected with each other through a system bus 5. Semiconductor processing device 1 includes a plurality of fundamental operation blocks (parallel processing devices) FB1 to FBn provided in parallel, an input/output circuit 10 transferring data/instruction with system bus 5, and a central control unit 15 controlling operational processing such as arithmetic and logic operations and data transfer in semiconductor processing device 1.
Fundamental operation blocks FB1 to FBn and input/output circuit 10 are coupled to an internal data bus 12. Central control unit 15, input/output circuit 10 and fundamental operation blocks FB1 to FBn are coupled to an internal bus 14. Between each of the fundamental operation blocks FB (generally representing blocks FB1 to FBn), an inter-block data bus 16 is provided. In
By providing fundamental operation blocks FB1 to FBn in parallel, same or different arithmetic or logic operations are executed in semiconductor processing device 1. These fundamental operation blocks FB1 to FBn are of the same configuration, and therefore, the configuration of fundamental operation block FB1 is shown as a representative example in
Fundamental operation block FB1 includes main processing circuitry 20 including a memory cell array (mat) and a processor; a micro-program storing memory 23 storing an execution program described in a micro code; a controller 21 controlling an internal operation of fundamental operation block FB1; a register group 22 including a register used as an address pointer; and a fuse circuit 24 for executing a fuse program for repairing any defect of main processing circuitry 20.
Controller 21 controls operations of corresponding fundamental operation blocks FB1 to FBn, as control is passed by a control instruction supplied from host CPU 2 through system bus 5 and input/output circuit 10. These fundamental operation blocks FB1 to FBn each contains micro program storing memory 23, and controller 21 stores an execution program in memory 23. Consequently, the contents of processing to be executed in each of fundamental operation blocks FB1 to FBn can be changed, and the contents of operations to be executed in each of fundamental operation blocks FB1 to FBn can be changed.
An inter-block data bus 16 allows high speed data transfer between fundamental operation blocks, by executing data transfer without using internal data bus 12. By way of example, while data is being transferred to a certain fundamental operation block through internal data bus 12, data can be transferred between different fundamental operation blocks.
Central control unit 15 includes: a control CPU 25; an instruction memory 26 storing an instruction to be executed by the control CPU; a group of registers 27 including a working register for control CPU 25 or a register for storing a pointer; and a micro program library storing memory 28 storing libraries of micro programs. Central control unit 15 has control passed from host CPU 2 through internal bus 14, and controls processing operations, including arithmetic and logic operations and transfer, of fundamental operation blocks FB1 to FBn through internal bus 14.
Micro programs having various sequential processes described in a code form are stored as libraries in micro program library storing memory 28. Central control unit 15 selects a necessary micro program from memory 28 and stores the program in micro program storing memory 23 of fundamental operation blocks FB1 to FBn. Thus, it becomes possible to address any change in the contents of processing by the fundamental operation blocks FB1 to FBn in a flexible manner.
By the use of fuse circuit 24, any defect in fundamental operation blocks FB1 to FBn can be repaired through redundancy replacement.
In the group of operational processing units (ALU group) 32, an operational processing unit (hereinafter referred also to as an arithmetic logic unit or ALU processing element) 34 is arranged corresponding to each data entry DERY. For the group of operational processing (arithmetic logic) units 32, switch circuit 44 for interconnecting ALUs is provided.
In the following, an entry (ERY) is defined as encompassing the data entry DERY and the ALE processing element provided corresponding to the data entry.
The operation of main processing circuitry 20 is set by a program (micro program) stored in program storing memory 23. Controller 21 executes processing in accordance with the program stored in program storing memory 23.
In register group 22, pointer registers r0 to r3 are provided, Addresses of memory cell mat 30 of the data to be processed are stored in pointer registers r0 to r3. Controller 21 generates an address designating an entry (data entry) or a location in a data entry of main processing circuitry 20 in accordance with the pointers stored in pointer registers r0 to r3, to control data transfer (load/store) between memory cell mat 30 and the group of arithmetic logic units 32.
In the group of arithmetic logic units 32, contents of operation of ALU processing element are determined dependent on the operation mode, that is, determined commonly to all entries for an SIMD type operation and determined for each entry for an MIMD type operation. Further, inter-ALE connecting switch circuit 44 also includes an inter-ALE data transfer circuit arranged corresponding to each entry. At the time of entry-to-entry data transfer, the transfer destination can be set dependent on the operation mode, that is, commonly to all entries in the SIMD type operation and individually for each entry in the MIMD type operation.
When an SIMD type operation is executed and the same operation is to be executed among the entries, the contents of operation in the group of arithmetic logic units (ALUs) 32 and the connection path of inter-ALU connecting switch circuit 44 are commonly set by the control of controller 21. As to the connection path, controller 21 selectively controls setting of the path or route in accordance with an instruction stored in program storing memory 23, as indicated by dotted lines in
In each of memory mats 30A and 30B, corresponding to memory cells MC arranged aligned in the row direction, a write word line WWL and a read word line RWL are provided. Corresponding to memory cells MC arranged aligned in the column direction, a write bit line pair WBLP and a read bit line pair RBLP are provided.
Each of the memory mats 30A and 30B has m data entries, that is, data entries DERY0 to DERY(m−1). Corresponding to a set of each write bit line pair WBLP and read bit line pair RBLP, a data entry is provided.
By write word line WWL and read word line RWL, memory cells at the same bit position of data entries DERY0 to DERY(m−1) are selected in parallel.
Between memory mats 30A and 30B, the group of arithmetic logic units 32 is provided. Though not explicitly shown in
Between the group of arithmetic logic units 32 and memory mat 30A, a sense amplifier group 40A and a write driver group 42A are arranged, and between the group of arithmetic logic units 32 and memory mat 30B, a sense amplifier group 40B and a write driver group 42B are arranged.
Sense amplifier group 40A includes sense amplifiers SA arranged corresponding to read bit line pairs RBLP (RBLP0-RBLP(m−1)) of memory mat 30A, respectively. Write driver group 42A includes write drivers WB arranged corresponding to write bit line pairs WBLP (WBLP0-WBLP(m−1)) of memory mat 30A, respectively.
Similarly, sense amplifier group 40B includes sense amplifiers SA arranged corresponding to read bit line pairs RBLP (RBLP0-RBLP(m−1)) of memory mat 30B, respectively. Write driver group 42B includes write drivers WB arranged corresponding to write bit line pairs WBLP (WBLP0-WBLP(m−1)) of memory mat 30B, respectively. When single port memory cells are used, the write bit line pair WBLP and the read bit line pair RBLP are formed into a common bit line pair BLP, and to the bit line pair BLP, the sense amplifier and the corresponding write driver are commonly coupled to each other.
For memory mat 30A, a read row decoder 36rA for selecting a read word line RWL, and a write row decoder 36wA for selecting a write word line WWL are provided. For memory mat 30B, a read row decoder 36rB for selecting a read word line RWL, and a write row decoder 36wB for selecting a write word line WWL are provided.
An input/output circuit 49 is provided for sense amplifier group 40A and write driver group 42A, as well as write driver group 42B and sense amplifier group 40B, for data transfer with the internal data bus (bus 12 of
Input/output circuit 49 receives and transfers in parallel the data transferred to memory mats 30A and 30B. The data stored in memory mats 30A and 30B may have bit positions re-arranged for each memory mat, or, alternatively, each of memory mats 30A and 30B may be provided with a register circuit for converting data arrangement, and data writing and reading may be performed word line by word line between the register circuit and the memory mat,
If the bit width of transfer data of input/output circuit 49 is smaller than the number of entries (data entries), an entry selecting circuit (column selecting circuit) for selecting a data entry is provided corresponding to the group of sense amplifiers and the group of write drivers, though not explicitly shown in
In the configuration shown in
In the configuration of main processing circuitry shown in
When a single port memory is used, the write row decoder and the read row decoder are implemented by a common row decoder. In such a configuration, data load and store are executed in different machine cycles.
When an SIMD type operation is executed in main processing circuitry 20 shown in
(i) Data bits DA[i] and DB[i] of the same bit position of data DA and DB as the operation target are read from memory mats 30A and 30B, and transferred to ALU processing element of the corresponding entry (loaded).
(ii) In each ALU processing element, a designated arithmetic/logic operation (operational processing) is executed on these data bits DA[i] and DB[i].
(iii) An operation result data bit C[i] is written (stored) at a bit position of a designated entry. In parallel with the writing operation, the data DA[i+1] and DB[i+1] of the next bit position are loaded to the ALU processing element.
(iv) The processes (i) to (iii) described above are repeated until all bits of the data of the operation target are operated and processed.
An execution sequence of an MIMD type operation will be described in detail later. An operation of 2-bit basis may also be executed (both in the SIMD type operation and MIMI) type operation) and, in that case, two data entries DERY constitute one entry ERY.
The even-numbered data entry DERYe and odd-numbered data entry DERYo of data entry DERYA are respectively coupled to internal data lines 65a and 66a. The even-numbered data entry DERYe and odd-numbered data entry DERYo of data entry DERYB are coupled to internal data lines 65b and 66b, respectively,
ALU processing element 34 includes, as processing circuits for performing arithmetic/logic operations, cascaded full adders 50 and 51. In order to set process data and contents of operation in ALU processing element 34, an X register 52, a C register 53, an F register 54, a V register 55 and an N register 56 are provided, X register 52 is used for storing operation data and for transferring data to another ALU processing element. C register 53 stores a carry in an addition operation. F register 54 selectively inverts an operation bit in accordance with a value stored therein, to realize a subtraction.
V register 55 stores a mask bit V for masking an arithmetic/logic operation (including data transfer) in ALU processing element 34. Specifically, when the mask bit V is set to “1”, ALU processing element 34 executes the designated arithmetic/logic operation (operational processing), and when the mask bit V is set to “0”, the arithmetic/logic operation is inhibited. Thus, the arithmetic/logic operation is selectively executed in the unit of ALU processing element.
ALU processing element 34 further includes an XH register 57 and an XL register 58 for storing 2-bit data in parallel, a selector (SEL) 60 selecting 2 bits of one of the data sets from registers 52, 57 and 58 in accordance with a value stored in D register 59, a selection inversion circuit 61 performing an inversion/non-inversion operation on 2 bits selected by selector 60 in accordance with a bit stored in F register 54, and gates 62 and 63 selectively outputting a sum output S of full adders 50 and 51 in accordance with data stored in registers 55 and 56.
The outputted 2 bits of selection inversion circuit 61 are applied to A inputs of full adders 50 and 51, respectively. X register 52 is connected either to internal data line 65a or 65b by a switch circuit SWa, and connected either to internal data line 66a or 66b by a switch circuit SWb. By the switch circuits SWa and SWb, in a 1-bit operation, data of one of memory mats 30A and 30B is stored in the X register, and in data transfer, the transfer data is stored in the X register.
XH register 57 is connectable to one of internal data lines 65a and 65b through a switch circuit SWc, and connectable to one of internal data lines 66a and 66b through a switch SWm. XL register 58 is connectable either to internal data line 66a or 66b through a switch circuit SWd.
The B input of full adder 50 is connected either to internal data line 65a or 65b by a switch circuit SWe. Gate 62 is connected either to internal data line 65a or 65b by a switch circuit SWf. The B input of full adder 51 is connectable to any of internal data lines 65a, 65b, 66a and 66b by switch circuits SWg and SWh.
Gate 63 is connectable either to internal data line 65a or 65b by a switch circuit SWj, and connectable either to internal data line 66a or 66b by a switch circuit SWk.
By these switch circuits SWa-SWh, SWj, SWk and SWm, serial processing of 1-bit unit in performing 2-bit parallel division is realized, and data transfer of 2-bit unit and data transfer of 1-bit unit are realized in data transfer.
When ALU processing element 34 performs a 1-bit operation, that is, when it performs an operation in 1-bit serial manner, a carry input Cin of full adder 51 is coupled by a switch 67 to C register 53. Gates 62 and 63 execute a designated arithmetic/logic operation when values stored in V register 55 and N register 56 are both “1”, and otherwise, gates 62 and 63 are both set to an output high impedance state.
The value stored in C register 53 is connected to carry input Cin of full adder 50 through switch circuit 67. When an arithmetic/logic operation of 1-bit unit, or bit by bit basis operation, is executed, switch circuit 67 isolates the carry output Co of full adder 50, and connects the carry input Cin of full adder 51 to C register 53 (at this time, an addition is executed in full adder 51).
In ALU processing element 34 shown in
For controlling such data transfer, in inter-ALU connecting switch circuit 44, in correspondence to an entry, a movement data register (reconfigurable entry communication register: RECM register) 70, and an inter-ALU communication circuit (reconfigurable entry communicator: RECM) 71 for setting a data transfer path in accordance with data bits E0-E3 stored in the movement data register 70 are provided.
In ALU processing element 34, in order to set contents of operation individually entry by entry, an MIMD instruction register 72 and an MIMD instruction decoder 74 decoding bit values M0 and M1 stored in the MIMD instruction register to set contents of operation of full adder 50 and to generate a control signal for realizing a combination logic, are provided. By bits M0 and M1 of MIMD instruction register 72, it becomes possible to realize different arithmetic/logic operation in each entry, whereby an MIMD (Multiple Instruction stream-Multiple Data stream) type operation is realized. Prior to description of the MIMD operation and data transfer of ALU processing element 34, a group of instructions prepared at the time of SIMD operation will be described.
As pointer registers designating addresses of the memory mat, pointer registers p0 to p3 are used. Further, as shown in
The instruction “ptr. set n, px” is for setting an arbitrary value n in a pointer register px. The arbitrary value n may assume any value within the range of the bit width (0 to MAX_BIT) of one data entry. The value x is any of 0 to 3.
The instruction “ptr. cpy px, py” is a copy instruction for transferring and storing the content of pointer register px to pointer register py.
The instruction “ptr. inc px” is for incrementing by one the pointer of pointer register px.
The instruction “ptr. incl px” is for incrementing by two the pointer of pointer register px.
The instruction “ptr. dec px” is for decrementing by one the pointer of pointer register px.
The instruction “ptr. dec2 px” is for decrementing by two the pointer of pointer register px.
The instruction “ptr. sft px” is for left-shifting by one bit the pointer of pointer register px.
By utilizing instructions “ptr. inc2 px” and “ptr. dec2 px”, 2-bit parallel processing becomes possible (odd-numbered and even-numbered addresses are simultaneously updated). In the 2-bit operation, though the pointer is incremented/decremented 2-bits by 2-bits, the position of selected word line in the memory mat changes 1 row address at a time.
Referring to
The instruction “mem. st. #R@px” is for writing (storing) the value stored in register #R to the memory cell position Aj[px] designated by the pointer register px.
The store instruction is not executed when the mask register (V register 55) is cleared.
In the store instruction also, the register #R is any of the X register, N register, V register, F register, D register, XL register, XH register and C register.
The instruction “mem. swp. X@px” is for swapping the value stored in the X register 52 and the data at the memory cell position Aj[px] designated by the pointer register px. The swap instruction is executed when “1” is set both in the mask register (V register 55) and N register 56. As the X register 52 is cleared/set by the data stored in the memory cell, circuit configuration can be simplified.
Referring to
The instruction “mem. 2. st. X@px” is for storing values stored in the XL register and the XH register, respectively, to the memory cells of successive addresses Aj[px] and Aj[px+1] designated by the pointer register px. This operation is not executed when the mask register (V register) 55 is cleared.
The instruction “mem. 2. swp. X@px” is for swapping the data at the address Aj[px] designated by the pointer register px and a higher address Aj[px+1] with the values stored in the XL register 58 and XH register 57, respectively. The swap instruction is not executed when the V register 55 and the N register 56 are both cleared.
In the 2-bit operation, successive addresses Aj[px] and Aj[px+1] are accessed simultaneously using the pointer of pointer register px, whereby parallel processing of 2 bits is achieved. By utilizing this 2-bit operation, data storage to movement data register 70 and MIME) instruction register 72 can also be executed.
In the 2-bit operation instruction, the XL and XH registers are used. It is also possible, however, to use the XL and XH registers in an SIMD operation and to use the X and XH registers for an MIMD operation instruction. Further, the X register and the X11 register may be used both for the SIMD type and MIMD type operations.
The instruction “ecm. mv. n #n” is for transferring the value stored in the X register of an entry j+n distant by a constant n to the X register of entry j.
The instruction “ecm. mv. r rn” represents an operation in which the value of X register of entry j+rn distant by a value stored in the register rn is transferred to the X register of entry j.
The instruction “ecm. swp” instructs an operation of swapping the values stored in the X registers Xj and Xj+1 of adjacent entries j+1 and j.
The moving of data between entries shown in
Therefore, when an SIMD type operation is executed, at the time of data transfer, the XH and XL registers may be used or the X and XH registers may be used, as data registers. In the 2-bit unit movement operation also, the amount of data transfer for each entry is the same.
Further, as arithmetic and logic operation (operational processing) instructions, addition instruction “alu.adc@px”, subtraction instruction “alu.sbc@px”, inversion instruction “alu.inv@px” and a register value setting instruction using a function value, that is, “alu.let f” are prepared.
By the addition instruction “alu.adc@px”, the data at the memory address indicated by the pointer of pointer register px is added to the value in the X register, and the result is returned to the memory mat. In the memory cell address Aj, the value after addition is stored, and a carry is stored in the C register.
By the subtraction instruction “alu.sbc@px”, from the data at the memory address indicated by the pointer register px, the value stored in the X register is subtracted, and the result is returned to the memory mat. The value as a result of subtraction is stored in the memory cell at Aj, and the carry is stored in the C register.
By the inversion instruction “alu.inv@px”, the data at the memory address indicated by the pointer of pointer register px is inverted and returned to the memory mat (to the original position).
By the function value instruction “alu.let f”, values of F register, D register, and C register respectively are set by the corresponding bit values, in accordance with a function value represented by function f=(F·8+D·4+N·2+C), with the symbol “·” indicating the multiplication.
Further, as 2-bit operation instruction, a booth instruction “alu2.booth” and an execution instruction “alu2.exe@px” are prepared.
The booth instruction “alu2.booth” is for performing multiplication in accordance with the second order Booth algorithm, and from the values of XH, XL and F registers, the values of N, D and F registers for the next operation are determined. Further, the execution instruction “alu2.exe@px” is an operation instruction that makes a conditional branch in accordance with values of D and F registers.
By utilizing these instructions, it becomes possible to execute an operation or data transfer in each entry in accordance with the same operation instruction. Execution of instruction is controlled by controller 21 shown in
Now, an MIMD type operation using data moving register (RECM register) 70 and MIMD instruction register 72 shown in
When an MIMD type logic operation is executed, an instruction “alu.op.mimd” is used. In the MIMD type operation, only logic operation instructions are prepared as executable instructions. Specifically, four instructions, that is, AND instruction, OR instruction, XOR instruction and NOT instruction are prepared. The minimum necessary number of bits for selecting an execution instruction from these four instructions is 2 bits. Therefore, in MIMD instruction register 72, 2-bit data M0 and M1 are stored. When the contents of the MIMD type operation are added, the number of instruction bits is set in accordance with the number of executable MIMD operations.
When an MIMD type instruction is executed, X register 52 and XH register 57 are used as registers for performing 2-bit operation. When the MIMD type instruction is executed, XL register 58 is not used. Therefore, switch circuit SWa connects internal data line 65a to X register 52, and switch circuit SWm couples internal data line 66a to XH register 57. Switch circuit SWe couples internal data line 65b to the B input of adder 50, and switch circuit SWf couples an output of gate 62 to internal data line 65b. Switch circuit SWh connects internal data line 66b to the B input of adder 51, and switch circuit SWk connects an output of gate 63 to internal data line 66b.
By MIMD instruction decoder 74, adder 50 executes any of AND instruction, OR instruction, XOR instruction and NOT instruction, as described above. The result of logic operation is stored in data entry DERYB of memory mat 30B. When not one logic operation alone is done but the same logic operations are executed in parallel by adders 50 and 51, a control signal outputted from MIMD decoder 74 is commonly applied to adders 50 and 51. Here, as an example, logic operation is executed individually in each entry, using adder 50.
Further, inter-ALE communication circuit (RECM) 71 couples X register 52 and XH register 57 to internal data lines in accordance with bit values E0-E3 stored in movement data register (RECM register) 70, and transfers data to a transfer destination designated by the data bits E0-E3.
In ALU processing element 34 shown in
Therefore, in the present invention, four logic operations are prepared and by 2-bit MIMD instruction M0 and M1, the content of operation is designated. When the number of operation contents to be designated increases, the number of data bits stored in MIMD instruction register 72 is also increased.
Referring to
The operation instruction is executed when the mask bit Vj is “1”. Here, “!” represents a negation operation (inversion). Therefore, when bits M0j and M1j are both “0” and mask bit Vj is “1”, the negation operation instruction “alu.op.not” is executed. Here, in entry j, an inverted value !Aj[px] of bit Aj[px] designated by pointer px is obtained as the operation result data bit Aj.
For a logical sum operation instruction “alu.op.or”, bit M0j is set to “0” and bit M1j is set to “1”. When the instruction is executed, mask bit Vj is “1”. By the logical sum operation, logical sum of the data hit Aj[px] designated by pointer px and the data bit Xj stored in the X register is obtained.
For an exclusive logical sum operation “alu.op.xor”, bit M0j is set to “1”, and bit M1j is set to “0”. When the instruction is executed, mask bit Vj is “1”. By the logical sum operation, exclusive logical sum of the data bit Aj[px] designated by pointer px and the data bit Xj stored in the X register is obtained.
For a logical product instruction “alu.op.and”, bits M0j and M1j are both set to “1”. Mask bit V is “1”. Here, a logical product of the data bit Aj[px] designated by pointer px and the data bit Xj stored in the X register is obtained.
Further, a temporary region for storing work data is also used. Configuration of data regions will be described later, together with specific operation procedures.
When the MIMD operation shown in
Step 1: An mx_mimd instruction is executed by the controller. In accordance with a load instruction ld, MIMD operation instruction M0, M1 at the bit position (address) designated by pointer cp is copied to MIMD instruction register 72 shown in
Step 2: Content of the region at the bit position (address) designated by pointer ap and the content of the region at the bit position (address) designated by pointer by are read bit by bit, and transferred to the ALU processing element (loaded).
Step 3: On the loaded data bits, the logic operation designated by the data stored in MIMD instruction register 72 is performed. The MIMI) operation instruction is executed only when the mask bit (V register 55) is set to 1 in the ALU processing element.
Step 4: The result of operation is stored in a bit position (address) designated by pointer ap of region RGa shown in
Step 5: The process of steps 2 to 4 is repeatedly executed on all the data bits as the target of operation. Though each operation is done in bit-serial manner, the process is executed in parallel among a plurality of entries, and taking advantage of the high speed operability of SIMD type operation, operations of less parallelism can be executed concurrently with each other, whereby high speed processing is realized.
When the MIMD operation is executed, pointers ap, by and cp are applied commonly to the entries of the memory mat, and in each entry, an operation (logic operation) designated by the MIMD operation instruction “alu. op. mimd” is executed individually, in bit-serial manner.
In adder 50, further, in order to switch internal path in accordance with the MIMD control data, switch circuits 87a to 87g are provided, Switch circuit 87a couples the output signal of inverter 80 to sum output S in accordance with an inversion instruction signal φnot. Switch circuit 87b couples the output of AND gate 82 to sum output S in accordance with a logical product instruction signal φand. Switch circuit 87c couples the output of XOR gate 81 to sum output S in accordance with an exclusive logical sum instruction signal φxor. Switch circuit 87e couples the output of XOR gate 81 to the first input of OR gate 85 in accordance with a logical sum instruction signal φor. Switch circuit 87f couples the output of OR gate 85 to the sum output S in accordance with a logical sum instruction signal φor. Switch circuit 87d selectively couples the output of AND gate 84 to the first input of OR gate 85, in accordance with an inversion signal /φor of the logical sum instruction signal.
Switch circuit 87g couples the output of XOR gate 83 to sum output S in accordance with an inversion signal /φmimd of the MIND operation instruction signal,
The MIMD instruction signal /mimd is set to an inactive state when an MIMD operation is done, and sets switch circuit 87g to an output high impedance state. Similarly, switch circuit 87d attains to the output high impedance state in accordance with the inversion signal /φor of the logical sum instruction signal, when a logical sum operation is executed.
The adder 50 shown in
Alternatively, an inverter may be provided in XOR gate 81 and the inverter in XOR gate 81 may be used as an inverter for executing the NOT operation.
In the configuration of adder 50 shown in
When a logical product operation AND is to be executed, logical product instruction signal φand is activated, switch circuit 87b is rendered conductive, and other switch circuits are rendered non-conductive (output high impedance state). Therefore, the output bit of AND gate 82 is transmitted to sum output S through switch circuit 87b.
When a logical sum operation OR is to be executed, logical sum instruction signal φor is activated, switch circuits 87e and 87f are rendered conductive, and other switches are set to output high impedance state. Therefore, the output bit of OR gate 85 receiving the output bits of XOR gate 81 and AND gate 82 is transmitted to sum output S. When the OR operation is executed, XOR gate 81 outputs “H” (“1”), when the bit values applied to inputs A and B have different logical values. AND gate 82 outputs a signal of “1” when bits applied to inputs A and B are both “1”. Therefore, when at least one of the bits applied to inputs A and B has logical value “1”, a signal “1” is output from OR gate 85 through switch circuit 87f to sum output S, and the result of OR operation is obtained.
As shown in
The configuration of adder 50 is merely an example, and a configuration similar to an FPGA (Field Programmable Gate Array), in which internal connection paths are arranged in a matrix and interconnection is set in accordance with the operation instruction signal, may be used.
Further, the configuration of full adder 50 shown in
A ±i bit shift interconnection line is for data communication between entries apart from each other by i bits. Here, interconnection lines for 11 different types of data communications, including ±1, ±4, ±16, ±64 and ±256 bit shifts and 0 bit shift, are prepared. As data communication is performed in 2-bit unit (2-bits by 2-bits), interconnection lines for data transfer using X register and XH register are arranged corresponding to each entry, in these interconnection areas 91 to 95.
In
In the −1 bit shift interconnection area 91b, similarly, a line 101a connecting neighboring entries and a line 101b for data transfer from the entry of the minimum number (ALU element 0) to the entry of the maximum number (ALU 1023) are provided. Here again, lines 101a are arranged in an aligned manner.
Therefore, in these interconnection areas 91a and 91b, per 1 bit of transfer data, two interconnection lines are arranged. Therefore, when interconnections are made for 2-bit data transfer, the lines 100a, 110b, 101a and 101b are arranged such that each of these perform 2-bit data transfer in parallel.
The ±4 bit shift area 92 includes a +4 bit shift interconnection area 91a and a −4 bit shift interconnection area 92b,
The +4 bit shift area 92a includes interconnection lines 102a arranged being shifted in position from each other by one entry. There are four interconnection lines 102a arranged in parallel, and each performs data transfer to an entry apart or spaced by 4 bits. In this case also, in order to perform +4 bit shift to an entry of large number, an interconnection line 102b is provided. In
As shown in
Here, by arranging interconnection lines 100b, 101b and 102h for entry return so as to overlap with interconnection lines 100a, 101a and 102a for shifting, the interconnection layout area can further be reduced (multi-layered interconnection structure is utilized).
In ±16 bit shift interconnection area 93, by arranging interconnection lines for transferring 2-bit data shifted by 1 entry from each other, interconnection lines 103a and 104a can be arranged in parallel in the entry direction (vertical direction), and the interconnection layout area can be reduced. Here, in each of interconnection areas 93aa, 93ab, 93ba and 93bb, 16 lines are arranged.
Similarly, ±256 bit shift interconnection area 95 is divided into interconnection areas 95aa, 95ab, 95ba and 95bb. Here, in each area, 256 interconnection lines are arranged in parallel per 1 bit of transfer data, and entries away or distant by 256 bits are connected.
Using such shift lines, interconnections for performing shifting operations of ±4 bits, ±16 bits, ±64 bits and ±256 bits are provided for each entry, whereby it becomes possible to set the amount of data movement (distance between entries and the direction of movement) for each entry in moving data. In the following description, “amount of data movement” refers to both distance and direction of movement,
Inter-ALU communication circuit 71 includes a transmission buffer 120 receiving values stored in X register 52 and XH register 57, a multiplexer 122 for setting a transfer path of a data bit from transfer buffer 120 in accordance with bits B0 to E3 stored in the movement data register, and a reception buffer 124 receiving transmission data through a signal line 116 commonly coupled to a group of interconnection lines for the ALU processing element and generating data after transfer.
Multiplexer 122 selectively drives one of signal lines 110au-110ed provided corresponding to the entry. Signal lines 110au to 110ed each are a 2-bit signal line, representing the ±1 bit shift interconnection line to ±256 bit shift interconnection line shown in
Reception buffer 124 commonly receives corresponding group of signal lines (±1 bit shift lines to ±256 bit signal lines). The signal lines of the group of signal lines 115 are subjected to wired OR connection.
Upon data transfer, in inter-ALU communication circuit 71, multiplexer 122 selects a data transfer signal line (bit shift line) in accordance with values B0 to E3 stored in the movement data register, and couples the selected shift signal line to transmission buffer 120. Therefore, for one ALU processing element, one shift signal line is selected. The shift signal line is a one-directional signal line, and in the entry (ALU processing element 34) of the transfer destination, by signal line 116 coupled to reception buffer 124, one signal line of the group of signal lines 115 is driven. Therefore, even when the group of shift signal lines is wired-OR connected, data can reliably be transferred and received by the entry of the transfer destination and the transfer data can be generated.
Here, if the load on the signal line 116 is considered too heavy and high speed data transfer through transmission buffer 120 may be difficult, a multiplexer for reception similar to multiplexer 122 is provided in reception buffer. Here, the multiplexer for reception selects the source of data transfer based on the information at the time of data transfer. By setting the same data as the movement data E0 to E3 of the data transfer source, as the reception buffer selection control data at the destination of data transfer, it becomes possible for the reception buffer 124 to select the shift signal line on which the transfer data is transmitted.
In the 2-bit copy code, the data of distance of movement between entries designated by pointer cp is copied in 2-bit unit, in an RECM register (movement data register). Contents of n bits from the initial or start address bs designated by pointer by are transferred in 2-bit unit to the entry designated by the data in RECM register. At the entry as the transfer destination, the transferred data are copied in 2-bit unit, in a region starting from the initial address as indicated by pointer ap.
Thereafter, the data of region RGb of n-bit width starting from the start address bs designated by pointer by are transferred to the region RGa of n-bit width starting from start address as designated by pointer ap of data entry DERYb, in 1-bit unit (when 1-bit mode programmable zigzag copy instruction is executed) or in 2-bit unit (when 2-bit mode programmable zigzag copy instruction is executed). Data transfer paths are provided in one-to-one correspondence between entries, and data can be transferred without causing collision of data, by designating the data transfer destination individually for each entry.
Data transmission is performed using the X register and the XH register, and data reception is performed using the reception buffer. Here, after once storing the received data in X/XH register, the transfer data may be stored at bit positions designated by the address pointer ap, in accordance with a “store” instruction. Alternatively, in the zigzag copy operation, data may be directly written from the reception buffer to bit positions designated by address pointer ap, through an internal signal line.
Transmission and reception are not performed simultaneously. By way of example, transmission and reception may be done in the former half and in the latter half of one machine cycle, respectively. Alternatively, transmission and reception may be performed in different machine cycles. Thus, transmission and reception can be performed in one entry.
Selective activation for transmission and reception may be set, for example, by the mask bit V. When execution of a “load” instruction is masked at the time of transmission and execution of, a store instruction is masked at the time of reception by the mask bit V, transmission and reception can be executed selectively. Alternatively, by driving a bit line pair of the corresponding data entry using the reception buffer, it becomes possible to execute writing of received data in all entries in parallel (the address pointer at the time of writing is the same for all the entries, as the word line is common to all entries).
In
The interconnection lines between entries arranged for inter-ALU connecting switch circuit 44 are one-directional lines, and hence, among entries ERY0 to ERY8, data movement can be executed in parallel without causing collision of data.
Now, an operation when the programmable zigzag copy instruction shown in
Step 1: When data movement is to be performed individually in each entry by zigzag copying, first, data representing the amount of data movement of the corresponding entry is set in advance in a region designated by the pointer cp of the data entry. At this time, mask bit V is set in a different region.
Step 2: Controller (21) executes the zigzag copy instruction, and under the control of the controller, the entry movement amount data E0 to E3 stored in the region designated by the pointer cp of data entry are stored in the movement data register (RECM register). Therefore, this operation is performed commonly in every entry.
Step 3: In accordance with the movement data E0 to E3 stored in the data movement register (RECM register), connection path of the multiplexer (element 122 of
Step 4: In accordance with the data of the operation target (data to be moved) and dependent on whether it is a 1 bit mode copy or 2 bit mode copy, the transmission data is set in the register (X register and XH register, or X register) in the ALU processing element. At this time, the data in the region having the bit width of n bits designated by the pointer by of the data entry are stored in the register of the corresponding ALU processing element. This operation is also executed commonly on all entries under the control of controller (21).
Step 5: The data set in the register for transfer (X and XH registers, or X register) are transferred to the entry at the destination of movement through multiplexer 122 shown in
Step 6: The process of Step 3 to Step 5 is executed repeatedly until all the data bits to be moved are transferred.
At the time of this data transfer, when bit “0” is set in the mask register (V register), data setting and transmission from the data entry of an entry to a corresponding data register (X, XH and the movement data registers) are not performed.
Next, processing of an MIMD operation will be described.
Step 1: First, in a region having the bit width of n bits designated by the pointer cp of a data entry, an instruction (M0, M1) for performing an MIMD operation is set.
Step 2: An appropriate MIMD instruction among the MIMD operation instructions set in the data entries is stored in the MIMD instruction register, by executing a load instruction under the control of controller (21).
Step 3: A register load instruction is executed on the data of the operation target under the control of controller (21), data bits of bit positions designated by pointers ap and by of data entry regions (RGa and RGb) are transferred to the corresponding ALU processing element, and one data bit (which is transferred first) is set in the X register. In the ALU processing element, an operation content is set by the MIMD instruction decoder such that the instruction set in the MIMD instruction decoder is executed. On the data loaded from address positions designated by pointers ap and by of the data entry, the set operation is executed. The result of operation is stored at the bit position of the data entry designated by the pointer ap, by executing a store instruction, in controller (21).
Step 4: Until the number of times of operations reaches a designated number, that is, until the processing of all operations on the data bits of the operation target is complete, the process of Step 3 is repeatedly executed. Whether the operation number has reached the designated number or not is confirmed by checking whether the point ap or by reached the set maximum value or not.
When an SIMD operation is to be executed, under the control of controller 21 shown in
[Exemplary Application of a Combination Circuit]
When the 4-bit adder shown in
As shown in
In the 4-bit adder shown in
The logic operation of logic circuit shown in
Temporary regions t1 to tmp store process data, and at addresses designated by temporary pointers t1, t2 and t3, output values of logic gates of respective stages are stored. At the region designated by temporary pointer tmp, the other operation data of each entry is stored. Specifically, in each entry, a binary operation is executed on the data bit stored at the bit position indicated by temporary pointer ti (i is other than mp) and the data bit stored at the bit position indicated by the temporary pointer tmp. When a negation operation involving an inversion is executed, the inverting operation is performed on the data bit stored at the bit position indicated by the temporary pointer ti (in the following, generally referred to as a temporary address ti where appropriate).
MIMD instruction bits are stored in MIMD instruction register of the corresponding ALU processing unit in 2-bit mode, at data entries DERY0 to DERY7.
Before the start of operation stage STG 4 (at the end of stage STG3), operations are performed in four data entries DERY0, DERY2, DERY5 and DERY7 (each respective mask bit V (content of V register) is set to “1”). Here, operation instruction bits M0 and M1 of data entries DERY0 and DERY2 indicate an AND operation, and MIMD operation instruction (bits M0, M1) of data entry DERY5 designates a NOT operation. MIMD instruction bits M0 and M1 of data entry DERY7 designates an OR operation. Data entries DERY0 and DERY2 have executed the operation of AND gate in the preceding stage of OR gate G2 of stage STG4, and storing the result of this operation at temporary address t3. Data entries DERY5 and DERY7 store the output of an inverter of the preceding stage of gate G1 and the output of an OR gate in the preceding stage of gate G3, respectively, at temporary address t3.
Specifically, in
In data entry DERY 5, a NOT operation is performed, the bit value “1” that has been stored previously is inverted, and bit “0” is stored at temporary address t3. In data entry DERY7, an OR operation of bit values stored at temporary pointers t3 and tmp is performed, and the result of operation is again stored at temporary address t3, Therefore, “1” is stored at temporary address t3 of data entry DERY7.
Then, in order to execute the operation of stage STG4 shown in
Here, data entry DERY1 is allocated as the operation region of OR gate G2, data entry DERY4 is allocated as the region of AND gate G1, and data entry DERY5 is allocated as the region of OR gate G5 The region of data entry DERY6 is allocated to inverter G3 performing a NOT operation, Data entry DERY7 is allocated to the AND gate G4 for performing an AND operation.
To data entry DERY4, AND gate G1 is allocated. Here, the outputs of an inverter and the OR gate of the preceding stage are moved to data entry DERY4. Specifically, the bit at temporary address t1 of data entry DERY2 is moved to temporary address tmp of data entry DERY4, and the output of the inverter at temporary address t3 of data entry DERY5, which has been established in stage STG3, is moved to temporary address t4 of data entry DERY4.
Data entry DERY5 is allocated to OR gate G5. Here, outputs of AND gate and OR gate of the preceding stage of OR gate G5 must also be moved, and the data at the bit position indicated by temporary pointer t1 of data entry DERY2 and the data bit of data entry DERY1 indicated by temporary pointer t2 are moved to positions indicated by temporary pointers tmp and t4, respectively.
Data entry DERY6 is allocated to inverter G3. Here, it is necessary to move the output bit of the OR gate of the preceding stage to temporary address t4 of data entry DERY6. The result of operation of temporary address t3 of data entry DERY7 operated at the preceding stage STG3 is transferred to the position of temporary address t4 of data entry DERY6.
Data entry DERY7 is allocated to AND gate G4. The AND gate G4 receives most significant bits BIN[3] and AIN[3]. Therefore, the data at the bit position indicated by address pointer ap of data entry DERY7 is moved to the position indicated by temporary pointer tmp, and the data bit at the bit position indicated by address pointer ap stored in data entry DERY3 is moved to the position of temporary address t4 of data entry DERY7. Thus, input of respective gates G1 to G5 of stage STG4 are stored at bit positions indicated by temporary pointers t4 and tmp of respective data entries.
In this data moving operation, basic amounts of data movement are ±1, ±4, +16, ±64 and ±256. Therefore, the data are transferred, as far as possible, to regions indicated by the basic amounts of data movement. At the time of this data transfer, the zigzag copy instruction described above is used. By way of example, first, data transfer to the region indicated by temporary pointer t4 takes place and, thereafter, by executing the zigzag copy instruction, data are moved to the temporary address tmp in the similar manner. The data movement may be done in reverse order. Specifically, at the time of data movement to temporary addresses t4 and to tmp, data may be moved to temporary address tmp first.
In the data movement, the amount of data movement at data entries DERY2 and DERY3 is +2. Therefore, for the data movement between these two entries, +1 bit shift operation is executed twice.
In this data moving operation, in each data entry, data bits at the same bit positions are read (loaded) by a row decoder, not shown, and data are transferred and stored. Therefore, when data are transferred to temporary addresses t4 and tmp, data are moved while pointers ap and t1 to t4 are updated. Here, whether the movement is to be executed or not is determined by the mask hit V of the mask register (V register).
In this data transfer, first, the load instruction may be executed with the source address changed successively, to store transfer data bits in the corresponding X registers in respective entries and, thereafter, data transfer (1-bit mode zigzag copy instruction) may be executed while changing the destination address, with the destination being temporary addresses t4 and tmp. By way of example, when the copy instruction mx_cp_zp shown in
Thereafter, as shown in
In these operations, the operation is executed on bit values stored at temporary addresses t4 and tmp, and the result of operation is stored at a bit position of temporary address t4. In the data entry where the operation is not executed, the corresponding mask bit V is “0”. After execution of operations at stage STG4, results of operations are stored at bit positions of temporary address t4 of data entries DERY1 and DERY4 to DERY7.
Thereafter, through similar processing, operations of stages STG5 to STG8 are executed.
As the MIMD instruction control bit, the MIND instruction control bit or bits necessary for each stage is or are stored. Therefore, the bit width of the region for storing the MIMD operation instruction control bits is set in accordance with the number of operation stages, and the bit width of the region designated by the temporary pointer is also set in accordance with the number of operation stages.
[Exemplary Application of Sequential Circuit]
In the 2-bit counter shown in
To the clock inputs of flip-flops FF0 and FF1, a clock signal CLK is applied commonly.
In the 2-bit counter shown in
In order to store the values stored in flip-flops FF0 and FF1, at the data entry, pointer addresses FF0 and FF1 are prepared (here, both the flip-flops and the pointer addresses indicating the bit positions are denoted by the same reference characters).
In
In data entries DERY0-DERY3, operation instruction (control) bits M0 and MI are set to “1, 0”, and an XOR operation is designated. On the other hand, for the data stored in data entries DERY4 to DERY7, operation instruction (control) bits M0 and M1 are both set to “1”, and an AND operation is designated.
First, the process of operation in data entries DERY0 to DERY3 will be described. In the region indicated by temporary address t3, the initial value of flip-flop FF1 is stored. As to flip-flop FF0, the result of operation of stage STG1 differs dependent on the initial value, and the result of operation is stored in address pointer FF0. In
The bit value of temporary address t2 corresponds to the state before the rise of clock signal CLK, and it is a logical value before data storage to flip-flop FF0. Therefore, the bit value at the position of temporary address t2 and the value stored in flip-flop FF0 have opposite logical values.
At stage STG3, an XOR operation is performed on the bit value of temporary address t2 and the bit value stored in flip-flop FF1, and the result of operation is again stored in the bit position of flip-flop FF1.
Specifically, in data entries DERY0 to DERY3, as initial values of flip-flops FF1 and FF2, (0, 0), (0, 1), (1, 0) and (1, 1) are stored at pointer addresses FF0 and FF1. Before the rise of the clock signal CLK, in accordance with the values stored in flip-flop FF0, the output value of XOR gate G10 is determined, the bit value of temporary address t1 is determined, and as the clock signal CLK rises, the value stored in flip-flop FF0 is determined by the output bit value of XOR gate G10.
At stage STG2, in accordance with the value stored in flip-flop FF0 before the rise of clock signal CLK, the output bit value of AND gate G11 is determined, and the bit value is stored at temporary address 12. Therefore, hit values of temporary addresses t2 and t1 have opposite logical values.
At stage STG3, in accordance with the output value of AND gate G11 and the value stored in flip-flop FF1, the output value of XOR gate G12 is determined. The output value of XOR gate G12 is stored in flip-flop FF1 in synchronization with the rise of clock signal CLK.
In the bit arrangements of data entries DERY4 to DERY7, the operation of stage STG2 is about to be executed. At stage STG2, MIMD instruction bits (control bits) M0 and M1 are both set to “1”, and an AND operation is executed.
Here, at stage STG1, in accordance with the value stored in flip-flop FF0, the logical value of its output bit (output bit of XOR gate) is determined. XOR gate G11 operates as an inverter, and at temporary address t1, an inverted value of the value of flip-flop FF0 is stored.
When the operation of stage STG2 is executed, data has not yet been written to flip-flop FF0, and pointer addresses FF0 and FF1 of data entries DERY4 to DERY7 are shown maintaining the initial values of the 2-bit counter. Therefore, the bit value of temporary address t2 of stage STG2 is equal to the logical value of the bit stored in flip-flop FF0 (the input signal IN has the logical value “1”).
At stage STG2, a logical product operation (AND operation) on the value stored in flip-flop FF0 and the bit at the bit position of address pointer ap is executed in each entry.
As shown in
Further, by repeatedly executing the operations, in data entries DERY0 to DERY7, the states of flip-flops FF0 and FF1 can be stored at pointer addresses FF0 and FF1, and thus, the state of flip-flops can be represented.
As described above, by adding the MIMD instruction register and a decoder in the ALU processing element, it becomes possible to have a parallel processing device of an SIMD type architecture operate as an MIMD type processing device. Consequently, it becomes possible to execute different instructions in different entries at one time, and the process time can be reduced.
Further, by the MIMD instruction register and decoder, it becomes possible to achieve emulation of a logic circuit on the parallel processing device. Specifically, a NOT element (1-input, 1-output), an AND element (2-input, 1-output), an OR element (2-input, 1-output) and an XOR element (2-input, 1-output) constitute a complete logic system, and therefore, every combination circuit can be represented. Further, by preparing a region for holding data in the data entry, a sequential circuit such as a flip-flop or a latch can also be represented. Thus, every hardware circuit can be implemented by the parallel processing device in accordance with the present invention. Thus, in the parallel processing device, a software executing portion in accordance with the SIMD instruction and a hardware executing portion utilizing logic circuits can be provided together, and as a result, a processing device of very high versatility can be realized.
Further, when the 2-bit counter shown in
Further, as the MIMD operation is made possible, dependency on the degree of parallelism of processes can be reduced, so that the parallel processing device (MTX) comes to have wider applications. As a result, operations that were conventionally handled by host CPU can be closed within the parallel processing device (MTX), and therefore, the time necessary for data transfer between the CPU and the parallel processing device (MTX) can be reduced. Thus, the process performance of the overall system can be improved.
Further, data processing can be set by the entry unit in a reconfigurable manner, so that complicated data transfer (vertical movement; data movement between entries) can be controlled more flexibly, and high speed data transfer becomes possible.
In
When the entry communication is done using the RECM, as shown in
Therefore, when communication with entries at the same distance is to be done, as in the case of simultaneous movement using the vertical copy instruction “vcopy” with all entries being at the same distance, the operation would be slower if the data movement to individual entry is executed using RECM. Further, for each entry, the control data for setting the amount of data movement must be stored in the data entry, and therefore, the region for storing the communication control data must be provided in the memory mat.
When entries communicate with entries of different distances, however, the communication control can be realized for each entry, and hence, the process can be completed in smaller number of cycles. The reason for this is as follows. When the communication distance (data movement distance) differs from entry to entry, according to the conventional method, it is necessary to execute selective movement using the vertical movement instruction “vcopy” and the mask bit of the mask register (V register). Therefore, it is necessary to repeatedly execute data movement for each data movement amount, and hence, the process takes long time. When communication is controlled using the RECM register, however, communication distance of each entry can be selected in one communication, and hence, the data movement process can be completed in a shorter time. By way of example, when data movement such as shown in
Further, as the interconnection lines for data movement, conventionally used interconnection lines for executing the movement instruction “vcopy” or “move” in the conventional parallel processing device can directly be applied. Therefore, the number of cycles required for data movement can be reduced without increasing the area for interconnection lines. In the following, specific data movement processes will be described.
[Gather Process]
The gather process refers to a data moving process in which data at every 8 entries are collected, and the collected entry data are arranged in order from the first of the entries. Generally, this process is performed in image processing to introduce fluctuating noise (analog-like noise) at a boundary region, thereby to make smooth tone change at the boundary region.
In
Step 1: First, data (E0-E3) for controlling data movement are stored in the control data storage region of the data entry. Here, a data storage region in the entry is set commonly in each entry, in accordance with a pointer.
Step 2: From the data entry, the data E for controlling data movement is stored in the corresponding RECM register (movement data register), in accordance with the amount of data movement. As shown in
Step 3: Then, in accordance with the value E (E0-E3) stored in the RECM register, the distance and direction of movement are set for each entry, and the data are moved.
Referring to
Next, in each entry, the same moving instruction is executed. The data stored in entry ERY15 is transferred to entry ERY2047, and data of entry ERY7 is down-shifted by 1 bit. In entry ERY23, a −16 bit shift is performed, and in other entries ERY23, ERY31, ERY39 and ERY47, similar shift operation is performed. At this time, data B of entry ERY2047 is transferred to entry ERY3 (4-bit up-shift).
Again in the next cycle, data movement is performed in accordance with the group of control data Ea, so that data B, D, A, C, E and G are stored in entries ERY2 to ERY7, and data H is stored in entry ERY15.
Step 4: Then, the pointer is moved and the next movement control data is stored in the corresponding RECM register. In accordance with the group of movement control data Eb, data are moved. Specifically, a 4-bit up-shift operation is performed on the data of entry ERY2047, a 4-bit down-shift operation is performed on data A of entry ERY4, a 1-bit down-shift operation is performed on remaining entries ERY2, ERY3, ERY5-ERY7, and a 4-bit down-shift operation is performed on entry ERY15.
Step 5: The pointer is updated and the next movement control data is stored in the corresponding RECM register. The transfer data is stored in the X/XH register, and data are moved in accordance with the control data Ec. This moving operation is executed repeatedly on the transfer data bits. By this process, in ERY3 and ERY4, 1-bit up-shift and down-shift are performed, and the data are stored and exchanged. The data of entry ERY11 is stored, by 4-bit shift, in entry ERY7.
Step 6: The last group of movement control data is stored in the corresponding RECM register, and the amount of movement is set for each entry. The transfer data is stored in the X/XH register, and data are moved in accordance with the control data group Ed. In this process, contents of entries ERY2 and ERY3, and contents of entries ERY4 and ERY5, are exchanged in accordance with the control data group Ed, Thus, data A-H come to be successively stored from entry ERY0 to ERY7.
Therefore, by individual moving operations, such gather process can also be achieved, and high speed processing becomes possible.
In the data moving flow shown in
The example of 64 entries shown in
[De-Interleave Process]
De-interleave process refers to a process for moving data strings aligned in the vertical direction of entries such that data of even-numbered entries are stored in upper half area of the entry group and data of odd-numbered entries are stored in lower half area of the entry group.
As shown in
When the number of entries is 4, what occurs is simply a transition from initial state SA to state SB, as shown in
In the RECM, a cycle for setting the movement control data to the RECM register becomes necessary, and at the time of data transfer on 2-bit unit, cycles for storing the transfer data in the X/XH register, data transfer, and for writing the transfer data and the like at the transfer destination are required. Even when the number of entries is 4, 33 cycles are necessary for data movement. When the number of entries is 4 and the vertical copy instruction “vcopy” is used, it is necessary to use 2 bits of mask flag to inhibit transfer when data of even-numbered rows are transferred and data of odd-numbered rows are transferred. Further, in each movement data must be transferred by the same amount of data, and therefore, the number of cycles significantly increases to 172 cycles.
As can be seen from
[Anti-Aliasing Process]
An alias generally refers to an imaginary data not included in the original data. The anti-aliasing process is to remove or avoid the alias component. In the field of image processing, the anti-aliasing process means removal of jaggies (jaggy or stepwise portions along the pixels of the figure) of generated figures. The anti-aliasing process includes an operation of calculating a mean value among pixels of the region of interest. The aliasing process is for exchanging, among data aligned in vertical directions over entries, data of a prescribed range.
Further, data transfer is performed in entries ERY10 to ERY25, while data movement is not performed in other entries. Therefore, it is necessary to mask data transfer using the mask bit. Further, a mask is necessary also when the +shift and −shift are performed alternately.
Therefore, as can be seen from the table of
Further, when the RECM register is used, the contents of from entries ERY0 to ERY25 can be moved entirely, and therefore, the temporary region becomes unnecessary. Thus, the width of memory mat region used for data communication can be reduced.
Provision of the RECM register using data movement communication circuitry attains the following effects. Specifically, when the vertical movement instruction “vcopy” or “move” is used that instructs simultaneous movement, data can be moved only between entries of the same distance at one time. Therefore, when data movement over different distance entry by entry is necessary, movement between entries must be repeated a number of times in accordance with the amount of data movement. When the inter-ALU data communication circuit (RECM register) in accordance with Embodiment 1 of the present invention is used, however, the distance of data movement between entries can be set and the data can be moved, entry by entry in a programmable manner. Consequently, high-speed data movement between entries becomes possible. Further, dependent on the amount of data movement, data can be moved over desired, different distances for each entry, simply by once executing the data movement instruction.
Further, by simply switching the selection signal of a multiplexer for data movement between entries to a control signal of an RECM register (including a decode circuit) from the overall control (control by controller 21 (see
Except for this point, the configuration of ALU processing element shown in
By way of example, in
As the instruction for transferring (loading) the movement amount data to these registers 53, 54, 59 and 58, the load instructions shown in the list of instructions described previously may be utilized, and thus, the movement amount data can be stored in these registers.
As described above, according to Embodiment 2 of the present invention, as the registers for storing movement data, registers not used at the time of data moving operation among the registers provided in the ALU processing unit are used. Thus, the area of occupation by the circuitry for inter-ALU movement can be reduced. Further, when the movement data are stored, the movement control data can be stored using the register load instruction for an SIMD operation, and therefore, program description for data movement control is easy.
Embodiment 3It is noted, however, that in the configuration shown in
In the configuration of ALE processing element 34 shown in
In the operation description, by the instruction of line number 0, the pointer of pointer register p1 is set as the initial value cs of pointer cs.
By the instruction of line number 1, the bit of the position designated by the pointer of pointer register p1 is loaded to the C register, and the count value of pointer register p1 is incremented by 1.
By the instruction of line number 2, the data bit at the bit position designated by pointer register p1 is loaded to the XL register.
In accordance with the instruction of line number 3, the pointer of pointer register p2 is set as the initial value as of address pointer ap, and the value designated by the pointer of pointer register p3 is set as the initial value by of address pointer bp.
By the “for” sentence of line number 4, the range of variation of “i” is set within the range of 0 to bit width bit_count, and at each operation, the value i is incremented.
By the instruction of line number 5, the bit at the position designated by the pointer of pointer register p2 is loaded to the X register, and then, the pointer of pointer register 2 is incremented.
By the instruction of line number 6, on the data bit at the position designated by the pointer of pointer register p3 and the data of X register, the designated MIMD operation instruction “alu. op. mimd” is executed in accordance with the bits stored in the C register and XL register 58, and the result of execution is again stored at the bit position designated by the pointer of pointer register p3.
Line number 7 indicates the end of the instruction sequence.
Therefore, when the MIMD operation is executed, by the C register 53 and the XL register 58, operation instructions (control bits) M0 and M1 are stored, the data bit as the operation target is transferred, and an operation with the bit at the position designated by the pointer of pointer register p3 is executed. Here, when the operation of 1-bit basis is executed, a logic operation is executed using the X and XH registers. When the operation of 1-bit basis is executed, the data at the bit position designated by the pointer of pointer register p3 is transferred to the XH register, and the operation is executed. When a negation instruction NOT is to be executed, an inverting operation is executed on the bit value of a predetermined register, among the bits stored in the XL and XH registers.
In this manner, by utilizing an instruction of a common SIMD type architecture, it is possible to set an MIMD instruction in the registers of each ALU processing element and to execute the operation process.
As described above, in accordance with Embodiment 3 of the present invention, as the registers for storing the MIMD instruction, registers for storing operational data of the ALU processing element are used, so that a dedicated MIMD operation instruction register becomes unnecessary. Thus, the area occupied by the ALU processing element can be reduced.
Embodiment 4As an example, in XL register 58, instruction bit M0 and control data ED are stored, and in C register 53, MIMD operation instruction M1 and data movement amount control bit E3 are stored. In F register 54 and D register 59, movement amount control bits E1 and E2 are stored, respectively. The data movement operation and the MIMD operational instructions are not simultaneously executed. Therefore, collision of data bits does not occur even when the C register 53 and XL register 58 are used for storing the MIMD operational instruction and the control bits of zigzag copying operation.
The configuration of the ALU processing element in accordance with Embodiment 4 shown in
As described above, according to Embodiment 4 of the present invention, as the registers for storing the MIMD instruction and respective control bits of the RECM data, registers provided in the ALU processing element are utilized. Therefore, it is unnecessary to add new, further registers in the ALU processing element, and the increase in area of ALU processing element can be avoided. By way of example, when 1024 entries are provided and 6 registers (2 bits for MIMD register, 4 bits for RECM registers) are shared per one ALU processing element, a total of 6144 registers can be reduced, and the area increase can effectively be prevented.
The manner of loading data and movement/instruction control data to each register and the manner of executing the MIND instruction are the same as those described in Embodiment 1 above. By issuing once the zigzag copy instruction and the MIMD operational instruction, data transfer and operation can be executed on entry by entry basis.
Embodiment 5Referring to
The MIMD instruction decoder 74 shown in
The configuration of combination circuit for MIMD instruction decoder 74 shown in
In
The MIMD operation instructions applied to multiplexer 170 are each bit-deployed and supplied in the form of a code. In accordance with control bits M0 and M1, a code representing the designated operation instruction is selected and applied to adder 50.
In order to generate a bit pattern of the MIMD operational instruction, an instruction pattern memory ROM is provided. The instruction pattern memory ROM is a read-only-memory, and includes memory regions MM1-MMn each having the bit width of 4 bits, provided corresponding to selectors SEL1 to SELn. At the bit positions of the same number of memory regions MM1 to MMn, code bit of the same MIMD operational instruction is stored. Therefore, by selectors SEL1 to SELn, values stored at the same bit positions of these memory regions MM1 to MMn are selected in accordance with the operation instruction bits M0 and M1, and a control pattern having the n-bit width representing the operational instruction as a bit pattern (code) is selected and applied to adder 50. The bit width n of the bit pattern is set in accordance with the internal configuration of adder 50, and the number of bits necessary for switching the signal propagation path for realizing the designated logic operation in adder 50 is used.
The instruction pattern memory ROM is provided common to the ALU processing elements of all the entries of the main processing circuitry. The stored values of instruction pattern memory ROM are set by masking during manufacturing. Therefore, when the mask value is changed when masking the instruction pattern memory ROM, the instructions to be executed as MIME) operations can easily be changed, and hence, the contents of operation to be executed can easily be changed. Further, by extending bit width of selectors SEL1 to SELn and of memory regions MM1 to MMn, extension in types of MIMD operational instructions can easily be accommodated.
The instruction pattern memory ROM may not be a mask ROM, and it may be formed by an electrically rewritable (erasable and programmable) non-volatile memory. In that case also, the logic operation instructions can be changed or extended easily, by electrically rewriting the stored contents.
Embodiment 7Memory 175 may be any memory that allow random accessing, and a common SRAM (Static Random Access Memory) or a flash memory may be used. Though not explicitly shown in
When an instruction set of memory 175 is changed, a code (bit pattern) of each instruction set is stored in each corresponding data entry. Here, a configuration may be adopted in which a register for serial/parallel conversion is provided in a preceding stage of the input circuit in memory 175, the instruction code is transferred to memory 175 from the corresponding data entry by 1-bit unit, and for n-bit instruction code of each instruction set, the instruction code transferred in bit-serial manner is written to the corresponding address position in n-bit parallel manner.
Alternatively, a configuration may be adopted, in which a bus dedicated for MIMD instruction transfer is provided for the MIND instruction decoder, and through such dedicated bus, each instruction code of the instruction set is transferred through internal bus 14 shown in
Further, memory 175 may be formed into a 2-port configuration having A port of 1/2 bit width (one or two bit width) and B port of n-bit width, and the instruction code may be written through A port at the time of writing to memory 175, and the instruction code may be read through B port at the time of reading.
Implementation of MIMD instruction decoder 74 by a memory (RAM) 175 such as shown in
The present invention allows, when applied to a processing device (MTX) having an SIMD type architecture executing parallel operations, execution of operations with low parallelism at high speed. Application of the invention is not limited to the parallel processing, and it may also be applied to an emulator device for a logic circuit.
Although the present invention has been described and illustrated in detail, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation, the scope of the present invention being interpreted by the terms of the appended claims.
Claims
1-12. (canceled)
13. A parallel processing device, comprising plural operational blocks each comprising:
- a data storage unit including a plurality of data entries each including a plurality of memory cells arranged as a memory cell array and arranged corresponding to a respective entry;
- a plurality of arithmetic/logic processing elements, each of which couples with a corresponding entry and performs a designated operational processing on data stored in the corresponding entry; and
- a plurality of data communication circuits, provided corresponding to the entries, each performing data communication between a corresponding entry and another entry, the plurality of data communication circuits each having entry-to-entry distance and direction of data movement set individually in accordance with operation kind to be performed.
14. The parallel processing device according to claim 13, wherein each of the data communication circuits includes
- a movement data register for storing data for setting an amount of data movement, and
- a multiplexer for setting a data transfer path in accordance with the data stored in the movement data register.
15. The parallel processing device according to claim 13, wherein
- each of the arithmetic/logic processing elements includes a plurality of registers for storing data to be processed and mask data for masking the operational processing; and
- the movement data register is formed by a register, among the plurality of registers, other than the registers used in the data movement operation.
16. The parallel processing device according to claim 13, wherein
- movement data for setting an amount of the data movement designates one data movement amount among a plurality of predetermined amounts of data movement including direction of data transfer, the entries are arranged successively from an uppermost to a lowermost order, and when destination of movement exceeds the uppermost or lowermost entry in data movement the destination of data movement is designated in a cyclic manner.
17. A parallel processing device, comprising plural operational blocks each comprising:
- a data storage unit having a plurality of data entries, each data entry including a plurality of memory cells arranged as a memory cell array and arranged corresponding to a respective entry;
- a plurality of arithmetic/logic processing elements each of which couples with a corresponding entry and performs a designated operational processing on data stored in the corresponding entry; and
- a plurality of data communication circuits, provided corresponding to the entries, each performing data communication between a corresponding entry and another entry, the plurality of data communication circuits each having entry-to-entry distance and direction of data movement set individually in accordance with operation kind to be performed;
- data for setting contents of operational processing of each respective arithmetic/logic processing element and data for designating amount of data movement of the data communication circuit being set in an empty register among a plurality of registers storing data to be processed and mask data for masking an operational processing, provided in the respective arithmetic/logic element.
Type: Application
Filed: Jun 23, 2010
Publication Date: Dec 23, 2010
Applicant: Renesas Technology Corp. (Chiyoda-ku)
Inventors: Toshinori Sueyoshi (Kumamoto-shi), Masahiro Iida (Kumamoto-shi), Mitsutaka Nakano (Kumamoto-shi), Fumiaki Senoue (Kumamoto-shi), Katsuya Mizumoto (Chiyoda-ku)
Application Number: 12/821,732