US20020029316A1 - Reconfigurable memory with selectable error correction storage - Google Patents

Reconfigurable memory with selectable error correction storage Download PDF

Info

Publication number
US20020029316A1
US20020029316A1 US09/932,242 US93224201A US2002029316A1 US 20020029316 A1 US20020029316 A1 US 20020029316A1 US 93224201 A US93224201 A US 93224201A US 2002029316 A1 US2002029316 A1 US 2002029316A1
Authority
US
United States
Prior art keywords
memory
data
error correction
coupled
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US09/932,242
Other versions
US6397290B1 (en
Inventor
Brett Williams
Donald Baldwin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Round Rock Research LLC
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US09/932,242 priority Critical patent/US6397290B1/en
Publication of US20020029316A1 publication Critical patent/US20020029316A1/en
Application granted granted Critical
Publication of US6397290B1 publication Critical patent/US6397290B1/en
Assigned to ROUND ROCK RESEARCH, LLC reassignment ROUND ROCK RESEARCH, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON TECHNOLOGY, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

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

Definitions

  • the present invention relates to memory structures for computers, and more particularly, to error correction in computer memories.
  • error correction codes typically include a mathematical algorithm that is applied to the data to be checked and corrected, and additional error correction code (“ECC”) bits.
  • ECC error correction code
  • the ECC bits are stored in a separate memory dedicated to the ECC bits.
  • the amount of memory dedicated to storing the ECC bits can be significant. For example, the memory overhead for the ECC bits can often exceed 10%.
  • ECC bits required can depend upon the type of error correction code being utilized. In some applications, very little or no error correction is desired. For example, in video games, occasional image data errors are unlikely to significantly affect the images perceived by a user. Rather than devote processor power to error correction calculations and memory to ECC bits, such applications largely ignore image data errors to increase the speed of play. Such applications will be referred to herein as error tolerant applications. Error tolerant applications typically use no error correction calculations or limited error correction algorithms that require little or no ECC memory.
  • Error intolerant applications can tolerate little or no data errors. For example, data errors can be extremely undesirable in accounting programs. Such applications will be referred to herein as error intolerant applications. Error intolerant applications usually utilize robust error correction algorithms requiring a substantial amount of ECC memory.
  • memory devices for storing ECC bits are segregated from memory devices for conventional data.
  • DIMM double in-line memory module
  • DRAMs dynamic random access memories
  • the same data storage capacity plus the capacity to store ECC bits would require a 4-MB ⁇ 72 DIMM implemented using 18 4-MB ⁇ 4 DRAMs.
  • implementing ECC requires two additional DRAMs.
  • error intolerant applications require more memory and are often limited by the amount of available ECC memory. Consequently, the speed with which the application runs can be increased by increasing the amount of available ECC memory. Adding such memory can be costly. Moreover, adding such memory capacity increases the amount of unused memory in error tolerant applications.
  • a software or hardware controlled reconfigurable memory system includes an auxiliary section of one or more data banks that can be selectively utilized as conventional memory or ECC memory, depending upon the particular application.
  • the auxiliary section is part of a memory module that includes a primary section directly coupled to an output data bus for conventional memory uses.
  • a primary multiplexer selectively couples the auxiliary section to either the output data bus or to an error checking circuit, depending upon the selected configuration of the system. If the system runs an error intolerant application employing a robust error correction algorithm, the auxiliary section is coupled to the error correction circuit to store ECC data for ECC calculations. In error tolerant applications not requiring error correction, the auxiliary section is coupled to the output data bus to supplement the conventional memory, thereby providing increased memory capacity and improving speed of the system.
  • One embodiment of the invention also includes a dedicated ECC memory, which could be located on the motherboard.
  • a secondary multiplexer receives data from the dedicated ECC memory at one input and data from the primary multiplexer at a second input.
  • the primary and secondary multiplexers are controlled by software or hardware to establish the amount of ECC memory being used.
  • the primary multiplexer is activated to couple data from the auxiliary section to one input of the secondary multiplexer.
  • the secondary multiplexer is then activated to couple data from both the primary multiplexer and the dedicated ECC memory to the error correction circuit.
  • the auxiliary section is used to supplement the dedicated ECC memory in error intolerant applications where additional ECC memory is desirable.
  • the second input of the secondary multiplexer is coupled to a set of memory sockets on the motherboard.
  • the secondary multiplexer selectively couples only those sockets containing memory chips to the error correction circuit.
  • the primary and secondary multiplexers are controlled to select an appropriate portion of the auxiliary section to supplement the dedicated ECC memory, according to the ECC data requirements of an application and the amount of available dedicated ECC memory.
  • the auxiliary section is segmented into two sections.
  • the first section is used to supplement the dedicated ECC memory from the motherboard.
  • the second section is used as a supplement to the conventional memory.
  • the second section is “double-written” and “double-read” so that data is written to and read from the second section in two or more pieces. When reading the data, the two or more pieces are combined to form the complete written data.
  • FIG. 1 is a block diagram of a memory system according to an embodiment of the invention on which a memory device is selectively coupled to either an output data bus or to an error correction circuit by a primary multiplexer.
  • FIG. 2 is a more detailed block diagram of the memory system of FIG. 1 coupled to a memory controller.
  • FIG. 3 is a block diagram of another embodiment of the memory system of FIG. 1.
  • FIG. 4 is a block diagram of still another embodiment of the memory system of FIG. 1.
  • FIG. 5 is a block diagram of a computer system according to one embodiment of the invention including input and output devices, a processor, and the memory system of FIG. 1.
  • a memory system 40 includes as its central storage element a memory array 42 having at least one low-order bank 44 and at least one high-order bank 46 .
  • the memory array 42 is formed from one or more integrated memory devices.
  • the devices may be any suitable type of memory device, such as dynamic random access memories (DRAMs), static RAMs (SRAMs), or non-volatile memory devices.
  • DRAMs dynamic random access memories
  • SRAMs static RAMs
  • non-volatile memory devices non-volatile memory devices.
  • the memory devices may also be synchronous or asynchronous, or some other variety of memory device.
  • Data that are to be written to and read from the memory array 42 are coupled to and from the array 42 along a 64-bit primary data path 48 and a 64-bit auxiliary data path 50 , respectively.
  • the primary data path 48 extends directly from the low order banks 44 to a data bus 52 .
  • FIG. 1 uses 64-bit buses 48 , 50 , it will be better understood that higher or lower capacity buses may be used.
  • the auxiliary data path 50 is coupled to a primary multiplexer 54 , which is a 64-bit, 1-to-2 multiplexer.
  • the primary multiplexer 54 selectively couples data from the high order banks 46 to either the data bus 52 or to an error correction circuit 56 .
  • the high order banks 46 can therefore provide storage for ECC bits or can provide storage to supplement the primary section 44 .
  • FIG. 2 shows the memory system 40 of FIG. 1 in greater detail in conjunction with a separate error correction memory (ECC memory) 58 .
  • the memory array 42 includes eight memory banks 60 0 - 60 7 where the first seven banks 60 0 - 60 6 correspond to the low order banks of FIG. 1 and the eighth memory bank 60 7 corresponds to the high order bank 46 of FIG. 1.
  • the output of the eighth bank 60 7 is input to the primary multiplexer 54 through the auxiliary data path 50 while the outputs of the first seven banks 60 0 - 60 6 are connected directly to the data bus 52 .
  • Switching of the primary multiplexer 54 is controlled by a memory controller 63 through a mode signal MODE, in response to either software or hardware commands.
  • the primary multiplexer 54 couples data from the eighth data bank 60 7 to either the data bus 52 or to a secondary multiplexer 64 . If the mode signal MODE is high, the primary multiplexer 54 directs data to the data bus 52 . If the mode signal MODE is low, the primary multiplexer 54 directs data to the secondary multiplexer 64 .
  • the secondary multiplexer 64 includes eight, 8-bit 2-to-1 multiplexers, rather than eight, 8-bit 1-to-2 multiplexers.
  • the 64 outputs of the primary multiplexer 54 are coupled to a first set of 64 inputs of the secondary multiplexer 64 .
  • the second set of 64 inputs of the secondary multiplexer 64 is coupled to the ECC memory 58 .
  • the secondary multiplexer 64 couples one of eight 8-bit bytes of ECC data to the error correction circuit 56 as determined by a SELECT input from the memory controller.
  • the first two 8-bit bytes of ECC data are supplied by respective ECC chips 68 in the ECC memory 58 .
  • the remaining six 8-bit bytes are supplied by the high order banks 46 through the primary multiplexer 54 .
  • the error correction circuit 56 operates on the 8 bits of ECC data ECC 0 -ECC 7 to identify and correct errors according to conventional error correction techniques, such as Hamming code or similar correction algorithms.
  • the error correction circuit 56 may be implemented as dedicated hardware or as a software program in a processor 210 (FIG. 5).
  • the memory system 40 can operate in either an error tolerant mode or an error intolerant mode.
  • the primary multiplexer 54 couples the high order bank 60 7 to the data bus 52 so that all 8 banks 60 0 - 60 7 are used for storing data.
  • the primary multiplexer 54 couples the high order bank 60 7 to the secondary multiplexer 64 , the secondary multiplexer 64 then couples the high order bank 60 7 to the error correction circuit 56 .
  • the secondary multiplexer 64 can couple the ECC memory 68 to the error correction circuit 56 . In either case, when data are written to the low order banks 60 0 - 60 6 , 8 ECC check bits are applied to the error correction circuit 56 .
  • the error correction circuit 56 then couples 64 bits to the high order banks 60 7 through the secondary multiplexer 64 and the primary multiplexer 54 .
  • FIG. 3 shows the system of FIG. 2 where the error correction implementation is less robust, i.e., ECC data is supplied only by the ECC memory 58 on the mother board. Consequently, the two ECC chips 68 in the ECC memory 58 provide the ECC data for banks 60 0 and 60 1 only.
  • the secondary multiplexer 64 thus outputs only the ECC data for the banks 60 0 and 60 1 to the error correction circuit 56 . More memory chips would need to be added to ECC memory 58 in order to support more databanks 60 2 - 60 6 .
  • FIG. 4 shows another embodiment of the invention in which the ECC memory 58 includes four ECC chips 68 and which uses an error correction algorithm involving 8-bits of ECC data ECC 0 -ECC 7 .
  • the four ECC chips 68 supply the ECC data for banks 60 0 - 60 3 . Therefore, only half of the high order bank 60 7 is used for error correction of banks 60 4 - 60 7 , leaving half of the high order bank 60 7 free for conventional memory use. Instead of leaving half of the high order bank 60 7 unused, the high order bank 60 7 is broken into two subsections 46 A, 46 B where the first subsection 46 A contains ECC data and the second subsection 46 B is used as conventional memory to supplement the low order banks 60 0 - 60 6 .
  • the first subsection 46 A provides the second four 8-bit bytes of error correction data used for memory bank 60 0 - 60 3 to the secondary multiplexer 64 through the primary multiplexer 54 in a similar fashion to that described above for FIG. 2.
  • the secondary multiplexer 64 selects either the onboard ECC data for banks 60 4 - 60 7 or the auxiliary ECC data for banks 60 0 - 60 3 .
  • the second subsection 46 B of the high order bank 60 7 is not wasted. Instead, the second subsection 46 B provides data to the data bus 52 through the primary multiplexer 54 .
  • the second subsection 46 B will only be comprised of a memory bank that is half the depth of the banks 60 0 - 60 6 . Since the high order bank 60 7 cannot both supply data and ECC bits simultaneously, the on board ECC memory 58 must supply the ECC data for the second subsection of the high order bank 60 7 .
  • FIG. 5 is a block diagram of a computer system 200 that uses one of the embodiments of FIG. 2- 4 .
  • the computer system 200 includes a processor 210 for performing computer functions, such as executing software to perform desired calculations and tasks.
  • the processor 210 accesses the memory module 40 and ECC memory 58 through the data bus 52 by activating the memory controller 63 which, in turn, controls the multiplexers 54 , 64 .
  • the memory module 40 and the ECC memory 58 are preferably mounted at separate locations within the computer system 200 with the ECC memory 58 being mounted to a common board with the processor 210 .
  • the memory module 40 and ECC memory 58 are coupled to the processor 210 through the data bus 52 .
  • the processor 210 is also coupled to the error correction circuit 56 to receive error detection and correction information that the processor 210 uses to control the memory controller 63 .
  • One or more input devices 214 such as a keypad or a mouse, are coupled to the processor 210 through an I/O controller 216 and allow an operator (not shown) to manually input data thereto.
  • One or more output devices 218 are coupled to the processor 210 through the I/O controller to provide to the operator data generated by the processor 210 or retrieved from the memory module 40 . Examples of output devices 218 include a printer and a video display unit.
  • One or more mass data storage devices 220 are preferably coupled to the processor 210 through the I/O controller 216 to store data in or retrieve data from the storage device 220 . Examples of the storage devices 220 include disk drives and compact disk read-only memories (CD-ROMs).
  • the number of ECC chips 68 in the ECC memory 58 may be larger or smaller.
  • the secondary multiplexer 64 can be configured to vary the multiplexing of the ECC data in response to the enable signal ECC ENABLE, so that the combination of bits from the ECC memory 58 and auxiliary section 46 can be controlled remotely by the memory controller 63 .
  • the high order bank 46 may include more than one bank of the memory array 42 .
  • the memory array 42 may include fewer or more than eight banks.
  • the ECC memory 58 can be located off the motherboard in some applications.
  • error correction circuit 56 and/or the memory controller 63 can be implemented in whole or in part by the processor 210 in response to software.
  • the number of bits in each bank or on the data busses may be fewer than or more than the 64-bit bus structure described herein. Accordingly, the invention is not limited except as by the appended claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

A memory structure includes a memory module divided into low order banks and high order banks. The low order banks are used as conventional memory. The high order banks are used as either conventional memory or ECC memory, depending upon routing of data. In one embodiment, data from the high order banks are routed through a primary multiplexer to a data bus when the high order banks are used as conventional memory. When the high order banks are used as ECC memory, data from the auxiliary section is routed through the primary multiplexer to an error correction circuit. A secondary multiplexer combines ECC bits from the auxiliary section of the module or a dedicated ECC memory on a motherboard. The auxiliary section thus supplements the onboard ECC memory to provide support for an effectively larger ECC memory for use with error intolerant applications that require error correction.

Description

    TECHNICAL FIELD
  • The present invention relates to memory structures for computers, and more particularly, to error correction in computer memories. [0001]
  • BACKGROUND OF THE INVENTION
  • Semiconductor memory systems are subject to errors. That is, data retrieved from the memory does not always match data that was originally written to the memory. Such errors can be caused by stray alpha particles, damage to the memory devices or by a variety of operating conditions, such as power supply fluctuations, noise, etc. Regardless of the source, such errors are clearly undesirable. Consequently, most modem memory systems include error detection and/or error correction capabilities. [0002]
  • Typical approaches to detecting and correcting errors in memory rely upon some form of error correction code to identify and correct such data errors. Such error correction codes typically include a mathematical algorithm that is applied to the data to be checked and corrected, and additional error correction code (“ECC”) bits. Usually, the ECC bits are stored in a separate memory dedicated to the ECC bits. The amount of memory dedicated to storing the ECC bits can be significant. For example, the memory overhead for the ECC bits can often exceed 10%. [0003]
  • The amount of ECC bits required can depend upon the type of error correction code being utilized. In some applications, very little or no error correction is desired. For example, in video games, occasional image data errors are unlikely to significantly affect the images perceived by a user. Rather than devote processor power to error correction calculations and memory to ECC bits, such applications largely ignore image data errors to increase the speed of play. Such applications will be referred to herein as error tolerant applications. Error tolerant applications typically use no error correction calculations or limited error correction algorithms that require little or no ECC memory. [0004]
  • Other applications can tolerate little or no data errors. For example, data errors can be extremely undesirable in accounting programs. Such applications will be referred to herein as error intolerant applications. Error intolerant applications usually utilize robust error correction algorithms requiring a substantial amount of ECC memory. [0005]
  • Typically, memory devices for storing ECC bits are segregated from memory devices for conventional data. For example, 144 pin 4-MB×64 double in-line memory module (“DIMM”) not used to store ECC bits could be implemented using 16 4-MB×4 dynamic random access memories (“DRAMs”). However, the same data storage capacity plus the capacity to store ECC bits would require a 4-MB×72 DIMM implemented using 18 4-MB×4 DRAMs. Thus, implementing ECC requires two additional DRAMs. [0006]
  • One problem with such memory architectures is that they do not fully utilize the available memory capacity. For example, error tolerant applications do not need nor use the extra memory provided to store ECC bits. Thus, valuable memory capacity is left unused. In the above example, 11% of the DRAMs on the DIMM are wasted when the DIMM is not used to store ECC bits. [0007]
  • On the other hand, error intolerant applications require more memory and are often limited by the amount of available ECC memory. Consequently, the speed with which the application runs can be increased by increasing the amount of available ECC memory. Adding such memory can be costly. Moreover, adding such memory capacity increases the amount of unused memory in error tolerant applications. [0008]
  • SUMMARY OF THE INVENTION
  • A software or hardware controlled reconfigurable memory system includes an auxiliary section of one or more data banks that can be selectively utilized as conventional memory or ECC memory, depending upon the particular application. In one embodiment, the auxiliary section is part of a memory module that includes a primary section directly coupled to an output data bus for conventional memory uses. A primary multiplexer selectively couples the auxiliary section to either the output data bus or to an error checking circuit, depending upon the selected configuration of the system. If the system runs an error intolerant application employing a robust error correction algorithm, the auxiliary section is coupled to the error correction circuit to store ECC data for ECC calculations. In error tolerant applications not requiring error correction, the auxiliary section is coupled to the output data bus to supplement the conventional memory, thereby providing increased memory capacity and improving speed of the system. [0009]
  • One embodiment of the invention also includes a dedicated ECC memory, which could be located on the motherboard. A secondary multiplexer receives data from the dedicated ECC memory at one input and data from the primary multiplexer at a second input. The primary and secondary multiplexers are controlled by software or hardware to establish the amount of ECC memory being used. For error intolerant applications, the primary multiplexer is activated to couple data from the auxiliary section to one input of the secondary multiplexer. The secondary multiplexer is then activated to couple data from both the primary multiplexer and the dedicated ECC memory to the error correction circuit. Thus, the auxiliary section is used to supplement the dedicated ECC memory in error intolerant applications where additional ECC memory is desirable. [0010]
  • In one embodiment, the second input of the secondary multiplexer is coupled to a set of memory sockets on the motherboard. The secondary multiplexer selectively couples only those sockets containing memory chips to the error correction circuit. Also, the primary and secondary multiplexers are controlled to select an appropriate portion of the auxiliary section to supplement the dedicated ECC memory, according to the ECC data requirements of an application and the amount of available dedicated ECC memory. [0011]
  • In one embodiment, the auxiliary section is segmented into two sections. The first section is used to supplement the dedicated ECC memory from the motherboard. The second section is used as a supplement to the conventional memory. To accommodate the difference in word length caused by segmenting of the auxiliary section, the second section is “double-written” and “double-read” so that data is written to and read from the second section in two or more pieces. When reading the data, the two or more pieces are combined to form the complete written data.[0012]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a memory system according to an embodiment of the invention on which a memory device is selectively coupled to either an output data bus or to an error correction circuit by a primary multiplexer. [0013]
  • FIG. 2 is a more detailed block diagram of the memory system of FIG. 1 coupled to a memory controller. [0014]
  • FIG. 3 is a block diagram of another embodiment of the memory system of FIG. 1. [0015]
  • FIG. 4 is a block diagram of still another embodiment of the memory system of FIG. 1. [0016]
  • FIG. 5 is a block diagram of a computer system according to one embodiment of the invention including input and output devices, a processor, and the memory system of FIG. 1. [0017]
  • DETAILED DESCRIPTION OF THE INVENTION
  • As shown in FIG. 1, a [0018] memory system 40 according to an embodiment of the invention includes as its central storage element a memory array 42 having at least one low-order bank 44 and at least one high-order bank 46. The memory array 42 is formed from one or more integrated memory devices. The devices may be any suitable type of memory device, such as dynamic random access memories (DRAMs), static RAMs (SRAMs), or non-volatile memory devices. The memory devices may also be synchronous or asynchronous, or some other variety of memory device.
  • Data that are to be written to and read from the [0019] memory array 42 are coupled to and from the array 42 along a 64-bit primary data path 48 and a 64-bit auxiliary data path 50, respectively. The primary data path 48 extends directly from the low order banks 44 to a data bus 52. Although the embodiment of FIG. 1 uses 64- bit buses 48, 50, it will be better understood that higher or lower capacity buses may be used.
  • The [0020] auxiliary data path 50 is coupled to a primary multiplexer 54, which is a 64-bit, 1-to-2 multiplexer. In response to a mode select input MODE, the primary multiplexer 54 selectively couples data from the high order banks 46 to either the data bus 52 or to an error correction circuit 56. The high order banks 46 can therefore provide storage for ECC bits or can provide storage to supplement the primary section 44.
  • FIG. 2 shows the [0021] memory system 40 of FIG. 1 in greater detail in conjunction with a separate error correction memory (ECC memory) 58. In this embodiment, the memory array 42 includes eight memory banks 60 0-60 7 where the first seven banks 60 0-60 6 correspond to the low order banks of FIG. 1 and the eighth memory bank 60 7 corresponds to the high order bank 46 of FIG. 1. The output of the eighth bank 60 7 is input to the primary multiplexer 54 through the auxiliary data path 50 while the outputs of the first seven banks 60 0-60 6 are connected directly to the data bus 52.
  • Switching of the [0022] primary multiplexer 54 is controlled by a memory controller 63 through a mode signal MODE, in response to either software or hardware commands. Depending upon the state of the mode signal MODE, the primary multiplexer 54 couples data from the eighth data bank 60 7 to either the data bus 52 or to a secondary multiplexer 64. If the mode signal MODE is high, the primary multiplexer 54 directs data to the data bus 52. If the mode signal MODE is low, the primary multiplexer 54 directs data to the secondary multiplexer 64.
  • Like the [0023] primary multiplexer 54, the secondary multiplexer 64 includes eight, 8-bit 2-to-1 multiplexers, rather than eight, 8-bit 1-to-2 multiplexers. Thus, the 64 outputs of the primary multiplexer 54 are coupled to a first set of 64 inputs of the secondary multiplexer 64. The second set of 64 inputs of the secondary multiplexer 64 is coupled to the ECC memory 58. When enabled by the mode signal MODE and by an error correction enable signal ECCENABLE, the secondary multiplexer 64 couples one of eight 8-bit bytes of ECC data to the error correction circuit 56 as determined by a SELECT input from the memory controller. The first two 8-bit bytes of ECC data are supplied by respective ECC chips 68 in the ECC memory 58. The remaining six 8-bit bytes are supplied by the high order banks 46 through the primary multiplexer 54.
  • The [0024] error correction circuit 56 operates on the 8 bits of ECC data ECC0-ECC7 to identify and correct errors according to conventional error correction techniques, such as Hamming code or similar correction algorithms. The error correction circuit 56 may be implemented as dedicated hardware or as a software program in a processor 210 (FIG. 5).
  • In operation, the [0025] memory system 40 can operate in either an error tolerant mode or an error intolerant mode. In the error tolerant mode, the primary multiplexer 54 couples the high order bank 60 7 to the data bus 52 so that all 8 banks 60 0-60 7 are used for storing data. In the error intolerant mode, the primary multiplexer 54 couples the high order bank 60 7 to the secondary multiplexer 64, the secondary multiplexer 64 then couples the high order bank 60 7 to the error correction circuit 56. Alternatively, the secondary multiplexer 64 can couple the ECC memory 68 to the error correction circuit 56. In either case, when data are written to the low order banks 60 0-60 6, 8 ECC check bits are applied to the error correction circuit 56. The error correction circuit 56 then couples 64 bits to the high order banks 60 7 through the secondary multiplexer 64 and the primary multiplexer 54.
  • During a read operation, data are coupled from the low order banks [0026] 60 0-60 6 to the data bus 52, and corresponding ECC data are coupled from the high order bank 60 7 through the multiplexer 54, 64 to the error correction circuit 56. The error correction circuit 56 then checks the 8 ECC bits in a conventional manner to detect and correct errors in the data coupled to the data bus 52.
  • FIG. 3 shows the system of FIG. 2 where the error correction implementation is less robust, i.e., ECC data is supplied only by the [0027] ECC memory 58 on the mother board. Consequently, the two ECC chips 68 in the ECC memory 58 provide the ECC data for banks 60 0 and 60 1 only. The secondary multiplexer 64 thus outputs only the ECC data for the banks 60 0 and 60 1 to the error correction circuit 56. More memory chips would need to be added to ECC memory 58 in order to support more databanks 60 2-60 6.
  • FIG. 4 shows another embodiment of the invention in which the [0028] ECC memory 58 includes four ECC chips 68 and which uses an error correction algorithm involving 8-bits of ECC data ECC0-ECC7. The four ECC chips 68 supply the ECC data for banks 60 0-60 3. Therefore, only half of the high order bank 60 7 is used for error correction of banks 60 4-60 7, leaving half of the high order bank 60 7 free for conventional memory use. Instead of leaving half of the high order bank 60 7 unused, the high order bank 60 7 is broken into two subsections 46A, 46B where the first subsection 46A contains ECC data and the second subsection 46B is used as conventional memory to supplement the low order banks 60 0-60 6. The first subsection 46A provides the second four 8-bit bytes of error correction data used for memory bank 60 0-60 3 to the secondary multiplexer 64 through the primary multiplexer 54 in a similar fashion to that described above for FIG. 2. The secondary multiplexer 64 selects either the onboard ECC data for banks 60 4-60 7 or the auxiliary ECC data for banks 60 0-60 3.
  • The [0029] second subsection 46B of the high order bank 60 7 is not wasted. Instead, the second subsection 46B provides data to the data bus 52 through the primary multiplexer 54. One skilled in the art will recognize that the second subsection 46B will only be comprised of a memory bank that is half the depth of the banks 60 0-60 6. Since the high order bank 60 7 cannot both supply data and ECC bits simultaneously, the on board ECC memory 58 must supply the ECC data for the second subsection of the high order bank 60 7.
  • FIG. 5 is a block diagram of a [0030] computer system 200 that uses one of the embodiments of FIG. 2-4. The computer system 200 includes a processor 210 for performing computer functions, such as executing software to perform desired calculations and tasks. The processor 210 accesses the memory module 40 and ECC memory 58 through the data bus 52 by activating the memory controller 63 which, in turn, controls the multiplexers 54, 64. The memory module 40 and the ECC memory 58 are preferably mounted at separate locations within the computer system 200 with the ECC memory 58 being mounted to a common board with the processor 210. The memory module 40 and ECC memory 58 are coupled to the processor 210 through the data bus 52. The processor 210 is also coupled to the error correction circuit 56 to receive error detection and correction information that the processor 210 uses to control the memory controller 63. One or more input devices 214, such as a keypad or a mouse, are coupled to the processor 210 through an I/O controller 216 and allow an operator (not shown) to manually input data thereto. One or more output devices 218 are coupled to the processor 210 through the I/O controller to provide to the operator data generated by the processor 210 or retrieved from the memory module 40. Examples of output devices 218 include a printer and a video display unit. One or more mass data storage devices 220 are preferably coupled to the processor 210 through the I/O controller 216 to store data in or retrieve data from the storage device 220. Examples of the storage devices 220 include disk drives and compact disk read-only memories (CD-ROMs).
  • While the present invention has been described herein by way of exemplary embodiments, various modifications may be made without departing from the scope of the invention. For example, the number of [0031] ECC chips 68 in the ECC memory 58 may be larger or smaller. Also, the secondary multiplexer 64 can be configured to vary the multiplexing of the ECC data in response to the enable signal ECC ENABLE, so that the combination of bits from the ECC memory 58 and auxiliary section 46 can be controlled remotely by the memory controller 63. Additionally, the high order bank 46 may include more than one bank of the memory array 42. Further, the memory array 42 may include fewer or more than eight banks. And, the ECC memory 58 can be located off the motherboard in some applications. Moreover, the error correction circuit 56 and/or the memory controller 63 can be implemented in whole or in part by the processor 210 in response to software. Also, the number of bits in each bank or on the data busses may be fewer than or more than the 64-bit bus structure described herein. Accordingly, the invention is not limited except as by the appended claims.

Claims (40)

1. A memory control circuit for a computer system, comprising:
a memory system having a plurality of memory locations corresponding to respective addresses;
an error correction circuit;
a data bus coupled to a first set of memory locations of the memory system; and
a coupling device coupling a second set of memory locations of the memory system to the error correction circuit.
2. The memory control circuit of claim 1 wherein the coupling device comprises a first switching circuit having a first data port coupled to the second set of memory locations of the memory system, a second data port coupled to the data bus, a third data port coupled to the error correction circuit, and a mode select input, the switching circuit being operable responsive to a first mode select signal to couple the first data port to the second data port, and being operable responsive to a second mode select signal to couple the first data port to the third data port.
3. The memory control circuit of claim 2 further comprising an error correction memory, and wherein the coupling circuit further comprises a second switching circuit having a first data port coupled to the third data port of the first switching circuit, a second data port coupled to the error correction memory, a third data port coupled to the error correction circuit, and a control input, the second switching circuit being operable responsive to a first control signal to couple the first data port to the third data port, and being operable responsive to a second control signal to couple the second data port to the third data port.
4. The memory control circuit of claim 3 wherein the data ports of the first switching circuit comprise a first plurality of sets of data lines, and the second data port of the second switching circuit comprises a second plurality of sets of data lines, the second switching circuit being operable responsive to the first control signal to couple one of the sets in the first plurality of sets of data lines to the error correction circuit, and being operable responsive to the second control signal to couple one of the sets in the second plurality of sets of data lines to the error correction circuit.
5. The memory control circuit of claim 2 further comprising an error correction memory, and wherein the switching circuit comprises:
a first multiplexer having a first data port coupled to the second set of locations of the memory system, a second data port coupled to the data bus, a third data port, and a control input, the first multiplexer being operable responsive to a first control signal applied to the control input to couple the first data port to the second data port, and being operable responsive to a second control signal to couple the first data port to the third data port; and
a second multiplexer having a first data port coupled to the third data port of the first multiplexer, a second data port coupled to the error correction memory, a third data port coupled to the error correction circuit, and a control input, the second multiplexer being operable responsive to a third control signal applied to the control input to couple the first data port to the third data port, and being operable responsive to a fourth control signal to couple the second data port to the third data port.
6. The memory control circuit of claim 1 wherein the memory system comprises a memory device having a plurality of banks.
7. The memory control circuit of claim 6 wherein the first set of memory locations of the memory system comprise a first set of banks of the memory device, and the second set of memory locations of the memory system comprise a second set of banks of the memory device.
8. The memory control circuit of claim 7 wherein the second set of banks comprises a single bank.
9. The memory control circuit of claim 7 wherein the second set of banks comprise a first set of memory locations coupled to the data bus, and a second set of memory locations coupled to the error correction circuit.
10. The memory control circuit of claim 1 wherein the memory system comprises:
a first memory device having a plurality of banks, a first set of banks of the first memory device being coupled to the data bus; and
a set of second memory devices.
11. The memory control circuit of claim 10 wherein the coupling device comprises a switching circuit having a plurality of first data ports coupled to respective second memory devices in the set of second memory devices, a second data port coupled to the error correction circuit, and a control input, the switching circuit being operable responsive to a control signal applied to the control input to couple one of the first data ports to the second data port responsive to a corresponding control signal.
12. An memory system operable in either normal mode or an error correcting mode, comprising:
a memory device having a plurality of banks;
a data bus coupled to a first set of banks of the memory device;
an error correction circuit;
a first switching circuit having a first port coupled to at least one bank of the memory device, a second port coupled to the data bus, a third port coupled to the error correction circuit, and a mode input coupled to receive a mode signal having a first state indicative of the normal mode and a second state indicative of the error correcting mode, the first switching circuit being structured to couple the first port to the second port responsive to a mode signal having the first state and to couple the first port to the third port responsive to a mode signal having the second state.
13. The memory system of claim 12 wherein the bank of the memory device to which the first port of the first switching circuit is coupled comprises a bank of the memory device other than an bank in the first set.
14. The memory system of claim 12 wherein the bank of the memory device to which the first port of the first switching circuit is coupled comprises one of the banks in the first set of banks of the memory device, a first plurality of memory locations in the bank being coupled to the data bus and a second plurality of memory locations in the bank being coupled to the first port of the first switching circuit.
15. An memory system operable in either normal mode or an error correcting mode, comprising:
a first memory device having a plurality of banks;
a second memory device;
a data bus coupled to a first set of banks of the first memory device;
an error correction circuit;
a first switching circuit having a first port coupled to at least one bank of the first memory device, a second port coupled to the data bus, a third port, and a mode input coupled to receive a mode signal having a first state indicative of the normal mode and a second state indicative of the error correcting mode, the first switching circuit being structured to couple the first port to the second port responsive to a mode signal having the first state and to couple the first port to the third port responsive to a mode signal having the second state; and
a second switching circuit having a first plurality of signal terminal sets coupled to the third port of the first switching circuit, a second plurality of signal terminal sets coupled to the second memory device, a set of signal terminals coupled to the error correction circuit, and a select input coupled to receive a select signal, the second switching circuit being structured to couple the one of the signal terminal sets in the first plurality or one of the signal terminal sets in the second plurality to the error correction circuit responsive to the select signal.
16. The memory system of claim 15 wherein the bank of the memory device to which the first port of the first switching circuit is coupled comprises a bank of the memory device other than an bank in the first set.
17. The memory system of claim 15 wherein the bank of the memory device to which the first port of the first switching circuit is coupled comprises one of the banks in the first set of banks of the memory device, a first plurality of memory locations in the bank being coupled to the data bus and a second plurality of memory locations in the bank being coupled to the first port of the first switching circuit.
18. A computer system, comprising:
a processor;
a data bus;
a peripheral device coupled to the processor;
a memory system having a plurality of memory locations, a first set of the memory locations being coupled to the data bus;
an error correction circuit;
a coupling device coupling a second set of memory locations of the memory system to the error correction circuit.
19. The computer system of claim 18, wherein the memory correction circuit includes a memory correction port, and wherein the processor is coupled to the memory correction port and to the data bus, the processor being structured to couple data to or from the data bus and a corresponding error correction code to or from the memory correction port, respectively.
20. The computer system of claim 18 wherein the coupling device comprises a first switching circuit having a first data port coupled to the second set of memory locations of the memory system, a second data port coupled to the data bus, a third data port coupled to the error correction circuit, and a mode select input, the switching circuit being operable responsive to a first mode select signal to couple the first data port to the second data port, and being operable responsive to a second mode select signal to couple the first data port to the third data port.
21. The computer system of claim 19 further comprising an error correction memory, and wherein the coupling circuit further comprises a second switching circuit having a first data port coupled to the third data port of the first switching circuit, a second data port coupled to the error correction memory, a third data port coupled to the error correction circuit, and a control input, the second switching circuit being operable responsive to a first control signal to couple the first data port to the third data port, and being operable responsive to a second control signal to couple the second data port to the third data port.
22. The computer system of claim 21 wherein the data ports of the first switching circuit comprise a first plurality of sets of data lines, and the second data port of the second switching circuit comprises a second plurality of sets of data lines, the second switching circuit being operable responsive to the first control signal to couple one of the sets in the first plurality of sets of data lines to the error correction circuit, and being operable responsive to the second control signal to couple one of the sets in the second plurality of sets of data lines to the error correction circuit.
23. The computer system of claim 20 further comprising an error correction memory, and wherein the switching circuit comprises:
a first multiplexer having a first data port coupled to the second set of locations of the memory system, a second data port coupled to the data bus, a third data port, and a control input, the first multiplexer being operable responsive to a first control signal applied to the control input to couple the first data port to the second data port, and being operable responsive to a second control signal to couple the first data port to the third data port; and
a second multiplexer having a first data port coupled to the third data port of the first multiplexer, a second data port coupled to the error correction memory, a third data port coupled to the error correction circuit, and a control input, the second multiplexer being operable responsive to a third control signal applied to the control input to couple the first data port to the third data port, and being operable responsive to a fourth control signal to couple the second data port to the third data port.
24. The computer system of claim 18 wherein the memory system comprises a memory device having a plurality of banks.
25. The computer system of claim 24 wherein the first set of memory locations of the memory system comprise a first set of banks of the memory device, and the second set of memory locations of the memory system comprise a second set of banks of the memory device.
26. The computer system of claim 25 wherein the second set of banks comprises a single bank.
27. The computer system of claim 25 wherein the second set of banks comprise a first set of memory locations coupled to the data bus, and a second set of memory locations coupled to the error correction circuit.
28. The computer system of claim 18 wherein the memory system comprises:
a first memory device having a plurality of banks, a first set of banks of the first memory device being coupled to the data bus; and
a set of second memory devices.
29. The computer system of claim 28 wherein the coupling device comprises a switching circuit having a plurality of first data ports coupled to respective second memory devices in the set of second memory devices, a second data port coupled to the error correction circuit, and a control input, the switching circuit being operable responsive to a control signal applied to the control input to couple one of the first data ports to the second data port responsive to a corresponding control signal.
30. A method of storing and retrieving data in a memory system operable in either an error tolerant mode or an error intolerant mode, the method comprising:
coupling a first plurality of locations of the memory system to a data bus so that data applied to the data bus can be written to the first plurality of locations of the memory system and data read from the first plurality of locations of the memory system can be applied to the data bus;
coupling a second plurality of locations of the memory system to the data bus when the memory system is operating in the error tolerant mode; and
coupling the second plurality of locations of the memory system to an error correction circuit when the memory system is operating in the error intolerant mode.
31. The method of claim 30 wherein the first and second plurality of locations of the memory system comprise different banks of a single memory device.
32. The method of claim 30 wherein the first and second plurality of locations of the memory system comprise different memory devices.
33. The method of claim 30, further comprising:
applying data to the data bus when the memory system is operating in the error intolerant mode;
applying a corresponding error correction code to the error correction circuit, the error correction code coupling corresponding error correction bits to the second plurality of locations of the memory system;
writing the data in at least some of the memory locations in the first plurality of locations of the memory system;
writing the error correction bits in at least some of the memory locations in the second plurality of locations of the memory system;
reading data from at least some of the memory locations in the first plurality of locations of the memory system;
reading error correction bits from at least some of the memory locations in the second plurality of locations of the memory system, the read error correction bits corresponding to the data read from the memory locations in the first plurality;
determining from the error correction bits if the read data is in error; and
if the read data is determined to be in error, correcting the read data.
34. A method of storing data in a memory device having first and second memory portions, comprising:
selecting either an error correction mode or a non-error correction mode;
storing data in the first memory portion;
if the error correction mode is selected, storing error correction bits corresponding to the data in the second memory portion; and
if the non-error correction mode is selected, storing information data in the second memory portion.
35. The method of claim 34 further comprising:
retrieving data from the first memory portion;
if the error correction mode is selected, retrieving error correction bits corresponding to the data from the second memory portion; and
if the non error correction mode is selected, retrieving data from the second memory portion.
36. The method of claim 35 further comprising, if the error correction mode is selected:
determining from the error correction bits if the retrieved data is in error; and
if the retrieved data is determined to be in error, correcting the retrieved data using the error correction bits.
37. The method of claim 34 wherein the storing of data in the second memory portion comprises:
storing a first segment of a data byte in a first location having a first address in the second memory portion; and
storing a second segment of the data byte in a second location having a second address in the second memory portion.
38. The method of claim 37, further comprising:
retrieving the stored first segment from the first location at a first time;
retrieving the stored second segment from the second location at a second time different from the first time; and
combining the retrieved first and second segments.
39. A method of retrieving data from a memory device having first and second memory portions, comprising:
selecting either an error correction mode or a non-error correction mode;
retrieving data from the first memory portion;
if the error correction mode is selected, retrieving error correction bits corresponding to the data from the second memory portion; and
if the non-error correction mode is selected, retrieving data from the second memory portion.
40. The method of claim 39 further comprising, if the error correction mode is selected:
determining from the error correction bits if the retrieved data is in error; and
if the retrieved data is determined to be in error, correcting the retrieved data using the error correction bits.
US09/932,242 1999-07-22 2001-08-17 Reconfigurable memory with selectable error correction storage Expired - Lifetime US6397290B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/932,242 US6397290B1 (en) 1999-07-22 2001-08-17 Reconfigurable memory with selectable error correction storage

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/359,926 US6279072B1 (en) 1999-07-22 1999-07-22 Reconfigurable memory with selectable error correction storage
US09/932,242 US6397290B1 (en) 1999-07-22 2001-08-17 Reconfigurable memory with selectable error correction storage

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/359,926 Continuation US6279072B1 (en) 1999-07-22 1999-07-22 Reconfigurable memory with selectable error correction storage

Publications (2)

Publication Number Publication Date
US20020029316A1 true US20020029316A1 (en) 2002-03-07
US6397290B1 US6397290B1 (en) 2002-05-28

Family

ID=23415868

Family Applications (4)

Application Number Title Priority Date Filing Date
US09/359,926 Expired - Lifetime US6279072B1 (en) 1999-07-22 1999-07-22 Reconfigurable memory with selectable error correction storage
US09/927,299 Abandoned US20020029315A1 (en) 1999-07-22 2001-08-10 Reconfigurable memory with selectable error correction storage
US09/932,242 Expired - Lifetime US6397290B1 (en) 1999-07-22 2001-08-17 Reconfigurable memory with selectable error correction storage
US10/295,661 Expired - Lifetime US6584543B2 (en) 1999-07-22 2002-11-14 Reconfigurable memory with selectable error correction storage

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/359,926 Expired - Lifetime US6279072B1 (en) 1999-07-22 1999-07-22 Reconfigurable memory with selectable error correction storage
US09/927,299 Abandoned US20020029315A1 (en) 1999-07-22 2001-08-10 Reconfigurable memory with selectable error correction storage

Family Applications After (1)

Application Number Title Priority Date Filing Date
US10/295,661 Expired - Lifetime US6584543B2 (en) 1999-07-22 2002-11-14 Reconfigurable memory with selectable error correction storage

Country Status (3)

Country Link
US (4) US6279072B1 (en)
AU (1) AU6228500A (en)
WO (1) WO2001008010A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120820A1 (en) * 2001-02-28 2002-08-29 Fujitsu Limited Memory device for controlling nonvolatile and volatile memories
US20050249010A1 (en) * 2004-05-06 2005-11-10 Klein Dean A Memory controller method and system compensating for memory cell data losses
US20050289444A1 (en) * 2004-06-25 2005-12-29 Klein Dean A Low power cost-effective ECC memory system and method
US20060013052A1 (en) * 2004-07-15 2006-01-19 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US20060044913A1 (en) * 2004-08-31 2006-03-02 Klein Dean A Memory system and method using ECC to achieve low power refresh
US20060206769A1 (en) * 2004-06-24 2006-09-14 Klein Dean A Memory system and method having selective ECC during low power refresh
US20080092016A1 (en) * 2006-10-11 2008-04-17 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US20080109705A1 (en) * 2006-10-18 2008-05-08 Pawlowski J Thomas Memory system and method using ECC with flag bit to identify modified data
US20130212448A1 (en) * 2012-02-15 2013-08-15 Sandisk Technologies Inc. System and method of sending correction data to a buffer of a non-volatile memory

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US6848039B1 (en) * 2000-06-30 2005-01-25 Intel Corporation Multiple pass arrangements for maximizing cacheable memory space
JP3595495B2 (en) * 2000-07-27 2004-12-02 Necマイクロシステム株式会社 Semiconductor storage device
US6694490B2 (en) * 2002-07-10 2004-02-17 Hewlett-Packard Development Company, L.P. DIMM and method for producing a DIMM
US6725393B1 (en) * 2000-11-06 2004-04-20 Hewlett-Packard Development Company, L.P. System, machine, and method for maintenance of mirrored datasets through surrogate writes during storage-area network transients
US6700827B2 (en) 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US20030041046A1 (en) * 2001-07-28 2003-02-27 Allison Michael S. Method for extracting, filtering and separating events from system firmware and software
US7117421B1 (en) * 2002-05-31 2006-10-03 Nvidia Corporation Transparent error correction code memory system and method
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
US7200024B2 (en) * 2002-08-02 2007-04-03 Micron Technology, Inc. System and method for optically interconnecting memory devices
US8386797B1 (en) * 2002-08-07 2013-02-26 Nvidia Corporation System and method for transparent disk encryption
US7254331B2 (en) * 2002-08-09 2007-08-07 Micron Technology, Inc. System and method for multiple bit optical data transmission in memory systems
US7836252B2 (en) 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7102907B2 (en) * 2002-09-09 2006-09-05 Micron Technology, Inc. Wavelength division multiplexed memory module, memory system and method
CN100539439C (en) 2002-10-05 2009-09-09 数字方敦股份有限公司 The system coding of chain reaction sign indicating number and decode system and method
FR2854971B1 (en) * 2003-05-14 2005-07-29 Ela Medical Sa ACTIVE MEDICAL DEVICE WITH MEMORY FOR HOLTER DATA STORAGE AND MICROPROCESSOR DRIVING INSTRUCTIONS
US7245145B2 (en) 2003-06-11 2007-07-17 Micron Technology, Inc. Memory module and method having improved signal routing topology
US6906961B2 (en) * 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US6987684B1 (en) 2003-07-15 2006-01-17 Integrated Device Technology, Inc. Content addressable memory (CAM) devices having multi-block error detection logic and entry selective error correction logic therein
US7193876B1 (en) 2003-07-15 2007-03-20 Kee Park Content addressable memory (CAM) arrays having memory cells therein with different susceptibilities to soft errors
US6870749B1 (en) 2003-07-15 2005-03-22 Integrated Device Technology, Inc. Content addressable memory (CAM) devices with dual-function check bit cells that support column redundancy and check bit cells with reduced susceptibility to soft errors
CN101834610B (en) 2003-10-06 2013-01-30 数字方敦股份有限公司 Method and device for receiving data transmitted from source through communication channel
US7120743B2 (en) 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7325157B2 (en) * 2003-11-03 2008-01-29 Samsung Electronics Co., Ltd Magnetic memory devices having selective error encoding capability based on fault probabilities
US7304875B1 (en) 2003-12-17 2007-12-04 Integrated Device Technology. Inc. Content addressable memory (CAM) devices that support background BIST and BISR operations and methods of operating same
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7366864B2 (en) * 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
US7120723B2 (en) 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
US7590797B2 (en) 2004-04-08 2009-09-15 Micron Technology, Inc. System and method for optimizing interconnections of components in a multichip memory module
WO2005112250A2 (en) 2004-05-07 2005-11-24 Digital Fountain, Inc. File download and streaming system
US7222213B2 (en) * 2004-05-17 2007-05-22 Micron Technology, Inc. System and method for communicating the synchronization status of memory modules during initialization of the memory modules
US7392331B2 (en) 2004-08-31 2008-06-24 Micron Technology, Inc. System and method for transmitting data packets in a computer system having a memory hub architecture
KR100585158B1 (en) * 2004-09-13 2006-05-30 삼성전자주식회사 ECC memory module
US7444579B2 (en) 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction
US20070061669A1 (en) * 2005-08-30 2007-03-15 Major Karl L Method, device and system for detecting error correction defects
CN101317159A (en) * 2005-09-27 2008-12-03 Nxp股份有限公司 Error detection / correction circuit as well as corresponding method
US8200187B2 (en) 2005-09-29 2012-06-12 Qualcomm Incorporated Cellular telephone credit management
US8412191B2 (en) * 2005-09-29 2013-04-02 Qualcomm Incorporated Cellular telephone service management
US7676730B2 (en) * 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
KR101292851B1 (en) 2006-02-13 2013-08-02 디지털 파운튼, 인크. Streaming and buffering using variable fec overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7734985B2 (en) * 2006-02-27 2010-06-08 Intel Corporation Systems, methods, and apparatuses for using the same memory type to support an error check mode and a non-error check mode
US7453723B2 (en) 2006-03-01 2008-11-18 Micron Technology, Inc. Memory with weighted multi-page read
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7971129B2 (en) * 2006-05-10 2011-06-28 Digital Fountain, Inc. Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems
US7506226B2 (en) * 2006-05-23 2009-03-17 Micron Technology, Inc. System and method for more efficiently using error correction codes to facilitate memory device testing
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US7369434B2 (en) * 2006-08-14 2008-05-06 Micron Technology, Inc. Flash memory with multi-bit read
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8190982B2 (en) 2006-09-29 2012-05-29 University Of Connecticut Error-tolerant multi-threaded memory systems with reduced error accumulation
US7975205B2 (en) * 2007-01-26 2011-07-05 Hewlett-Packard Development Company, L.P. Error correction algorithm selection based upon memory organization
KR20080080882A (en) * 2007-03-02 2008-09-05 삼성전자주식회사 Multi-layer semiconductor memory device having ecc layer and method for error detection and correction using thereof
US20080256419A1 (en) * 2007-04-13 2008-10-16 Microchip Technology Incorporated Configurable Split Storage of Error Detecting and Correcting Codes
KR100852193B1 (en) * 2007-05-02 2008-08-13 삼성전자주식회사 Error control code apparatus and method using the same
KR101369226B1 (en) * 2007-05-25 2014-03-06 삼성전자주식회사 The device of decoding the space-time block coded signal and the method thereof
US7809899B2 (en) * 2007-05-29 2010-10-05 Lsi Corporation System for integrity protection for standard 2n-bit multiple sized memory devices
TW200849002A (en) * 2007-06-01 2008-12-16 Holtek Semiconductor Inc Control device and control method
US7899983B2 (en) 2007-08-31 2011-03-01 International Business Machines Corporation Buffered memory module supporting double the memory device data width in the same physical space as a conventional memory module
US7818497B2 (en) * 2007-08-31 2010-10-19 International Business Machines Corporation Buffered memory module supporting two independent memory channels
US8086936B2 (en) 2007-08-31 2011-12-27 International Business Machines Corporation Performing error correction at a memory device level that is transparent to a memory channel
US7840748B2 (en) * 2007-08-31 2010-11-23 International Business Machines Corporation Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
US7865674B2 (en) * 2007-08-31 2011-01-04 International Business Machines Corporation System for enhancing the memory bandwidth available through a memory module
US7861014B2 (en) * 2007-08-31 2010-12-28 International Business Machines Corporation System for supporting partial cache line read operations to a memory module to reduce read data traffic on a memory channel
US8082482B2 (en) 2007-08-31 2011-12-20 International Business Machines Corporation System for performing error correction operations in a memory hub device of a memory module
US7584308B2 (en) * 2007-08-31 2009-09-01 International Business Machines Corporation System for supporting partial cache line write operations to a memory module to reduce write data traffic on a memory channel
US8019919B2 (en) 2007-09-05 2011-09-13 International Business Machines Corporation Method for enhancing the memory bandwidth available through a memory module
US7558887B2 (en) * 2007-09-05 2009-07-07 International Business Machines Corporation Method for supporting partial cache line read and write operations to a memory module to reduce read and write data traffic on a memory channel
MX2010002829A (en) 2007-09-12 2010-04-01 Digital Fountain Inc Generating and communicating source identification information to enable reliable communications.
US7930470B2 (en) * 2008-01-24 2011-04-19 International Business Machines Corporation System to enable a memory hub device to manage thermal conditions at a memory device level transparent to a memory controller
US7770077B2 (en) * 2008-01-24 2010-08-03 International Business Machines Corporation Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem
US8140936B2 (en) 2008-01-24 2012-03-20 International Business Machines Corporation System for a combined error correction code and cyclic redundancy check code for a memory channel
US7930469B2 (en) 2008-01-24 2011-04-19 International Business Machines Corporation System to provide memory system power reduction without reducing overall memory system performance
US7925824B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency
US7925826B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to increase the overall bandwidth of a memory channel by allowing the memory channel to operate at a frequency independent from a memory device frequency
US7925825B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to support a full asynchronous interface within a memory hub device
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8949684B1 (en) * 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
KR101537018B1 (en) * 2008-10-01 2015-07-17 삼성전자주식회사 Secure Memory Interface, System and Smart Card Including the same
DE102009041882B4 (en) 2008-10-01 2023-05-04 Samsung Electronics Co., Ltd. Secure memory interface, method for securely accessing a memory element and electronic system
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
JP2010287128A (en) * 2009-06-12 2010-12-24 Toshiba Corp Controller, storage medium and information control method
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US8738995B2 (en) 2009-09-10 2014-05-27 Hewlett-Packard Development Company, L.P. Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US8462532B1 (en) 2010-08-31 2013-06-11 Netlogic Microsystems, Inc. Fast quaternary content addressable memory cell
US8625320B1 (en) 2010-08-31 2014-01-07 Netlogic Microsystems, Inc. Quaternary content addressable memory cell having one transistor pull-down stack
US8582338B1 (en) 2010-08-31 2013-11-12 Netlogic Microsystems, Inc. Ternary content addressable memory cell having single transistor pull-down stack
US8553441B1 (en) 2010-08-31 2013-10-08 Netlogic Microsystems, Inc. Ternary content addressable memory cell having two transistor pull-down stack
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US8837188B1 (en) 2011-06-23 2014-09-16 Netlogic Microsystems, Inc. Content addressable memory row having virtual ground and charge sharing
US8773880B2 (en) 2011-06-23 2014-07-08 Netlogic Microsystems, Inc. Content addressable memory array having virtual ground nodes
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
JP6370528B2 (en) * 2011-09-30 2018-08-08 ラムバス・インコーポレーテッド Sharing check bit memory devices between memory devices
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9189329B1 (en) 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
US9529547B2 (en) 2011-10-21 2016-12-27 Freescale Semiconductor, Inc. Memory device and method for organizing a homogeneous memory
US8959417B2 (en) 2011-11-23 2015-02-17 Marvell World Trade Ltd. Providing low-latency error correcting code capability for memory
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
KR101862379B1 (en) 2013-04-19 2018-07-05 삼성전자주식회사 Memory device with error correction code and redundancy repair operations
US9323609B2 (en) * 2013-11-15 2016-04-26 Intel Corporation Data storage and variable length error correction information
US9262263B2 (en) 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
US9378081B2 (en) 2014-01-02 2016-06-28 Qualcomm Incorporated Bit remapping system
US9454422B2 (en) 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
US20160048424A1 (en) * 2014-08-13 2016-02-18 Shintaro SAKAI Semiconductor memory device
FR3026870B1 (en) * 2014-10-07 2016-11-04 Airbus Operations Sas DEVICE FOR MANAGING DATA STORAGE.
US9595353B2 (en) 2015-02-12 2017-03-14 Sandisk Technologies Llc Resistance-based memory with auxiliary redundancy information
US11048583B1 (en) 2015-09-11 2021-06-29 Green Mountain Semiconductor Inc. Flexible, low-latency error correction architecture for semiconductor memory products
KR20170045803A (en) 2015-10-20 2017-04-28 삼성전자주식회사 Semiconductor memory device and memory system including the same
US10056921B2 (en) * 2016-08-25 2018-08-21 Taiwan Semiconductor Manufacturing Company Ltd. Memory system having flexible ECC scheme and method of the same
CN109189719B (en) * 2018-07-27 2022-04-19 西安微电子技术研究所 Multiplexing structure and method for error storage of content in chip
KR20200034420A (en) * 2018-09-21 2020-03-31 삼성전자주식회사 Memory device and memory system having multiple error correction function and operating method thereof
US11126498B2 (en) 2019-02-19 2021-09-21 Micron Technology, Inc. Memory device with configurable error correction modes
US11481273B2 (en) * 2020-08-17 2022-10-25 Micron Technology, Inc. Partitioned memory having error detection capability

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710934A (en) 1985-11-08 1987-12-01 Texas Instruments Incorporated Random access memory with error correction capability
US5159465A (en) * 1987-10-09 1992-10-27 Ricoh Company, Ltd. Facsimile machine having a transmission speed selective shiftdown function
US4884271A (en) * 1987-12-28 1989-11-28 International Business Machines Corporation Error checking and correcting for read-modified-write operations
US5105423A (en) * 1988-05-17 1992-04-14 Ricoh Company, Ltd. Digital transmission device having an error correction mode and method for shifting down a data transmission rate
US4967197A (en) * 1989-05-17 1990-10-30 Industrial Technology Research Institute, R.O.C. Error correction system for digital to analog converters
JPH04248642A (en) * 1991-01-18 1992-09-04 Kenneth W Iobst Pim chip of memory integrated circuit and control method thereof
JP2503798B2 (en) * 1991-03-20 1996-06-05 富士ゼロックス株式会社 Encrypted facsimile machine
US5579488A (en) * 1991-09-09 1996-11-26 Canon Kabushiki Kaisha Programmable control device
US5410545A (en) * 1992-07-28 1995-04-25 Digital Equipment Corporation Long-term storage of controller performance
US5922080A (en) 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US5818847A (en) * 1996-06-06 1998-10-06 Sun Microsystems, Inc. System and method for providing real time values in digital data processing system
US5917838A (en) 1998-01-05 1999-06-29 General Dynamics Information Systems, Inc. Fault tolerant memory system

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120820A1 (en) * 2001-02-28 2002-08-29 Fujitsu Limited Memory device for controlling nonvolatile and volatile memories
US7266664B2 (en) * 2001-02-28 2007-09-04 Spansion Llc Memory device for controlling nonvolatile and volatile memories
US20060056260A1 (en) * 2004-05-06 2006-03-16 Klein Dean A Memory controller method and system compensating for memory cell data losses
US9064600B2 (en) 2004-05-06 2015-06-23 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US8689077B2 (en) 2004-05-06 2014-04-01 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20060056259A1 (en) * 2004-05-06 2006-03-16 Klein Dean A Memory controller method and system compensating for memory cell data losses
US20090024884A1 (en) * 2004-05-06 2009-01-22 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20060069856A1 (en) * 2004-05-06 2006-03-30 Klein Dean A Memory controller method and system compensating for memory cell data losses
US7836374B2 (en) 2004-05-06 2010-11-16 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20050249010A1 (en) * 2004-05-06 2005-11-10 Klein Dean A Memory controller method and system compensating for memory cell data losses
US20060206769A1 (en) * 2004-06-24 2006-09-14 Klein Dean A Memory system and method having selective ECC during low power refresh
US20050289444A1 (en) * 2004-06-25 2005-12-29 Klein Dean A Low power cost-effective ECC memory system and method
US20060218469A1 (en) * 2004-06-25 2006-09-28 Klein Dean A Low power cost-effective ECC memory system and method
US20060152989A1 (en) * 2004-07-15 2006-07-13 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US8279683B2 (en) 2004-07-15 2012-10-02 Micron Technology, Inc. Digit line comparison circuits
US20060013052A1 (en) * 2004-07-15 2006-01-19 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US20080002503A1 (en) * 2004-07-15 2008-01-03 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US20060158950A1 (en) * 2004-07-15 2006-07-20 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US7898892B2 (en) 2004-07-15 2011-03-01 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US8446783B2 (en) 2004-07-15 2013-05-21 Micron Technology, Inc. Digit line comparison circuits
US20060044913A1 (en) * 2004-08-31 2006-03-02 Klein Dean A Memory system and method using ECC to achieve low power refresh
US7894289B2 (en) 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US8359517B2 (en) 2006-10-11 2013-01-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US20110138251A1 (en) * 2006-10-11 2011-06-09 Pawlowski J Thomas Memory system and method using partial ecc to achieve low power refresh and fast access to data
US20080092016A1 (en) * 2006-10-11 2008-04-17 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US8832522B2 (en) 2006-10-11 2014-09-09 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US9286161B2 (en) 2006-10-11 2016-03-15 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US8413007B2 (en) 2006-10-18 2013-04-02 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US8880974B2 (en) 2006-10-18 2014-11-04 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US20080109705A1 (en) * 2006-10-18 2008-05-08 Pawlowski J Thomas Memory system and method using ECC with flag bit to identify modified data
US20130212448A1 (en) * 2012-02-15 2013-08-15 Sandisk Technologies Inc. System and method of sending correction data to a buffer of a non-volatile memory
US9223649B2 (en) * 2012-02-15 2015-12-29 Sandisk Technologies Inc. System and method of sending correction data to a buffer of a non-volatile memory

Also Published As

Publication number Publication date
US6584543B2 (en) 2003-06-24
US6397290B1 (en) 2002-05-28
WO2001008010A1 (en) 2001-02-01
AU6228500A (en) 2001-02-13
US20030070054A1 (en) 2003-04-10
US20020029315A1 (en) 2002-03-07
US6279072B1 (en) 2001-08-21

Similar Documents

Publication Publication Date Title
US6279072B1 (en) Reconfigurable memory with selectable error correction storage
US5961660A (en) Method and apparatus for optimizing ECC memory performance
US8245109B2 (en) Error checking and correction (ECC) system and method
US5809555A (en) Method of determining sizes of 1:1 and 2:1 memory interleaving in a computer system, configuring to the maximum size, and informing the user if memory is incorrectly installed
US7133960B1 (en) Logical to physical address mapping of chip selects
JP4431977B2 (en) System and method for self-testing and repairing memory modules
EP0418457B1 (en) Pipelined error checking and correction for cache memories
JP4243245B2 (en) Transparent ECC memory system
US5905858A (en) System for method memory error handling
US5452429A (en) Error correction code on add-on cards for writing portions of data words
EP0139124A2 (en) Apparatus and method for automatically correcting a double bit hard error within a memory of a computer system and ensuring that said error will never re-occur
US7107493B2 (en) System and method for testing for memory errors in a computer system
US20020144210A1 (en) SDRAM address error detection method and apparatus
US5925138A (en) Method for allowing data transfers with a memory having defective storage locations
US6041422A (en) Fault tolerant memory system
US5612965A (en) Multiple memory bit/chip failure detection
US5386387A (en) Semiconductor memory device including additional memory cell block having irregular memory cell arrangement
US20240134548A1 (en) Memory with extension mode
JPS58220299A (en) Memory system
US5369650A (en) Error detection and correction apparatus in a BY-4 RAM Device
WO1990002374A1 (en) Failure detection for partial write operations for memories
US6412051B1 (en) System and method for controlling a memory array in an information handling system
US5894487A (en) Error detection of directory arrays in dynamic circuits
US6308297B1 (en) Method and apparatus for verifying memory addresses
KR20070072229A (en) Semiconductor memory device for utilizing eds

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: ROUND ROCK RESEARCH, LLC,NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:023786/0416

Effective date: 20091223

Owner name: ROUND ROCK RESEARCH, LLC, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:023786/0416

Effective date: 20091223

FPAY Fee payment

Year of fee payment: 12