Certain embodiments of the present description relate generally to devices such as memory employing error correction.
In the course of reading data from a memory, errors may be encountered such that the data read from memory may not match the original data stored in memory. Similarly, as data is written to the memory, errors may be introduced such that the data stored in memory may not match the original data intended to be written. Also, data may become corrupted while stored in a memory.
Various techniques are frequently employed for purposes of detecting such errors and correcting them if possible. For example, a memory controller may have Error Correction (or Correcting) Code (ECC) encoder logic for purposes of encoding the data before it is written into the memory cells of the memory. Such encoding frequently includes adding redundant data such as check bits, for example, to the original write data. The encoded data when subsequently read from the memory, may be decoded by a decoder of the ECC logic of the memory controller to restore the original write data if errors are detected. The ECC decoder logic can frequently detect errors which may have occurred in transmission to or from the memory or while the data was stored in memory, and correcting them if not too severe. Generally, the more redundant data added to the write data by the ECC encoder logic, the more robust the error detection and correcting capabilities of the ECC decoder logic of the memory controller. For example, by adding additional check bits to the encoded data, the number of errors which may be detected and corrected may be increased.
A memory typically has an associated Raw Bit Error Rate (RBER). Thus, the error correction scheme selected for a memory has typically been devised to provide an error detection and correction capability at a sufficiently high level to bring the error rate down to an acceptable level. For example, in some applications, an error rate of less than one error per 100,000 bits (often expressed as “1E-6”) may be acceptable.
There are various known ECC techniques for detecting and correcting data errors including for example, block codes such as Reed-Solomon error correction codes, for example, which process data on a block-by-block basis, and convolutional codes, for example, which process data on a bit-by-bit basis. In some applications such as deep space transmission of data between Earth and space probes, and compact disk recording and playback devices, for example, it is known to encode data twice using two different ECC schemes which are concatenated together as an outer ECC scheme and an inner ECC scheme, to operate in sequence on the data. By concatenating the ECC techniques, error detection and correction can be enhanced in some applications, as compared to employing just one of the ECC techniques alone.
Embodiments of the present disclosure are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
In the description that follows, like components have been given the same reference numerals, regardless of whether they are shown in different embodiments. To illustrate an embodiment(s) of the present disclosure in a clear and concise manner, the drawings may not necessarily be to scale and certain features may be shown in somewhat schematic form. Features that are described and/or illustrated with respect to one embodiment may be used in the same way or in a similar way in one or more other embodiments and/or in combination with or instead of the features of the other embodiments.
Temperature dependent, multiple mode error correction in accordance with one aspect of this disclosure, is employed for a memory circuit containing arrays of memory cells. In one aspect, it is believed that temperature dependent, multiple mode error correction in accordance with the present disclosure can reduce power consumption of the memory in one or more modes of operation. It is appreciated that other aspects and advantages may be achieved, depending upon the particular application.
In one embodiment, a temperature sensor coupled to an array is configured to provide an output signal which is a function of the temperature of the array of memory cells. Multiple mode error correction code (ECC) logic having an input coupled to an output of the temperature sensor, is configured to encode write data for the array of memory cells in an error correction code in one of a plurality of error correction modes as a function of the temperature of the array of memory cells.
For example, ECC encoder logic in accordance with one embodiment, includes a first mode ECC encoder logic and a second mode ECC encoder logic. The first mode ECC encoder logic, that is, a high temperature mode (HTM) ECC encoder logic in one example, encodes write data at a first ECC level which is a relatively high ECC level to provide a relatively high degree of error detection and correction for higher temperature operating levels of the memory at which higher RBER is expected. In one embodiment, the HTM encoder logic encodes write data in a relatively long ECC code word encoding to achieve the relatively high degree of error detection and correction for higher temperature operating levels of the memory. An example of a relatively high degree of error detection and correction is a double detection, double correction scheme capable of both detecting and correcting double errors in encoded data. Other examples of suitable high temperature error correction include five bit error correction. Still other examples include seven bit error correction which is believed to be able to lower the error rate to as low as 1E-9 at 100 degrees Celsius. It is appreciated that the level of error correction in the various temperature modes may vary, depending upon the particular application.
Conversely, the second mode ECC encoder logic, that is, a low temperature mode (LTM) ECC encoder logic in one example, encodes write data at a second ECC level which is a relatively low ECC level to provide a relatively lower degree of error detection and correction for lower level operating temperatures of the memory at which lower RBER is expected. In one embodiment, the LTM ECC encoder logic encodes write data in a relatively short ECC code word encoding to achieve the relatively lower degree of error detection and correction for lower level operating temperatures of the memory. An example of a relatively low degree of error detection and correction is a double detection, single correction scheme capable of detecting double errors but correcting only single errors in encoded data. It is believed that power consumption of the memory may be reduced when operating in a lower level ECC correction mode such as the LTM mode, for example at which lower RBER is expected.
In another aspect, ECC decoder logic in accordance with one embodiment, includes a first mode ECC decoder logic and a second mode ECC decoder logic. The first mode ECC decoder logic, that is, a high temperature mode (HTM) ECC decoder logic in one example, is configured to decode read data from the memory which was encoded in a relatively long ECC code word encoding in the relatively high ECC level to provide a relatively high degree of error detection and correction for higher temperature operating levels of the memory at which higher RBER is expected. Similarly, the second mode ECC decoder logic, that is, a low temperature mode (LTM) ECC decoder logic in one example, is configured to decode read data from the memory which was encoded in a relatively short ECC code word encoding in the relatively low ECC level to provide a relatively lower degree of error detection and correction for lower temperature operating levels of the memory at which higher RBER is expected. It is believed that power consumption may be reduced at lower operating temperatures by utilizing the LTM ECC decoder logic to decode read data encoded in the relatively short ECC code word.
In still another aspect, the ECC encoder logic is configured to set an encoder status flag to indicate whether the write data associated with the encoder status flag was encoded in a relatively long ECC code word encoding in the relatively high ECC level or was encoded in a relatively short ECC word encoding at the second error correction level lower than the first error correction level. The encoder status flag may be used, in one embodiment, to facilitate a transition from one mode to another such as, for example, from the low temperature mode (LTM) to the high temperature mode (HTM).
For example, the temperature dependent, multiple mode ECC logic may be further configured to enter the first high temperature ECC mode in response to a temperature sensor output signal indicating that the temperature of the array of memory cells has risen to a temperature level that exceeds a threshold level, and to detect whether the encoder status flag has been set for a line of write data. If so, the multiple mode ECC logic may re-encode write data at the first error correction level in a relatively long ECC code word encoding in response to a detection of the encoder status flag being set for the associated write data, indicating that the write data had previously been encoded at the second error correction level in a relatively short ECC code word encoding. Upon completion of this transition to the high temperature (HTM) ECC mode, write data may be encoded and read data decoded at the first error correction level in the high temperature (HTM) ECC mode at which higher RBER is expected.
In still another aspect, the ECC encoder is logic is configured to set a decoder status flag to indicate whether the read data associated with the decoder status flag may be decoded using the relatively long ECC code word decoding in the relatively high ECC level or may be decoded using the relatively short ECC code word decoding at the second error correction level lower than the first error correction level. The decoder status flag may be used, in one embodiment, to facilitate a transition from one mode to another such as, for example, from the high temperature mode (HTM) to the low temperature mode (LTM).
For example, the multiple mode ECC logic may be further configured to enter the second error correction mode (LTM) in response to the temperature sensor output signal indicating that the temperature level of the array of memory cells has fallen below a threshold level, and to detect whether the decoder status flag has been set for read data to indicate that the read data associated with the decoder status flag may be decoded using the relatively short ECC code word decoding in the relatively low ECC level. If so, the multiple mode ECC logic may read and decode write data at the second error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data may be decoded at the second error correction level in the LTM ECC mode.
Alternatively, if the multiple mode ECC logic detects that the decoder status flag has been set to indicate that the read data associated with the decoder status flag may be decoded using the relatively long ECC code word decoding in the relatively high ECC level, the multiple mode ECC logic reads and decodes the write data at the first error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data may not be decoded at the second error correction level, and resets the decode status flag to indicate that the read data may subsequently be decoded at the second error correction level.
Although certain embodiments are described herein in connection with two temperature dependent modes, it is appreciated that temperature dependent, multiple mode error correction may be applied to embodiments having more than two temperature modes. For example, a low temperature mode may have a relatively low level of error correction for low temperature operation, such as double error detection and single error correction, for example. An intermediate temperature mode may have a relatively higher level of error correction, such as five bit error correction for an intermediate temperature range such as 60-100 degrees C. A third and higher temperature mode may have a still higher level of error correction such as seven bit error correction, for example, for a still higher temperature range in excess of 100 degrees Celsius, for example. Encoding and decoding operations are conducted in accordance with the applicable level of the error correction capability of the associated temperature dependent mode. It is appreciated that a greater or fewer number of temperature modes may be utilized in temperature dependent, multiple mode error correction in accordance with the present description, depending upon the particular application.
It is believed that temperature dependent, multiple mode error correction in accordance with one aspect of this disclosure may be applied to systems employing a variety of types of memory devices including non-volatile memory such as spin torque transfer (STT) Random Access Memory (RAM), three dimensional (3D) crosspoint, phase change memory, magnetic RAM, a resistive memory, nanowire memory, ferro-electric transistor random access memory (FeTRAM), flash memory such as NAND or NOR, and volatile memory such as 2D RAM, for example. Other types of memory may be suitable as well. Temperature dependent, multiple mode error correction in accordance with embodiments described herein may be used either in stand-alone memory controllers and memory circuits or logic arrays, or can be embedded in microprocessors, digital signal processors (DSPs) or other circuits transmitting or receiving data. Additionally, it is noted that although systems and processes are described herein primarily with reference to microprocessor based systems in the illustrative examples, it will be appreciated that in view of the disclosure herein, certain aspects, architectures, and principles of the disclosure are equally applicable to other types of devices, memory and logic devices.
Turning to the figures,
Storage of the peripheral components 50 may be, for example, non-volatile storage, such as STT RAM, solid-state drives, magnetic disk drives, optical disk drives, a tape drive, flash memory, etc. The storage may comprise an internal storage device or an attached or network accessible storage. The microprocessor 20 is configured to write data in and read data from the memory 40. Programs in the storage are loaded into the memory and executed by the processor. A network controller or adapter enables communication with a network, such as an Ethernet, a Fiber Channel Arbitrated Loop, etc. Further, the architecture may, in certain embodiments, include a video controller configured to render information on a display monitor, where the video controller may be embodied on a video card or integrated on integrated circuit components mounted on a motherboard or other substrate. An input device is used to provide user input to the processor, and may include a keyboard, mouse, pen-stylus, microphone, touch sensitive display screen, input pins, sockets, or any other activation or input mechanism known in the art. An output device is capable of rendering information transmitted from the processor, or other component, such as a display monitor, printer, storage, output pins, sockets, etc. The network adapter may embodied on a network card, such as a Peripheral Component Interconnect (PCI) card, PCI-express, or some other I/O card, or on integrated circuit components mounted on a motherboard or other substrate.
One or more of the components of the device 10 may be omitted, depending upon the particular application. For example, a network router may lack a video controller, for example. Any one or more of the memory devices 25, 40, and the other devices 10, 30, 50 may include temperature dependent, multiple mode error correction in accordance with the present description.
In the embodiment of
Each memory cell 64 is capable of storing a bit of data representing a logical one or logical zero value. The memory controller 30 performs read operations and write operations to the memory cells 64. The STT RAM memory circuit 40 may also include a row decoder, a timer device and I/O devices (or I/O outputs). Bits of the same memory word may be separated from each other for efficient I/O design. Thus, the array 60 of memory cells 64 may be subdivided, either logically or physically into a main array 60a and one or more subarrays 60b of memory cells as shown in
A multiplexer (MUX) may be used to connect each column to the required circuitry during a READ operation. Another MUX may be used to connect each column to a write driver during a WRITE operation.
As explained in greater detail below, the memory of this embodiment, includes multiple mode error correction code (ECC) logic 70 which may be disposed on the same integrated circuit as that of the array 60 or may be disposed on other integrated circuits such as the memory controller 40 or may be distributed over more than one integrated circuit. In this embodiment, a temperature sensor 80 is disposed on the same integrated circuit as the array 60 to sense the temperature of the array 60 of memory cells. However, it is appreciated that in other embodiments, the temperature sensor 80 may be disposed on other integrated circuit but positioned in a suitable manner to be thermally coupled to the array 60 to facilitate sensing the temperature of the array 60.
The multiple mode ECC logic 70 is configured to perform described operations using appropriate hardware, software or firmware, or various combinations thereof.
In one operation, an ECC mode controller logic such as the ECC mode controller logic 402 (
If it is determined (block 306) that the temperature of the memory array 60 being monitored has not exceeded the threshold, the ECC mode controller logic 402 (
In the high temperature ECC mode, a determination (block 314,
Also, as explained in greater detail below, in some embodiments, some processing tasks may be undertaken to prepare for a transition to another mode. As such, a displacement in thresholds may facilitate completing such preparations prior to reaching temperatures which may significantly increase RBER, for example. The temperature threshold of the determination of block 314 may be a predetermined value or may be defined by a user input, for example. It is appreciated that the particular value of the temperature threshold of the determine 314 may vary, depending upon the particular application.
If it is determined (block 314) that the temperature of the memory array 60 being monitored has not dropped below the applicable threshold, the ECC mode controller logic 402 (
Upon completion of the preparation of the memory for the high temperature operations, memory I/O operations (block 334) may be processed in a high temperature ECC mode. For example, a memory controller such as the memory controller 30 (
One example of a suitable error correction code is a Reed-Solomon error correction code which is a block code which encodes blocks of data in symbols to facilitate error detection and correction. It is appreciated that other types of error correction codes may be employed in multiple mode error correction in accordance with the present description. For example, it is believed that both block and convolutional codes may be suitable as a long code for multiple mode error correction in accordance with the present description. Also, it is believed that both systematic and nonsystematic codes may be suitable as a long code for multiple mode error correction in accordance with the present description. In a systematic scheme, an encoder attaches to the original write data a number of check bits (such as parity data, for example), which are derived from the data bits by an appropriate deterministic algorithm. In a system that uses a non-systematic code, the original message is transformed into an encoded message that typically has at least as many bits as the original message. Additional examples of codes which may be suitable as long codes are concatenated codes, recursive codes, non-recursive codes, repetition codes, Hamming codes, multidimensional parity-check codes, turbo codes, low-density parity-check codes (LDPC), etc. The high temperature mode (HTM) ECC encoder logic 410 is configured to encode write data for the memory circuit in a long word error correction code (such as a Reed-Solomon error correction code, for example) encoding of the temperature dependent, multiple mode error correction in accordance with one embodiment of the present description.
In one embodiment, the high temperature mode (HTM) ECC encoder logic 410 encodes the write data in a long error correction code word encoding which adds redundant data such as check bits for example. Examples of redundant check bit data which may be added for purposes of error detection and correction include parity bits, repetition codes, checksums and cyclic redundancy checks (CRCs). The write data encoded with the long error correction code word encoding may be stored in a memory such as the memory array 60 (
In the illustrated embodiment of
In this embodiment, the main array 60a includes a field 502 in which the bits of the original write data of each line of encoded data may be stored. In one example, the field 502 of a cache memory may be 512 bits long, for example. It is appreciated that in other embodiments, the field 502 may be longer or shorter, depending upon the particular application.
Another field, designated the ECC data field 504, stores the error correction bits of the ECC encoding for each line of data stored in the memory array 60. In this embodiment, the ECC data field 504 spans over both the main array 60a and the sub-array 60b and includes a subfield 504a which likewise, spans over both the main array 60a and the sub-array 60b, and is utilized to store the check bits of the long ECC word encoding in the high temperature error correction mode. In the embodiment of
The long ECC word check bits field 504a in turn includes a first subfield 504a1 utilized to store a first portion of the check bits of the ECC encoding in the high temperature error correction mode, and a second subfield 504a2 utilized to store the remaining check bits of the ECC encoding in the high temperature error correction mode. In one embodiment, the check bits of the subfield 504a1 may be utilized as both the check bits of the short ECC word encoding in the low temperature mode, and may also be used as the first portion of the check bits of the long ECC word encoding in the high temperature mode. Hence, the check bits of the field 504a1 are referred to as the short word ECC check bits but may be utilized as both the short word ECC check bits and also as the first portion of the long word ECC check bits. In one example, the field 504a1 of a cache memory may be 10 bits long, for example. It is appreciated that in other embodiments, the field 504a1 may be longer or shorter, depending upon the particular application.
The check bits of the subfield 504a2 are the second portion of the check bits of the long word ECC encoding in the high temperature mode and thus the check bits of the field 504a2 are referred to herein as the long word extension check bits or ECC extension data. In one example, the field 504a2 of a cache memory may be 61 bits long, for example. It is appreciated that in other embodiments, the field 504a2 may be longer or shorter, depending upon the particular application.
Accordingly, the check bits of the long ECC word encoding of the high temperature mode includes both the short word ECC check bits of the subfield 504a1 and the long word extension ECC check bits of the subfield 504a2, of the long word ECC check bits subfield 504a. Conversely, the check bits of the short ECC word encoding of the low temperature mode may include just the short word ECC check bits of the subfield 504a1 of the ECC check bits field 504. Accordingly, in the low temperature error correction mode, the active check bits are stored in the main subarray 60a and do not extend into the subarray 60b, that is are not stored in the subarray 60b. Thus, the check bits stored in the subarray 60b are inactive and the subarray 60b may be permitted to be dormant in which operation is suspended or otherwise operated at reduced or no power, to provide for reduced power consumption of the memory array 60 in the low temperature mode. In addition, because of the short word encoding and decoding, the LTM encoder and decoder may have reduced complexity as compared the counterpart HTM encoder and decoder, such that power consumption by the LTM encoder and decoder may be reduced as compared to that of the HTM encoder and decoder, in some applications.
The write data encoded with the long error correction code word encoding may subsequently be read, decoded and checked for errors. Thus, as another example of an I/O operation, a memory controller such as the memory controller 30 (
More specifically, the encoded read data is decoded from the high temperature ECC code encoding of the high temperature ECC encoder logic. As previously mentioned, the high temperature, long word ECC code may be a Reed-Solomon error correction code, for example, but it is appreciated that other error correction codes may be employed in a high temperature, long word error correction code of multiple mode error correction in accordance with the present description.
The ECC decoder logic 416 is configured to decode read data from the memory circuit, which has been encoded in accordance with the high temperature, long word error correction code encoding. As shown in
In another operation of
As shown in
As previously mentioned, the long word ECC code of one embodiment may be a Reed-Solomon code, for example. Numerous algorithms may be suitable for decoding Reed-Solomon ECC codes. Examples may include Peterson decoders, Berlekamp-Massey decoders, Euclidean decoders, time domain decoders, frequency domain decoders, etc. An outer ECC decoder logic may be implemented in one or more of hardware, software and firmware.
In another operation, a determination (block 346,
In the example of
Accordingly, the multiple mode encoder logic 70 (
Once the line of data has been re-encoded in a high temperature, long word ECC encoding, the associated encode status bit or bits of the encode status field 510c may be set (block 356) to indicate that the associated line had been encoded in a high temperature, long word ECC encoding. In addition, an associated decode status bit or bits of the decode status field 510b may be set (block 356) to indicate that the associated line should be decoded in a high temperature, long word ECC decoding. Conversely, if it is determined (block 352,
If it is determined (block 358) that additional lines of the cache memory remain to be scanned, the scanning and re-encoding from low temperature, short word ECC encoding to high temperature, long word ECC encoding may be repeated for each line of cache memory as appropriate until all the lines of cache memory have been scanned and re-encoded as needed. Once all the lines of cache memory have been scanned and re-encoded as needed, the multiple mode error correction logic may proceed to handle I/O operations (block 334,
Upon completion of the preparation (if any) of the memory for the low temperature operations, memory I/O operations (block 366) may be processed in a low temperature ECC mode. For example, a memory controller such as the memory controller 30 (
One example of a suitable low temperature, short word error correction code is a Reed-Solomon error correction code which is a block code which encodes blocks of data in symbols to facilitate error detection and correction. It is appreciated that other types of error correction codes may be employed in low temperature mode, multiple mode error correction in accordance with the present description. For example, it is believed that both block and convolutional codes may be suitable as a short word code for multiple mode error correction in accordance with the present description. Also, it is believed that both systematic and nonsystematic codes may be suitable as a short word code for multiple mode error correction in accordance with the present description. Additional examples of codes which may be suitable as short word codes are recursive codes, non-recursive codes, repetition codes, Hamming codes, multidimensional parity-check codes, turbo codes, low-density parity-check codes (LDPC), etc. The low temperature mode (LTM) ECC encoder logic 430 is configured to encode write data for the memory circuit in a short word error correction code (such as a Reed-Solomon error correction code, for example) of the temperature dependent, multiple mode error correction in accordance with one embodiment of the present description.
In one embodiment, the low temperature mode (LTM) ECC encoder logic 430 encodes the write data in a short error correction code word which adds redundant data such as check bits for example. Examples of redundant check bit data which may be added for purposes of error detection and correction include parity bits, repetition codes, checksums and cyclic redundancy checks (CRCs). The write data encoded with the check bits of the short error correction code word encoding may be stored (block 370,
As previously mentioned, the long ECC word check bits field 504a includes a first subfield 504a1 utilized to store a first portion of the check bits of the ECC encoding in the high temperature error correction mode. In the low temperature, short word ECC encoding, the check bits generated may be stored in the same field 504a1 which is designated the short word ECC data field 504a1 in
In another operation, the encode status field 510c for the line of data written to memory may be set (block 372) to indicate that the line of data was encoded in a low temperature, short word ECC encoding. Similarly, the decode status field 510b may be set (block 372) for the line of data written to memory to indicate that the line of data is to be decoded in a low temperature, short word ECC decoding.
The write data encoded in a multiple mode ECC encoding may subsequently be read, decoded and checked for errors. Thus, as another example of an I/O operation, a memory controller such as the memory controller 30 (
Thus, the encoded read data is decoded from the low temperature, short word ECC encoding provided by the low temperature ECC encoder logic. As previously mentioned, the low temperature, short word ECC code may be a Reed-Solomon error correction code, for example, but it is appreciated that other error correction codes may be employed in a low temperature, short word error correction code decoding of multiple mode error correction in accordance with the present description.
In another operation of
As shown in
As previously mentioned, the low temperature, short word ECC code of one embodiment may be a Reed-Solomon code, for example. Numerous algorithms may be suitable for decoding Reed-Solomon ECC codes. Examples may include Peterson decoders, Berlekamp-Massey decoders, Euclidean decoders, time domain decoders, frequency domain decoders, etc. An outer ECC decoder logic may be implemented in one or more of hardware, software and firmware.
As previously mentioned, a memory controller such as the memory controller 30 (
In the embodiment of
In another operation, a determination (block 384,
Similarly,
Thus, in both of the embodiments of
However, because the low temperature, short word ECC encoding of the embodiments of
Once the line of data has been re-encoded in a low temperature, short word ECC encoding, the associated encode status bit or bits of the encode status field 510c may be set (block 392) to indicate that the associated line had been encoded in a low temperature, short word ECC encoding. In addition, associated decode status bit or bits of the decode status field 510b may be set (block 392) to indicate that the associated line should be decoded in a low temperature, short word ECC decoding.
If it is determined (block 394) that additional lines of the cache memory remain to be scanned, the scanning and re-encoding from high temperature, long word ECC encoding to low temperature, short word ECC encoding may be repeated for each line of cache memory as appropriate until all the lines of cache memory have been scanned and re-encoded. Once all the lines of cache memory have been scanned and re-encoded, the multiple mode error correction logic may proceed to handle I/O operations as described above in accordance with the low temperature mode.
It is seen from the above, that temperature dependent, multiple mode error correction in accordance with the present description, may reduce power consumption in a low temperature mode. Other aspects and advantages may be achieved, depending upon the particular application.
The following examples pertain to further embodiments.
Example 1 is apparatus, comprising: an array of memory cells; a temperature sensor coupled to the array and having an output, said temperature sensor configured to provide an output signal at said output wherein the output signal is a function of the temperature of the array of memory cells; a memory controller electrically coupled to the array of cells of the memory circuit and configured to control the array of memory cells; and multiple mode error correction code logic having an input coupled to the temperature sensor output, said multiple mode error correction code logic configured to encode write data for the array of memory cells in an error correction code in one of a plurality of error correction modes as a function of the temperature of the array of memory cells.
In Example 2, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein said plurality of error correction modes includes a first error correction mode at a first error correction level at a first memory cell array temperature level, and further includes a second error correction mode at a second error correction level lower than the first error correction level at a second memory cell array temperature level lower than the first memory cell array temperature level.
In Example 3, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein the array of memory cells includes a subarray, and wherein the multiple mode error correction code logic is configured to encode write data for the array of memory cells in the first error correction mode at the first error correction level to provide an error correction code word having a first length, at least a portion of which is stored in the subarray of memory cells, and is configured to encode write data for the array of memory cells in the second error correction mode at the second error correction level to provide an error correction code word having a second length shorter than the first length and is not stored within the subarray, is configured to decode read data from the array of memory cells encoded in an error correction code word having the first length, and is configured to decode read data from the array of memory cells encoded in an error correction code word having a second length shorter than the first length.
In Example 4, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to set an encode status flag to indicate whether the write data associated with the encode status flag was encoded at the first error correction level or at the second error correction level lower than the first error correction level, and wherein said multiple mode error correction code logic is further configured to enter the first error correction mode in response to the temperature sensor output signal indicating that the temperature of the array of memory cells has exceeded a threshold level, and to scan the array of memory cells to detect whether the encode status flag has been set for write data and to re-encode write data at the first error correction level in response to a detection of the encode status flag being set for the associated write data indicating that the associated write data had been encoded at the second error correction level.
In Example 5, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to reset an encode status flag for write data re-encoded at the first error correction level to indicate that the write data associated with the reset encode status flag was re-encoded at the first error correction level higher than the second error correction level.
In Example 6, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein the multiple mode error correction code logic is further configured to set a decode status flag for read data to indicate the error correction level at which the associated read data may be decoded.
In Example 7, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to: enter the second error correction mode in response to the temperature sensor output signal indicating that the temperature of the array of memory cells has fallen below a threshold level; detect the decode status flag; read and decode data at the second error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data may be decoded at the second error correction level, and read and decode write data at the first error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data is to be decoded at the first error correction level, and reset the decode status flag to indicate that the read data may be decoded at the second error correction level.
In Example 8, the subject matter of Examples 1-8 (excluding the present example) can optionally include wherein the array of memory cells is a spin-transfer-torque (STT) random-access-memory (RAM) cache.
Example 9 is directed to a computing system for use with a display, comprising: a memory wherein the memory includes a memory circuit having an array of memory cells and a memory controller configured to control the array of memory cells; a processor configured to write data in and read data from the memory; a video controller configured to display information represented by data in the memory; a temperature sensor coupled to the array and having an output, said temperature sensor configured to provide an output signal at said output wherein the output signal is a function of the temperature of the array of memory cells; and multiple mode error correction code logic having an input coupled to the temperature sensor output, said multiple mode error correction code logic configured to encode write data for the array of memory cells in an error correction code in one of a plurality of error correction modes as a function of the temperature of the array of memory cells.
In Example 10, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein said plurality of error correction modes includes a first error correction mode at a first error correction level at a first memory cell array temperature level, and further includes a second error correction mode at a second error correction level lower than the first error correction level at a second memory cell array temperature level lower than the first memory cell array temperature level.
In Example 11, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein the array of memory cells includes a subarray, and wherein the multiple mode error correction code logic is configured to encode write data for the array of memory cells in the first error correction mode at the first error correction level to provide an error correction code word having a first length, at least a portion of which is stored in the subarray of memory cells, and is configured to encode write data for the array of memory cells in the second error correction mode at the second error correction level to provide an error correction code word having a second length shorter than the first length and is not stored within the subarray, is configured to decode read data from the array of memory cells encoded in an error correction code word having the first length, and is configured to decode read data from the array of memory cells encoded in an error correction code word having a second length shorter than the first length.
In Example 12, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to set an encode status flag to indicate whether the write data associated with the encode status flag was encoded at the first error correction level or at the second error correction level lower than the first error correction level, and wherein said multiple mode error correction code logic is further configured to enter the first error correction mode in response to the temperature sensor output signal indicating that the temperature of the array of memory cells has exceeded a threshold level, and to scan the array of memory cells to detect whether the encode status flag has been set for write data and to re-encode write data at the first error correction level in response to a detection of the encode status flag being set for the associated write data indicating that the associated write data had been encoded at the second error correction level.
In Example 13, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to reset an encode status flag for write data re-encoded at the first error correction level to indicate that the write data associated with the reset encode status flag was re-encoded at the first error correction level higher than the second error correction level.
In Example 14, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein the multiple mode error correction code logic is further configured to set a decode status flag for read data to indicate the error correction level at which the associated read data may be decoded.
In Example 15, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein said multiple mode error correction code logic is further configured to: enter the second error correction mode in response to the temperature sensor output signal indicating that the temperature of the array of memory cells has fallen below a threshold level; detect the decode status flag; read and decode data at the second error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data may be decoded at the second error correction level, and read and decode write data at the first error correction level in response to a detection of the decode status flag being set for the associated read data to indicate that the read data is to be decoded at the first error correction level, and reset the decode status flag to indicate that the read data may be decoded at the second error correction level.
In Example 16, the subject matter of Examples 9-16 (excluding the present example) can optionally include wherein the array of memory cells is a spin-transfer-torque (STT) random-access-memory (RAM) cache.
Example 17 is a method, comprising: sensing the temperature of an array of memory cells using a temperature sensor coupled to the array; and performing error correction processing of data using multiple mode error correction code logic, said processing including encoding write data for the array of memory cells in an error correction code in one of a plurality of error correction modes as a function of the temperature of the array of memory cells.
In Example 18, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein said encoding write data for the array of memory cells in an error correction code in one of a plurality of error correction modes includes encoding write data in a first error correction mode at a first error correction level at a first memory cell array temperature level, and further includes encoding write data in a second error correction mode at a second error correction level lower than the first error correction level at a second memory cell array temperature level lower than the first memory cell array temperature level.
In Example 19, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein the array of memory cells includes a subarray, and wherein the encoding write data in a first error correction mode includes providing an error correction code word having a first length, and storing at least a portion of the error correction code word having the first length in the subarray of memory cells, and encoding write data in a second error correction mode includes providing an error correction code word having a second length shorter than the first length, storing the error correction having the second length outside the subarray and suspending operation of the subarray, said processing further including decoding read data from the array of memory cells encoded in an error correction code word having the first length, and decoding read data from the array of memory cells encoded in an error correction code word having a second length shorter than the first length.
In Example 20, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein said processing further includes setting an encode status flag to indicate whether the write data associated with the encode status flag was encoded at the first error correction level or at the second error correction level lower than the first error correction level, and further includes entering the first error correction mode in response to the temperature sensor indicating that the temperature of the array of memory cells has exceeded a threshold level, and scanning the array of memory cells to detect the encode status flag and re-encoding write data at the first error correction level in response to a detection of the encode status flag for the associated write data indicating that the associated write data had been encoded at the second error correction level.
In Example 21, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein the processing further includes resetting an encode status flag for write data re-encoded at the first error correction level to indicate that the write data associated with the reset encode status flag was re-encoded at the first error correction level higher than the second error correction level.
In Example 22, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein the processing further includes setting a decode status flag for read data to indicate the error correction level at which the associated read data may be decoded.
In Example 23, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein the processing further includes: entering the second error correction mode in response to the temperature sensor indicating that the temperature of the array of memory cells has fallen below a threshold level; detecting the decode status flag; reading and decoding read data at the second error correction level in response to a detection of the decode status flag indicating that the read data may be decoded at the second error correction level, and reading and decoding read data at the first error correction level in response to a detection of the decode status flag indicating that the read data is to be decoded at the first error correction level, and resetting the decode status flag to indicate that the read data may be decoded at the second error correction level.
In Example 24, the subject matter of Examples 17-24 (excluding the present example) can optionally include wherein the array of memory cells is a spin-transfer-torque (STT) random-access-memory (RAM) cache.
Example 26 is an apparatus comprising means to perform a method as claimed in any preceding example.
The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as computer program code maintained in a “computer readable storage medium”, where a processor may read and execute the code from the computer storage readable medium. The computer readable storage medium includes at least one of electronic circuitry, storage materials, inorganic materials, organic materials, biological materials, a casing, a housing, a coating, and hardware. A computer readable storage medium may comprise, but is not limited to, a magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), Solid State Devices (SSD), etc. The code implementing the described operations may further be implemented in hardware logic implemented in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The program code embedded on a computer readable storage medium may be transmitted as transmission signals from a transmitting station or computer to a receiving station or computer. A computer readable storage medium is not comprised solely of transmissions signals. Those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise suitable information bearing medium known in the art. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise any tangible information bearing medium known in the art.
In certain applications, a device in accordance with the present description, may be embodied in a computer system including a video controller to render information to display on a monitor or other display coupled to the computer system, a device driver and a network controller, such as a computer system comprising a desktop, workstation, server, mainframe, laptop, handheld computer, etc. Alternatively, the device embodiments may be embodied in a computing device that does not include, for example, a video controller, such as a switch, router, etc., or does not include a network controller, for example.
The illustrated logic of figures may show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, operations may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.