VECTOR PROCESSING SYSTEM

Abstract: A vector processing system, having a store data alignment circuit and a pipe line structure, includes a unit (105) for storing vector-processed data; a unit (104) for controlling the reading of the vector-processed data from the vector-processed data storing unit and the storing the read data to the main storage units (3); a unit (2) correspondingly provided to the main storage unit, for receiving the vector-processed data through the read and store control unit and buffering the data therein; a unit for managing the data stored in the data buffering unit; and a unit for determining a priority of a store access to the main storage unit. The read and store control unit and the main storage unit are operable in response to the priority determined at the priority determining unit. The main storage unit is activated to store the vector-processed data when the vector-processed data are stored in the data buffering unit or the store of the vector-processed data from the vector-procesed data storing unit to the data buffering unit is started, after the priority determination is completed. Such a vector processing system enables a store access time for storing vector-processed data therein in main storage units connected thereto to be improved.

Description: The present invention relates to a vector processing system. In known vector processing systems, the vector processing system is connected to one or more memory storage units for storing data to be vector-calculated. The data in a main storage unit are loaded, aligned for vector calculation in a certain order, stored in a vector register unit, and vector-calculated. The vector-calculated data are realigned, for storing in the main storage unit and stored in the main storage unit. The vector calculation may be an addition, multiplication, division or any combination thereof. To speed up the above operation, the vector processing system is given a pipeline construction. In addition, when the vector processing system is connected to a plurality of main storage units, a priority decision circuit for determining the priority for access to the main storage units is provided. Such prior vector processing systems suffer from the disadvantages of a low operation speed and a complex circuit construction. Accordingly, it is desirable to provide a vector processing system with an improved operation time. EP-A-0 138 451 by the present applicant discloses a vector data processing system having features corresponding to those of the preamble of accompanying claim 1. This system includes A- and B-access pipelines between a main storage unit and vector registers, and provides an additional read port for generating indirect addresses, connected between the A- and B-access pipelines. This additional read port makes it unnecessary to increase the multiplexity of interleaving of the vector registers. The system according to the present invention, is set out in claim 1. The transfer means (also referred to as a read and store control unit) may include an alignment circuit for aligning the vector-processed data read from the vector-processed data storing means in a predetermined order defined by a store order in the main storage means, and storing the aligned data in the buffering means. The main storage means may include a plurality of independently operable main storage units and the buffering means may include a plurality of buffering circuits each operatively connected to a corresponding main storage unit. The alignment by the transfer means is effected to meet (satisfy) the storage order in the main storage units. The transfer means (read and store control unit) may have a pipeline structure for performing the control in parallel. The vector-processed data storing means preferably includes a memory circuit for storing the vector-processed data, and another memory circuit for storing data to be vector-processed. The vector-processed data storing means may include a vector calculation circuit for vector-calculating the data from, and storing the calculated data to, the appropriate memory circuits of the vector-processed data storing means. The vector processing system may further include source data loading means, operatively connected between the main storage means and the vector-processed data storing means, for storing the source data, to be vector-calculated in the main storage unit, in another memory circuit of the vector-processed data storing means. The source data loading means may include another alignment circuit for aligning the source data read from the main storage means in a predetermined order defined by a vector calculation order in the vector-processed data storing means. Reference will now be made, by way of example, to the accompanying drawings, in which:- Fig. 1 is a block diagram showing the system configuration of a prototype vector processing system useful for explaining the present invention; Fig. 2 is a circuit diagram of a store access processor in Fig. 1; Fig. 3 is a circuit diagram of an address generator and a priority decision circuit in Fig. 1; Figs. 4a to 4f are timing charts for explaining the operations of the circuits in Figs. 1 to 3; Fig. 5 is a block diagram showing the system configuration of a vector processing system according to an embodiment of the present invention; Fig. 6 is a circuit diagram of a store access processor in a vector processing unit in Fig. 5; Fig. 7 is a circuit diagram of an address generator in the vector processing unit in Fig. 5; Fig. 8 is a circuit diagram of a buffer controller in a memory control unit in Fig. 5; and Figs. 9a to 9d are timing charts for explaining the operations of the circuits in Figs. 5 to 8. Before describing the preferred embodiments, a prototype vector processing system will be described below in detail with reference to Figs. 1 to 4. Figure 1 shows the prototype vector processing system, Fig. 2 shows a store access pipe line therein, and Fig. 3 shows an address generator and a priority decision circuit therein. Referring to Fig. 1, reference numeral 1 denotes a vector processing unit (VPU); 2, a memory control unit (MCU); 3, a main storage unit (MSU) group; 4, an address bus (APR-BUS); 5, a store data bus (SDT-BUS); 6, a control signal bus (CNT-BUS); 7, a load data bus (LDT-BUS); 101, a command controller; 102, a store access pipe line; 103, an address generator; 104, a store access processor; 105, a vector register unit; 106, an addition pipe line (ADD-PL); 107, a multiplication pipe line (MPY-PL); 108, a division pipe line (DIV-PL); 110, a load buffer register group; 130, a store buffer register group; 132, a load access pipe line; 134, a load access processor; 201, a priority decision circuit; 202, a store error checking and correction (ECC) circuit; 203, a request buffer group; 204, a memory address register group; 205, an address pipe line; 215, a port group; and 232, a load error checking and correction (ECC) circuit. Data subjected to vector processing must be previously stored in the vector register unit 105 in the following sequence: loading the data from the corresponding main storage unit 3; checking errors at the corresponding ECC circuit 232; aligning the checked data in the load access processor 134; and storing the aligned data in the vector register unit 105 through a corresponding store buffer register in the store buffer register group 130. The data alignment may be needed for adjusting a difference between a data arrangement in the main storage unit group 3 and a data arrangement for effectively vector-processing the data in the vector register unit 105. More specifically, if the following vector addition is effected; {c i } = {a i } + {b i } where, i = 0 to 3 and when vector elements a i and b i are stored as follows: a₀ and b₀ are stored in the MSU 1, a₁ and b₁ in the MSU 2, a₂ and b₂ in the MSU 3, and a₃ and b₃ in the MSU 4, the vector elements a₀ to a₃ may be sequentially stored in a first vector register of the vector register unit 105 and the vector elements b₀ to b₃ also may be sequentially stored in a second vector register of the vector register unit 105. To obtain the arrangement as set forth above, the data alignment is made. A circuit for data alignment will be described in the description of the store access processor 104. The data alignment may be needed in the data store, if vector elements c i calculated by the above formula are stored in a third vector register of the vector register unit 105, and c₀ is stored in the MSU 1, c₁ in the MSU 2, c₂ in the MSU 3, and c₃ in the MSU 4. The data alignment for storing will be described in detail later. When a scalar processing unit (SPU) (not shown) detects a vector command, this command is sent to the command controller 101 in the vector processing unit 1. The command controller 101 decodes the vector command from the scalar processing unit (SPU) to determine whether the command is a memory access command or an arithmetic operation command. The command controller 101 also discriminates which pipe line is started. For example, the addition pipe line 106, the multiplying pipe line 107, the division pipe line 108, the store access pipe line 102, or the load access pipe line 132 is started. If the command controller 101 initializes the store access pipe line 102, a request is sent from the address generator 102 to the priority decision circuit 201 in the memory control unit 2. After a priority is determined at the priority decision circuit 201, store data are read out from the vector register unit 105 and sent to the store access processor 104 through a corresponding a load buffer register in the load buffer register group 110, thereby performing store access processing to the corresponding main storage unit 3. More specifically, the priority decision circuit 201 in the memory control unit 2 sends a request signal to the store access pipe line 102 in the vector processing unit 1, and the priority of each element of the vector data is decided by the priority decision circuit 201. Under these conditions, a data transfer request DTW is sent from the priority decision circuit 201 in the memory control unit 2 to the store access processor 104 in the vector processing unit 1 through the control signal bus 6. Also, identification information (ID) representing part of the address data for discriminating which element is stored in which the main storage unit is sent from the priority decision circuit 201 to the store access processor 104 through the address pipe line 205. Upon reception of such information, the store access processor 104 performs processing for reading out store data from the vector register unit 105 and transferring the read data to the store ECC circuit 202 in the memory control unit 2. The detailed arrangement of the store access processor 104 and relevant circuit thereto will be described with reference to Fig. 2. The vector register unit 105 consists of four vector register groups VR1 to VR4 constituted by 256 vector registers. Reference numeral 109, represents a vector register read controller; 110, the load buffer register group including five vector data load registers LDREG0 to LDREG4; 111, an alignment buffer write register group including five alignment buffer write registers ABW0 to ABW4; 112, an alignment buffer unit including four alignment buffers AB1 to AB4; 113, a write address unit; 114, an alignment buffer read register group including four alignment buffer read registers ABR1 to ABR4; 115, a store alignment circuit; 116, an alignment output register group including four alignment output registers AOR1 to AOR4; 117, an alignment controller; 118, a read controller; and 119, a read address unit. The vector-processed data are read out from the vector registers VR1 to VR4 through the load buffer register group 110 under the condition specified by the vector register read controller 109. The readout data are temporarily stored in the alignment buffer unit 112. The data written in the alignment buffer unit 112 are read out in response to the data DTW and the ID signal from the priority decision circuit 201 in the memory control unit 2. The processed vector elements are aligned by the store alignment circuit 115 to determine which elements have sent data to which corresponding main storage units. The aligned data are sent to the corresponding main storage unit through the corresponding store data bus 65 and the corresponding ECC circuit 202. Therefore, the readout data can be transferred to the corresponding main storage units 3 through the corresponding ECC circuit 202. Figure 3 shows a detailed arrangement of the address generator and the priority decision circuit. Referring to Fig. 3, reference numeral 103 denotes the address generator; 120, a lead address register group including four lead address registers LA1 to LA4; 121, a distance register group including four distance registers DR1 to DR4; 122, an adder unit including four adders 122₁ to 122₄ ; 123, an address generation controller; 124, an address translation register unit including four address translation registers TR1 to TR4; 125, an address translator; 126, a request address register unit including four request address registers RQA1 to RQA4; 201, the priority decision circuit; 203, the request buffer group including four request buffers RQB1 to RQB4; 204, the memory address register group including four memory address registers MAR1 to MAR4; 205, the address pipe line; and 215, the port group including four ports PORT1 to PORT4. The address generator 103 receives a lead address LEAD-ADR, a distance DISTANCE, a vector length VL, and a start signal START from the command controller 101 and causes the adder unit 122 to generate address data corresponding to each element of vector data. The address data from the address generator 103 is translated by the address translator 125, thereby supplying request address data to the memory control unit 2. The lead address LEAD-ADR indicates a first store address of a first vector-processed element, such as c₀ in the above example, to be stored in the main storage unit 3. The distance DISTANCE indicates an address distance between adjacent vector-processed element, such as c₀ and c₁. The vector length VL is four elements in the above example. In the memory control unit 2, the request address data is temporarily set in the request buffer group 203 and then input to the priority decision circuit 201 through the port group 215. The priority decision circuit 201 checks a bus conflict (collision) for the memory address register group 204, memory bank busy and the like. When the priority decision circuit 201 decides a priority, the circuit 201 sends the data transfer request DTW and the ID signal as part of the address information to the store access processor 104 in the vector-processing unit 1, thereby requesting data. In response to the data request, the store pipe line 102, specifically the store access processor 104, reads out the store data from the alignment buffer unit 112 which has stored the data read from the vector register group 105. The readout data are aligned, and the aligned data are transferred to the store ECC circuit 202 in the memory control unit 2. The start signal START is supplied from the memory control unit 2 to the main storage unit 3 when data are sent out from the memory control unit 2. The request address is temporarily stored in the address pipe line 205, and the request address is set from the address pipe line 205 to the memory address register group 204 at the time of data transfer from the memory control unit 2 to the main storage unit 3, thereby accessing the main storage unit 3. The above operations are shown in the timing chart of Figs. 4a to 4f. Note that a six machine cycles time, from the priority decision to the activation of the main storage units 3, is required to store the vector-processed data in the vector register unit 105 in the corresponding main storage units 3. In the above embodiment, the address pipe line 205 can be omitted. Referring back to Fig. 1, the priority decision circuit is operable in response to a command from the scalar processing unit or a channel processor (CHP). The command selection is made by a selector 240. Figure 5 shows a vector processing system according to an embodiment of the present invention. In addition to the circuit elements in the vector processing system in Fig. 1, the vector processing system also includes a store data buffer 206 and a buffer controller 207. The operation of the vector processing system in Fig. 5 will be described below. When the command controller 101 in the vector processing unit 1 receives a vector store command from a scalar unit, a store access pipe line 102' is started. The address generator 103 generates a store address signal in units of vector data elements. A plurality of request address signals are supplied to a priority decision circuit 201' in a memory control unit 2' through four address buses 4. At the same time, part of the address data is sent as ID information to the store access processor 104. When a store access processor 104' recognizes the space for storing data in a store data buffer group 206, the store access processor 104 reads out data from the vector register unit 105 regardless of priority decision by the priority decision circuit 201'. The readout data are aligned, and the aligned data are sent to the store ECC circuit 202 in the memory control unit 2. In this case, the store data send signal STOREDT is simultaneously supplied to the buffer controller 207 in the memory control unit 2. When the buffer controller 207 in the memory control unit 2 receives the store data send signal STOREDT from the store access processor 104 in the vector processing unit 1, the buffer controller 207 determines a write address for the store data buffer group 206 and writes the store data in the store data buffer 206. The store data read out from the vector register unit 105 are supplied to the corresponding store ECC circuit 202, and the corresponding ECC codes are produced. Upon reception of the store data send signal STOREDT from the store access processor 104 in the vector processor unit 1, the buffer controller 207 sends a priority-permission signal PERMPRTY to the priority decision circuit 201′. The priority decision circuit 201′ decides the priority of the store for the corresponding vector data element. If such a priority is allowed, the priority decision circuit 201′ sends a store request to the main storage unit 3, and simultaneously, a priority signal PRIORITY to the buffer controller 207, so that the store data are read out from the store data buffer 206 and sent to the corresponding main storage units 3. The detailed circuit arrangement of the vector processing system described above is shown in Figs. 6 to 8. The circuit arrangement in Figs. 6 to 8 is an improvement on the arrangement of the circuits shown in Figs. 2 and 3. Figure 6 shows the circuit arrangement of the store access processor 104′ and relevant circuit thereto in the vector processing unit 1. Compared with the circuit shown in Fig. 2, the alignment buffer write register group 111, the alignment buffer unit 112, the write address unit 113, the alignment buffer read register group 114, the read controller 118, and the read address unit 119 in Fig. 2 are omitted from the circuit arrangement in Fig. 6. Referring to Fig. 6, an alignment input register group (AIR) 129 is arranged in place of the alignment buffer read register group 114 in Fig. 2. Different to Fig. 2, a vector register read controller 109′ executes read operation of store data at the read timing of the vector register unit when the vector register read controller 109′ receives a buffer spare signal BUFSPR from the buffer controller 207 in the memory control unit 2. Other arrangements of the vector register read controller 109′ are the same as that Fig. 2. As shown in Fig. 7, the address generator 103′ includes an identification buffer (IDB) group 127 for temporarily storing ID data which constitutes part of the request address data for the memory control unit 2 and which represents the correspondence between the vector data element and the main storage units 3. The ID data is stored in the ID buffer group 127 at the address generation timing. As shown in Fig. 6, the alignment controller 117 controls the alignment of the store data read out from the vector register unit 105, on the basis of the ID data from the address generator 103 and sends the ID data to the corresponding data buses 5. At the same time, the alignment controller 117 sends the store data send signal STOREDT to the buffer controller 207 in the memory control unit 2′. A detailed arrangement of the address generator is shown in Fig. 7. The address controller 103 in Fig. 7 includes the ID buffer 127, as described above. Since the address pipe line in Fig. 3 is optional, it may be arranged in the circuit of Fig. 7. Other arrangements of the circuit in Fig. 7 are the same as those in Fig. 3. The adder unit 122 adds a distance DISTANCE to a lead address LEAD-ADR of each element of the vector data to produce a store address signal for the corresponding main storage units 3. The address signal is then transferred to the priority decision circuit 201 in the memory control unit 2′ through an address translator 125 the request buffer group 203, and the port group 215. In this case, part of the address data, i.e., the ID data for determining which of the main storage units MSU 1 to MSU 4 is accessed, is stored in the ID buffer 127. The ID data read out from the ID buffer 127 is sent to the alignment controller 117 in Fig. 6, and the store data is used to determine which main storage unit shall receive the data through the corresponding data bus 5. The priority decision circuit 201′ in the memory control unit 2′ permits the priority, i.e., the main storage unit initialization, when the store data are written in the store data buffer 206 and the priority permission signal PERMPRTY from the buffer controller 207 is present. The circuit arrangement of the buffer controller 207 in the memory control unit 2′ and its associated circuits are shown in Fig. 8. For illustrative convenience, only the portion for the line A is shown. Referring to Fig. 8, reference numerals 206 denotes the store data buffer; and 207, the buffer controller. For one input line connected to the buffer controller 207, the buffer controller 207 includes a buffer write control circuit 208, a write address register 209, a store data counter 210, a buffer store data count detector 211, a buffer read control circuit 212, and a read address register 213. The arrangement of the buffer controller 207 for the remaining three input lines is the same as that described above. When store data are transferred from the store access processor 104′ in the vector processing unit 1, ECC codes are produced by the corresponding ECC circuit 202 and stored in the corresponding store data buffer 206. Each buffer write control circuit 208 in the buffer controller 207 receives the store data send signal STOREDT upon reception of the corresponding store data from the store access processor 104′ in the vector processing unit 1′. Whenever the buffer write control circuit 208 receives the store data send signal STOREDT, it generates a write address signal and a write enable signal for the corresponding store data buffer 206. The write address signal and the write enable signal are stored in the corresponding store data buffer 206. The store data transferred from the store access processor 104′ in the vector processing unit 1′ is written at the designated address of the corresponding store data buffer 206. Whenever the store data send signal STOREDT is received by the buffer write control circuit 208, the signal STOREDT is counted by the store data counter 210. The buffer store data count detector 211 checks the count of the store data counter 210. If the count is not zero, the buffer store data count detector 211 sends the priority permission signal PERMPRTY. The priority signal PRIORITY obtained upon decision of the priority by the priority decision circuit 201′ is supplied to the corresponding buffer read control circuit 212 in the buffer controller 207. The control circuit 212 reads out the store data from the store data buffer 206. At the same time, the priority signal PRIORITY is also applied to the store data counter 210, and the counter 210 is decremented. The store data counter 210 provides a count obtained by a current difference between the number of data written in the store data buffer 206 and the number of readout data. The write address register 209 of the buffer write control circuit 208 and the read address register 213 of the buffer read control circuit 212 store the write and read address signals for the corresponding store data buffer 206. The address is updated every time the read and write access cycle is completed. The above operations are shown in timing charts in Figs. 9a to 9d. In the best operation mode, only a two machine cycles time, as shown by solid lines, is required to store the vector-processed data in the vector register unit 105 in the corresponding main storage units 3. Even in the worst operation mode, only a three machine cycles time is shown by dotted lines, is required. Compared with the timing charts shown in Fig. 4a to 4f, the latter embodiment greatly improves the store access time. The store data buffer 206 arranged in the memory control unit 2′, and the data read out from the vector register unit 105 are subjected to alignment and error checking and correction. The resultant data are stored in the corresponding store data buffer in the memory control unit 2′. Preferably, the number of store data buffers 206 is equal to the number of main storage units 3. As parallel processing, the request from the vector processing unit 1 is sent to the memory control unit 2′ and stored in the request buffer 203 therein. The priority decision circuit 201′ in the memory control unit 2′ decides the store priority when data is written in the data buffer or data to be written is detected. If the request is permitted, the store data can be immediately transferred to the corresponding main storage units 3. In this case, the minimum data transfer time is the bank busy period. According to this embodiment, the start of the main storage units 3 can be simultaneously performed on a priority basis. Therefore, the bank busy period can be minimized, and processing efficiency can be improved. In the above embodiment, the circuit elements may be arranged in any unit. For example, the buffer controller 207 may be arranged in the vector processing unit 1′. The store data buffers 206 are preferably located near the main storage units 3.

Claims: A vector processing system comprising: at least one main storage means (3); a main storage control means (2') for controlling access to the main storage means (3); a vector-processed data storing means (105) for storing vector data; a transfer means (102') for reading the stored data from the vector-processed data storing means (105) and transferring that data to the main storage control means (2'); and a priority determining means (201') provided in the main storage control means (2') and for determining a priority order of access requests for the main storage means (3); characterised in that the system further comprises: buffering means (206) provided for the or each main storage means (3) respectively, operatively connected between said main storage means and said transfer means (102'), for storing the data which is transferred by the transfer means (102') regardless of any decision of said priority determination means and to write the data in the main storage means (3) once the priority has been determined; and a control means (207) for supplying a transfer request (PERMPRTY) from the transfer means for the main storage means (3), to the priority determining means (201') when data are already stored in the buffering means (206) or data writing in the buffering means (206) is recognised; whereby data can be directly transferred from the buffering means (206) to the main storage means (3) once the priority order has been determined. A vector processing system according to claim 1, wherein the transfer means (102') comprises an alignment circuit (104') for aligning said vector-processed data read from the vector-processed data storing means (105) in a predetermined order defined by a store order in the main storage means (3), and storing said aligned data in the buffering means (206). A vector processing system according to claim 2, wherein said transfer means (102') further comprises an address buffer (127) storing a plurality of addresses for indicating store addresses for said main storage means (3), said data read from said vector-processed data storing means (105) and said data alignment being effected in response to said data store of said store addresses to said main storage means (3). A vector processing system according to claim 3, wherein the main storage means (3) comprises a plurality of independently operable main storage units and the buffering means (206) comprises a plurality of buffering circuits each operatively connected to a corresponding said main storage unit (3), and wherein said alignment at the transfer means (102') is effected to meet said store order in the main storage units. A vector processing system according to claim 4, wherein the transfer means (102') has a pipeline structure for performing said control in parallel. A vector processing system according to claim 5, wherein the vector-processed data storing means (105) further comprises a memory circuit for storing said vector-processed data. A vector processing system according to claim 6, wherein the vector-processed data storing means (105) further comprises another memory circuit for storing data to be vector-processed. A vector processing system according to claim 7, wherein the vector-processed data storing means (105) comprises a vector calculation circuit for vector-calculating said data in said another memory circuit and storing said calculated data in said memory circuit. A vector processing system according to claim 8, further comprising source data loading means, operatively connected between the main storage means (3) and the vector-processed data storing means (105), for storing said source data to be vector-calculated in the main storage means (3) in said other memory circuit of the vector-processed data storing means (105). A vector processing system according to claim 9, wherein the source data loading means comprises another alignment circuit for aligning said source data read from the main storage means (3) in a predetermined order defined by a vector calculation order in the vector-processed data storing means (105).

Inventors: NAKATANI, SHOJI
Applicants: FUJITSU LIMITED
Application year: 1986
Main classification: G06F15
IPC codes: G06F13, G06F15, G06F17