US20160328285A1 - Error vector readout from a memory device - Google Patents
Error vector readout from a memory device Download PDFInfo
- Publication number
- US20160328285A1 US20160328285A1 US14/724,901 US201514724901A US2016328285A1 US 20160328285 A1 US20160328285 A1 US 20160328285A1 US 201514724901 A US201514724901 A US 201514724901A US 2016328285 A1 US2016328285 A1 US 2016328285A1
- Authority
- US
- United States
- Prior art keywords
- memory addresses
- data
- error
- error vector
- raw data
- 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
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/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
- 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
-
- 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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- 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/1072—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 in multilevel memories
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Definitions
- the present invention relates to memory management, and more specifically, to error vector readout from a memory device.
- a memory device such as a dynamic random-access memory (DRAM) typically includes error correction capability.
- Error correction coding (ECC) bits are coded via an encoder onto data that is stored in the DRAM.
- ECC Error correction coding
- a decoder is used to obtain correct data based on the ECC bits.
- the decoder produces an error vector that is combined with the raw data (in an XOR operation) to obtain the corrected data.
- a memory management system includes a controller configured to receive a read command and control a memory device based on the read command; the memory device configured to store raw data and error correction coding (ECC) bits and output the raw data and the ECC bits corresponding with memory addresses specified in the read command; an ECC decoder configured to output an error vector associated with the memory addresses based on the raw data and the ECC bits corresponding with the memory addresses output by the memory device, the error vector associated with the memory addresses indicating errors in the raw data corresponding with the memory addresses; and a multiplexer (MUX) configured to output the error vector based on a selection indicated in the read command.
- ECC error correction coding
- a method of managing output data resulting from a memory device storing raw data and error correction coding (ECC) bits includes receiving a read command, the read command including a specification of one or more memory addresses within the memory device; outputting, from the memory device, the raw data corresponding with the one or more memory addresses and the ECC bits corresponding with the one or more memory addresses; decoding the raw data and the ECC bits corresponding with the one or more memory addresses to output an error vector associated with the one or more memory addresses, the error vector associated with the one or more memory addresses indicating errors in the raw data corresponding with the one or more memory addresses; and outputting the error vector associated with the one or more memory addresses as the output data based on a selection indicated in the read command.
- ECC error correction coding
- FIG. 1 is a block diagram of a memory management system according to an embodiment of the invention.
- FIG. 2 illustrates the output data resulting from two different commands according to an embodiment
- FIG. 3 illustrates the output data resulting from two different commands according to another embodiment
- FIG. 4 illustrates the output data resulting from two different commands according to yet another embodiment
- FIG. 5 shows an exemplary compression algorithm for an exemplary error vector according to an embodiment
- FIG. 6 illustrates exemplary data and error vector bits in the case of correctable error according to embodiments
- FIG. 7 illustrates exemplary data and error vector bits in the case of uncorrectable error according to embodiments
- FIG. 8 illustrates exemplary data and error vector bits in the case of uncorrectable error according to another embodiment
- FIG. 9 illustrates error vectors for different scenarios according to an embodiment
- FIG. 10 illustrates error vectors for different scenarios according to another embodiment
- FIG. 11 is an exemplary implementation of the command decoder of the memory management system according to an embodiment
- FIG. 12 is a process flow of a method of using the error vector obtained according to embodiments.
- FIG. 13 is a process flow of another method of using the error vector obtained according to embodiments.
- FIG. 14 is a process flow of yet another method of using the error vector obtained according to embodiments.
- ECC bits encoded on data stored in a memory device are used to obtain correct data upon readout from the memory device. Any errors in the raw data stored in the memory device are corrected by combining the raw data with decoded ECC bits that are also stored. Specifically, decoding of the ECC bits generates an error vector that is combined (e.g., XOR) with the raw data to provide corrected data. While the corrected data obtained with the error vector is provided, the error vector itself is not currently available. However, the error vector can be used to obtain information that facilitates improved memory management.
- a memory device e.g., DRAM
- the error vector which includes address information, indicates the address locations of errors, facilitates monitoring of errors (e.g., their frequency, concentration in certain memory locations), and the extent of correction that was required to obtain the corrected data.
- errors e.g., their frequency, concentration in certain memory locations
- a flag pin indicator or other mechanism could be used to indicate an error to the memory controller.
- the memory controller had to stop the read operation and read the internal register of the memory device to determine the memory location of the error. While additional flag pins would prevent the need for the process to determine the memory location, they represent a significant additional resource usage.
- Embodiments of the systems and methods detailed herein relate to obtaining the error vector without a performance penalty or the need for additional resources. That is, the embodiments discussed below are not a stop-and-check approach like previous approaches and do not require additional pins or other resources.
- FIG. 1 is a block diagram of a memory management system 100 according to an embodiment of the invention.
- the memory management system 100 may be accessed by a memory controller 10 that accesses any number of memory devices 110 .
- the memory controller 10 includes one or more memory devices storing instructions and one or more processors implementing the instructions. Exemplary processes performed by the memory controller 10 are further discussed below with reference to FIGS. 12-14 .
- a memory device 110 is shown with data 113 and ECC bits 115 stored therein.
- the data 113 is encoded with ECC bits 115 in the memory device 110 .
- a command 153 input to the command decoder 155 results in a decoded command 155 .
- the command 153 is further discussed below and may come from the memory controller 10 .
- Data readout includes reading out raw data 113 as well as the ECC bits 115 .
- the memory addresses or address range from which corresponding raw data 113 and ECC bits 115 are to be output from the memory device 110 are specified in the read command 153 .
- the ECC decoder 120 uses the data 113 and ECC bits 115 to generate the error vector 125 .
- a component 130 e.g., exclusive or (XOR) digital logic gate
- the error vector 125 indicates the location of errors in the raw data 113 which are corrected in the corrected data 135 . Other embodiments are discussed further below.
- the decoded command 155 is also provided to a MUX 140 and is used to output either the corrected data 135 or the error vector 125 as output data 145 according to an embodiment.
- the MUX 140 output data 145 may be the raw data 113 or may include a compressed version of the error vector 125 , as further discussed below.
- the same one or more bits or a different set of bits may be used to specify whether the output data 145 output by the MUX 140 should be the raw data 113 .
- Other embodiments are discussed below that specify other output data 145 options.
- the output data 145 may be provided to the memory controller 10 . Exemplary readouts are discussed below.
- FIGS. 2-4 illustrate exemplary readouts according to three different embodiments.
- an input command 153 results in a particular output data 145 from the MUX 140 .
- raw data 113 may be output rather than corrected data 135 in any of the embodiments shown in FIGS. 2-4 based on the command 153 . This may be accomplished by setting a bit (e.g., RV) in the command 153 to indicate that the raw data 113 should be output by the MUX 140 as the output data 145 .
- a bit e.g., RV
- FIG. 2 illustrates the output data 145 resulting from two different commands 153 according to an embodiment.
- the first command 153 (Read 1 ) includes the error vector bit (e.g., EV) set to 0, indicating that the error vector 125 is not to be output.
- corrected data 135 (or, alternately, raw data 113 ) is output, as indicated by the arrow in FIG. 2 .
- the exemplary corrected data 135 is 32 bits in FIG. 2 , but the example is not intended to limit the length of the corrected data 135 or the arrangement of the data bus that provides the output data 145 .
- FIG. 3 illustrates the output data 145 resulting from two different commands 153 according to another embodiment.
- the first command 153 (Read 1 ) includes the error vector bit (e.g., EV) set to 0, indicating that the error vector 125 is not to be output.
- corrected data 135 is output as the output data 145 .
- raw data 113 rather than corrected data 135 may be output as output data 145 .
- another command 153 (Read 2 ) is issued with EV set to 1, the result is different according to the present embodiment than in the embodiment illustrated in FIG. 2 .
- both the corrected data 135 (or raw data 113 ) and the error vector 125 are output as the output data 145 .
- 64 bits are output as the output data 145 when EV is set to 1.
- the embodiment shown in FIG. 3 facilitates reading out the error vector 125 along with readout of data ( 113 or 135 ) but requires more time due to the additional bits in the output data 145 . In fact, twice as much time is needed in the embodiment shown (for Read 2 ) in FIG. 3 as compared with the embodiment shown in FIG. 2 .
- FIG. 4 illustrates the output data 145 resulting from two different commands 153 according to yet another embodiment.
- FIG. 4 shows an embodiment that represents a middle ground between the embodiments shown in FIGS. 2 and 3 .
- the output data 145 is the corrected data 135 (or data 113 ).
- the resulting output data 145 includes a compressed error vector 125 ′ along with the corrected data 135 . That is, the error vector 125 (8 bits long for each bus line in the example shown in FIG. 3 ) is compressed (to 2 bits).
- the compression may be performed according to the exemplary algorithm shown in FIG. 5 .
- FIG. 6 illustrates exemplary data and error vector bits in the case of correctable error according to embodiments.
- the raw data 113 includes one bit (shaded) that has an error. This bit is corrected in the corrected data 135 and indicated as an error in the corresponding bit of the error vector 125 .
- the output data 145 is the corrected data 135 when the error vector bit (EV) is set to 0.
- the output data 145 may be one of three different sets of bits when EV is set to 1, according to the embodiments discussed above with reference to FIGS. 2-4 .
- the output data 145 may be the error vector 125 alone (as shown in FIG. 2 ), the corrected data 135 and the error vector 125 (as shown in FIG. 3 ), or the corrected data 135 and a compressed version of the error vector 125 ′ (as shown in FIG. 4 ).
- the example shown in FIG. 6 includes a correctable error. Exemplary embodiments including patterns to indicate uncorrectable errors are discussed below.
- FIG. 7 illustrates exemplary data and error vector bits in the case of uncorrectable error according to one embodiment.
- the raw data 113 includes two bits (shaded) with errors.
- the bits with errors may be uncorrectable because information about which bits in particular are in error may not be available through the ECC bits 115 , for example. Thus, the errors are detectable but not correctable.
- the corrected data 135 is the same as the raw data 113 , but the error vector 125 is a predefined pattern (e.g., all ‘1’ in the example) that indicates one or more uncorrectable errors.
- FIG. 8 illustrates exemplary data and error vector bits in the case of uncorrectable error according to another embodiment. In the embodiment shown in FIG. 8 , the corrected data 135 and the error vector 125 are both predefined patterns (and could be the same or different patterns) indicating the presence of uncorrectable data in the raw data 113 .
- FIG. 9 illustrates error vectors 125 for different scenarios 910 - 940 according to an embodiment.
- the error vector 125 indicates error bits among the ECC bits 115 as well as the raw data 113 .
- the error vector 125 is all 0s.
- the corresponding bit is set to 1 (with all other bits set to 0) in the error vector 125 .
- the number of bits of the error vector 125 is the same as the number of bits of the raw data 113 such that there are no spare bits to indicate errors in the ECC bits 115
- a pattern (shown for the shaded bits) is used to indicate that an error in the ECC bits 115 is shown at bits 935 .
- the bit in the error vector 125 within the bits 935 that corresponds with the erroneous ECC bit 115 is set to 1 while other bits within the bits 935 are set to 0.
- scenario 940 an uncorrectable error is detected in the raw data 113 .
- the error vector 125 is generated in a pattern, similarly to the embodiments shown in FIGS. 7 and 8 .
- the scenarios 910 - 940 are not exhaustive (e.g., combinations of the scenarios 910 - 940 )
- the error vector 125 When there are no errors in the accessed data 113 , non-accessed data 113 ′, or ECC bits 115 , as in scenario 1010 , the error vector 125 includes all 0s. When, as in scenario 1020 , there is a correctable error in the accessed data 113 , the error bit is indicated in a corresponding bit of the error vector 125 . When the non-accessed data 113 ′ includes a correctable error, as in scenario 1030 , the error vector 125 is a pattern that indicates that there is an error in one of the two datasets ( 113 , 113 ′) associated with the ECC bits 115 . Alternately, the error vector 125 may be all 0s to indicate that the accessed data 113 does not include any errors.
- scenario 1040 there is a correctable error in the ECC bits 115 .
- This scenario 1040 results in a pattern, similarly to scenario 930 , and also an indication in the error vector 125 of the erroneous bit among the ECC bits 115 .
- the error vector 125 is a pattern, similarly to scenario 940 .
- FIG. 11 is an exemplary implementation of the command decoder 150 of the memory management system 100 according to an embodiment.
- the different bits set as the command 153 input to the decoder 150 include the EV bit.
- a mode register 1110 may be used to enable or disable the EV readout bit.
- FIGS. 12-14 illustrate exemplary process flows implemented by the memory controller 10 that uses the memory management system 100 .
- FIG. 12 is a process flow of a method of using the error vector obtained according to embodiments discussed herein.
- the present embodiment relates to a regular read, for example.
- a read operation (Readl) is done with EV set to 0, indicating that the error vector 125 should not be output.
- a determination is then made, at block 1220 , whether the corrected data 135 is a pre-defined pattern. As shown in FIG. 8 , for example, the corrected data 135 being a pre-defined pattern may indicate an uncorrectable error.
- the corrected data 135 is a pre-defined pattern
- another read (Read 2 ) is done with EV set to 1, indicating that the error vector 125 should be output. Based on other bits set in the command 153 according to various embodiments discussed above, this second read may additionally call for raw data 113 or corrected data 135 being output.
- the error vector 125 it is determined if there is an uncorrectable error in the raw data 113 .
- error recovery is pursued at block 1250 . The error recovery may be by known techniques.
- the process of continuing normal operation is continued at block 1260 .
- This process may include reading additional data from the memory device 110 for example.
- FIG. 13 is a process flow of another method of using the error vector obtained according to embodiments.
- the present embodiment relates to a memory scrubbing process, for example, in which memory locations of the memory device 110 are read and corrected as needed. Memory locations in which errors persist after corrected data has been written back are said to have hard errors while memory locations in which errors do not persist are said to have soft errors.
- a second read (Read 2 ) with EV set to 1, indicating that the error vector 125 should be output.
- a soft error is logged at block 1370 .
- the process continues. Until every memory location of the memory device 110 has been read, continuing includes proceeding to the next address or memory location of the memory device 110 .
- FIG. 14 is a process flow of yet another method of using the error vector obtained according to embodiments.
- the embodiment shown in FIG. 14 relates to a memory scrubbing process.
- a read is done with EV set to 1, indicating that the error vector 125 should be output.
- the data 113 and/or 135
- corrected data is written back to the memory location(s) that had an error (determined at block 1420 ). Then, at block 1450 , another read is performed with EV set to 1. At block 1460 , it is determined whether there is an error in the data 113 , 135 or error vector 125 . If there is an error again, then the error is persistent and is logged as a hard error at block 1470 . If there is no error after this read (at block 1450 ), then the error is logged as a soft error at block 1480 .
- the present invention may be a system, a method, and/or a computer program product.
- the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
- a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
Description
- This application is a continuation of U.S. application Ser. No. 14/705,115 filed May 6, 2015, the disclosure of which is incorporated by reference herein in its entirety.
- The present invention relates to memory management, and more specifically, to error vector readout from a memory device.
- A memory device such as a dynamic random-access memory (DRAM) typically includes error correction capability. Error correction coding (ECC) bits are coded via an encoder onto data that is stored in the DRAM. When the data is read out from the DRAM, a decoder is used to obtain correct data based on the ECC bits. The decoder produces an error vector that is combined with the raw data (in an XOR operation) to obtain the corrected data.
- According to an embodiment, a memory management system includes a controller configured to receive a read command and control a memory device based on the read command; the memory device configured to store raw data and error correction coding (ECC) bits and output the raw data and the ECC bits corresponding with memory addresses specified in the read command; an ECC decoder configured to output an error vector associated with the memory addresses based on the raw data and the ECC bits corresponding with the memory addresses output by the memory device, the error vector associated with the memory addresses indicating errors in the raw data corresponding with the memory addresses; and a multiplexer (MUX) configured to output the error vector based on a selection indicated in the read command.
- According to another embodiment, a method of managing output data resulting from a memory device storing raw data and error correction coding (ECC) bits includes receiving a read command, the read command including a specification of one or more memory addresses within the memory device; outputting, from the memory device, the raw data corresponding with the one or more memory addresses and the ECC bits corresponding with the one or more memory addresses; decoding the raw data and the ECC bits corresponding with the one or more memory addresses to output an error vector associated with the one or more memory addresses, the error vector associated with the one or more memory addresses indicating errors in the raw data corresponding with the one or more memory addresses; and outputting the error vector associated with the one or more memory addresses as the output data based on a selection indicated in the read command.
- Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with the advantages and the features, refer to the description and to the drawings.
- The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The forgoing and other features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
-
FIG. 1 is a block diagram of a memory management system according to an embodiment of the invention; -
FIG. 2 illustrates the output data resulting from two different commands according to an embodiment; -
FIG. 3 illustrates the output data resulting from two different commands according to another embodiment; -
FIG. 4 illustrates the output data resulting from two different commands according to yet another embodiment; -
FIG. 5 shows an exemplary compression algorithm for an exemplary error vector according to an embodiment; -
FIG. 6 illustrates exemplary data and error vector bits in the case of correctable error according to embodiments; -
FIG. 7 illustrates exemplary data and error vector bits in the case of uncorrectable error according to embodiments; -
FIG. 8 illustrates exemplary data and error vector bits in the case of uncorrectable error according to another embodiment; -
FIG. 9 illustrates error vectors for different scenarios according to an embodiment; -
FIG. 10 illustrates error vectors for different scenarios according to another embodiment; -
FIG. 11 is an exemplary implementation of the command decoder of the memory management system according to an embodiment; -
FIG. 12 is a process flow of a method of using the error vector obtained according to embodiments; -
FIG. 13 is a process flow of another method of using the error vector obtained according to embodiments; and -
FIG. 14 is a process flow of yet another method of using the error vector obtained according to embodiments. - As noted above, ECC bits encoded on data stored in a memory device (e.g., DRAM) are used to obtain correct data upon readout from the memory device. Any errors in the raw data stored in the memory device are corrected by combining the raw data with decoded ECC bits that are also stored. Specifically, decoding of the ECC bits generates an error vector that is combined (e.g., XOR) with the raw data to provide corrected data. While the corrected data obtained with the error vector is provided, the error vector itself is not currently available. However, the error vector can be used to obtain information that facilitates improved memory management. For example, the error vector, which includes address information, indicates the address locations of errors, facilitates monitoring of errors (e.g., their frequency, concentration in certain memory locations), and the extent of correction that was required to obtain the corrected data. These examples are not exhaustive of the information that can be obtained from the error vector. Previously, a flag pin indicator or other mechanism could be used to indicate an error to the memory controller. However, the memory controller had to stop the read operation and read the internal register of the memory device to determine the memory location of the error. While additional flag pins would prevent the need for the process to determine the memory location, they represent a significant additional resource usage. Embodiments of the systems and methods detailed herein relate to obtaining the error vector without a performance penalty or the need for additional resources. That is, the embodiments discussed below are not a stop-and-check approach like previous approaches and do not require additional pins or other resources.
-
FIG. 1 is a block diagram of amemory management system 100 according to an embodiment of the invention. Thememory management system 100 may be accessed by amemory controller 10 that accesses any number ofmemory devices 110. Thememory controller 10 includes one or more memory devices storing instructions and one or more processors implementing the instructions. Exemplary processes performed by thememory controller 10 are further discussed below with reference toFIGS. 12-14 . Amemory device 110 is shown withdata 113 andECC bits 115 stored therein. Thedata 113 is encoded withECC bits 115 in thememory device 110. Acommand 153 input to thecommand decoder 155 results in a decodedcommand 155. Thecommand 153 is further discussed below and may come from thememory controller 10. Based on the decodedcommand 155, data read out from thememory device 110 is initiated. Data readout includes reading outraw data 113 as well as theECC bits 115. The memory addresses or address range from which correspondingraw data 113 andECC bits 115 are to be output from thememory device 110 are specified in theread command 153. TheECC decoder 120 uses thedata 113 andECC bits 115 to generate theerror vector 125. A component 130 (e.g., exclusive or (XOR) digital logic gate) operates on theraw data 113 anderror vector 125 to output the correcteddata 135. According to one embodiment, theerror vector 125 indicates the location of errors in theraw data 113 which are corrected in the correcteddata 135. Other embodiments are discussed further below. The decodedcommand 155 is also provided to a MUX 140 and is used to output either the correcteddata 135 or theerror vector 125 asoutput data 145 according to an embodiment. In alternate embodiments, the MUX 140output data 145 may be theraw data 113 or may include a compressed version of theerror vector 125, as further discussed below. Thecommand 153 may include one or more bits that specify whether theoutput data 145 should be the error vector 125 (e.g., bit EV=0 when theerror vector 125 is not to be output and EV=1 when theerror vector 125 is to be output). In the alternate embodiment, the same one or more bits or a different set of bits may be used to specify whether theoutput data 145 output by the MUX 140 should be theraw data 113. Other embodiments are discussed below that specifyother output data 145 options. Theoutput data 145 may be provided to thememory controller 10. Exemplary readouts are discussed below. -
FIGS. 2-4 illustrate exemplary readouts according to three different embodiments. In each embodiment, aninput command 153 results in aparticular output data 145 from theMUX 140. While the embodiment in whichraw data 113 rather than correcteddata 135 is output as theoutput data 145 is not explicitly discussed,raw data 113 may be output rather than correcteddata 135 in any of the embodiments shown inFIGS. 2-4 based on thecommand 153. This may be accomplished by setting a bit (e.g., RV) in thecommand 153 to indicate that theraw data 113 should be output by theMUX 140 as theoutput data 145. -
FIG. 2 illustrates theoutput data 145 resulting from twodifferent commands 153 according to an embodiment. The first command 153 (Read1) includes the error vector bit (e.g., EV) set to 0, indicating that theerror vector 125 is not to be output. As a result, corrected data 135 (or, alternately, raw data 113) is output, as indicated by the arrow inFIG. 2 . The exemplary correcteddata 135 is 32 bits inFIG. 2 , but the example is not intended to limit the length of the correcteddata 135 or the arrangement of the data bus that provides theoutput data 145. When another command 153 (Read2) is issued with EV set to 1, indicating that theerror vector 125 is to be output, theerror vector 125 is provided as theoutput data 145. The command 153 (Read2 with EV=1) may be issued after some specified number of regular read commands 153 (Read1 with EV=0) (e.g., every 100 read commands) or may be issued based on an event or according to another trigger. -
FIG. 3 illustrates theoutput data 145 resulting from twodifferent commands 153 according to another embodiment. The first command 153 (Read1) includes the error vector bit (e.g., EV) set to 0, indicating that theerror vector 125 is not to be output. As a result, and similarly to the embodiment shown inFIG. 2 , correcteddata 135 is output as theoutput data 145. In alternate embodiments,raw data 113 rather than correcteddata 135 may be output asoutput data 145. When another command 153 (Read2) is issued with EV set to 1, the result is different according to the present embodiment than in the embodiment illustrated inFIG. 2 . When EV is set to 1, both the corrected data 135 (or raw data 113) and theerror vector 125 are output as theoutput data 145. As a result, in the exemplary illustrated case in which the data is 32 bits, 64 bits are output as theoutput data 145 when EV is set to 1. The address range of the correcteddata 135 output when EV=0 and when EV=1 may be different (but could be the same) and depends on the address range specified in thecommand 153. As a comparison ofFIGS. 2 and 3 indicates, the embodiment shown inFIG. 3 facilitates reading out theerror vector 125 along with readout of data (113 or 135) but requires more time due to the additional bits in theoutput data 145. In fact, twice as much time is needed in the embodiment shown (for Read2) inFIG. 3 as compared with the embodiment shown inFIG. 2 . -
FIG. 4 illustrates theoutput data 145 resulting from twodifferent commands 153 according to yet another embodiment.FIG. 4 shows an embodiment that represents a middle ground between the embodiments shown inFIGS. 2 and 3 . Again, for the first command 153 (Read1) with EV set to 0,theoutput data 145 is the corrected data 135 (or data 113). When another command 153 (Read2) is issued with EV set to 1, the resultingoutput data 145 includes acompressed error vector 125′ along with the correcteddata 135. That is, the error vector 125 (8 bits long for each bus line in the example shown inFIG. 3 ) is compressed (to 2 bits). The compression may be performed according to the exemplary algorithm shown inFIG. 5 . This embodiment represents a middle ground between those shown inFIGS. 2 and 3 because information from theerror vector 125 is not conveyed in lieu of data (135 or 113), as it is in the embodiment shown inFIG. 2 , but less data and, thus, less time, as compared to the embodiment shown inFIG. 3 , is required to provide theoutput data 145 when EV is set to 1.FIG. 5 shows an exemplary compression algorithm for an exemplary error vector according to an embodiment. The table 510 indicates how four bits are compressed to one bit. The symbol ∥ in the table 510 indicates a logical OR operation. -
FIG. 6 illustrates exemplary data and error vector bits in the case of correctable error according to embodiments. Theraw data 113 includes one bit (shaded) that has an error. This bit is corrected in the correcteddata 135 and indicated as an error in the corresponding bit of theerror vector 125. Theoutput data 145 is the correcteddata 135 when the error vector bit (EV) is set to 0. Theoutput data 145 may be one of three different sets of bits when EV is set to 1, according to the embodiments discussed above with reference toFIGS. 2-4 . Theoutput data 145 may be theerror vector 125 alone (as shown inFIG. 2 ), the correcteddata 135 and the error vector 125 (as shown inFIG. 3 ), or the correcteddata 135 and a compressed version of theerror vector 125′ (as shown inFIG. 4 ). The example shown inFIG. 6 includes a correctable error. Exemplary embodiments including patterns to indicate uncorrectable errors are discussed below. -
FIG. 7 illustrates exemplary data and error vector bits in the case of uncorrectable error according to one embodiment. Theraw data 113 includes two bits (shaded) with errors. The bits with errors may be uncorrectable because information about which bits in particular are in error may not be available through theECC bits 115, for example. Thus, the errors are detectable but not correctable. According to the present embodiment, in this case, the correcteddata 135 is the same as theraw data 113, but theerror vector 125 is a predefined pattern (e.g., all ‘1’ in the example) that indicates one or more uncorrectable errors.FIG. 8 illustrates exemplary data and error vector bits in the case of uncorrectable error according to another embodiment. In the embodiment shown inFIG. 8 , the correcteddata 135 and theerror vector 125 are both predefined patterns (and could be the same or different patterns) indicating the presence of uncorrectable data in theraw data 113. -
FIG. 9 illustrateserror vectors 125 for different scenarios 910-940 according to an embodiment. According to the embodiment illustrated byFIG. 9 , theerror vector 125 indicates error bits among theECC bits 115 as well as theraw data 113. In thescenario 910 when there is no error in either theraw data 113 or theECC bits 115, theerror vector 125 is all 0s. For thescenario 920 with a correctable error in theraw data 113 and no error in theECC bits 115, the corresponding bit is set to 1 (with all other bits set to 0) in theerror vector 125. Inscenario 930, there are no errors in theraw data 113 but there is an error in one of theECC bits 115. Noting that the number of bits of theerror vector 125 is the same as the number of bits of theraw data 113 such that there are no spare bits to indicate errors in theECC bits 115, a pattern (shown for the shaded bits) is used to indicate that an error in theECC bits 115 is shown atbits 935. The bit in theerror vector 125 within thebits 935 that corresponds with theerroneous ECC bit 115 is set to 1 while other bits within thebits 935 are set to 0. Inscenario 940, an uncorrectable error is detected in theraw data 113. In this case, theerror vector 125 is generated in a pattern, similarly to the embodiments shown inFIGS. 7 and 8 . Although the scenarios 910-940 are not exhaustive (e.g., combinations of the scenarios 910-940) -
FIG. 10 illustrateserror vectors 125 for different scenarios 1010-1050 according to another embodiment. According to the embodiment illustrated byFIG. 10 , theerror vector 125 indicates errors among not only the accessedraw data 113 andECC bits 115 but also among non-accessedraw data 113. This embodiment relates toECC bits 115 that are calculated over accesseddata 113 andnon-accessed data 113′. Thememory device 110 uses theECC bits 115 and an additional bit to cover twice as much data 113 (e.g., 64 bits rather than just 32 bits). Thenon-accessed data 113′ is stored in thememory device 110 but not read out as theraw data 113 in the examples discussed herein. When there are no errors in the accesseddata 113,non-accessed data 113′, orECC bits 115, as inscenario 1010, theerror vector 125 includes all 0s. When, as inscenario 1020, there is a correctable error in the accesseddata 113, the error bit is indicated in a corresponding bit of theerror vector 125. When thenon-accessed data 113′ includes a correctable error, as in scenario 1030, theerror vector 125 is a pattern that indicates that there is an error in one of the two datasets (113, 113′) associated with theECC bits 115. Alternately, theerror vector 125 may be all 0s to indicate that the accesseddata 113 does not include any errors. Inscenario 1040, there is a correctable error in theECC bits 115. Thisscenario 1040 results in a pattern, similarly toscenario 930, and also an indication in theerror vector 125 of the erroneous bit among theECC bits 115. When there is an uncorrectable error in the accesseddata 113, as inscenario 1050, theerror vector 125 is a pattern, similarly toscenario 940. -
FIG. 11 is an exemplary implementation of thecommand decoder 150 of thememory management system 100 according to an embodiment. The different bits set as thecommand 153 input to thedecoder 150 include the EV bit. AsFIG. 11 indicates, amode register 1110 may be used to enable or disable the EV readout bit. -
FIGS. 12-14 illustrate exemplary process flows implemented by thememory controller 10 that uses thememory management system 100.FIG. 12 is a process flow of a method of using the error vector obtained according to embodiments discussed herein. The present embodiment relates to a regular read, for example. Atblock 1210, a read operation (Readl) is done with EV set to 0, indicating that theerror vector 125 should not be output. A determination is then made, atblock 1220, whether the correcteddata 135 is a pre-defined pattern. As shown inFIG. 8 , for example, the correcteddata 135 being a pre-defined pattern may indicate an uncorrectable error. When the correcteddata 135 is a pre-defined pattern, then atblock 1230, another read (Read2) is done with EV set to 1, indicating that theerror vector 125 should be output. Based on other bits set in thecommand 153 according to various embodiments discussed above, this second read may additionally call forraw data 113 or correcteddata 135 being output. Atblock 1240, based on theerror vector 125, it is determined if there is an uncorrectable error in theraw data 113. When it is determined that there is an uncorrectable error in theraw data 113, error recovery is pursued atblock 1250. The error recovery may be by known techniques. When it is determined that the correcteddata 135 is not a pre-defined pattern (at block 1220) or it is determined that there is no uncorrectable error in the raw data 113 (at block 1240), the process of continuing normal operation is continued atblock 1260. This process may include reading additional data from thememory device 110 for example. -
FIG. 13 is a process flow of another method of using the error vector obtained according to embodiments. The present embodiment relates to a memory scrubbing process, for example, in which memory locations of thememory device 110 are read and corrected as needed. Memory locations in which errors persist after corrected data has been written back are said to have hard errors while memory locations in which errors do not persist are said to have soft errors. Atblock 1310, a first read (Read1) with EV set to 0, indicating that theerror vector 125 should not be output (i.e., only data (113 or 135) should be output), is followed by a second read (Read2) with EV set to 1, indicating that theerror vector 125 should be output. Atblock 1320, it is determined if there are errors in the data (113 or 135) or error vector 125 (e.g.,error vector 125 is a pre-defined pattern). When there is an error in thedata error vector 125, correct data is written into the memory location atblock 1330. This correction is followed by another set of reads (Read1 and Read2) atblock 1340. Atblock 1350, it is determined if there are errors in thedata error vector 125. When there is (still) an error in thedata error vector 125 at this stage (after the correction at block 1330), the error is logged in the hard error log at block 1360. When there is no error in thedata error vector 125 after the correction atblock 1330, a soft error is logged atblock 1370. Following the hard or soft error logging (blocks 1360 or 1370) or when it is determined (at block 1320) that there is no error in thedata error vector 125 after the first set of reads (at block 1310), the process continues. Until every memory location of thememory device 110 has been read, continuing includes proceeding to the next address or memory location of thememory device 110. -
FIG. 14 is a process flow of yet another method of using the error vector obtained according to embodiments. Like the example discussed with reference toFIG. 13 , the embodiment shown inFIG. 14 relates to a memory scrubbing process. Atblock 1410, a read is done with EV set to 1, indicating that theerror vector 125 should be output. As discussed with reference toFIG. 3 , for example, the data (113 and/or 135) may additionally be output. Atblock 1420, it is determined whether there is an error in thedata error vector 125. If there is an error found atblock 1420, another read is performed atblock 1430 with EV set to 0, indicating that theerror vector 125 should not be output. Atblock 1440, corrected data is written back to the memory location(s) that had an error (determined at block 1420). Then, atblock 1450, another read is performed with EV set to 1. Atblock 1460, it is determined whether there is an error in thedata error vector 125. If there is an error again, then the error is persistent and is logged as a hard error atblock 1470. If there is no error after this read (at block 1450), then the error is logged as a soft error at block 1480. Following the hard or soft error logging (blocks 1470 or 1480) or when it is determined (at block 1420) that there is no error in thedata error vector 125 after the first read (at block 1410), the process continues. Until every memory location of thememory device 110 has been read, continuing includes proceeding to the next address or memory location of thememory device 110. - The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one more other features, integers, steps, operations, element components, and/or groups thereof.
- The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
- The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
- The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Claims (6)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/724,901 US9734008B2 (en) | 2015-05-06 | 2015-05-29 | Error vector readout from a memory device |
DE102016107718.6A DE102016107718A1 (en) | 2015-05-06 | 2016-04-26 | Reading out error vectors from a memory unit |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/705,115 US9733870B2 (en) | 2015-05-06 | 2015-05-06 | Error vector readout from a memory device |
US14/724,901 US9734008B2 (en) | 2015-05-06 | 2015-05-29 | Error vector readout from a memory device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/705,115 Continuation US9733870B2 (en) | 2015-05-06 | 2015-05-06 | Error vector readout from a memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
US20160328285A1 true US20160328285A1 (en) | 2016-11-10 |
US9734008B2 US9734008B2 (en) | 2017-08-15 |
Family
ID=57179096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/724,901 Expired - Fee Related US9734008B2 (en) | 2015-05-06 | 2015-05-29 | Error vector readout from a memory device |
Country Status (2)
Country | Link |
---|---|
US (1) | US9734008B2 (en) |
DE (1) | DE102016107718A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239663A1 (en) * | 2015-02-13 | 2016-08-18 | International Business Machines Corporation | Detecting a cryogenic attack on a memory device with embedded error correction |
US20160328290A1 (en) * | 2015-05-06 | 2016-11-10 | International Business Machines Corporation | Error vector readout from a memory device |
US9734008B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US10019312B2 (en) | 2015-02-02 | 2018-07-10 | International Business Machines Corporation | Error monitoring of a memory device containing embedded error correction |
US10810077B1 (en) * | 2018-06-11 | 2020-10-20 | Ambarella International Lp | Rapid soft-error detection |
US11507454B2 (en) * | 2020-10-26 | 2022-11-22 | Oracle International Corporation | Identifying non-correctable errors using error pattern analysis |
US20230333762A1 (en) * | 2022-04-15 | 2023-10-19 | Micron Technology, Inc. | Reuse of bad blocks for tasks in a memory sub-system |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6351412B1 (en) * | 1999-04-26 | 2002-02-26 | Hitachi, Ltd. | Memory card |
US20080244356A1 (en) * | 2007-04-02 | 2008-10-02 | Broadcom Corporation | SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES |
US20090094504A1 (en) * | 2007-10-04 | 2009-04-09 | Hiroyuki Sadakata | Semiconductor memory device |
US7996734B2 (en) * | 2006-06-26 | 2011-08-09 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory having an ECC system |
US20110320909A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Memory system for error checking fetch and store data |
US20120182821A1 (en) * | 2011-01-14 | 2012-07-19 | Rambus Inc. | Memory system components that support error detection and correction |
US20140129903A1 (en) * | 2012-11-02 | 2014-05-08 | Samsung Electronics Co., Ltd | Method of operating memory device |
US20140245105A1 (en) * | 2013-02-26 | 2014-08-28 | Hoi-Ju CHUNG | Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices |
US20150212879A1 (en) * | 2014-01-29 | 2015-07-30 | SK Hynix Inc. | Semiconductor device performing error correction operation |
US20150286527A1 (en) * | 2014-04-03 | 2015-10-08 | Lite-On Technology Corporation | Solid state drive and associated error check and correction method |
US9170879B2 (en) * | 2009-06-24 | 2015-10-27 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated data errors from a memory system |
US20150332789A1 (en) * | 2014-05-14 | 2015-11-19 | SK Hynix Inc. | Semiconductor memory device performing self-repair operation |
US20150370634A1 (en) * | 2013-10-07 | 2015-12-24 | Macronix International Co., Ltd. | Ecc method for double pattern flash memory |
US20160292032A1 (en) * | 2013-11-22 | 2016-10-06 | Alcatel Lucent | Detecting a read access to unallocated or uninitialized memory |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9734008B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
-
2015
- 2015-05-29 US US14/724,901 patent/US9734008B2/en not_active Expired - Fee Related
-
2016
- 2016-04-26 DE DE102016107718.6A patent/DE102016107718A1/en active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6351412B1 (en) * | 1999-04-26 | 2002-02-26 | Hitachi, Ltd. | Memory card |
US7996734B2 (en) * | 2006-06-26 | 2011-08-09 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory having an ECC system |
US20080244356A1 (en) * | 2007-04-02 | 2008-10-02 | Broadcom Corporation | SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES |
US20090094504A1 (en) * | 2007-10-04 | 2009-04-09 | Hiroyuki Sadakata | Semiconductor memory device |
US9170879B2 (en) * | 2009-06-24 | 2015-10-27 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated data errors from a memory system |
US20110320909A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Memory system for error checking fetch and store data |
US20120182821A1 (en) * | 2011-01-14 | 2012-07-19 | Rambus Inc. | Memory system components that support error detection and correction |
US20140129903A1 (en) * | 2012-11-02 | 2014-05-08 | Samsung Electronics Co., Ltd | Method of operating memory device |
US20140245105A1 (en) * | 2013-02-26 | 2014-08-28 | Hoi-Ju CHUNG | Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices |
US20150370634A1 (en) * | 2013-10-07 | 2015-12-24 | Macronix International Co., Ltd. | Ecc method for double pattern flash memory |
US20160292032A1 (en) * | 2013-11-22 | 2016-10-06 | Alcatel Lucent | Detecting a read access to unallocated or uninitialized memory |
US20150212879A1 (en) * | 2014-01-29 | 2015-07-30 | SK Hynix Inc. | Semiconductor device performing error correction operation |
US20150286527A1 (en) * | 2014-04-03 | 2015-10-08 | Lite-On Technology Corporation | Solid state drive and associated error check and correction method |
US20150332789A1 (en) * | 2014-05-14 | 2015-11-19 | SK Hynix Inc. | Semiconductor memory device performing self-repair operation |
Non-Patent Citations (1)
Title |
---|
Chishti et al., Improving Cache Lifetime Reliability at Ultra-low Voltages, Jan. 2009, ACM, pp. 1-12. * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019312B2 (en) | 2015-02-02 | 2018-07-10 | International Business Machines Corporation | Error monitoring of a memory device containing embedded error correction |
US20160239663A1 (en) * | 2015-02-13 | 2016-08-18 | International Business Machines Corporation | Detecting a cryogenic attack on a memory device with embedded error correction |
US9940457B2 (en) * | 2015-02-13 | 2018-04-10 | International Business Machines Corporation | Detecting a cryogenic attack on a memory device with embedded error correction |
US20160328290A1 (en) * | 2015-05-06 | 2016-11-10 | International Business Machines Corporation | Error vector readout from a memory device |
US9733870B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US9734008B2 (en) * | 2015-05-06 | 2017-08-15 | International Business Machines Corporation | Error vector readout from a memory device |
US10810077B1 (en) * | 2018-06-11 | 2020-10-20 | Ambarella International Lp | Rapid soft-error detection |
US11507454B2 (en) * | 2020-10-26 | 2022-11-22 | Oracle International Corporation | Identifying non-correctable errors using error pattern analysis |
US20230333762A1 (en) * | 2022-04-15 | 2023-10-19 | Micron Technology, Inc. | Reuse of bad blocks for tasks in a memory sub-system |
Also Published As
Publication number | Publication date |
---|---|
DE102016107718A1 (en) | 2016-11-10 |
US9734008B2 (en) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9734008B2 (en) | Error vector readout from a memory device | |
US9733870B2 (en) | Error vector readout from a memory device | |
US10628248B2 (en) | Autonomous dram scrub and error counting | |
US9985656B2 (en) | Generating ECC values for byte-write capable registers | |
US10027349B2 (en) | Extended error correction coding data storage | |
US9916254B2 (en) | Error detection using a logical address key | |
US8949694B2 (en) | Address error detection | |
US20170063401A1 (en) | Partial ecc mechanism for a byte-write capable register | |
US20170060678A1 (en) | Partial ecc handling for a byte-write capable register | |
US9639418B2 (en) | Parity protection of a register | |
US10007456B1 (en) | Efficient scrubbing of mirrored memory | |
CN110795269B (en) | Data recovery verification method, device and equipment | |
US20150143201A1 (en) | Error-correcting code distribution for memory systems | |
JP5937244B2 (en) | Method and apparatus for processing an erasure counter | |
KR20100031402A (en) | Method and apparatus for detecting free page and error correction code decoding method and apparatus using the same | |
US10025652B2 (en) | Error location pointers for non volatile memory | |
US9299456B2 (en) | Matrix and compression-based error detection | |
CN115987304A (en) | Error correction method, device and storage medium for data shielding | |
US11095313B2 (en) | Employing single error correction and triple error detection to optimize bandwidth and resilience under multiple bit failures | |
CN109710445B (en) | Memory correction method and electronic equipment | |
US10140186B2 (en) | Memory error recovery | |
US10613951B2 (en) | Memory mirror invocation upon detecting a correctable error | |
US10833707B2 (en) | Error trapping in memory structures | |
US9524202B2 (en) | Communication software stack optimization using distributed error checking | |
JP2010140132A (en) | Memory system and memory controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HEALY, MICHAEL B.;HUNTER, HILLERY C.;KILMER, CHARLES A.;AND OTHERS;SIGNING DATES FROM 20150504 TO 20150506;REEL/FRAME:035740/0176 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210815 |