GB2037042A - Improvements in or relating to data processing systems - Google Patents

Improvements in or relating to data processing systems Download PDF

Info

Publication number
GB2037042A
GB2037042A GB7939682A GB7939682A GB2037042A GB 2037042 A GB2037042 A GB 2037042A GB 7939682 A GB7939682 A GB 7939682A GB 7939682 A GB7939682 A GB 7939682A GB 2037042 A GB2037042 A GB 2037042A
Authority
GB
United Kingdom
Prior art keywords
data
check code
data processing
processing elements
parity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB7939682A
Other versions
GB2037042B (en
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Services Ltd
Original Assignee
Fujitsu Services Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Services Ltd filed Critical Fujitsu Services Ltd
Priority to GB7939682A priority Critical patent/GB2037042B/en
Publication of GB2037042A publication Critical patent/GB2037042A/en
Application granted granted Critical
Publication of GB2037042B publication Critical patent/GB2037042B/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Abstract

In an array processor consisting of a plurality of data processing elements (PE), parity processing elements (PPE) hold parity bits for checking the contents of the internal resistors (Q, C) and internal stores (S) of the data processing elements and perform substantially the same operations on the parity bits as the data processing elements perform on the data. However, some of these operations may invalidate the parity bits. In particular, the carry result from an addition operation is not always valid. A parity valid logic circuit (22) is therefore provided to generate a signal (PV) which indicates whether the parity bits (P) from all the parity processing elements are valid, and hence whether the parity check performed using these parity bits is valid. <IMAGE>

Description

SPECIFICATION Improvements in or relating to data processing systems INTRODUCTION This invention relates to data processing systems.
It is known to provide a data processing system comprising a plurality of substantially identical processing elements which perform data processing operations on separate data streams in response to a single stream of control signals applied in parallel to all the processing elements. The advantage of such a system is that, since it processes several data streams in parallel, the overall data processing rate can be much higher than that of the conventional processor where only one data stream is processed at any given time.
One such data processing system is described, for example, in British Patent Specification No. 1445714. Another is described in our copending British Patent Application No.
16182/78.
It is also known to check the correctness of data by using a check code (e.g. one or more parity bits) which is appended to each item o1f data (e.g. to each word or byte). Check codes have been used extensively in data transmission systems and also in conventional (single data stream) processing systems.
One object of the present invention is to provide the facility for data checking in a multiple data stream process of the kind described above.
SUMMARY OF THE INVENTION According to the present invention, there is provided a data processing system comprising: a plurality of substantially identical data processing elements each of which includes a store and processing logic for operating upon the contents of the store in response to a single stream of control signals which is applied in parallel to all the data processing elements; a check code processing element which also includes a store and processing logic, each location of the store of the check code processing element holding a check code for the data in the set of corresponding locations in the stores of the data processing elements, the check code processing element being controlled by the same stream of control signals as the data processing elements so that it performs on the check codes substantially the same operations as the data processing elements perform on the data; and checking means for combining data from the data processing elements with a check code from the check code processing element to produce a signal indicative of whether or not there is an error in the data.
BRIEF DESCRIPTION OF THE DRAWINGS One data processing system in accordance with the invention will now be described by way of example with reference to the accompanying drawings of which: Figure 1 is a block diagram of the processing system; Figure 2 is a circuit diagram of a data processing element; Figure 3 is a circuit diagram of a parity processing element; Figure 4 shows the way in which parity checking is performed; and Figure 5 shows a parity valid logic circuit.
GENERAL DESCRIPTION OF THE SYSTEM Referring to Fig. 1, the processing system comprises a two-dimensional array of data processing elements PE, connected together in rows and columns. There is an even number of elements PE in each row. Typically there may be 64 X 64 elements in the array.
Each element is connected to its four nearest neighbours in the north, east, south and west directions, to permit data to be transferred between them. The connections at the edges of the array are cyclic, such that the top element of each column is effectively the southern neighbour of the bottom element of the same column, and the leftmost element of each row is effectively the eastern neighbour of the rightmost element in the same row.
The array also includes a further column of elements, referred to herein as parity processing elements PPE, there being one parity processing elements for each row of the array.
These parity processing elements are connected together in the vertical direction in the same way as the data processing elements PE. However, they are not linked to the neigh- bouring elements in the horizontal direction.
The purpose of the parity processing elements PPE is to store and manipulate parity bits for the data processing elements PE, as will be described in detail later. Operation of the array is controlled by a set of signals which are broadcast to all the elements (PE and PPE) in the array, such that each element receives exactly the same control signals. Information can also be input to the array by a set of column data lines CD (one per column) and a set of row select lines RS (one per row). The way in which the control signals and input information are generated forms no part of the present invention and may be achieved by any convenient means. For example, a microprogram control unit may be used.
Data can be read out from the array as a set of COLUMN RESPONSE signals (one per column). As shown, each COLUMN RESPONSE signal is formed by combining outputs from the individual elements in the column in question by means of an AND circuit. A set of row response signals (not shown) may be formed in a similar manner.
Each data processing element PE is very simple in structure, being capable of performing only bit-serial operations, and hence is relatively slow in operation. However, the overall processing rate of the system is potentially high, since there are many processing elements operating in parallel.
DATA PROCESSING EL EM EN T-S TRUC- TURE Fig. 2 shows one of the data processing elements PE in detail, In this figure, the signals CCLK, QCLK, CEN, QEN, SEN, ROUTE, RO, R1, CDSEL, INV and WE are the control signals mentioned above, which are broadcast to all the processing elements. The control signals also include a twelve-bit store address ADDO-1 1.
The data processing element contains a store S, consisting of a 4096-bit random access memory, the bits of which are individually addressable by means of the address ADDO-1 1 The store S has an enable input which is connected to the row select line RS of the row in question. Thus, if a binary "1" signal is applied to any one of the row select lines RS, all the stores S in that row are enabled. The store S also have a write-enable input which receives the control signal WE.
The store is enabled for writing only if both the enable input and the write-enable input are activated.
The data output RD of the store is connected to the AND circuit (Fig. 1) which forms the column response signal for the column in question, The data input of the store is obtained from a non equivalence gate 10, one input of which receives data signal D and the other input of which receives the control signal INV. It can be seen that, when INV = 0, the data signal D is transmitted through the gate 10 to the store S without any inversion However, when INV= 1, the signal D is inverted before being applied to the store. The gate 10 thus provides a way of selectively inverting the data under the control of the signal INV.
The data processing element also contains a single stage binary full adder circuit 11, having three inputs and sum and carry outputs.
The first input is connected by way of an AND gate 12 to the output of a single-bit carry register C. The -second input is connected by way of an AND gate 13 to the output of a single-bit accumulator register Q. The third input is connected by way of an AND gate 14 to the data output RD of the store S. The AND gates 12, 13, 14 are controlled by signals CEN, QEN, and SEN respectively. The registers C and Q are clocked by signals CCLK and QCLK respectively.
The data input of the register C is connected to the carry output of the adder. The data input of the register a is connected to the output of a multiplexer 15 which is con trifled by the signal ROUTE. When ROUTE = 0, the multiplexer selects its first input, which is connected to the sum output of the adder. When ROUTE = 1, the multiplexer selects its second input, which is connected to the output of another multiplexer 16. This other multiplexer selects the output of the Q register of one of the four neighbouring data processing elements in the north, east, south and west directions, according to the value of the control signals RO, R1 as indicated. These signals RO, R1 constitute a routing code for controlling the direction of data flow between the elements.
The signal D is obtained from a multiplexer 1 7, which is controlled by the signal CDSEL.
When CDSEL = 0, the multiplexer 17 selects its first input, which is connected to the sum output of the adder. When CDSEL = 1, the multiplexer selects its second input, which is connected to the column data line CD of the column in question.
OPERATION OF THE PROCESSING ELEMENT It can be seen that, by applying various combinations of control signals to the array, each data processing element PE can be made to perform a variety of different processing operations. It is not necessary to describe every possible operation; however, some specific cases will be described to assist in understanding the operation of the processing element.
LOAD Q This operation involves reading a data bit from the store and writing it into the accumulator register Q, by way of the adder. This is achieved by the following combination of control signals: RS = 1, SEN = 1, QEN = O, CEN = O, QCLK = 1 and ROUTE =0.
RESET C The C register can be reset by making QEN = 0 and CEN = O, so that the carry output of the adder is zero, and by putting CCLK = 1, causing the zero output to be clocked into the carry register C.
ADD STORE This operation involves reacing a data bit from the store, adding it to the contents of the C and Q registers, and writing the sum result into the Q register and the carry result into the C register. This is achieved by the following signals: RS = 1, CEN = 1, QEN = 1, SEN = 1, QCLK~1, ROUTE = 0 and CCLK= 1.
STORE Q This causes the contents of the Q register to be written into the store. The control signals required are: CEN = O, SEN = O, QEN = 1, CDSEL= O, RS = 1 and WE = 1. The data can be inverted, if desired, by making INV= 1.
INPUT CD This causes input data applied to the column data lines to be written into the store.
The necessary control signals are CDSEL = 1, RS = 1 and WE = 1. If INV= 1, the data is inverted.
ROUTE This causes the contents of each Q register to be shifted into the Q register of the nearest neighbour, in the north, east, south or west direction according to the value of the routing code RO, R1. The necessary control signals are ROUTE = 1 and QCLK = 1.
OUTPUT ROW This causes the contents of the stores in a selected row of the array to be output over the column response lines. This is achieved by setting all the row select signals RS = O except in the selected row, in which case RS = 1. Thus, in the nonselected rows, the stores S will be disabled, and their data outputs RD will therefore assume a high voltage level representing binary "1".
PARITY PROCESSING ELEMENT Referring to Fig. 3, this shows one of the parity processing elements PPE in detail. As can be seen, the element is substantially identical to the data processing element of Fig. 2.
In particular, the parity processing element contains internal registers PQ and PC corresponding to the registers Q and C, and a 4096-bit store PS corresponding to the store S.
Each of the registers PQ and PC contains an even-parity bit for the set of corresponding data registers Q or C in the data processing elements PE in the same row of the array. For example, if the Q registers in a particulalr row contain the values 1, 0, 1, 1 (assuming, for the moment, that there are only four data processing elements in the row), then the PQ register in the same row should contain the parity bit "1" ''so as to maintain an even number of ones.
Similarly, each location of the store PS contains an even-parity bit for the set of corresponding locations in the stores S in the same row. For example, if locations no. 293 in the stores S of a particular row contain the values 1, 0, O, 1, then location no. 293 in the store PS of the same row should contain the parity bit "0".
The differences between the structure of the parity processing element and the data processing element are as follows.
(a) The parity processing element does not contain any non-equivalence gate analogous to the gate 10 in Fig. 2, and is therefore not capable of inverting the output of the multiplexer 17. The reason for this is that inverting a a binary number with an even number of bits does not affect its parity. For example, the binary number 0010, when inverted, becomes 1 101, both of these numbers having an odd number of ones. Thus, it is clear that parity bits should not be inverted.
(b) In the parity processing element, the east and west inputs (E and W) to the multiplexer 16 are connected to the output of the PQ register in the same element, instead of being connected to neighbouring elements.
Thus, when data is shifted eastwards or westwards betwen the data processing elements, the contents of the PQ registers are not altered. The reason for this is that, since each row of processing elements PE is connected cyclically, the number of ones in the Q registers of a row does not change when an east or west shift occurs.
(c) A multiplexer 18 is inserted between the multiplexer 17 and the store PS. The purpose of this multiplexer will be explained later.
As mentioned previously, each parity processing element receives exactly the same set of control signals as the data processing elements, and therefore performs the same operations on the parity bits as the processing elements PE perform on the corresponding data bits (subject to exceptions resulting from the differences just mentioned). Thus, one might expect, at first sight, that the parity processing elements should automatically maintain correct parity bits in the correct locations, relative to the corresponding data in the data processing elements. For example, if data is read out of the stores S and written into the Q registers, the corresponding parity bit is automatically read out of the store PS and written into the register PQ.
However, in the case of certain arithmetic operations, the parity bits may be invalidated.
Suppose, for example, that the Q registers of a particular row of the array contain the values 1, 0, 1, 1 and the C registers contain the values 1, 1, 0, O. Hence, the PQ register of that row should contain the parity bit "1" and the PC register should contain "0". Now suppose that the Q and C registers in each processing element are addeld tcSssner and the carry result is placed in the C register. The C C registers of the row will now contain the values 1, 0, 0, O. Similarly, the contents of the PQ and PC registers are added and the carry result ("0") is placed in the PC register.
It can be seen that the contents of the PC register are now invalid, since the parity bit for the C registers should be "1". This invalid parity bit may then corrupt the sum output of the adder during subsquent operations, making the contents of the PQ register invalid, and so on.
PARITY CHECKING Referring now to Fig. 4, each row of the array has a parity checking circuit associated with it. Each parity checking circuit comprises an adder 20 which receives the output data bits D from each data processing element in the relevant row and forms the modulo-2 sum of these data bits. This sum provides an output signal PAR which represents the correct even-parity bit for the data. The parity bit PAR is applied to a non-equivalence gate 21 which also receives the corresponding parity bit P from the parity processing element PPE in the same row. If PAR is not equal to P, a signal FAIL is produced to indicate that the parity check has failed.
As explained above, the parity processing element PPE does not always contain valid parity bits and, in particular, the output parity bit P may not be valid. Therefore, the FAIL signal does not necessarily mean that an error has occurred.
The validity of the parity bits is monitored by means of a parity valid logic circuit 22, common to all the rows of the array. This circuit produces an output signal PV which is true only if the parity bits P from all the parity processing elements are definitely valid. The signal PV is combined in an AND gate 23 with the FAIL signal from the parity checking circuit, so as to produce an ERROR signal only if both PV = 1 and FAIL = 1. In this way, spurious FAIL signals resulting from invalid parity bits are ignored.
Referring again to Fig. 3, it can be seen that the PV signal also controls the multiplexer 18. When PV = 1, the multiplexer 18 selects the signal P. However, when PV = 0, the PAR signal is selected instead. Thus, the signal P can be written into the store PS only if it definitely represents a valid parity bit. Otherwise, the correct parity bit PAR is substituted.
PARITY VALID LOGIC The parity valid logic circuit 21 will now be described in detail with reference to Fig. 5.
The parity valid logic contains two single-bit registers QV and CV. QV when set indicates that the contents of the PQ registers in all the parity processing elements are valid. Similarly, CV when set indicates that the PC registers are all valid.
As mentioned previously, the output signal PV is true only if the output signals P from all the parity processing elements are valid. Referring to Fig. 3, it can be seen that the signal P is derived either from the sum output of the adder 11 or from the column data line CD (when CDSEL = 1). It is assumed that the column data line CD always carries a valid parity bit (generated by a suitable circuit external to the array).
Referring to Fig. 5, validity of the sum output is indicated by a signal SUMV. The PV signal is produced by combining the CDSEL signal and the SUMV signal in an OR gate 31, such that PV= 1 if either CDSEL= 1 or SUMV= 1.
Referring again to Fig. 3, the sum output of the adder is valid if all its inputs are valid. The first input is valid if the PC register is valid.
The first input can also be presumed valid if CEN = 0, since in that case, this input will be zero in all the processing elements. (This follows from the fact that the correct evenparity bit for an all-zero word is zero). Similarly, the second input is valid if the PQ register is valid, or if QEN = O. Likewise, the third input is valid if the output RD from the store PS is valid, or if SEN = O. The store output RD is valid for every element only if the stores are enabled in all the rows of the array. This is indicated by a signal RS = 1, produced by an AND gate as shown in Fig. 1.
Thus, referring to Fig. 5 again, the logic for producing the SUMV signal consists of an AND gate 32 which combines the outputs of three OR gates 33, 34, 35. OR gate 33 receives the output of the QV register and the inverse of the QEN signal, OR gate 34 receives the output of the CV register and the inverse of the CEN signal, and OR gate 35 receives the RS = 1 signal and the inverse of the SEN signal.
Referring again to Fig. 3, it can be seen that each PQ register receives a valid parity bit when QCLK = 1, and either (a) ROUTE = 0 and the sum output of the adder is valid; or (b) ROUTE = 1 and the contents of the PQ registers are already valid.
Referring back to Fig. 5, the logic for setting the QV register thus consists of an OR gate 36 which receives the outputs of two AND gates 37, 38. AND gate 37 receives the SUMV signal and the inverse of the ROUTE signal, while AND gate 38 receives the ROUTE signal and the output of the QV register.
Referring once more to Fig. 3, it can be seen that each PC register receives a valid parity bit when CCLK = 1 and the carry output of the adder is valid. The validity of the carry output can only be presumed in certain special cases. One of these is the case where the carry output is identically zero in every element in the array. This occurs whenever at least two out of the three inputs to the adder 11 are disabled, i.e. at least two out of the signals CEN, QEN and SEN are zero.
Referring to Fig. 5, the logic for setting the CV register consists of an adder circuit 39 which receives the inverse of each of the three signals CEN, QEN and SEN. It can be seen that the carry output of this adder is true only if at least two of CEN, QEN and SEN are zero.
In summary, the parity valid logic 22 monitors the control signals which are applied to the processing elements and deduces whether or not the parity bits in t parity processing elements are invalidated by these signals. The parity valid logic bases its decision not only upon the current values of the control signals but also, in effect, upon the previous values of those signals, since the previous values affect the states of the registers QV and CV.
CONCLUSION In the system described above, each processing element is extremely simple in structure. However, in other embodiment of the invention more complex processing elements (such as described, for example, in the published patent specification and copending patent application referred to above) may be employed. In such a case, the parity valid logic would, of course, also be more complex.
In any case, the parity valid logic should preferably be so arranged that at least a major proportion of the logic of each processing element is parity checked during a typical sequence of data processing operations.
In other embodiments of the invention, there may be more than one parity processing element for each row of the array, so as to provide a higher degree of parity checking.
For example, where there are 64 data processing elements in each row of the array, a parity processing element could be provided or each group of eight adjacent data processing elements, so that there would be eight parity processing elements for each row.

Claims (12)

1. A data processing system comprising: a plurality of substantially identical data processing elements each of which includes a store and processing logic for operating upon the contents of the store in response to a single stream of control signals which is applied in parallel to all the data processing elements; a check code processing element which also includes a store and processing logic, each location of the store of the check code processing element holding a check code for the data in the set of corresponding locations in the stores of the data processing elements, the check code processing element being controlled by the same stream of control signals as the data processing elements so that it performs on the check codes substantially the same operations as the data processing elements perform on the data; and checking means for combining data from the data processing elements with a check code from the check code processing elements to produce a signal indicative of whether or not there is an error in the data.
2. A system according to Claim 1 further including a logic circuit for determining whether the check code from the check code processing element is valid and for suppressing the output of the checking means if the check code is invalid.
3. A system according to Claim 2 wherein the logic circuit monitors the control signals applied to the processing elements and deduces whether the check codes in the check code processing element are invalidated by the operations specified by the control signals.
4. A system according to Claim 2 or 3 wherein, if the logic circuit determines that a check code is invalid, a valid check code generated from the data outputs of the data processing elements is substituted for the invalid check code.
5. A system according to any preceding claim wherein each data processing element includes an internal register and the check code processing element also includes an internal register which holds a check code for the data in the registers of the data processing elements.
6. A system according to Claim 5 when dependent upon Claim 2, 3 or 4 wherein the logic circuit includes a validity register which indicates whether the internal register in the check code processing element contains a valid check code.
7. A system according to any preceding claim wherein the data processing elements are connected in an array configuration comprising a plurality of rows and columns of elements, and wherein there is provided at least one check code processing element for each row of the array.
8. A system according to Claim 7 when dependent upon Claim 2 or 3, wherein the logic circuit is arranged to determine whether the check codes from the check code processing elements are all valid, and to suppress the output of the checking means if any one of those check codes is invalid.
9. A system according to any preceding claim wherein said check codes are parity bits.
10. A system according to Claim 9 wherein said check codes are even parity bits, wherein there is an even number of data processing elements and wherein each data processing element includes means for inverting data before writing it into the store of that processing element but the check code processing element includes no such inverting means.
11. A data processing system substantially as hereinbefore described with reference to Fig. 1 of the accompanying drawings.
12. A data processing system substantially as hereinbefore described with reference to Figs. 1-5 of the accompanying drawings.
GB7939682A 1978-11-23 1979-11-16 Data processing systems Expired GB2037042B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB7939682A GB2037042B (en) 1978-11-23 1979-11-16 Data processing systems

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB7845858 1978-11-23
GB7939682A GB2037042B (en) 1978-11-23 1979-11-16 Data processing systems

Publications (2)

Publication Number Publication Date
GB2037042A true GB2037042A (en) 1980-07-02
GB2037042B GB2037042B (en) 1982-11-24

Family

ID=26269711

Family Applications (1)

Application Number Title Priority Date Filing Date
GB7939682A Expired GB2037042B (en) 1978-11-23 1979-11-16 Data processing systems

Country Status (1)

Country Link
GB (1) GB2037042B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4740894A (en) * 1985-09-27 1988-04-26 Schlumberger Systems And Services, Inc. Computing processor with memoryless function units each connected to different part of a multiported memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4740894A (en) * 1985-09-27 1988-04-26 Schlumberger Systems And Services, Inc. Computing processor with memoryless function units each connected to different part of a multiported memory

Also Published As

Publication number Publication date
GB2037042B (en) 1982-11-24

Similar Documents

Publication Publication Date Title
US5142540A (en) Multipart memory apparatus with error detection
US4791641A (en) Parallel processor error checking
US4304002A (en) Data processing system with error checking
KR940000293B1 (en) Simplified synchronous mesh processor
US3106698A (en) Parallel data processing apparatus
US4467422A (en) Array processor
US4852100A (en) Error detection and correction scheme for main storage unit
CA1159958A (en) Dual function ecc system with block check byte
US5457789A (en) Method and apparatus for performing memory protection operations in a single instruction multiple data system
US6948045B2 (en) Providing a register file memory with local addressing in a SIMD parallel processor
US4649475A (en) Multiple port memory with port decode error detector
JPH0756757A (en) Method for detecting/correcting error by high-dimensional matrix
JPH0668700A (en) Semiconductor memory device
KR840001731A (en) Addressing device with sequential word order
US4697233A (en) Partial duplication of pipelined stack with data integrity checking
US3898443A (en) Memory fault correction system
EP0239119B1 (en) Information transferring method and apparatus of transferring information from one memory area to another memory area
US5003541A (en) Method and circuit for semiconductor memory processing of video signals with Reed-Solomon error detection
US4130880A (en) Data storage system for addressing data stored in adjacent word locations
US3218612A (en) Data transfer system
US5603046A (en) Method for complex data movement in a multi-processor data processing system
GB2037042A (en) Improvements in or relating to data processing systems
US5396505A (en) Programmable error-checking matrix for digital communication system
US5875147A (en) Address alignment system for semiconductor memory device
CA1223662A (en) Arrangement for supervising a data processing system

Legal Events

Date Code Title Description
732 Registration of transactions, instruments or events in the register (sect. 32/1977)
PCNP Patent ceased through non-payment of renewal fee

Effective date: 19921116