Memory controller with error detection and retry modes of operation

Information

  • Patent Grant
  • 11775369
  • Patent Number
    11,775,369
  • Date Filed
    Friday, February 28, 2020
    4 years ago
  • Date Issued
    Tuesday, October 3, 2023
    7 months ago
Abstract
A memory system includes a link having at least one signal line and a controller. The controller includes at least one transmitter coupled to the link to transmit first data, and a first error protection generator coupled to the transmitter. The first error protection generator dynamically adds an error detection code to at least a portion of the first data. At least one receiver is coupled to the link to receive second data. A first error detection logic determines if the second data received by the controller contains at least one error and, if an error is detected, asserts a first error condition. The system includes a memory device having at least one memory device transmitter coupled to the link to transmit the second data. A second error protection generator coupled to the memory device transmitter dynamically adds an error detection code to at least a portion of the second data.
Description
FIELD

The subject matter disclosed herein relates generally to the memory systems, and in particular to memory systems having error detection, error correction and/or retry modes of operation.


BACKGROUND

Low bit-error-rate (BER) communication of data over a communications channel is often considered an important requirement in many systems. In the case of memory devices and systems, fulfilling this requirement is increasingly difficult due to signaling and circuit limitations. In future memory devices and systems, scaling of interface circuitry to accommodate higher data rates may be restricted by transistor sensitivity and threshold limits. In addition, even though interconnect lengths and a loss tangent may be constant, the higher data rates will increase noise due to an increased bandwidth. Given constraints on interface overhead and latency, developing faster interfaces with a low BER may become more challenging and expensive. This poses a problem, since conventional interfaces in memory devices and systems typically have an extremely low BER. For example, the BER in the interface in a dynamic random access memory (DRAM) is typically less than a soft error rate in the DRAM core, i.e., less than 10−3°. If the BER in the interface increases in future high-speed designs, ensuring reliability with different processes, systems and environments for conventional memory devices and systems may be difficult.





BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding, reference should be made to the following detailed description taken in conjunction with the accompanying drawings, in which:



FIG. 1 is a block diagram illustrating an embodiment of a memory system.



FIG. 2A is a block diagram illustrating an embodiment of a memory device.



FIG. 2B is a block diagram illustrating an embodiment of a memory device.



FIG. 3A is a diagram illustrating a data stream in an embodiment of a memory system.



FIG. 3B is a diagram illustrating a data stream in an embodiment of a data stream.



FIG. 4 is a frequency usage diagram illustrating frequency bands of two sub-channels in an embodiment of a memory system.



FIG. 5 is a block diagram illustrating management of a memory buffer in an embodiment of a memory system.



FIG. 6 is a flow diagram illustrating a method of operation of an embodiment of a memory system.



FIG. 7 is a flow diagram illustrating a method of operation of an embodiment of a memory system.



FIG. 8 is a block diagram illustrating an embodiment of a memory system.





Like reference numerals refer to corresponding parts throughout the drawings.


DETAILED DESCRIPTION OF EMBODIMENTS

A memory controller is described. The controller includes a link interface, at least one transmitter coupled to the link interface to transmit first data and an error protection generator coupled to the transmitter. The error protection generator dynamically adds an error detection code to at least a portion of the first data. Dynamic adding should be understood to refer to incorporating pre-existing error detection code information into at least a portion of the transmit data (such as in one or more data packets), and/or generating error detection code information in real time in accordance with at least a portion of the transmit data, which is then incorporated in at least the portion of the first data. In some embodiments, the error protection generator may dynamically add an error correction code to at least a portion of the first data. Dynamic should be understood to refer to incorporating pre-existing error correction code information into at least a portion of the first data (such as in one or more data packets), and/or generating error correction code information in real time in accordance with at least a portion of the first data, which is then incorporated in at least the portion of the first data. The controller also includes at least one receiver coupled to the link interface to receive second data, and error detection logic. In some embodiments, the error detection logic determines if the second data received by the controller contains at least one error and, if an error is detected, asserts an error condition. In other embodiments, a memory device, coupled to the controller, determines that the second data received by the memory device from the controller contains at least one error, asserts the respective error condition and notifies the controller. The controller performs a retry remedial action if a respective error condition is asserted.


The retry remedial action may include retry information transmitted from the controller to the memory device. The retry information may include requesting that the memory device re-transmit the second data with at least a portion of the second data having error protection provided by an error correction code that is dynamically generated. In other embodiments, the retry remedial action may be based at least in part on retry information transmitted from the memory device to the controller. In these embodiments, the retry information may include requesting that the controller re-transmit the first data with at least a portion of the first data having error protection provided by an error correction code that is dynamically added by the error protection generator.


The memory may also include control logic. In some embodiments, the controller includes the control logic. The control logic may delay subsequent write operations to the memory device until the retry remedial action is completed, may delay command operations to a location in the memory device corresponding to the first data until the retry remedial action is completed, or may reorder receive data after the retry remedial action is completed in order to restore the second data received from the memory device during remedial action to a position corresponding to an original sequence of command operations.


The memory may also include a memory buffer. The first data to be transmitted to the memory device may be temporarily stored in the memory buffer and, if a read to a location in the memory device corresponding to the first data occurs during the retry remedial action, the first data is obtained from the memory buffer.


In some embodiments, a memory system includes a link having at least one signal line, a controller, and a memory device. The controller includes at least one transmitter coupled to the link to transmit first data, a first error protection generator coupled to the transmitter, at least one receiver coupled to the link to receive second data, and a first error detection logic to determine if the second data received by the controller contains at least one error and, if an error is detected, to assert a first error condition. The first error protection generator dynamically adds an error detection code to at least a portion of the first data. The memory device includes at least one transmitter coupled to the link to transmit the second data, a second error protection generator coupled to the transmitter, at least one receiver coupled to the link to receive the first data, and a second error detection logic to determine if the first data received by the memory device contains at least one error and, if an error is detected, to assert a second error condition. The second error protection generator dynamically adds an error detection code to at least a portion of the second data. If a respective error condition is asserted, the respective error condition is communicated between the controller and the memory device and retry remedial action is performed.


By incorporating error detection, error correction and/or retry modes of operation in the memory controller, the memory device or memory systems including at least one controller and at least one memory device, the embodiments allow occasional interconnect- or communications-channel-induced bit errors and thereby may allow a reduction in the BER requirements of the interconnect. Such an additional degree of freedom may enable memory interconnects having increased bandwidth at lower cost and with less complexity.


Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.



FIG. 1 illustrates an embodiment of a memory system 50. The memory system 50 includes at least one controller 110 and one or more memory devices 104. While FIG. 1 illustrates the memory system 50 having one controller 110 and three memory devices 104, other embodiments may have additional controllers and fewer or more memory devices 104. The controller has control logic 112 and each memory device 104 has control logic 106. In other embodiments, some of the memory device 104 may not have the control logic 106. Two or more of the memory devices, such as memory devices 104-1 and 104-2, may be configured as a memory bank 108.


The controller 110 and the memory devices 104 are connected by signal lines 102 that together constitute a communications channel or link. While FIG. 1 illustrates three signal lines 102, other embodiments may have fewer or more signal lines 102. The signal lines 102 may correspond to an interconnect, an interface, a bus, and/or a back plane. The signal lines 102 may be used for inter-chip communication, such as between one or more semiconductor chips or dies, or for communication within a semiconductor chip, also known as intra-chip communication, such as between modules in an integrated circuit.


The signal lines 102 may be used for bi-directional and/or uni-directional communications between the controller 110 and one or more of the memory devices 104. Bi-directional communication may be simultaneous. In some embodiments, one or more of the signal lines 102 and the corresponding transmitters, such as transmitters 134 (FIG. 2A), transmitter/receiver 216 (FIG. 2B) and/or transmitters 214 (FIG. 2B), and receivers, such as receivers 136 (FIG. 2A) and/or receivers 212 (FIG. 2B), may be dynamically configured, for example, by control logic 112, for bi-directional and/or uni-directional communications.


Data may be communicated on one or more of the signal lines 102 using one or more sub-channels. FIG. 4 shows the frequency response, magnitude 410 as a function of frequency 412, for two such sub-channels. A baseband sub-channel 414 corresponds to a first band of frequencies 416. And a passband sub-channel 418 corresponds to a second band of frequencies 420. In some embodiments, such as those where at least one of the signal lines 102 (FIG. 1) is ac-coupled, the baseband sub-channel 414 may not contain DC (i.e., does not include 0 Hz). While FIG. 4 illustrates two sub-channels, other embodiments may have fewer or more sub-channels. In addition, even though the first frequency band 416 and the second frequency band 420 are illustrated as being orthogonal, in some embodiments there may be substantial overlap of one or more neighboring pairs of frequency bands. A respective sub-channel may also correspond to a group of frequency bands.


Referring to FIG. 1, the control logic 112 may be configured to dynamically allocate and/or adjust one or more bands of frequencies, such as the first band of frequencies 416 (FIG. 4) and/or the second band of frequencies 420 (FIG. 4), based on a predetermined data rate, for example, multiple gigabits per second (“Gbits/s” or “Gbps”), between the controller 110 and at least one of the memory devices 104 and/or the predetermined data rate between at least one of the memory devices 104 and the controller 110. The control logic 112 may dynamically allocate and/or adjust one or more bands of frequencies in at least one signal line 102 by adjusting at least one corresponding transmitter, such as one of the transmitters 134 (FIG. 2A), and at least one corresponding receiver, such as one of the receivers 212 (FIG. 2B). In this example, adjustments to at least one of the transmitters 134 (FIG. 2A) and/or at least one of the receivers 212 (FIG. 2B) may be communicated from the controller 110 to at least one of the memory devices 104 using at least one of the signal lines 102.



FIG. 2A illustrates an embodiment 100 of the controller 110 including the control logic 112, which oversees operation of the controller 110. Data enters a write queue 114. Respective write data 116 is coupled to a modulator 126, at least one error protection generator 130 and at least one of the transmitters 134. At least one of the error protection generators 130 dynamically adds an error detection code, such as one or more parity bits or a parity code, to at least a portion of the respective write data 116. In some embodiments, at least one of the error protection generators 130 may dynamically add an error correction code (ECC), such as a Bose-Chaudhuri-Hochquenghem (BCH) code, to at least a portion of the respective write data 116. At least one of the transmitters 134 transmits the respective write data 116 to at least one memory device, such as one of the memory devices 104 (FIG. 1), using at least one signal line 144. In some embodiments, at least one of the transmitters 134 may also perform a parallel-to-serial conversion.


Read data on at least one of the signal lines 144 is received from at least one memory device, such as one of the memory devices 104 (FIG. 1), using at least one of the receivers 136. In some embodiments, at least one of the receivers 136 may also perform a serial-to-parallel conversion. The read data is coupled to error detection logic 132 (which includes one or more error detectors), a de-modulator 128 and a read queue 118. The read data includes respective read data 120. In some embodiments, error detection logic 132 determines if the respective read data 120 received by the controller 110 contains at least one error. For example, error detection logic 132 may detect an error using a multi-bit XOR operation in conjunction with one or more parity bits in the respective read data 120. If an error is detected, error detection logic 132 asserts an error condition. In other embodiments, at least one memory device, such as one of the memory devices 104 (FIG. 1), determines that the respective write data 116 received by at least the one memory device from the controller 110 contains at least one error, asserts the respective error condition and notifies the controller 110. As discussed further below, if a respective error condition is asserted, retry logic, which in embodiment 100 is in the control logic 112 but in other embodiments may be a separate component in the controller 110, performs a retry remedial action. The retry logic may include hardware, such as logic gates to detect and/or interpret the respective error condition, and/or software, including instructions corresponding to the retry remedial action. The retry remedial action enables transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold. In some embodiments the first threshold is 1 Gbps, 2 Gbps, 5 Gbps or 10 Gbps. In some embodiments, the second threshold is half or one-quarter the data rate of the first threshold.


The modulator 126 and the de-modulator 128 in the controller 110 implement bit-to-symbol coding and symbol-to-bit coding, respectively. In some embodiments, the modulator 126 and the de-modulator 128 are optional. In some embodiments, the relative order of the modulator 126 and the error protection generators 130, and the de-modulator 128 and the error detection logic 132 may be reversed. Suitable symbol coding may include two or more level pulse amplitude modulation (PAM), such as two-level pulse amplitude modulation (2PAM), four-level pulse amplitude modulation (4PAM), eight-level pulse amplitude modulation (8PAM), sixteen-level pulse amplitude modulation (16PAM) or a higher level pulse amplitude modulation. In embodiments with one or more passband sub-channels, such as the passband sub-channel 418 (FIG. 4), multi-level PAM is also referred to as multi-level on-off keying (OOK), such as two-level on-off keying (2OOK), four-level on-off keying (4OOK), eight-level on-off keying (8OOK) or a higher level on-off keying. Suitable coding in one or more passband sub-channels may also include two or more level quadrature amplitude modulation (QAM).


The controller 110 also includes a control or command link using at least one of the signal lines 144, such as signal line 144_1. Command operations in the write queue 114 and/or the read queue 118 are coupled to a multiplexer 124, at least one of the error protection generators 130 and at least one of the transmitters 134, such as transmitter 134-1. The transmitter 134-1 transmits the command operation on the signal line 144_1.


The controller 110 may also be coupled to a retry link 146, including one or more signal lines and/or sub-channels. Retry information on the retry link 146 is received in one or more receivers, such as transmitter/receiver 138, and coupled to the control logic 112.


The transmitters 134, the receivers 136 and the transmitter/receiver 138 are coupled to at least one voltage generator 140 and at least one clock generator 142. The voltage generator 140 generates one or more voltage signals that set signal levels of one or more of the transmitters 134, the receivers 136 and/or the transmitter/receiver 138. The clock generator 142 generates one or more clock signals that control timing of transmitting and receiving of data by one or more of the transmitters 134, the receivers 136 and/or the transmitter/receiver 138.


In other embodiments, the controller 110 may have fewer or more components. Functions of two or more components (as described above) may be implemented in a single component. Alternatively, functions of some components, such as the modulator 126 and/or the de-modulator 128, may be implemented in additional instances of the components. While the embodiment 100 illustrates one transmitter/receiver 138, one transmitter 134-1, two transmitters 134-2 and 134-3, and two receivers 136, there may be fewer or more of these components. And while the signal lines 144 and 146 have been illustrated as uni-directional, as noted previously one or more of the signal lines may be bi-directional. This may include simultaneous bi-directional communication as well as dynamic configuration of one or more of the signal lines 144 and/or 146.



FIG. 2B illustrates an embodiment 200 of a memory device 210 including control logic 232, which oversees operation of the memory device 210. A read command operation from the controller 110 (FIG. 2A) may be received on signal line 144_1, which is a command link, by receiver 212-1. The receiver 212-1 is coupled at least one error detection logic, such as error detection logic 222-1, mask logic 230 and storage array 234. Read data at a corresponding location in the storage array 234 is coupled to a modulator 228, at least one error protection generator 224 and at least one of the transmitters 214. In some embodiments, at least one of the transmitters 214 may also perform a parallel-to-serial conversion. The read data includes the respective read data 120 discussed above with respect to FIG. 2A. At least one of the error protection generators 224 dynamically adds an error detection code, such as one or more parity bits or a parity code, to at least a portion of the read data. In some embodiments, at least one of the error protection generators 224 may dynamically add an error correction code (ECC), such as a BCH code, to at least a portion of the read data. At least one of the transmitters 214 transmits the read data to the controller 110 (FIG. 2A) using at least one signal line 144.


Write data on at least one of the signal lines 144 is received from the controller 110 (FIG. 2A) using at least one of the receivers 212. In some embodiments, at least one of the receivers 212 may also perform a serial-to-parallel conversion. The write data is coupled to at least one error detection logic 222, a de-modulator 226 and the storage array 234. The write data includes the respective write data 116 discussed above with respect to FIG. 2A. In some embodiments, at least one error detection logic 222 determines if the respective write data 116 (FIG. 2A) received by the memory device 210 contains at least one error. For example, at least one error detection logic 222 may detect an error using a multi-bit XOR operation in conjunction with one or more parity bits in the respective write data 116 (FIG. 2A). If an error is detected, at least one error detection logic 222 asserts an error condition. In other embodiments, the controller 110 (FIG. 2A) determines that the respective read data 120 (FIG. 2A) received by the controller 110 (FIG. 2A) from the memory device 210 contains at least one error, asserts the respective error condition and notifies the memory device 210. As discussed further below, if a respective error condition is asserted, retry logic, which in embodiment 200 is in the control logic 232 but in other embodiments may be a separate component in the memory device 210, performs a retry remedial action in a mode of operation of the memory device 210. The retry logic may include hardware, such as logic gates to detect and/or interpret the respective error condition, and/or software, including instructions corresponding to the retry remedial action. The retry remedial action enables transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold. In some embodiments the first threshold is 1 Gbps, 2 Gbps, 5 Gbps or 10 Gbps. In some embodiments, the second threshold is half or one-quarter the data rate of the first threshold.


The modulator 228 and the de-modulator 226 in the memory device 210 implement bit-to-symbol coding and symbol-to-bit coding, respectively. In some embodiments, the modulator 228 and the de-modulator 226 are optional. In some embodiments, the relative order of the modulator 228 and the error detection logic 222, and the de-modulator 226 and the error protection generator 224 may be reversed. Suitable symbol coding may include two or more level pulse amplitude modulation (PAM), such as two-level pulse amplitude modulation (2PAM), four-level pulse amplitude modulation (4PAM), eight-level pulse amplitude modulation (8PAM), sixteen-level pulse amplitude modulation (16PAM) or a higher level pulse amplitude modulation. In embodiments with one or more passband sub-channels, such as the passband sub-channel 418 (FIG. 4), multi-level PAM is also referred to as multi-level on-off keying (OOK), such as two-level on-off keying (2OOK) or a higher level on-off keying. Suitable coding in one or more passband sub-channels may also include two or more level quadrature amplitude modulation (QAM).


The memory device 210 may also include the retry link 146, including one or more signal lines and/or sub-channels. Retry information is coupled from the control logic 232 to one or more transmitters, such as the transmitter/receiver 216, and onto the signal line 144.


The transmitters 214, the receivers 212 and the transmitter/receiver 216 are coupled to at least one voltage generator 220 and at least one clock generator 218. The voltage generator 220 generates one or more voltage signals that set signal levels of one or more of the transmitters 214, the receivers 212 and/or the transmitter/receiver 216. The clock generator 218 generates one or more clock signals that control timing of transmitting and receiving of data by one or more of the transmitters 214, the receivers 212 and/or the transmitter/receiver 216.


In other embodiments, the memory device 210 may have fewer or more components. Functions of two or more components may be implemented in a single component. Alternatively, functions of some components, such as the modulator 228 and/or the de-modulator 226, may be implemented in additional instances of the components. While the embodiment 200 illustrates one receiver 212-1, one transmitter/receiver 216, two transmitters 214 and two receivers 212-2 and 212-3, there may be fewer or more of these components. And while the signal lines 144 and 146 have been illustrated as uni-directional, as noted previously one or more of the signal lines may be bi-directional. This may include simultaneous bi-directional communication as well as dynamic configuration of one or more of the signal lines 144 and/or 146.


Referring to FIG. 2A, as mentioned previously, when the respective error condition is asserted, the controller 110 may enter a mode of operation where the retry logic performs the retry remedial action. In some embodiments, the retry remedial action may include retry information transmitted from the controller 110 to a memory device (such as one of the memory devices 104, FIG. 1, or the memory device 210, FIG. 2B) from which corrupted data (e.g., respective read data 120 containing at least one error) was received. The retry information may include a request that the memory device re-transmit the respective read data 120, or it may include a request that the memory device re-transmit the respective read data 120 with at least a portion of the respective read data 120 having error protection. The error protection may be provided by one or more ECC values that are dynamically generated in the memory device using, for example, at least one of the error protection generators 224.


The ECC values may include BCH codes. BCH codes are a sub-class of cyclic codes. The BCH codes have a range of code lengths and effectiveness, i.e., code gain, in correcting errors. Overhead associated with BCH codes ranges from around 65 to 100%. An important subclass of the BCH codes are Reed-Solomon codes. The Reed-Solomon codes are linear block codes. They are specified as RS(n,k), where k is a number of data symbols having s bits, n is a number of symbol codewords. As a consequence, there are n-k parity symbols having s bits. In a system that uses a Reed-Solomon ECC, a decoder such as one instance of the error detection logic 132 may detect up to 2t symbols containing errors or correct up to t symbols that contain errors in a respective codeword, where 2t=n−k. As is known in the art, a respective BCH code may be generated based on a corresponding code generator polynomial g(x) using a shift register with feedback. A suitable ECC may be selected based on acceptable overhead, implementation complexity and cost, additional latency to generate and decode the ECC, and an acceptable corrected BER.


In other embodiments of the controller 110, the retry remedial action may be based at least in part on retry information transmitted from a memory device, such as memory device 210, to the controller 110. In these embodiments, the retry information may include a request that the controller 110 re-transmit the respective write data 116 and/or command operation. Alternately, the retry information may include a request that the controller 110 re-transmit the respective write data 116 and/or command operation with at least a portion of the respective write data 116 and/or command operation having error protection provided by an ECC that is dynamically added by at least one of the error protection generators 130. The ECC may include one of the BCH codes.


In some embodiments, data may be re-transmitted by at least one memory device, such as the memory device 210, with an improved BER. For example, the retry information transmitted from the controller 110 to a memory device may include a request that the memory device re-transmit the respective read data 120; a request that at least the one memory device re-transmit the respective read data 120 using a circuit having a power greater than that used in a previous transmission for improved transmit characteristics; a request that at least the one memory device re-transmit the respective read data 120 with one symbol per clock cycle (as opposed to transmitting on both rising and falling clock edges); a request that at least the one memory device re-transmit the respective read data 120 including an error correction code; a request that the memory device re-transmit the respective read data 120 at a data rate that is less than that used in the previous transmission by adjusting, for example, the clock generator 218 (FIG. 2B); a request that the memory device re-transmit the respective read data 120 in a data stream with blanks inserted before and after the respective read data 120 to have an intersymbol interference that is less than that in the previous transmission; a request that the memory device re-transmit the respective read data 120 with a different modulation code than that used in the previous transmission by adjusting, for example, the modulator 228 (FIG. 2B); a request that the memory device re-transmit the respective read data 120 with a voltage swing greater than that used in the previous transmission by adjusting, for example, the voltage generator 220 (FIG. 2B); a request that the memory device re-transmit the respective read data 120 using a number of pins that are coupled to one or more of the signal lines 144 that is less than the number of pins coupled to one or more of the signal lines 144 in the previous transmission; a request that the memory device re-transmit the respective read data 120 after a predetermined idle time; and/or a request that at least the one memory device re-transmit the respective read data 120 to another receiver 136 in the controller 110. The predetermined idle time may include several clock cycles.


In some embodiments of the controller 110, data may be re-transmitted by the controller 110 with an improved BER. For example, the retry information transmitted from a memory device, such as the memory device 210, to the controller 110 may include a request that the controller 110 re-transmit the respective write data 116 and/or command operation; a request that the controller 110 re-transmit the respective write data 116 and/or command operation using a circuit having a power greater than that used in a previous transmission for improved transmit characteristics; a request that the controller 110 re-transmit the respective write data 116 and/or command operation at a data rate that is less than that used in the previous transmission by adjusting the clock generator 142; a request that the controller 110 re-transmit the respective write data 116 and/or command operation in a data stream with blanks inserted before and after the respective write data 116 and/or command operation to have the intersymbol interference that is less than that in the previous transmission; a request that the controller 110 re-transmit the respective write data 116 with one symbol per clock cycle (as opposed to transmitting on both rising and falling clock edges); a request that the controller 110 re-transmit the respective write data 116 including an error correction code; a request that the controller 110 re-transmit the respective write data 116 and/or command operation with a different modulation code than that used in the previous transmission by adjusting the modulator 126; a request that the controller 110 re-transmit the respective write data 116 and/or command operation with a voltage swing greater than that in the previous transmission by adjusting the voltage generator 140; a request that the controller 110 re-transmit the respective write data 116 and/or command operation using a number of pins that are coupled to one or more of the signal lines 144 that is less than the number of pins coupled to one or more of the signal lines 144 in the previous transmission; a request that the controller 110 re-transmit the respective write data 116 and/or command operation after a predetermined idle time, and/or requesting that the controller 110 re-transmit the respective write data 116 and/or command operation to another receiver, such as one of the receivers 212 (FIG. 2B), in at least the one memory device. The predetermined idle time may have a duration of, for example, 1 symbol period or 2 symbol periods, where a symbol period is the amount of time associated with the transmission of each symbol of the write data.



FIGS. 3A and 3B illustrate data streams in a system with improved BER, using a mode of operation in a controller 110 or memory device 210 in which data is re-transmitted by the controller 110 or memory device 210. FIG. 3A illustrates a data stream in an embodiment in which a data packet 310, corresponding to the respective write data 116, a command operation or the respective read data 120, is re-transmitted in a data stream with blanks inserted 314 between the data packet 310 and other data packets 312 to reduce the intersymbol interference relative to the intersymbol interference in the previous transmission, either to the controller 110 or the memory device 210, without the blanks inserted 314 between the data packet 310. FIG. 3B illustrates a data stream in an embodiment in which a data packet 330, corresponding to the respective write data 116, a command operation or the respective read data 120, is re-transmitted with a voltage swing that is greater than the voltage swing for other data packets 332.


Referring to FIG. 2A, special handling may be needed for the retry remedial action in some embodiments of the controller 110 or memory device 210 in order to avoid data hazards. For example, the control logic 112 may delay subsequent write operation commands to a memory device, such as the memory device 210 (FIG. 2B), until the retry remedial action is completed, may delay command operations to a location in the memory device corresponding to the respective write data 116 or the respective read data 120 until the retry remedial action is completed and/or may reorder received read data after the retry remedial action is completed in order to restore the respective read data 120 received from the memory device during remedial action to a position corresponding to an original sequence of command operations.


Special handling during retry remedial action associated with the respective write data 116 may also be implemented using a memory buffer 122 in the controller 110. During a normal mode of operation, the write data transmitted to at least one memory device, such as the memory device 210, may be temporarily stored in the memory buffer 122. If a read command operation to a location in at least the one memory device corresponding to the respective write data 116 occurs during the retry remedial action, the respective write data 116 may be obtained from the memory buffer 122. In other words, the write data in the memory buffer 122 is used to respond to read requests to memory locations matching the memory locations of the buffered write data. In other embodiments, the respective write data 116 may be obtained from the write queue 114 if a read command operation to a location in at least the one memory device corresponding to the respective write data 116 occurs during the retry remedial action. This may not be possible, however, if a partial write is being performed using byte masking.



FIG. 5 illustrates an embodiment 500 for controlling the memory buffer 122. A memory address 510 corresponding to one or more command operations 522 is compared to memory addresses 514, corresponding to write data temporarily stored in the memory buffer 122, using comparators 512 and OR gate 516. During the normal mode of operation, memory buffer manager 524 may continuously store and remove write data from the memory buffer 122 when an opportunity occurs based on the command operations 522. The memory buffer 122 may be implemented as FIFO memory with one or more storage locations. Embodiment 500 illustrates a memory buffer 122 having two storage locations. When a respective error condition 520 is asserted, retry logic 518, which may be implemented in the control logic 112 (FIG. 2B), may instruct the memory buffer 122 to provide the respective write data 116, which is output on output 526. For example, as noted above, the retry logic 518 may instruct the memory buffer 122 to provide the respective write data 116 if a read command operation to one of the memory addresses 514 (each corresponding to a location in a memory device) occurs during the retry remedial action. When a memory buffer storage location is empty, its corresponding address 514 is set to a value outside the address range of the memory devices serviced by the memory buffer 122.


Referring to FIG. 2B, as also mentioned previously, when the respective error condition is asserted, the memory device 210 may enter a mode of operation where the retry logic performs the retry remedial action. In some embodiments, the retry remedial action performed in this mode of operation may include transmitting retry information from the memory device 210 to the controller 110 (FIG. 2A). The retry information may include a request that the controller 110 (FIG. 2A) re-transmit the respective write data 116 (FIG. 2A) and/or at least one command operation with at least a portion of the respective write data 116 (FIG. 2A) having error protection provided by an ECC that is dynamically generated in controller 110 (FIG. 2A). The ECC may be generating using, for example, one of the error protection generators 130. The ECC may include one of the BCH codes.


In other embodiments of the mode of operation in the memory device 210, the retry remedial action may be based at least in part on retry information transmitted from the controller 110 (FIG. 2A) to the memory device 210. In these embodiments, the retry information may include a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) with at least a portion of the respective read data 120 (FIG. 2A) having error protection provided by an ECC that is dynamically added by at least one of the error protection generators 224. The ECC may include one of the BCH codes.


In some embodiments of the memory device 210, data may be re-transmitted by the memory device 210 with an improved BER. For example, the retry information transmitted from the controller 110 (FIG. 2A) to the memory device 210 may include a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A); a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) using a circuit having a power than that used in a previous transmission for improved transmit characteristics; a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) at a data rate that is less than that in the previous transmission by adjusting the clock generator 218; a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) in a data stream with blanks inserted before and after the respective read data 120 to have the intersymbol interference that is less than the intersymbol interference in the previous transmission (as illustrated in FIG. 3A); a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) with a different modulation code than that used in the previous transmission by adjusting the modulator 228; a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) with a voltage swing greater than that in the previous transmission by adjusting the voltage generator 220 (as illustrated in FIG. 3B); a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) using a number of pins that are coupled to one or more of the signal lines 144 that is less than the number of pins coupled to one or more of the signal lines 144 in the previous transmission; a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) after a predetermined idle time; and/or a request that the memory device 210 re-transmit the respective read data 120 (FIG. 2A) to another receiver 136 (FIG. 2A) in the controller 110 (FIG. 2A). The predetermined idle time may have a duration of, for example, 1 symbol period or 2 symbol periods, where a symbol period is the amount of time associated with the transmission of each symbol of the read data.


Referring to FIG. 2A, in some embodiments of the memory device 210 (FIG. 2B), data may be re-transmitted by the controller 110 with an improved BER. For example, the retry information transmitted from the memory device 210 (FIG. 2B) to the controller 110 may include a request that the controller 110 re-transmit the respective write data 116 and/or command operation; a request that the controller 110 re-transmit the respective write data 116 and/or command operation using a circuit having a power greater than in a previous transmission for improved transmit characteristics; a request that the controller 110 re-transmit the respective write data 116 and/or command operation at a data rate less than in the previous transmission by adjusting the clock generator 142; a request that the controller 110 re-transmit the respective write data 116 and/or command operation in a data stream with blanks inserted before and after the respective write data 116 and/or command operation to have the intersymbol interference that is less than the intersymbol interference in the previous transmission; a request that the controller 110 re-transmit the respective write data 116 and/or command operation with a different modulation code than in the previous transmission by adjusting the modulator 126; a request that the controller 110 re-transmit the respective write data 116 and/or command operation with a voltage swing larger than in the previous transmission by adjusting the voltage generator 140; a request that the controller 110 re-transmit the respective write data 116 and/or command operation using a number of pins that are coupled to one or more of the signal lines 144 that is less than the number of pins that are coupled to one or more of the signal lines 144 in the previous transmission; a request that the controller 110 re-transmit the respective write data 116 and/or command operation after a predetermined idle time; and/or a request that the controller 110 re-transmit the respective write data 116 and/or command operation to another receiver 212 (FIG. 2B) in the memory device 210 (FIG. 2B). The predetermined idle time may have a duration of, for example, 1 symbol period or 2 symbol periods, where a symbol period is the amount of time associated with the transmission of each symbol of the write data.


Referring to FIG. 2B, special handling may be needed for the retry remedial action in some of the embodiments of the mode of operation of the memory device 210. For example, if an error is detected in a respective command operation on the command link, such as a read operation, the control logic 232 may use the mask logic 230 to mask the respective command operation from the storage array 234. Retry information may be transmitted to the controller 110 (FIG. 2A) to ensure that the respective command operation is re-transmitted by the controller 110.


Special handling during retry remedial action associated with the respective read data 120 (FIG. 2A) may be implemented using a memory buffer 236 in the memory device 210 to avoid data hazards. During a normal mode of operation, the read data transmitted to the controller 110 (FIG. 2A) may be temporarily stored in the memory buffer 236. If a read command operation to a location in the storage array 234, corresponding to respective read data 120 (FIG. 2A) in the memory buffer 236, occurs during the retry remedial action, the respective read data 120 (FIG. 2A) may be obtained from the memory buffer 236 instead of the storage array 234. In some embodiments, the memory buffer 236 may be included in the storage array 234.


In the various embodiments of the modes of operation for the controller 110 (FIG. 2A) and/or the memory device 210, the retry information may be transmitted using at least one command operation signal line, such as the signal line 144_1, at least one of the data signal lines, such as signal line 144_2, at least one dedicated retry signal line, such as the signal line 146 and/or at least one sub-channel, such as the passband sub-channel 418 (FIG. 4) corresponding to at least one band of frequencies in at least one of the signal lines 144 and/or 146. Communication using at least one signal line, such as the signal line 144_2, may be uni-direction or bi-direction, including simultaneous bi-directional communication or a dynamically configured communication direction.


Some memory systems may have command links, such as that on signal line 144_1, with data rates substantially lower than the data rate on signal links, such as signal lines 144_2 through 144_5. If the data rate of the command link is low enough that the effective BER over that link is sufficiently low, additional error protection, such as ECC, may not be needed. If the data rate over the command link is high enough that BER is higher than the acceptable level (such as data rates in the multi-GHz range) at least a portion of control or command packets, containing command operations, may be protected using an error detection code, such as parity bits or a parity code, and/or an ECC. As illustrated in embodiments 100 (FIG. 2A) and 200, error detection codes or error correction codes may be implemented using error protection generator 130-1 (FIG. 2A) and error detection logic 222-1.


While using an ECC to protect all portions of a command packet would protect all portions of the command packets equally, during the normal mode of operation in the controller 110 (FIG. 2A) a combination of an ECC on a selected portion of the command packet bits and an error detection code on a remainder may be useful in reducing the overhead. For example, an ECC could be used on the elective bit fields in the command packet. The elective bit fields are sensitive in the sense that they can cause erroneous operations that are difficult to recover from, such as row address and commands operations (activate, precharge, read, write, refresh). Less sensitive bit fields, such as column address, may only need error detection codes so that errors could be detected by at least one of the memory devices, such as the memory device 210. Retry information transmitted to the controller 110 (FIG. 2A) could instruct the controller 110 (FIG. 2A) to re-transmit the affected command packet in a mode of operation of the controller 110 (FIG. 2A).


Using an error detection code on all of the command packet during the normal mode of operation of the controller 110 (FIG. 2A) offers a lower overhead. This will, however, allow errors in the command packet to propagate to one or more memory devices, such as the memory device 210. This may result in erroneous memory operations and potential data corruption. Therefore, in these embodiments, the controller is configured to ignore the memory operation results (e.g., read data) produced when an error in a respective command packet is detected a memory devices. The controller is further configured to recover the original state of any memory device that received an erroneous memory command packet when an error in the command packet adversely affects the state of the memory device that received the command packet. Configuring the controller 110 to track and recover from all possible erroneous operations adds complexity to the controller 110. There may also be a performance penalty.


Referring to FIG. 2A, in the normal mode of operation for the controller 110 the flow of operations is as follows. When a write transaction or command operation WR1-X (where X is an address in at least one memory device) is received in the write queue 114, the control logic 112 may select WR1-X as a next transaction. At least one of the error protection generators 130 may generate error-detection information from the write data and/or command operation. The data and command are transmitted using at least one of the transmitters 134. The data and command are received in at least one of the memory devices, such as the memory device 210 (FIG. 2B). The error-detection information is checked using at least one error detection logic 222 (FIG. 2B). If an error is detected, the respective error condition is asserted. In some embodiments, incorrect write data is written to the address X in the storage array 234 (FIG. 2B). Retry information is asserted by the control logic 232 (FIG. 2B) and transmitted to the controller 110 using, for example, the retry link 146. Upon receiving the retry information, the controller 110 enters a special mode of operation. The controller 110 performs remedial actions during this mode of operation. The controller 110 may re-transmit the command operation and/or the write data. In some embodiments, re-transmission may use ECC on at least a portion of the write data and/or command operation, and/or may use relaxed conditions to improve the BER and avoid a second error. The write data is correctly received by the memory device 210 (FIG. 2B) and may overwrite incorrect data in the storage array 234 (FIG. 2B) at address X. The controller 110 then exits the special mode of operation.


If the read queue 118 receives a read transaction or command operation RD1-X while the controller 110 is in the special mode of operation associated with recovering from a write error to the memory device 210 (FIG. 2B), a write-read hazard has occurred. If the read transaction were allowed to proceed, it might return old data at address X in the storage array 234 (FIG. 2B) or incorrect new data at address X in the storage array 234 (FIG. 2B), as opposed to correct data that is to be written when the WR1-X transaction is re-transmitted during the remedial action. In some embodiments, the controller 110 holds the read transaction RD1-X in the read queue 118 until the re-transmitted write transaction has finished. Alternatively, in some embodiments the controller may allow the read transaction RD1-X in the read queue 118 to complete by returning write data for WR1-X that is stored in the write queue 114 or the memory buffer 122 for the read transaction. This may not be possible if WR1-X is a partial write (e.g., using byte masking) into address X in the storage array 234 (FIG. 2B), since part of the data needed for the RD1-X transaction may be in the memory device 210 (FIG. 2B) and another part may be in the write queue 114 or the memory buffer 122 in the controller 110.


Another flow of operations in the normal mode of operation for the controller 110 is as follows. The write queue 114 receives transaction or command operation WR2-X (where X is an address in at least one memory device). The control logic 112 may select WR2-X as the next transaction. At least one error protection generator 130 may generate error-detection information for the write command operation. The write command operation is transmitted using at least one transmitter 134 to at least one memory device, such as the memory device 210 (FIG. 2B). The write command operation is received in the memory device 210 (FIG. 2B). The error-detection information is checked using at least one error detection logic 222 (FIG. 2B). If an error is detected, the respective error condition is asserted. In some embodiments, the incorrect write command operation is masked from the storage array 234 (FIG. 2B). Retry information is asserted by the control logic 232 (FIG. 2B) and transmitted to the controller 110 using, for example, the retry link 146. Upon receiving the retry information, the controller 110 enters a special mode of operation. The controller 110 performs remedial actions in this mode of operation. The controller 110 may re-transmit the write command operation. In some embodiments, re-transmission may use an ECC on at least a portion of the write command operation and/or relaxed conditions to improve the BER and avoid a second error. When the write command operation is correctly received by the memory device 210 (FIG. 2B), the controller 110 exits the special mode of operation.


Referring to FIG. 2B, yet another flow of operations in the normal mode of operation for the controller 110 is as follows. The read queue 118 receives a transaction or command operation RD2-X (where X is an address in at least one memory device). The control logic 112 may select RD2-X as the next transaction. At least one error protection generator 130 may generate error-detection information for the read command operation. The read command operation is transmitted using at least one transmitter 134 to at least one memory device, such as the memory device 210. The read command operation is received in the memory device 210. The error-detection information is checked by the memory device using at least one error detection logic 222. The control logic 232 in the memory device 210 accesses the read data at address X in the storage array 234. At least one error protection generator 224 may generate error-detection information for the read data. The read data is transmitted using at least one of the memory device's transmitters 214, and is then received in the controller 110. The error-detection information is checked using at least one error detection logic 132. If an error is detected, the respective error condition is asserted and the controller 110 enters a special mode of operation. The incorrect read data may be discarded. The controller 110 performs remedial actions in the special mode of operation. The controller 110 may transmit retry information to the memory device 210 (FIG. 2B) using, for example, the retry link 146. Upon receiving the retry information, the memory device 210 (FIG. 2B) may re-transmit the read data. In some embodiments, re-transmission may use an ECC on at least a portion of the read data and/or relaxed conditions to improve the BER and avoid a second error. When the read data is correctly received by the controller 110, the controller 110 exits the special mode of operation.


If the write queue 114 receives a write transaction or command operation WR3-X while the controller 110 in the special mode of operation associated with a read error from the memory device 210 (FIG. 2B), a read-write hazard has occurred. If the write transaction were allowed to proceed, it might overwrite the old data at address X in the storage array 234 (FIG. 2B) that is to be read when the RD2-X transaction is re-transmitted during the remedial action. In some embodiments, the controller 110 holds the write transaction WR3-X in the write queue 114 until the re-transmitted read transaction has finished.



FIG. 6 illustrates an embodiment of a method or process for the error detection and remedial action in either the controller 110 or the memory device 210 (FIG. 2B). Data is received (610). A determination is made if an error occurred (612). If no error occurred, the procedure continues. If an error occurred, an error condition is asserted (614), remedial action is performed (616) and the procedure repeats. In some embodiments, there may be fewer or additional operations, an order of the operations may be rearranged and/or two or more operations may be combined.



FIG. 7 illustrates an embodiment of a method or process for the error detection and remedial action in either the controller 110 or the memory device 210. An error detection code is added to at least a portion of data (710). The data is transmitted (712). A determination is made if an error occurred (714). If no error occurred, the procedure continues. If an error occurred, an error condition is asserted (716), a remedial action is performed (718) and the procedure repeats, starting at the data transmission operation (712). In some embodiments, there may be fewer or additional operations, an order of the operations may be rearranged and/or two or more operations may be combined.


The error detection and retry modes of operation and method are well-suited for use in improving communication in memory systems and devices. They are also well-suited for use in improving communication between a memory controller chip and a DRAM chip. The DRAM chip may be either on the same printed circuit board as the controller or embedded in a memory module. The apparatus and methods described herein may also be applied to other memory technologies, such as static random access memory (SRAM) and electrically erasable programmable read-only memory (EEPROM).


Devices and circuits described herein can be implemented using computer aided design tools available in the art, and embodied by computer readable files containing software descriptions of such circuits, at behavioral, register transfer, logic component, transistor and layout geometry level descriptions stored on storage media or communicated by carrier waves. Data formats in which such descriptions can be implemented include, but are not limited to, formats supporting behavioral languages like C, formats supporting register transfer level RTL languages like Verilog and VHDL, and formats supporting geometry description languages like GDSII, GDSIII, GDSIV, CIF, MEBES and other suitable formats and languages. Data transfers of such files on machine readable media including carrier waves can be done electronically over the diverse media on the Internet or through email, for example. Physical files can be implemented on machine readable media such as 4 mm magnetic tape, 8 mm magnetic tape, 3½ inch floppy media, CDs, DVDs and so on.



FIG. 8 is a block diagram an embodiment of a system 800 for storing computer readable files containing software descriptions of the circuits. The system 800 may include at least one data processor or central processing unit (CPU) 810, a memory 814 and one or more signal lines 812 for coupling these components to one another. The one or more signal lines 812 may constitute one or more communications busses.


The memory 814 may include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices. The memory 814 may store a circuit compiler 816 and circuit descriptions 818. The circuit descriptions 818 may include circuit descriptions for transmit and receive circuits 820, one or more error protection generators 822, error detection logic 828, remedial action logic 832, a clock generator 836, voltage generator 838, memory buffer 840, write queue 842, read queue 844, mask 846, control logic 848, modulation circuits 850 and de-modulation circuits 852. The error protection generator 822 may include error detection code 824 and error correction code 826. The error detection logic 828 may include error conditions 830. The remedial action logic 832 may include retry information 834.


In an alternate embodiment, the memory device includes a link interface, at least one transmitter coupled to the link interface to transmit the second data, an error protection generator coupled to the transmitter, a storage array for storing data, at least one receiver coupled to the link interface to receive the first data, and error detection logic to determine if the first data received by the memory device contains at least one error and, if an error is detected, to assert an error condition. The error protection generator may dynamically add an error detection code to at least a portion of the second data. The memory device may perform a retry remedial action if a respective error condition is asserted. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold.


The retry remedial action may include retry information transmitted from the memory device to the controller, which is coupled to the memory device using a link having one or more signal lines. The retry information may include requesting that the controller re-transmit the first data, requesting that the controller re-transmit the first data using a circuit having a power greater than that used in a previous transmission for improved transmit characteristics, requesting that the controller re-transmit the first data at a data rate less than that in the previous transmission, requesting that the controller re-transmit the first data in a data stream with blanks inserted before and after the first data to have the intersymbol interference that is less than the intersymbol interference in the previous transmission, requesting that the controller re-transmit the first data with one symbol per clock cycle, requesting that the controller re-transmit the first data including an error correction code, requesting that the controller re-transmit the first data with a different modulation code than that in the previous transmission, requesting that the controller re-transmit the first data with a voltage swing greater than that in the previous transmission, requesting that the controller re-transmit the first data using a number of pins that are coupled to the link that is less than the number of pins coupled to the link in the previous transmission, requesting that the controller re-transmit the first data after a predetermined idle time, and/or requesting that the controller re-transmit the first data to another receiver in the memory device.


The retry information may be transmitted to the controller using a command operation signal line in the link, a data signal line in the link, a dedicated retry signal line, and/or a sub-channel corresponding to at least one band of frequencies in the link.


The retry remedial action may include retry information transmitted from the memory device to the controller. The retry information may include requesting that the controller re-transmit the first data with at least a portion of the first data having error protection provided by an error correction code that is dynamically generated.


The error correction code may include a Bose-Chaudhuri-Hochquenghem (BCH) code.


The memory device may further include control logic. The first data may be a read command operation and the control logic may mask the read command operation from the storage array.


In another embodiment, the memory device includes a link interface, at least one transmitter coupled to the link interface to transmit the second data, an error protection generator coupled to the transmitter, a storage array for storing data, at least one receiver coupled to the link interface to receive the first data, and error detection logic to determine if the first data received by the memory device contains at least one error and, if an error is detected, to receive an error condition. The error protection generator may dynamically add an error detection code to at least a portion of the second data. The memory device may perform a retry remedial action if a respective error condition is received. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold. The retry remedial action may include re-transmitting the second data to a controller when the controller determines that the second data received by the controller from the memory device contains at least one error, asserts the error condition and notifies the memory device.


The retry remedial action may be based at least in part on retry information transmitted from the controller to the memory device using a link. The retry information may include requesting that the memory device re-transmit the second data, requesting that the memory device re-transmit the second data using a circuit having a power greater than that used in a previous transmission for improved transmit characteristics, requesting that the memory device re-transmit the second data at a data rate that is less than that in the previous transmission, requesting that the memory device re-transmit the second data with in a data stream with blanks inserted before and after the second data to have the intersymbol interference that is less than the intersymbol interference in the previous transmission, requesting that the memory device re-transmit the second data with one symbol per clock cycle, requesting that the memory device re-transmit the second data including an error correction code, requesting that the memory device re-transmit the second data with a different modulation code than that in the previous transmission, requesting that the memory device re-transmit the second data with a voltage swing greater than that in the previous transmission, requesting that the memory device re-transmit the second data using a number of pins that are coupled to the link that is less than the number of pins coupled to the link in the previous transmission, requesting that the memory device re-transmit the second data after a predetermined idle time, and/or requesting that the memory device re-transmit the second data to another receiver in the controller.


The retry information may be transmitted to the memory device using a command operation signal line in the link, a data signal line in the link, a dedicated retry signal line, and/or a sub-channel corresponding to at least one band of frequencies in the link.


The error protection generator may dynamically add an error correction code to at least a portion of the second data transmitted during retry remedial action. The retry remedial action may be based at least in part on retry information transmitted from the controller to the memory device.


The memory device may further include a memory buffer. The second data transmitted to the controller is temporarily stored in the memory buffer and, if a read to a location in the memory device corresponding to the second data occurs during the retry remedial action, the second data is obtained from the memory buffer.


In another embodiment, a computer readable medium containing data representing a circuit includes a memory device. The memory device includes a link interface, at least one transmitter coupled to the link interface to transmit the second data, an error protection generator coupled to the transmitter, a storage array for storing data, at least one receiver coupled to the link interface to receive the first data, and error detection logic to determine if the first data received by the memory device contains at least one error and, if an error is detected, to assert an error condition. The error protection generator may dynamically add an error detection code to at least a portion of the second data. The memory device may perform a retry remedial action if a respective error condition is asserted. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold.


In another embodiment, a computer readable medium containing data representing a circuit includes a memory device. The memory device includes a link interface, at least one transmitter coupled to the link interface to transmit the second data, an error protection generator coupled to the transmitter, a storage array for storing data, at least one receiver coupled to the link interface to receive the first data, and error detection logic to determine if the first data received by the memory device contains at least one error and, if an error is detected, to receive an error condition. The error protection generator may dynamically add an error detection code to at least a portion of the second data. The memory device may perform a retry remedial action if a respective error condition is received. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold. The retry remedial action may include re-transmitting the second data to a controller when the controller determines that the second data received by the controller from the memory device contains at least one error, asserts the error condition and notifies the memory device.


In another embodiment, a memory mechanism includes a link interface, a first means coupled to the link interface to transmit the second data, an error protection means coupled to the first means, a storage means for storing data, a second means coupled to the link interface to receive the first data, and error detection means to determine if the first data received by the memory device contains at least one error and, if an error is detected, to assert an error condition. The error protection means may dynamically add an error detection code to at least a portion of the second data. The memory mechanism may perform a retry remedial action if a respective error condition is asserted. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold.


In another embodiment, a memory mechanism includes a link interface, a first means coupled to the link interface to transmit the second data, an error protection means coupled to the first means, a storage means for storing data, a second means coupled to the link interface to receive the first data, and error detection means to determine if the first data received by the memory device contains at least one error and, if an error is detected, to receive an error condition. The error protection means may dynamically add an error detection code to at least a portion of the second data. The memory mechanism may perform a retry remedial action if a respective error condition is received. The retry remedial action may enable transmit and receive data rates greater than a first threshold with an error rate lower than a second threshold. The retry remedial action may include re-transmitting the second data to a controller when the controller determines that the second data received by the controller from the memory device contains at least one error, asserts the error condition and notifies the memory device.


The foregoing descriptions of specific embodiments of the present invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Rather, it should be appreciated that many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.

Claims
  • 1. A memory device, embodied as an integrated circuit, the memory device comprising: at least one memory array;interface circuitry to receive, from a memory controller, write commands, associated data, information with which to detect an error in the write commands, and error correction codes to correct an error in the associated data;array control circuitry to, in fulfilment of the write commands, detect and correct errors in the associated data using the error correction codes and to write the associated data into the at least one memory array; andcommand error detection circuitry to detect existence of error in at least one of the write commands in dependence on the information, and to prevent the writing of the data associated with the at least one of the write commands into the at least one memory array upon detection of the error in the at least one of the write commands.
  • 2. The memory device of claim 1, wherein each array of the at least one memory array comprises one or more arrays of dynamic random access memory (DRAM) cells.
  • 3. The memory device of claim 1, wherein the memory device further comprises circuitry to communicate information identifying the existence of the error in the at least one of the write commands to the memory controller.
  • 4. The memory device of claim 3, wherein the circuitry to communicate the information identifying the existence of the error in the at least one of the write commands is to do so unsolicitedly, via a link not used for exchange of write data or read data with the memory controller.
  • 5. The memory device of claim 1, wherein the information is parity information.
  • 6. The memory device of claim 1, wherein the error correction code is a cyclic code.
  • 7. The memory device of claim 6, wherein: the associated data is to be transferred over a serial communication link;the memory device further comprises a deserializer to deserialize the associated data, to generate deserialized data; andthe array control circuitry is to correct error in the deserialized data, prior to the write of data into the at least one memory array.
  • 8. The memory device of claim 1, further comprising a deserializer, wherein the memory device is to deserialize the command with the deserializer, to generate deserialized information, and is to detect the existence of the error in the at least one of the write commands from the deserialized information.
  • 9. The memory device of claim 1, wherein: the memory device comprises a buffer to queue the write commands for a predetermined period of time corresponding to an integer number of symbol transmission periods; andthe array control circuitry, in absence of detection of error in the write commands by the error detection circuitry, is to write the associated data into the at least one memory array for the queued write commands.
  • 10. The memory device of claim 9, wherein the array control circuitry is to service data from the buffer in fulfilment of a read command directed to data which is in the buffer.
  • 11. The memory device of claim 1, wherein each of the write commands comprises first fields and second fields, and wherein the information identifies the existence of the error in the first fields only but does not permit correction of the error in the first fields.
  • 12. A memory device embodied as an integrated circuit, the memory device, comprising: at least one dynamic random access memory (DRAM) array;interface circuitry to receive, from a memory controller, write commands, associated data, information with which to detect an error in the commands, and error correction codes to correct an error in the associated data;array control circuitry to, in fulfilment of the write commands, detect and correct errors in the associated data using the error correction codes and to write the associated data into the at least one DRAM array; andcommand error detection circuitry to detect existence of error in one or more of the write commands and to cause the memory device to ignore each erroneous write command in dependence on the information, so as to prevent the writing of the associated data into the at least one DRAM array.
  • 13. The memory device of claim 12, wherein the memory device further comprises circuitry to communicate information identifying the existence of the error in one or more of the write commands to the memory controller and to communicate information identifying the existence of an error in the associated data to the memory controller.
  • 14. The memory device of claim 13, wherein the circuitry to communicate the information identifying the existence of the error in the associated data is to do so unsolicitedly, via a link not used for exchange of write data or read data with the memory controller.
  • 15. The memory device of claim 12, wherein the information identifying the existence of error in the one or more of the write commands is parity information.
  • 16. The memory device of claim 12, wherein the error correction code is a cyclic code.
  • 17. The memory device of claim 16, wherein: the associated data is to be transferred over a serial communication link;the memory device further comprises a deserializer to deserialize the associated data, to generate deserialized data; andthe array control circuitry is to correct error in the deserialized data, prior to the write of data into the at least one memory array.
  • 18. The memory device of claim 12, further comprising a deserializer, wherein the memory device is to deserialize the command with the deserializer, to generate deserialized information, and is to detect the existence of the error in the one or more of the write commands from the deserialized information.
  • 19. The memory device of claim 12, wherein: the memory device comprises a buffer to queue the write commands for a predetermined period of time, comprising an integer number of symbol transmission periods; andthe array control circuitry, in absence of detection of error in the write commands by the error detection circuitry, is to write the associated data into the at least one DRAM array for the queued write commands.
  • 20. The memory device of claim 19, wherein the array control circuitry is to service data from the buffer in fulfilment of a read command directed to data which is in the buffer.
  • 21. The memory device of claim 12, wherein each of the write commands comprises first fields and second fields, and wherein the information identifies the existence of the error in the first fields only but does not permit correction of the error in the first fields.
  • 22. A memory device, embodied as an integrated circuit, the memory device comprising: at least one dynamic random access memory (DRAM) array;interface circuitry to receive, from a memory controller, write commands, associated data, first information with which to detect an error in the commands, and second information with which to detect an error in the data;array control circuitry to, in fulfilment of the write commands, write the associated data into the at least one DRAM array; andcommand error detection circuitry to detect existence of error in one or more of the write commands and to cause the memory device to ignore each erroneous command in dependence on the respective first information, so as to prevent the writing of the associated data into the at least one DRAM array;wherein the associated data is to be transferred over a serial communication link and the memory device further comprises a deserializer to deserialize the associated data, to generate deserialized data, and wherein the array control circuitry is to correct existence of at least one error in the deserialized data in dependence on the second information, prior to writing the deserialized data into the at least one DRAM array.
RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 16/120,819, filed Sep. 4, 2018, which is a continuation of U.S. patent application Ser. No. 14/855,271, filed Sep. 15, 2015 (now U.S. patent Ser. No. 10/095,565), which is a continuation of U.S. patent application Ser. No. 14/827,978, filed Aug. 17, 2015 (now U.S. Pat. No. 9,665,430), which is a continuation of U.S. patent application Ser. No. 12/940,942, filed Nov. 5, 2010 (now U.S. Pat. No. 9,141,479), which is a continuation of U.S. patent application Ser. No. 11/145,429, filed Jun. 3, 2005 (now U.S. Pat. No. 7,831,882), each entitled “Memory System with Error Detection and Retry Modes of Operation.” Each aforesaid patent application and/or patent which is incorporated by reference herein in its entirety.

US Referenced Citations (193)
Number Name Date Kind
3585378 Bouricius et al. May 1971 A
3823387 McClellan Jul 1974 A
3893072 D'Antonio et al. Jul 1975 A
4054911 Fletcher et al. Oct 1977 A
4162536 Morley Jul 1979 A
4354225 Frieder et al. Oct 1982 A
4359771 Johnson et al. Nov 1982 A
4363125 Brewer et al. Dec 1982 A
4369510 Johnson et al. Jan 1983 A
4394763 Nagano et al. Jul 1983 A
4434487 Rubinson et al. Feb 1984 A
4456993 Taniguchi et al. Jun 1984 A
4468731 Johnson et al. Aug 1984 A
4527237 Frieder et al. Jul 1985 A
4535455 Peterson Aug 1985 A
4543628 Pomfret Sep 1985 A
4561024 Tamura Dec 1985 A
4584685 Gajjar Apr 1986 A
4596014 Holeman Jun 1986 A
4597084 Dynneson et al. Jun 1986 A
4604750 Manton et al. Aug 1986 A
4648064 Morley Mar 1987 A
4672609 Humphrey et al. Jun 1987 A
4726021 Horiguchi Feb 1988 A
4792923 Nakase et al. Dec 1988 A
4814903 Kulakowski et al. Mar 1989 A
4862462 Zulian Aug 1989 A
4888773 Arlington Dec 1989 A
4899342 Potter et al. Feb 1990 A
4914657 Walter et al. Apr 1990 A
4920539 Albonesi Apr 1990 A
4924456 Maxwell et al. May 1990 A
4970714 Chen et al. Nov 1990 A
5065312 Bruckert et al. Nov 1991 A
5070474 Tuma et al. Dec 1991 A
5173905 Parkinson et al. Dec 1992 A
5193181 Barlow et al. Mar 1993 A
5218691 Tuma et al. Jun 1993 A
5313627 Amini et al. May 1994 A
5347643 Kondo et al. Sep 1994 A
5369651 Marisetty Nov 1994 A
5386517 Sheth Jan 1995 A
5392302 Kemp et al. Feb 1995 A
5404361 Casorso et al. Apr 1995 A
5450609 Schultz et al. Sep 1995 A
5488691 Fuoco et al. Jan 1996 A
5490153 Gregg et al. Feb 1996 A
5502733 Kishi et al. Mar 1996 A
5519883 White et al. May 1996 A
5550988 Sarangdhar et al. Aug 1996 A
5553231 Papenberg et al. Sep 1996 A
5559956 Sukegawa Sep 1996 A
5588112 Dearth et al. Dec 1996 A
5657331 Metzner et al. Aug 1997 A
5687183 Chesley Nov 1997 A
5687368 Nilsen Nov 1997 A
5729550 Nakajima et al. Mar 1998 A
5751932 Horst et al. May 1998 A
5751955 Sonnier et al. May 1998 A
5778419 Hansen et al. Jul 1998 A
5784390 Masiewicz et al. Jul 1998 A
5828677 Sayeed et al. Oct 1998 A
5838899 Leavitt et al. Nov 1998 A
5841795 Olarig et al. Nov 1998 A
5987628 Von Bokern et al. Nov 1999 A
6003151 Chuang Dec 1999 A
6009542 Koller et al. Dec 1999 A
6012136 Brown Jan 2000 A
6012839 Nguyen et al. Jan 2000 A
6029264 Kobayashi et al. Feb 2000 A
6035037 Chaney Mar 2000 A
6038679 Hanson Mar 2000 A
6048090 Zook Apr 2000 A
6065146 Bosshart May 2000 A
6075744 Tsern et al. Jun 2000 A
6081145 Bandai et al. Jun 2000 A
6094732 Takano Jul 2000 A
6115763 Douskey Sep 2000 A
6125470 Hee et al. Sep 2000 A
6147913 Yu et al. Nov 2000 A
6151689 Garcia et al. Nov 2000 A
6189123 Anders Nystrom et al. Feb 2001 B1
6208663 Schramm et al. Mar 2001 B1
6212660 Joeressen et al. Apr 2001 B1
6243845 Tsukamizu et al. Jun 2001 B1
6247144 Macias-Garza et al. Jun 2001 B1
6249894 Lin et al. Jun 2001 B1
6269464 Boussina et al. Jul 2001 B1
6308294 Ghosh et al. Oct 2001 B1
6314541 Seytter et al. Nov 2001 B1
6345370 Kwon Feb 2002 B1
6367048 McAuliffe et al. Apr 2002 B1
6373842 Coverdale et al. Apr 2002 B1
6393504 Leung et al. May 2002 B1
6397365 Brewer et al. May 2002 B1
6438723 Kalliojarvi Aug 2002 B1
6467022 Buckland et al. Oct 2002 B1
6507928 Richardson Jan 2003 B1
6529561 Sipola Mar 2003 B2
6545994 Nelson et al. Apr 2003 B2
6553003 Chang Apr 2003 B1
6560725 Longwell et al. May 2003 B1
6609167 Bastiani et al. Aug 2003 B1
6625749 Quach Sep 2003 B1
6646911 Hidaka Nov 2003 B2
6697986 Kim et al. Feb 2004 B2
6700867 Classon et al. Mar 2004 B2
6704898 Furuskar et al. Mar 2004 B1
6715116 Lester et al. Mar 2004 B2
6725414 Seyyedy Apr 2004 B2
6735726 Muranaka et al. May 2004 B2
6742159 Sakurai May 2004 B2
6745364 Bhatt et al. Jun 2004 B2
6754856 Cofler et al. Jun 2004 B2
6760814 Corrigan Jul 2004 B2
6778454 Duh et al. Aug 2004 B2
6779148 Tanaka Aug 2004 B2
6779150 Walton et al. Aug 2004 B1
6792501 Chen et al. Sep 2004 B2
6823424 Larson et al. Nov 2004 B2
6832340 Larson et al. Dec 2004 B2
6845472 Walker et al. Jan 2005 B2
6851081 Yamamoto Feb 2005 B2
6880103 Kim et al. Apr 2005 B2
6883130 Wilhelmsson et al. Apr 2005 B2
6892159 Weiss et al. May 2005 B2
6909758 Ramesh et al. Jun 2005 B2
6912682 Aoki Jun 2005 B1
6931582 Tamura et al. Aug 2005 B2
6941493 Phelps Sep 2005 B2
6977888 Frenger et al. Dec 2005 B1
6990604 Binger Jan 2006 B2
6996750 Tetreault Feb 2006 B2
7000171 Sako et al. Feb 2006 B2
7007130 Holman Feb 2006 B1
7027539 Yang et al. Apr 2006 B2
7047473 Hwang et al. May 2006 B2
7072307 Tong et al. Jul 2006 B2
7168023 Morgan et al. Jan 2007 B2
7200770 Hartwell et al. Apr 2007 B2
7231580 Shiota et al. Jun 2007 B2
7249289 Muranaka et al. Jul 2007 B2
7257762 Holm et al. Aug 2007 B2
7310757 Ngo et al. Dec 2007 B2
7339759 Hashimoto Mar 2008 B2
7340641 Binger Mar 2008 B1
7418436 Maeda et al. Aug 2008 B2
7421547 Matsui et al. Sep 2008 B2
7519894 Wei et al. Apr 2009 B2
7529965 Ikeuchi et al. May 2009 B2
7548495 Kobayashi Jun 2009 B2
7570447 Koga et al. Aug 2009 B2
7624298 Kasahara et al. Nov 2009 B2
7634707 Leung et al. Dec 2009 B2
7831882 Tsern et al. Nov 2010 B2
8352805 Shaeffer et al. Jan 2013 B2
8555116 Shaeffer et al. Oct 2013 B1
8843805 Goel et al. Sep 2014 B1
9170894 Shaeffer et al. Oct 2015 B2
20010039602 Kanda et al. Nov 2001 A1
20010056567 Sakurai Dec 2001 A1
20020053042 Brown May 2002 A1
20020080660 Kanamitsu et al. Jun 2002 A1
20020144210 Borkenhagen et al. Oct 2002 A1
20030066010 Acton Apr 2003 A1
20030088805 Majni et al. May 2003 A1
20030112685 Duh et al. Jun 2003 A1
20030112687 Tang Jun 2003 A1
20030115417 Corrigan Jun 2003 A1
20030177434 Su et al. Sep 2003 A1
20040002847 Cole et al. Jan 2004 A1
20040073649 Inami et al. Apr 2004 A1
20040088497 Deans et al. May 2004 A1
20040139310 Maeda et al. Jul 2004 A1
20040205433 Gower et al. Oct 2004 A1
20040237001 Schulz et al. Nov 2004 A1
20050018514 Knaack et al. Jan 2005 A1
20050055522 Yagi Mar 2005 A1
20050073899 Gallivan et al. Apr 2005 A1
20050160311 Hartwell Jul 2005 A1
20050262241 Gubbi et al. Nov 2005 A1
20060075291 Takahashi Apr 2006 A1
20060077750 Pescatore Apr 2006 A1
20060098320 Koga et al. May 2006 A1
20060123483 Cohen Jun 2006 A1
20060126460 Kobayashi Jun 2006 A1
20060277434 Tsern et al. Dec 2006 A1
20070002482 Daikokuya et al. Jan 2007 A1
20070011562 Alexander et al. Jan 2007 A1
20070043917 Matsui et al. Feb 2007 A1
20070104327 Macri et al. May 2007 A1
20070150872 Vohra Jun 2007 A1
20120179866 Davis et al. Jul 2012 A1
Non-Patent Literature Citations (24)
Entry
Cardarilli et al., “Design of a Fault Tolerant Solid State Mass Memory,” IEEE Transactions of Reliability, vol. 52, No. 4, Dec. 2003, pp. 476-491. 16 pages.
Dell Computer Corporation et al., “Serial ATA II: Electrical Specification,” Rev. 1, May 26, 2004. 187 pages.
Digital Equipment Corporation, “ESE50 SDI Solid State Disk Service Guide,” Jun. 1993. 132 pages.
Digital Equipment Corporation, “ESE50 SDI Solid State Disk User Guide,” Jun. 1993. 33 pages.
Digital Equipment Corporation, “Hardware Documentation—Machines DEC—VAX Hardware Reference,” printed from http://www.netbsd.org/documentation/hardware/Machines/DEC/vax on May 13, 2005. 91 pages.
Digital Equipment Corporation, “Software Product Description, Product Name: HSC High Performance Software, Ver. 8.6,” Jun. 1996. 6 pages.
Digital Equipment Corporation, “Software Product Description, Product Name: HSC Software, Ver. 6.5,” Jun. 1992. 4 pages.
Grosspietsch et al., “A Memory Interface Chip Designed for Fault Tolerance,” VLSI System Design, Jun. 1987, pp. 112-118. 5 pages.
Grosspietsch et al., “The VLSI Implementation of a Fault-Tolerant Memory Interface—a Status Report,” VLSI '85, 1986, pp. 155-164. 10 pages.
Haas et al., “Advances in Server Memory Technology,” presented at Spring 2005 Intel Developers Forum, San Francisco, CA, Mar. 1, 2005. 31 pages.
Hanna, P., “Error Detection and Correction,” Lecture 9, Queen's University-Belfast, Jan. 3, 2005. 12 pages.
Hodgart et al., “A (16,8) Error Correcting Code (T=2) for Critical Memory Applications,” DASIA2000, Montreal, Canada, May 22-26, 2000. 4 pages.
Kilbuck et al., “Fully Buffered DIMM—Unleashing Server Capacity,” Micron Technology, Inc., Apr. 8, 2005. 199 pages.
May et al., “HiPER: a Compact Narrow Channel Router with Hop-by-Hop Error Correction,” IEEE Transactions on Parallel and Distributed Systems, vol. 13, No. 5, May 2002, pp. 485-498. 14 pages.
MMCA Technical Committee, “The MultiMediaCard,” System Secification, Version 3.31, May 2003. 150 pages.
PCT International Preliminary Report on Patentability dated Aug. 12, 2008 in International Application No. PCT/US2007/011733. 22 pages.
PCT International Search Report and Written Opinion dated Jan. 11, 2008 in International Application No. PCT/US2007/011733. 13 pages.
PCT International Search Report and Written Opinion dated Mar. 6, 2007 in International Application No. PCT/US2006/020698. 16 pages.
Pearson Education, “Error Detection and Correction,” Logic and Computer Design Fundamentals, 3rd Ed., 2004, pp. 1-5. 5 pages.
SanDisk Corporation, “Flash ChipSet Product Manual,” Revision 5, Oct. 1998. 134 pages.
SanDisk Corporation, “SanDisk SD Card: Product Manual,” Version 2.2, Document No. 80-13-00169, Nov. 2004. 123 pages.
Sidiropoulos et al., “A 700 Mb/s/pin CMOS Signaling Interface Using Current Integrating Receivers,” IEEE Journal of Solid-State Circuits, vol. 32, No. 5, pp. 681-690, May 1997. 10 pages.
Siewiorek, Dan, “20 Fault Tolerance & Memory Hierarchy,” Lecture Handout, Carnegie Mellon University, Nov. 23, 1998. 18 pages.
Wicker, Stephen B., “Error Control Systems for Digital Communications and Storage,” Prentice-Hall, 1995, pp. 392-423. 17 pages.
Related Publications (1)
Number Date Country
20200264943 A1 Aug 2020 US
Continuations (5)
Number Date Country
Parent 16120819 Sep 2018 US
Child 16805619 US
Parent 14855271 Sep 2015 US
Child 16120819 US
Parent 14827978 Aug 2015 US
Child 14855271 US
Parent 12940942 Nov 2010 US
Child 14827978 US
Parent 11145429 Jun 2005 US
Child 12940942 US