US9760438B2 - Error detection in stored data values - Google Patents
Error detection in stored data values Download PDFInfo
- Publication number
- US9760438B2 US9760438B2 US14/306,697 US201414306697A US9760438B2 US 9760438 B2 US9760438 B2 US 9760438B2 US 201414306697 A US201414306697 A US 201414306697A US 9760438 B2 US9760438 B2 US 9760438B2
- Authority
- US
- United States
- Prior art keywords
- data
- data storage
- parity
- value
- stored
- 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.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318516—Test of programmable logic devices [PLDs]
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318516—Test of programmable logic devices [PLDs]
- G01R31/318519—Test of field programmable gate arrays [FPGA]
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318541—Scan latches or cell details
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318544—Scanning methods, algorithms and patterns
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318558—Addressing or selecting of subparts of the device under test
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318558—Addressing or selecting of subparts of the device under test
- G01R31/318561—Identification of the subpart
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3187—Built-in tests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1032—Simple parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/419—Read-write [R-W] circuits
Abstract
A data storage apparatus is provided which has a plurality of data storage units, each respective data storage unit configured to store a respective data bit of a data word. Stored data value parity generation circuitry is configured to generate a parity bit for the data word in dependence on the data bits of the data word stored in the plurality of data storage units. The stored data value parity generation circuitry is configured such that switching within the stored data value parity generation circuitry does not occur when the data word is read out from the plurality of data storage units. Transition detection circuitry is configured to detect a change in value of the parity bit.
Description
Field of the Invention
The present invention relates to data processing systems. More particularly, this invention relates to data storage apparatuses configured to store data values and having circuitry provided to detect a change in a stored data value.
Description of the Prior Art
It is known that a data value stored in a data storage apparatus may be vulnerable to corruption, for example by a particle strike causing a bit flip in the stored data value. For this reason, prior art data storage apparatuses have been provided with mechanisms for determining if a data value read out from a data storage apparatus has changed in any way since that data value was originally stored. One such mechanism is the provision of parity checking circuitry. The parity checking circuitry is configured such that when a data value is stored in the data storage apparatus, a parity value is generated on the basis of that data value (for example by passing the data value to an XOR tree to generate a single resulting parity bit), which is then stored in association with the data value in the data storage apparatus. When the stored data value is later read out, the individual bits of the data value can again be passed to an identical XOR tree for a comparison parity bit to be generated and the comparison parity bit can then be compared with the parity bit which was stored in association with the data value when that data value was originally stored. If the two parity bit values differ then it is known that a bit flip has occurred within the stored data value and an appropriate response, such as to discard the stored data value or to seek to correct the stored data value, can then be carried out.
An example data storage apparatus 10 configured to behave in this manner is schematically illustrated in FIG. 1 . A multi-bit data value is originally received and the bits of this data value are stored in the respective bit cells 11-14 (note that for clarity only four bit cells are illustrated but typically more may be provided), whilst the multi-bit data value is also passed to XOR tree 15 which generates a single bit parity value P which is stored at location 16 in association with the stored data value. When a read access is carried out, the individual bits of the data value are also passed to XOR tree 17 (which is identically configured to XOR tree 15) and the resulting parity bit value is compared by comparison circuitry 18 to the parity bit P read out from parity bit storage 16. If these two values differ then the error flag is asserted.
Viewed from a first aspect, the present invention provides a data storage apparatus comprising: a plurality of data storage units, each respective data storage unit configured to store a respective data bit of a data word; stored data value parity generation circuitry configured to generate a parity bit for the data word in dependence on the data bits of the data word stored in the plurality of data storage units, wherein the stored data value parity generation circuitry is configured such that switching within the stored data value parity generation circuitry does not occur when the data word is read out from the plurality of data storage units; and transition detection circuitry configured to detect a change in value of the parity bit.
The present technique recognises that the energy consumed in generating the parity bit for comparison with the originally generated parity bit each time a read access is made to the stored data value can be disadvantageous. In particular, it is recognised that read accesses may be performed with significantly greater frequency with respect to the data value than write accesses, and accordingly a significant asymmetry between the energy consumption associated with the generation of the original parity bit and the energy consumption associated with the generation of parity bits for each read access can result. Accordingly, the present technique proposes an arrangement wherein parity generation circuitry is provided which is arranged to generate a parity bit for the stored data word in dependence on the values of the bits of the data word, but wherein no switching within the parity generation circuitry occurs when the data word is read out from the data storage apparatus. A data storage apparatus with lower energy consumption is thus provided, because a parity value is not recomputed each time a read access is performed.
The stored data value parity generation circuitry may be configured such that switching in the stored bit generation circuitry does not occur unless a value of a data bit stored in one of the data storage units changes. Accordingly, the parity computation may be concurrent, i.e. may be carried out as soon as an error occurs in one of the data bits of the stored data value. This is advantageous because not only can an error be flagged as soon as it occurs, but this also assists in preventing the accumulation of errors. This is significant in a data storage apparatus which seeks to combat data errors by the use of a parity value generated on the basis of the stored data value, since if two bits change within a stored data value (or indeed any further even number of bits change) the changes would not be detectable by this parity method, since the parity value would again be the same as the original parity value. The generation of a parity bit which changes as soon one of the data bits within a stored data value changes thus helps to prevent silent data corruption, wherein an even number of multiple bit flips go unnoticed.
In some embodiments the data storage apparatus further comprises write parity bit circuitry configured to generate a write parity bit when a new data word is written into the plurality of data storage units and to store the write parity bit, and the transition detection circuitry is configured to detect the change in value by a comparison of the parity bit for the data word and the stored write parity bit.
The generation of a write parity bit when a new data word is written has the advantage that this write parity hit represents a “snapshot” of the new data word when it was originally received to be written to the data storage units. The arrangement wherein the transition detection circuitry is configured to compare the write parity bit stored with the parity bit being generated by the stored data value parity generation circuitry thus ensures that the stored data value is continually being compared against the original version of the data word. This arrangement also helps to protect against the brief vulnerability of the data storage units to a bit flip going unnoticed because it happened during the write process, when the output of the parity generation circuitry may be temporarily ignored (because of the brief indeterminate state of the content of the data storage units as they are written).
In some embodiments the transition detection circuitry is configured such that switching within the transition detection circuitry does not occur unless the parity bit for the data word changes. This further reduces the energy consumption of the data storage apparatus by providing transition detection circuitry which does not actively consume power until the parity bit for the data word changes.
In some embodiments the data storage apparatus further comprises a write enable signal line configured to carry a write enable signal, wherein the write enable signal is asserted when the data word is being written to the plurality of data storage units, wherein the write enable signal line is coupled to the transition detection circuitry and the transition detection circuitry is disabled when the write enable signal is asserted. The time period where the data word is being written to the plurality of data storage units is recognised as a time period when the parity generation circuitry will briefly be in an indeterminate state, because of the dependency of the parity bit which it generates on the values of the individual data bits of the data word which is being written. Hence as those data bits are written the relative timing of the writing of each individual data bit can cause the parity bit to briefly fluctuate in value. By disabling the transition detection circuitry during the period when the write enable signal is asserted, this enables this brief indeterminate period to be correctly ignored. Hence, the detection of a change in value of the parity bit is then only active during the remaining time period when a genuine error occurring in the stored data value should be detected.
In some embodiments the data storage apparatus is a multi-ported register file, the multi-ported register file comprising a plurality of read ports via which the plurality of data storage units can be read. The present technique recognises that a multi-ported register file represents a data storage apparatus for which the advantages of the present technique are partially pronounced, due to the fact that the provision of the plurality of read ports thus means that the generation of a parity value in association with each read access could potentially happen with significant frequency and avoiding such parity generation in association with each read access, as is provided by the present technique, is particularly advantageous. A multi-ported register file can also be a particularly advantageous context for the implementation of the present technique because of the many interconnects which will typically have to be provided in association with the layout of a multi-ported register file. Hence, although the present technique may require more gates (typically XOR gates) to be provided than a conventional parity generation scheme, for example adding one XOR gate in association with each flip-flop which stores each bit of a data value, this larger gate count does not necessarily mean a larger area for the provision of the register file. This is due to the fact that the layout area of such a multi-ported register file is typically dominated by its interconnects. For example, a contemporary multi-ported register file might have 9 write ports and 14 read ports, meaning that 23 parallel (horizontal) word lines are required for each flip-flop. It has been found in the implementation of such multi-ported register files that these can often be “wire dominated” with significant “white space” in the layout. Since the provision of the parity generation circuitry may add as little as one extra horizontal signal, it is possible to hide the modest extra gate cost in the layout of implementing the present technique, without significantly impacting the area required for the multi-ported register file.
The stored data value parity bit generation circuitry may be provided in a variety of ways. In some embodiments, the stored data value parity generation circuitry comprises a linear concatenation of logic circuitry provided in association with the plurality of data storage units, wherein each logic circuitry has the respective data bit of the respective data storage unit as one of its inputs. A linear concatenation of logic circuitry (for example a chained set of XOR gates with one XOR gate provided in association with each data storage unit), with the data bit stored in each respective data storage unit providing one input for the XOR gate, and the other being provided by the output of the previous XOR gate, advantageously represents only a modest addition to the data storage units themselves. Indeed, it may be possible for the required additional logic circuitry (e.g. an XOR gate) to be folded inside the data storage unit (e.g. a flip-flop) especially if a double height cell in the layout is used.
However, in other embodiments the stored data value parity generation circuitry comprises a hierarchical tree of logic circuitry, wherein logic circuitry at a lowest level of the hierarchical tree each have the respective data bits of pairs of the respective data storage units as its inputs, and wherein logic circuitry at a highest level of the hierarchical tree generates the parity bit for the data word as its output. Such a hierarchy tree of logic circuitry has the advantage that the parity computation latency is reduced, although this is then at the potential cost of some additional horizontal wires in the layout. However, as mentioned above such additional horizontal wires may in fact be of little impact on the layout area in implementations such as a multi-ported register file where existing white space in the layout can absorb these wires. The number of gates in the parity generation logic circuitry (e.g. XOR gates) is typically the same.
In some embodiments having a hierarchical tree of logic circuitry the data storage apparatus further comprises a scan unit configured to receive the parity bit for the data word output at the highest level of the hierarchical tree and to output the parity bit at a scan output of the scan unit in response to a scan out signal. This scan unit thus enables the content of the plurality of data storage units to be observed via a single point in a scan chain. For example a test pattern can be written into the data storage units via the usual (parallel) data path and the resulting parity bit can be scanned out as a single data bit, rather than a sequence of data bits corresponding to the full content of the data storage units.
Whilst it may be the case that the stored data value parity generation circuitry simply generates one parity bit which depends on all of the data bits of the data word, in some embodiments the stored data value parity generation circuitry is configured to generate a sub-parity bit for the data word in dependence on less than all of the data bits of the data word stored in the plurality of data storage units. Due to the fact that fewer data bits are used to generate such a sub-parity bit this also reduces the parity computation latency.
The particular implementation of the generation of a sub-parity bit for the data word may take a number of forms. For example, in one embodiment the stored data value parity generation circuitry is configured to generate a plurality of sub-parity bits for the data word. Accordingly, rather than generating one parity bit for the entirety of the data word, the data word may be subdivided into, for example, two portions and a sub-parity bit may be generated for each of those portions. This allows a finer granularity of determination of where an error has occurred when a change in one of these sub-parity bits is detected by its corresponding transition detection circuitry, and is generally faster than the determination of one parity bit for the whole data word, especially in embodiments where the stored data value parity bit generation circuitry is provided as a linear concatenation.
It may however be the case that a sub-parity bit is generated because a portion of the data word can be disregarded, for example because only another portion of the data word need be monitored for the occurrence of errors. Accordingly in some embodiments the stored data value parity generation circuitry is configured such that at least one of the data bits of the data word stored in the plurality of data storage units does not affect the value of the sub-parity bit.
In some embodiments the data storage apparatus is configured to store a plurality of data words, the stored data value parity generation circuitry is configured to generate a respective parity bit for each of the data words, and the data storage apparatus further comprises combination logic circuitry configured to generate an error flag if any of the respective parity bits changes value. The error flag thus generated can allow appropriate corrective action to be taken, recognising that an error has occurred in one of the plurality of data words stored in the data storage apparatus. Moreover, the present technique recognises that there are situations in which, amongst the plurality of data words, it is more important to recognise that an error has occurred than to be able to identify the specific location at which that data error occurred (i.e. here, the particular data word amongst the plurality of data words which contains the error). For example, in the context of a register file, it may be determined (for example due to the relative infrequency of such errors within one of the data words stored within the plurality of data words stored by the register file) that it is preferable for the entire content of the register file simply to be replaced or updated, instead of seeking to take targeted corrective action with respect to a particular data word (or even a particular data bit).
In some embodiments the data storage apparatus is configured to store a plurality of data words, the stored data value parity generation circuitry is configured to generate a respective parity bit for each of the data words, and the data storage apparatus further comprises an error register configured to hold either a non-error value or an error value, wherein the error register is configured to switch to holding the error value if one or more of the respective parity bits changes value. This configuration provides a “sticky register” which under normal circumstances holds a non-error value, but when any of the respective parity bits changes values configured to switch to holding an error value, and will continue to hold the error value even if further parity bits change value. The error register can therefore be monitored (for example via a polling mechanism) to determine if an error has occurred in any of the plurality of data words stored in the data storage apparatus and, as in the example described above, corrective action can be taken, such as to simply replace or update all of the plurality of data words without seeking to identify further which particular data word caused data word or data words caused the error.
Viewed from a second aspect the present invention provides a method of storing data comprising the steps of: storing respective data bits of a data word in a plurality of data storage units; generating a parity bit for the data word via plural intermediate stages in dependence on the data bits of the data word stored in the plurality of data storage units, wherein switching at the plural intermediate stages does not occur when the data word is read out from the plurality of data storage units; and detecting a change in value of the parity bit.
Viewed from a third aspect the present invention provides a data storage apparatus comprising: means for storing respective data bits of a data word in a plurality of data storage units; means for generating a parity bit for the data word via plural intermediate stages in dependence on the data bits of the data word stored in the plurality of data storage units, wherein switching at the plural intermediate stages does not occur when the data word is read out from the plurality of data storage units; and means for detecting a change in value of the parity bit.
Viewed from a fourth aspect the present invention provides apparatus comprising: a plurality of storage units configured to receive data, wherein the plurality of storage units are configured to output the data in response to a read access; and a parity generator associated with said plurality of storage units, wherein said parity generator is configured to: receive at a plurality of inputs a respective value from each of said plurality of storage units; determine a parity value from said plurality of inputs, wherein determination of the parity value is independent of the read access to the data stored in said plurality of storage units; and output said parity value, said apparatus further comprising: a detector configured to detect a change in said parity value.
The detector may be one of: a transition detector and an active comparator.
The apparatus may further comprise a second parity generator configured to generate a second parity value associated with said data when said data is received by said plurality of storage units.
The second parity value may be stored in a further storage unit associated with said plurality of storage units when said data is received by said plurality of storage units; and said second parity value is read from said further storage unit by said detector for comparison with said parity value in order to detect said change in said parity value.
The parity generator may be configured to generate said parity value after said second parity generator has generated said second parity value.
The apparatus may further comprise a write enable signal line configured to carry a write enable signal, wherein the write enable signal is asserted when said data is being written to the plurality of storage units, the write enable signal line is coupled to the detector, and the detector is disabled when the write enable signal is asserted.
The apparatus may be a multi-ported register file, the multi-ported register file comprising a plurality of read ports via which the plurality of storage units can be read.
The parity generator may comprise a linear concatenation of logic circuitry provided in association with the plurality of storage units, wherein each logic circuitry has the respective data bit of the respective storage unit as one of its inputs.
The parity generator may comprise a hierarchical tree of logic circuitry, wherein logic circuitry at a lowest level of the hierarchical tree each have the respective data bits of pairs of the respective storage units as its inputs, and wherein logic circuitry at a highest level of the hierarchical tree generates the parity value as its output.
The apparatus may further comprise a scan unit configured to receive the parity value output at the highest level of the hierarchical tree and to output the parity value at a scan output of the scan unit in response to a scan out signal.
The parity generator may configured to generate a sub-parity bit in dependence on less than all of the data stored in the plurality of storage units.
The parity generator may be configured to generate a plurality of sub-parity bits for the data stored in the plurality of storage units.
The parity generator is configured such that at least one data bit stored in the plurality of storage units does not affect the value of the sub-parity bit.
The apparatus may be configured to store a plurality of data words, the parity generator may be configured to generate a respective parity bit for each of the data words, and the apparatus may further comprise combination logic circuitry configured to generate an error flag if any of the respective parity bits changes value.
The apparatus may be configured to store a plurality of data words, the parity generator may be configured to generate a respective parity bit for each of the data words, and the apparatus may further comprise an error register configured to hold either a non-error value or an error value, wherein the error register is configured to switch to holding the error value if one or more of the respective parity bits changes value.
Viewed from a fifth aspect the present invention provides a method comprising: storing data in a plurality of storage units; outputting said data from said plurality of storage units in response to a read access; receiving a value from a respective one of said plurality of storage units at a respective one of a plurality of inputs of a parity generator associated with said plurality of storage units; determining a parity value from said plurality of inputs, wherein said determining said parity value is independent of said read access to said data stored in said plurality of storage units; outputting said first parity value; and detecting a change in said parity output and an active comparator.
Viewed from a sixth aspect the present invention provides apparatus comprising: means for storing data in a plurality of storage units; means for outputting said data from said plurality of storage units in response to a read access; means for receiving a value from a respective one of said plurality of storage units at a respective one of a plurality of inputs of means for generating a parity value associated with said plurality of storage units, wherein said means for generating the parity value associated with said plurality of storage units is configured to generate the parity value independent of said read access to said data stored in said plurality of storage units; means for outputting said first parity value; and means for detecting a change in said parity output.
The present invention will be described further, by way of example only, with reference to embodiments thereof as illustrated in the accompanying drawings, in which:
As part of the write process, the data word is also passed to the XOR tree 25 which is configured to generate a single parity bit P in dependence on the respective values of the data bits of the data word. This parity bit P is stored in a parity bit storage location 26 provided in association with the data storage units 21-24 which store the data word itself. Concurrent parity generation circuitry 27 is also provided in association with the data storage units 21-14 which hold the stored data word. In particular, this concurrent parity generation circuitry 27 comprises parity logic units 28-30 which are provided in association with all but the first data storage unit 21 of the data storage units which hold the data word. Each parity logic unit 28-30 is configured to take an input derived from the previous stage of the set of data storage units and to logically combine that input with the value held by the data storage unit with which it is associated. In the embodiment illustrated in FIG. 2 the parity logic units 28-30 are each XOR gates and therefore XOR gate 28 takes the values stored in data storage units 21 and 22 as its inputs, whilst the XOR gate 29 takes the output of XOR 28 as one input and the value stored in data storage unit 23 as its inputs, and XOR gate 30 takes the output from a preceding XOR gate (not illustrated) and the value stored in the data storage unit 24 as its inputs. In this manner, a parity bit is generated which depends on the respective content of the data storage units 21-24. It should be noted in particular that the XOR gates 28-30 are thus arranged to compute the parity bit in real time, independent of any read accesses to the data storage unit 21-24. Whilst the parity bit generated by XOR gates 28-30 will be somewhat indeterminate whilst the data word is being written to the data storage unit 21-24, once the data word has been written, this concurrent parity generation logic will not switch until there is a bit flip in one of the data storage units (or until a new data word is written to the data storage unit). The output of the last XOR gate 30 provides one input to the active compare circuitry 31, which takes the value P stored in parity bit storage 26 as its other input. Active compare circuitry 31 is “active” in the sense that it only switches when one of its inputs changes, for example being provided by a variety of XOR gate.
Here, as in the case of the embodiment shown in FIG. 2 , during a write access a multi-bit data word is written into a set of data storage units 41-44, each of which holds a single bit of the data word. Here however, unlike the embodiment shown in FIG. 2 , no parity bit is computed and stored as part of the write operation. However, the concurrent parity generation chain represented by parity logic units 45-47 in FIG. 3 corresponds directly to the concurrent parity chain 27 represented by parity logic units 28-30 in FIG. 2 .
In the embodiment shown in FIG. 3 , the output of the final component 47 of the concurrent parity chain is received by the transition detector 48, which is configured to detect any changes in this value and to output an error detection signal when such change is detected. The set of data storage units 41-44 in FIG. 3 corresponds to a particular row (row 0) in the data storage apparatus, the data storage apparatus comprising many further rows (not illustrated) of such data storage units into which it can store data words. Writing into a particular row of the data storage apparatus is possible when the corresponding “write enable” signal for that row is asserted (and one of ordinary skill in the art is familiar with the usage of such write enable signals and further detail is not given here for brevity). As illustrated in FIG. 3 , the transition detector 48 is also coupled to the write enable signal line, this signal being coupled, inverted, to the enable input of the transition detector 48. This configuration ensures that the transition detection is disabled during the write process, but when the row is not being written, the transition detector is activated. Accordingly, any state change in the row due to an error can then be captured by the transition detector 48. By comparison with the embodiment shown in FIG. 2 , this embodiment in FIG. 3 has an advantage in terms of the layout area required, since an additional XOR tree and parity storage unit ( items 25 and 26 respectively in FIG. 2 ) are omitted. However, a feature of the embodiment shown in FIG. 3 is that the row is more vulnerable during the write cycle, since a reference parity bit (such as that stored in parity bit storage unit 26 in FIG. 2 ) is not part of this FIG. 3 embodiment and there is some potential for corruption occurring during the write process to not be identified. However, given that in many situations the write process will be relatively infrequent, whilst subsequent read processes will be relatively much more frequent, this risk may be determined to be at an acceptably low level. Similarly to the active compare circuitry 31 shown in FIG. 2 , the transition detector 48 is configured to only switch when the value of its input (from parity logic unit 47) changes.
The output of the respective concurrent parity logic units 72 are provided to the combination logic 73 which is configured to combine all of these inputs into a single output (“error flag”), such that the error flag may be asserted if an error is detected by any of the parity logic units 72 for any of the stored data words 71. This thus enables a near-instantaneous notification of an error to be generated and for appropriate corrective action to be rapidly taken. The combination logic 73 may for example be provided by a tree of OR gates, in order to combine the outputs into a single output. Note that the single output to the combination logic 73 is also provided to the “sticky” error register 74. This sticky error register is configured to hold a value indicating a “no error” status until at least one of the outputs of the respective parity logic units 72 changes, this causing the “sticky” error register 74 to change to holding a value indicating an “error” status, which, until this register is reset, will continue to be held regardless of further changes in input values it receives. Note that alternatively the output of each parity logic unit 72 may be directly provided to the “sticky” error register 74, since a change in the parity bit generated by any parity logic unit 72 can be used to cause the “sticky” error register 74 to hold its “error” status value. This sticky error register 74 can thus be monitored, for example by a polling process, to identify when an error has occurred. In the embodiments shown in FIG. 8 , the system is configured to react to the error flag (or the error status being held in the register 74) by causing the whole content of the register file 70 to be refreshed when such an error occurs. Accordingly, it should be noted that in this embodiment it is determined to be more efficient to simply re-write the content of the respective stored data words 71, rather than seeking to identify where a particular error occurred and to take corrective action with respect to that particular storage location.
Although particular embodiments of the invention have been described herein, it will be apparent that the invention is not limited thereto, and that many modifications and additions may be made within the scope of the invention. For example, various combinations of the features of the following dependent claims could be made with the features of the independent claims without departing from the scope of the present invention.
Claims (16)
1. A data storage apparatus comprising:
a plurality of data storage units, each respective data storage unit configured to store a respective data bit of a data word;
stored data value parity generation circuitry configured to generate a parity bit for the data word in dependence on the data bits of the data word stored in the plurality of data storage units, wherein the stored data value parity generation circuitry comprises a plurality of parity logic units, each of the plurality of parity logic units generating the parity bit using data from an associated stage of the plurality of data storage units and a previous stage of the plurality of data storage units,
wherein the stored data value parity generation circuitry is configured such that switching within the stored data value parity generation circuitry occurs independent of the data word being read out from the plurality of data storage units; and
detector circuitry configured to detect a change in value of the parity bit.
2. The data storage apparatus as claimed in claim 1 , wherein the stored data value parity generation circuitry is configured such that switching within the stored data value parity generation circuitry does not occur unless a value of a data bit stored in one of the data storage units changes.
3. The data storage apparatus as claimed in claim 1 , further comprising write parity bit circuitry configured to generate a write parity bit when a new data word is written into the plurality of data storage units and to store the write parity bit,
and the detector circuitry is configured to detect the change in value by a comparison of the parity bit for the data word and the stored write parity bit.
4. The data storage apparatus as claimed in claim 3 , wherein the detector circuitry is configured such that switching within the detector circuitry does not occur unless the parity bit for the data word changes.
5. The data storage apparatus as claimed in claim 1 , further comprising a write enable signal line configured to carry a write enable signal, wherein the write enable signal is asserted when the data word is being written to the plurality of data storage units,
wherein the write enable signal line is coupled to the detector circuitry and the detector circuitry is disabled when the write enable signal is asserted.
6. The data storage apparatus as claimed in claim 1 , wherein the data storage apparatus is a multi-ported register file, the multi-ported register file comprising a plurality of read ports via which the plurality of data storage units can be read.
7. The data storage apparatus as claimed in claim 1 , wherein the stored data value parity generation circuitry comprises a linear concatenation of logic circuitry provided in association with the plurality of data storage units, wherein each logic circuitry has the respective data bit of the respective data storage unit as one of its inputs.
8. The data storage apparatus as claimed in claim 1 , wherein the stored data value parity generation circuitry comprises a hierarchical tree of logic circuitry,
wherein the logic circuitry at a lowest level of the hierarchical tree each have the respective data bits of pairs of the respective data storage units as its inputs, and
wherein the logic circuitry at a highest level of the hierarchical tree generates the parity bit for the data word as its output.
9. The data storage apparatus as claimed in claim 8 , further comprising a scan unit configured to receive the parity bit for the data word output at the highest level of the hierarchical tree and to output the parity bit at a scan output of the scan unit in response to a scan out signal.
10. The data storage apparatus as claimed in claim 1 , wherein the stored data value parity generation circuitry is configured to generate a sub-parity bit for the data word in dependence on less than all of the data bits of the data word stored in the plurality of data storage units.
11. The data storage apparatus as claimed in claim 10 , wherein the stored data value parity generation circuitry is configured to generate a plurality of sub-parity bits for the data word.
12. The data storage apparatus as claimed in claim 10 , wherein the stored data value parity generation circuitry is configured such that at least one of the data bits of the data word stored in the plurality of data storage units does not affect the value of the sub-parity bit.
13. The data storage apparatus as claimed in claim 1 , wherein the data storage apparatus is configured to store a plurality of data words, the stored data value parity generation circuitry is configured to generate a respective parity bit for each of the data words, and
further comprising combination logic circuitry configured to generate an error flag if any of the respective parity bits changes value.
14. The data storage apparatus as claimed in claim 1 , wherein the data storage apparatus is configured to store a plurality of data words, the stored data value parity generation circuitry is configured to generate a respective parity bit for each of the data words, and
further comprising an error register configured to hold either a non-error value or an error value, wherein the error register is configured to switch to holding the error value if one or more of the respective parity bits changes value.
15. A method of storing data comprising the steps of:
storing respective data bits of a data word in a plurality of data storage units;
generating a parity bit for the data word via plural intermediate stages in dependence on the data bits of the data word stored in the plurality of data storage units, wherein switching at the plural intermediate stages occurs independent of the data word being read out from the plurality of data storage units;
detecting a change in value of the parity bit; and
asserting a write enable signal when the data word is being written to the plurality of data storage units, wherein detecting the change in value of the parity bit is disabled when the write enable signal is asserted.
16. A data storage apparatus comprising:
means for storing respective data bits of a data word in a plurality of data storage units;
means for generating a parity bit for the data word via plural intermediate stages in dependence on the data bits of the data word stored in the plurality of data storage units, wherein switching at the plural intermediate stages occurs independent of the data word being read out from the plurality of data storage units;
means for detecting a change in value of the parity bit; and
means for asserting a write enable signal when the data word is being written to the plurality of data storage units, wherein detecting the change in value of the parity bit is disabled when the write enable signal is asserted.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/306,697 US9760438B2 (en) | 2014-06-17 | 2014-06-17 | Error detection in stored data values |
GB1507706.8A GB2529017A (en) | 2014-06-17 | 2015-05-06 | Error detection in stored data values |
TW104119464A TWI693514B (en) | 2014-06-17 | 2015-06-16 | Error detection in stored data values |
KR1020150085198A KR102271054B1 (en) | 2014-06-17 | 2015-06-16 | Error detection in stored data values |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/306,697 US9760438B2 (en) | 2014-06-17 | 2014-06-17 | Error detection in stored data values |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150363267A1 US20150363267A1 (en) | 2015-12-17 |
US9760438B2 true US9760438B2 (en) | 2017-09-12 |
Family
ID=53489177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/306,697 Active 2034-09-05 US9760438B2 (en) | 2014-06-17 | 2014-06-17 | Error detection in stored data values |
Country Status (4)
Country | Link |
---|---|
US (1) | US9760438B2 (en) |
KR (1) | KR102271054B1 (en) |
GB (1) | GB2529017A (en) |
TW (1) | TWI693514B (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529671B2 (en) | 2014-06-17 | 2016-12-27 | Arm Limited | Error detection in stored data values |
US9891976B2 (en) | 2015-02-26 | 2018-02-13 | Arm Limited | Error detection circuitry for use with memory |
CN113204446B (en) * | 2020-02-03 | 2022-09-23 | 瑞昱半导体股份有限公司 | Register data checking device and method |
US11422888B2 (en) * | 2020-10-14 | 2022-08-23 | Western Digital Technologies, Inc. | Data integrity check for writing data in memory |
Citations (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3699322A (en) * | 1971-04-28 | 1972-10-17 | Bell Telephone Labor Inc | Self-checking combinational logic counter circuit |
US5090035A (en) * | 1990-01-19 | 1992-02-18 | Nec Corporation | Linear feedback shift register |
EP0473819A1 (en) | 1990-09-05 | 1992-03-11 | International Business Machines Corporation | Multiport memory cell |
US5193092A (en) | 1990-12-20 | 1993-03-09 | Vlsi Technology, Inc. | Integrated parity-based testing for integrated circuits |
US5434871A (en) | 1992-11-17 | 1995-07-18 | Unisys Corporation | Continuous embedded parity checking for error detection in memory structures |
US5523707A (en) | 1995-06-30 | 1996-06-04 | International Business Machines Corporation | Fast, low power exclusive or circuit |
US5623506A (en) * | 1994-01-28 | 1997-04-22 | International Business Machines Corporation | Method and structure for providing error correction code within a system having SIMMs |
US5719880A (en) | 1996-09-20 | 1998-02-17 | Texas Instruments Incorporated, A Delaware Corporation | On-chip operation for memories |
US5748912A (en) | 1995-06-13 | 1998-05-05 | Advanced Micro Devices, Inc. | User-removable central processing unit card for an electrical device |
US5757823A (en) * | 1995-10-03 | 1998-05-26 | International Business Machines Corporation | Error detection and correction for four-bit-per-chip memory system |
US5784427A (en) * | 1995-06-24 | 1998-07-21 | Motorola, Inc. | Feedback and shift unit |
US5809273A (en) | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US6018304A (en) * | 1997-12-18 | 2000-01-25 | Texas Instruments Incorporated | Method and apparatus for high-rate n/n+1 low-complexity modulation codes with adjustable codeword length and error control capability |
US6130866A (en) | 1996-07-15 | 2000-10-10 | Sony Corporation | Error-correcting storage medium reproduction apparatus and method using frames and synchronization patterns |
US6137734A (en) * | 1999-03-30 | 2000-10-24 | Lsi Logic Corporation | Computer memory interface having a memory controller that automatically adjusts the timing of memory interface signals |
US6181164B1 (en) | 1999-01-08 | 2001-01-30 | Xilinx, Inc. | Linear feedback shift register in a programmable gate array |
US6262596B1 (en) * | 1999-04-05 | 2001-07-17 | Xilinx, Inc. | Configuration bus interface circuit for FPGAS |
US6266710B1 (en) * | 1997-08-04 | 2001-07-24 | Robert Bosch Gmbh | Serial data transfer device |
US6275311B1 (en) * | 1997-06-30 | 2001-08-14 | Pirelli Cavi E Sistemi S.P.A. | Optical device for processing an optical digital signal |
US6295626B1 (en) * | 1997-10-20 | 2001-09-25 | Nortel Networks Limited | Symbol based algorithm for hardware implementation of cyclic redundancy check |
US6332173B2 (en) * | 1998-10-31 | 2001-12-18 | Advanced Micro Devices, Inc. | UART automatic parity support for frames with address bits |
US6433725B1 (en) | 2000-11-27 | 2002-08-13 | Turner Research, Inc. | High speed analog-to-digital converter |
US6457154B1 (en) * | 1999-11-30 | 2002-09-24 | International Business Machines Corporation | Detecting address faults in an ECC-protected memory |
US20030061558A1 (en) | 2001-09-25 | 2003-03-27 | Fackenthal Richard E. | Double error correcting code system |
US20030058896A1 (en) * | 2001-09-27 | 2003-03-27 | Infineon Technologies Ag | Multiplexer cell and multiplexer circuit arrangement and coding device for use in a multiplexer circuit arrangement of this kind |
US20040078728A1 (en) * | 2002-05-14 | 2004-04-22 | Marc Tremblay | Method and apparatus for providing fault-tolerance for temporary results within a CPU |
US20040117723A1 (en) | 2002-11-29 | 2004-06-17 | Foss Richard C. | Error correction scheme for memory |
US20040190357A1 (en) | 2003-03-28 | 2004-09-30 | Scheuerlein Roy E. | Redundant memory structure using bad bit pointers |
US6938198B1 (en) * | 2001-04-12 | 2005-08-30 | Broadband Royalty Corporation | Method and system for accelerating ethernet checksums |
US20050204274A1 (en) | 2004-02-23 | 2005-09-15 | Infineon Technologies Ag | Parity checking circuit for continuous checking of the party of a memory cell |
US20050223208A1 (en) | 2004-03-05 | 2005-10-06 | Moran Timothy G | Transient transceiver clock configuration |
US20050268209A1 (en) * | 2004-05-28 | 2005-12-01 | International Business Machines Corporation | Cyclic redundancy check generation circuit |
US20050289441A1 (en) | 2004-06-29 | 2005-12-29 | Renesas Technology Corp. | Semiconductor device improving error correction processing rate |
US20060156214A1 (en) | 2004-12-21 | 2006-07-13 | Fujitsu Limited | Semiconductor memory |
US20070044045A1 (en) * | 2005-08-19 | 2007-02-22 | Nan Zhuang | Method and apparatus for optimizing a logic network in a digital circuit |
US20070186268A1 (en) * | 2004-03-09 | 2007-08-09 | Mcneely David L | Cross-encoding of information in independent channels |
US7278085B1 (en) * | 2003-03-06 | 2007-10-02 | Maxtor Corporation | Simple error-correction codes for data buffers |
US7283380B1 (en) | 2001-08-03 | 2007-10-16 | Netlogic Microsystems, Inc. | Content addressable memory with selective error logging |
US20070250755A1 (en) * | 2006-03-29 | 2007-10-25 | Wayne Burleson | Dormant error checker |
US20080040519A1 (en) | 2006-05-02 | 2008-02-14 | Alacritech, Inc. | Network interface device with 10 Gb/s full-duplex transfer rate |
US20080040652A1 (en) | 2005-04-07 | 2008-02-14 | Udo Ausserlechner | Memory Error Detection Device and Method for Detecting a Memory Error |
US20080195915A1 (en) * | 2007-02-09 | 2008-08-14 | Leonard Todd E | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs |
US20090164870A1 (en) | 2007-12-21 | 2009-06-25 | Arm Limited | Apparatus and method for error correction of data values in a storage device |
US7589362B1 (en) | 2004-07-01 | 2009-09-15 | Netlogic Microsystems, Inc. | Configurable non-volatile logic structure for characterizing an integrated circuit device |
US20090249175A1 (en) | 2008-03-27 | 2009-10-01 | Arm Limited | Single Event Upset error detection within sequential storage circuitry of an integrated circuit |
US20100088565A1 (en) | 2008-10-07 | 2010-04-08 | Arm Limited | Correction of single event upset error within sequential storage circuitry of an integrated circuit |
US20110099451A1 (en) | 2009-10-22 | 2011-04-28 | Arm Limited | Error control coding for single error correction and double error detection |
US8005209B2 (en) * | 2005-01-06 | 2011-08-23 | Polytechnic University | Invariance based concurrent error detection for the advanced encryption standard |
US20110225475A1 (en) | 2010-03-12 | 2011-09-15 | Texas Instruments Incorporated | Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes |
US20110231732A1 (en) | 2010-03-22 | 2011-09-22 | Phison Electronics Corp. | Error correcting method, and memory controller and memory storage system using the same |
US20110320919A1 (en) * | 2010-06-24 | 2011-12-29 | International Business Machines Corporation | High performance cache directory error correction code |
US8225187B1 (en) * | 2008-03-31 | 2012-07-17 | Xilinx, Inc. | Method and apparatus for implementing a cyclic redundancy check circuit |
US20120240014A1 (en) * | 2011-03-14 | 2012-09-20 | Infineon Technologies Ag | Error Tolerant Flip-Flops |
US20120303986A1 (en) | 2011-05-27 | 2012-11-29 | Arm Limited | Verifying state integrity in state retention circuits |
US20130283115A1 (en) * | 2012-04-20 | 2013-10-24 | Arm Limited | Data processing apparatus using implicit data storage and a method of implicit data storage |
US20140070867A1 (en) * | 2012-09-10 | 2014-03-13 | Stmicroelectronics (Research & Development) Limited | Circuit for combining signals |
US20140089769A1 (en) | 2012-09-27 | 2014-03-27 | Lsi Corporation | Content addressable memory continuous error detection with interleave parity |
US20140325303A1 (en) * | 2013-04-30 | 2014-10-30 | Lsi Corporation | Systems and Methods for Protected Data Encoding |
US20150041625A1 (en) * | 2013-08-06 | 2015-02-12 | Stmicroelectronics (Research & Development) Limited | Time to digital converter and applications thereof |
US9122625B1 (en) | 2012-12-18 | 2015-09-01 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US20150248323A1 (en) * | 2014-02-28 | 2015-09-03 | Cavium, Inc. | Partitioned error code computation |
US20150276867A1 (en) | 2014-03-28 | 2015-10-01 | International Business Machines Corporation | Initializing and testing integrated circuits with selectable scan chains with exclusive-or outputs |
US20150363268A1 (en) * | 2014-06-17 | 2015-12-17 | Arm Limited | Error detection in stored data values |
US20160253227A1 (en) | 2015-02-26 | 2016-09-01 | Arm Limited | Error Detection Circuitry For Use With Memory |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872802A (en) * | 1996-05-03 | 1999-02-16 | Cypress Semiconductor Corp. | Parity generation and check circuit and method in read data path |
US20070011513A1 (en) * | 2005-06-13 | 2007-01-11 | Intel Corporation | Selective activation of error mitigation based on bit level error count |
-
2014
- 2014-06-17 US US14/306,697 patent/US9760438B2/en active Active
-
2015
- 2015-05-06 GB GB1507706.8A patent/GB2529017A/en not_active Withdrawn
- 2015-06-16 KR KR1020150085198A patent/KR102271054B1/en active IP Right Grant
- 2015-06-16 TW TW104119464A patent/TWI693514B/en active
Patent Citations (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3699322A (en) * | 1971-04-28 | 1972-10-17 | Bell Telephone Labor Inc | Self-checking combinational logic counter circuit |
US5090035A (en) * | 1990-01-19 | 1992-02-18 | Nec Corporation | Linear feedback shift register |
EP0473819A1 (en) | 1990-09-05 | 1992-03-11 | International Business Machines Corporation | Multiport memory cell |
US5193092A (en) | 1990-12-20 | 1993-03-09 | Vlsi Technology, Inc. | Integrated parity-based testing for integrated circuits |
US5434871A (en) | 1992-11-17 | 1995-07-18 | Unisys Corporation | Continuous embedded parity checking for error detection in memory structures |
US5623506A (en) * | 1994-01-28 | 1997-04-22 | International Business Machines Corporation | Method and structure for providing error correction code within a system having SIMMs |
US5748912A (en) | 1995-06-13 | 1998-05-05 | Advanced Micro Devices, Inc. | User-removable central processing unit card for an electrical device |
US5784427A (en) * | 1995-06-24 | 1998-07-21 | Motorola, Inc. | Feedback and shift unit |
US5523707A (en) | 1995-06-30 | 1996-06-04 | International Business Machines Corporation | Fast, low power exclusive or circuit |
US5757823A (en) * | 1995-10-03 | 1998-05-26 | International Business Machines Corporation | Error detection and correction for four-bit-per-chip memory system |
US5809273A (en) | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US6130866A (en) | 1996-07-15 | 2000-10-10 | Sony Corporation | Error-correcting storage medium reproduction apparatus and method using frames and synchronization patterns |
US5719880A (en) | 1996-09-20 | 1998-02-17 | Texas Instruments Incorporated, A Delaware Corporation | On-chip operation for memories |
US6275311B1 (en) * | 1997-06-30 | 2001-08-14 | Pirelli Cavi E Sistemi S.P.A. | Optical device for processing an optical digital signal |
US6266710B1 (en) * | 1997-08-04 | 2001-07-24 | Robert Bosch Gmbh | Serial data transfer device |
US6295626B1 (en) * | 1997-10-20 | 2001-09-25 | Nortel Networks Limited | Symbol based algorithm for hardware implementation of cyclic redundancy check |
US6018304A (en) * | 1997-12-18 | 2000-01-25 | Texas Instruments Incorporated | Method and apparatus for high-rate n/n+1 low-complexity modulation codes with adjustable codeword length and error control capability |
US6332173B2 (en) * | 1998-10-31 | 2001-12-18 | Advanced Micro Devices, Inc. | UART automatic parity support for frames with address bits |
US6181164B1 (en) | 1999-01-08 | 2001-01-30 | Xilinx, Inc. | Linear feedback shift register in a programmable gate array |
US6137734A (en) * | 1999-03-30 | 2000-10-24 | Lsi Logic Corporation | Computer memory interface having a memory controller that automatically adjusts the timing of memory interface signals |
US6262596B1 (en) * | 1999-04-05 | 2001-07-17 | Xilinx, Inc. | Configuration bus interface circuit for FPGAS |
US6457154B1 (en) * | 1999-11-30 | 2002-09-24 | International Business Machines Corporation | Detecting address faults in an ECC-protected memory |
US6433725B1 (en) | 2000-11-27 | 2002-08-13 | Turner Research, Inc. | High speed analog-to-digital converter |
US6938198B1 (en) * | 2001-04-12 | 2005-08-30 | Broadband Royalty Corporation | Method and system for accelerating ethernet checksums |
US7283380B1 (en) | 2001-08-03 | 2007-10-16 | Netlogic Microsystems, Inc. | Content addressable memory with selective error logging |
US20030061558A1 (en) | 2001-09-25 | 2003-03-27 | Fackenthal Richard E. | Double error correcting code system |
US20030058896A1 (en) * | 2001-09-27 | 2003-03-27 | Infineon Technologies Ag | Multiplexer cell and multiplexer circuit arrangement and coding device for use in a multiplexer circuit arrangement of this kind |
US20040078728A1 (en) * | 2002-05-14 | 2004-04-22 | Marc Tremblay | Method and apparatus for providing fault-tolerance for temporary results within a CPU |
US20040117723A1 (en) | 2002-11-29 | 2004-06-17 | Foss Richard C. | Error correction scheme for memory |
US7278085B1 (en) * | 2003-03-06 | 2007-10-02 | Maxtor Corporation | Simple error-correction codes for data buffers |
US20040190357A1 (en) | 2003-03-28 | 2004-09-30 | Scheuerlein Roy E. | Redundant memory structure using bad bit pointers |
US20050204274A1 (en) | 2004-02-23 | 2005-09-15 | Infineon Technologies Ag | Parity checking circuit for continuous checking of the party of a memory cell |
US20050223208A1 (en) | 2004-03-05 | 2005-10-06 | Moran Timothy G | Transient transceiver clock configuration |
US20070186268A1 (en) * | 2004-03-09 | 2007-08-09 | Mcneely David L | Cross-encoding of information in independent channels |
US20050268209A1 (en) * | 2004-05-28 | 2005-12-01 | International Business Machines Corporation | Cyclic redundancy check generation circuit |
US20050289441A1 (en) | 2004-06-29 | 2005-12-29 | Renesas Technology Corp. | Semiconductor device improving error correction processing rate |
US7589362B1 (en) | 2004-07-01 | 2009-09-15 | Netlogic Microsystems, Inc. | Configurable non-volatile logic structure for characterizing an integrated circuit device |
US20060156214A1 (en) | 2004-12-21 | 2006-07-13 | Fujitsu Limited | Semiconductor memory |
US8005209B2 (en) * | 2005-01-06 | 2011-08-23 | Polytechnic University | Invariance based concurrent error detection for the advanced encryption standard |
US20080040652A1 (en) | 2005-04-07 | 2008-02-14 | Udo Ausserlechner | Memory Error Detection Device and Method for Detecting a Memory Error |
US20070044045A1 (en) * | 2005-08-19 | 2007-02-22 | Nan Zhuang | Method and apparatus for optimizing a logic network in a digital circuit |
US20070250755A1 (en) * | 2006-03-29 | 2007-10-25 | Wayne Burleson | Dormant error checker |
US20080040519A1 (en) | 2006-05-02 | 2008-02-14 | Alacritech, Inc. | Network interface device with 10 Gb/s full-duplex transfer rate |
US20080195915A1 (en) * | 2007-02-09 | 2008-08-14 | Leonard Todd E | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs |
US20090164870A1 (en) | 2007-12-21 | 2009-06-25 | Arm Limited | Apparatus and method for error correction of data values in a storage device |
US20090249175A1 (en) | 2008-03-27 | 2009-10-01 | Arm Limited | Single Event Upset error detection within sequential storage circuitry of an integrated circuit |
US8225187B1 (en) * | 2008-03-31 | 2012-07-17 | Xilinx, Inc. | Method and apparatus for implementing a cyclic redundancy check circuit |
US20100088565A1 (en) | 2008-10-07 | 2010-04-08 | Arm Limited | Correction of single event upset error within sequential storage circuitry of an integrated circuit |
US20110099451A1 (en) | 2009-10-22 | 2011-04-28 | Arm Limited | Error control coding for single error correction and double error detection |
US20110225475A1 (en) | 2010-03-12 | 2011-09-15 | Texas Instruments Incorporated | Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes |
US20110231732A1 (en) | 2010-03-22 | 2011-09-22 | Phison Electronics Corp. | Error correcting method, and memory controller and memory storage system using the same |
US20110320919A1 (en) * | 2010-06-24 | 2011-12-29 | International Business Machines Corporation | High performance cache directory error correction code |
US20120240014A1 (en) * | 2011-03-14 | 2012-09-20 | Infineon Technologies Ag | Error Tolerant Flip-Flops |
US20120303986A1 (en) | 2011-05-27 | 2012-11-29 | Arm Limited | Verifying state integrity in state retention circuits |
US20130283115A1 (en) * | 2012-04-20 | 2013-10-24 | Arm Limited | Data processing apparatus using implicit data storage and a method of implicit data storage |
US20140070867A1 (en) * | 2012-09-10 | 2014-03-13 | Stmicroelectronics (Research & Development) Limited | Circuit for combining signals |
US20140089769A1 (en) | 2012-09-27 | 2014-03-27 | Lsi Corporation | Content addressable memory continuous error detection with interleave parity |
US9122625B1 (en) | 2012-12-18 | 2015-09-01 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US20140325303A1 (en) * | 2013-04-30 | 2014-10-30 | Lsi Corporation | Systems and Methods for Protected Data Encoding |
US20150041625A1 (en) * | 2013-08-06 | 2015-02-12 | Stmicroelectronics (Research & Development) Limited | Time to digital converter and applications thereof |
US20150248323A1 (en) * | 2014-02-28 | 2015-09-03 | Cavium, Inc. | Partitioned error code computation |
US20150276867A1 (en) | 2014-03-28 | 2015-10-01 | International Business Machines Corporation | Initializing and testing integrated circuits with selectable scan chains with exclusive-or outputs |
US20150363268A1 (en) * | 2014-06-17 | 2015-12-17 | Arm Limited | Error detection in stored data values |
US20160253227A1 (en) | 2015-02-26 | 2016-09-01 | Arm Limited | Error Detection Circuitry For Use With Memory |
Non-Patent Citations (18)
Title |
---|
Almukhaizim et al., Concurrent Error Detection Methods for Asynchronous Burst-Mode Machines, Jun. 2007, IEEE, vol. 56, No. 6, pp. 785-798. * |
Almukhaizim et al., On Concurrent Error Detection with Bounded Latency in FSMs, 2004, IEEE, pp. 1-6. * |
Bergstra, A Formal Approach to Concurrent Error Detection in FPGA LUTS, Jul. 2012, McMaster University, Canada, pp. 1-83. * |
Crop et al., Error Detection and Recovery Techniques for Variation-Aware CMOS Computing: A Comprehensive Review, Oct. 11, 2011, Journal of Low Power Electronics and Applications, pp. 334-356. * |
Damm et al., State Assignment for Detecting Erroneous Transitions in Finite State Machines, 2006, IEEE, pp. 1-8. * |
Das et al., Razorll: In Situ Error Detection and Correction for PVT and SER Tolerance, Jan. 2009, IEEE, vol. 44, No. 1, pp. 32-48. * |
Error Detection and Correction; Supplement to Logic and Computer Design Fundamentals 3rd Edition1; Pearson Education; 2004 http://logos.cs.uic.edu/366/notes/ErrorCorrectionAndDetectionSupplement.pdf. |
Kim, J. et al., "Multi-bit Error Tolerant Caches Using Two-Dimensional Error Coding", IEEE International Symposium on Microarchitecture (MICRO-40), (printed on Jun. 16, 2014), 13 pages. |
Mitra, S. et al., "Which Concurrent Error Detection Scheme to Choose ?", (printed on Jun. 16, 2014), 10 pages. |
Palframan et al., Time Redundant Parity for Low-Cost ,Transient Error Detection, 2011, EDAA, pp. 1-6. * |
Palframan, D.J. et al., "Time Redundant Parity for Low-Cost Transient Error Detection", (2011), 6 pages. |
Parity & Computing Parity; May 10, 2005; http://akbar.marlboro.edu/˜mahoney/courses/Fall01/computation/compression/hamming/parity.htm. |
PCT International Search Report and Written Opinion; PCT/GB2016/050500; dated May 2, 2016. |
Phelps; Constructing an Error Correcting Code; Nov. 9, 2009. http://pages.cs.wisc.edu/˜markhill/cs552/Fall2006/handouts/ConstructingECC.pdf. |
UKIPO Examination and Search Report; GB 1507706.8; dated Nov. 30, 2015. |
UKIPO Examination Report; GB 1507706.8; dated Nov. 18, 2016. |
Yoon, et al.; Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches; Proceedings of ISCA'09; ACM; 2009. http://users.ece.utexas.edu/˜merez/mme-isca09.pdf. |
Yoon, et al.; Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches; Proceedings of ISCA'09; ACM; 2009. http://users.ece.utexas.edu/˜merez/mme—isca09.pdf. |
Also Published As
Publication number | Publication date |
---|---|
KR20150144714A (en) | 2015-12-28 |
KR102271054B1 (en) | 2021-06-30 |
GB2529017A (en) | 2016-02-10 |
GB201507706D0 (en) | 2015-06-17 |
TW201610663A (en) | 2016-03-16 |
TWI693514B (en) | 2020-05-11 |
US20150363267A1 (en) | 2015-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529671B2 (en) | Error detection in stored data values | |
JP6640030B2 (en) | Memory macro and semiconductor integrated circuit device | |
US7353438B2 (en) | Transparent error correcting memory | |
JP4899556B2 (en) | Semiconductor integrated circuit | |
CN110352407A (en) | Error Correcting Code memory | |
CN108877870B (en) | Repair circuit for repair operation and memory device including the same | |
US20070011513A1 (en) | Selective activation of error mitigation based on bit level error count | |
US9575125B1 (en) | Memory device with reduced test time | |
US7380191B2 (en) | ABIST data compression and serialization for memory built-in self test of SRAM with redundancy | |
US9760438B2 (en) | Error detection in stored data values | |
KR20100031148A (en) | Semiconductor memory device for accumulation test and system including the same | |
US9401223B2 (en) | At-speed test of memory arrays using scan | |
JP2018156712A (en) | Semiconductor device and diagnostic method of semiconductor device | |
JP5611916B2 (en) | Semiconductor integrated circuit | |
US20050157565A1 (en) | Semiconductor device for detecting memory failure and method thereof | |
US9891976B2 (en) | Error detection circuitry for use with memory | |
US8199547B2 (en) | Error detection in a content addressable memory (CAM) | |
US10108486B2 (en) | Error protection | |
US7013414B2 (en) | Test method and test system for semiconductor device | |
US20120246527A1 (en) | Built-in self test circuit and designing apparatus | |
US20100017651A1 (en) | System and method for efficient detection and restoration of data storage array defects | |
JP2010040092A (en) | Semiconductor integrated circuit | |
US10381104B2 (en) | Semiconductor device | |
US11532375B2 (en) | Latch circuit and memory device including the same | |
US20230259433A1 (en) | Systems and methods to test an asychronous finite machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ARM LIMITED, UNITED KINGDOM Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHANDRA, VIKAS;AITKEN, ROBERT CAMPBELL;REEL/FRAME:033616/0094 Effective date: 20140724 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |