A memory device includes memory cells to store data values. An example type of memory device is a dynamic random access memory (DRAM) device. As memory manufacturing technology has advanced, the feature size of memory cells has decreased to increase the density of memory cells in a memory device. Increasing the memory cell density provides increased storage capacity in memory device.
Some embodiments are described with respect to the following figures:
As memory cells of memory devices have become denser due to decreasing feature sizes, the memory cells can become more sensitive to various noise sources that may corrupt the data stored in the memory cells. One type of noise source includes disturbance caused by data access operations, where data access operations performed on one group of memory cells may cause disturbance of at least another group of memory cells.
In some examples, a memory device can be a dynamic random access memory (DRAM) device, which has memory cells formed of storage capacitors and access transistors that can be activated or deactivated to control access of respective storage capacitors. A storage capacitor stores a voltage that corresponds to a respective data value (e.g. “0” or “1”). Although reference is made to DRAM devices in the ensuing discussion, it is noted that techniques or mechanisms according to some implementations can also be applied to other types of memory devices that may have other types of storage elements (different from storage capacitors).
In a DRAM device, a data access operation can activate a group (e.g. row or column) of memory cells, extract content from the group, and restore content back to the memory cells of the group. The process of activating and restoring content in the memory cells of the group can lead to disturbance of a neighboring group of cells.
For example, data access operations performed on one group of memory cells may disturb a neighboring group (or neighboring groups) of memory cells. For a given group of memory cells, repeated data access operations to neighboring groups of memory cells can result in repeated disturbances of the given group of memory cells. Such repeated disturbances may cause a data value stored in at least one of the memory cells in the given group to change, which leads to data corruption. For example, if the memory cell stores a voltage corresponding to a “0” or “1” data value, then the repeated disturbances may be sufficient to cause the data value represented by the voltage to change from a “0” to a “1”, or vice versa.
In some examples, a “group” of memory cells can refer to any collection of memory cells. The general notion is that one group of memory cells can be disturbed due to data access operations performed on at least one neighboring group of memory cells. A “data access operation” or “an access of data” refers to an operation in which data of the memory cell is accessed, either as part of a read operation and/or a write operation.
As depicted in
The processing circuit 104 also includes refresh control logic 112, which is able to issue a refresh command 114 to the memory device 102 to perform a refresh operation in the memory device 102. The refresh command 114 can be issued by the refresh control logic 112 in response to accesses of data (communicated over 109). As discussed further below, the refresh control logic 112 is able to issue the refresh command 114 to perform a refresh operation to address the issue of data corruption that may be potentially caused by disturbances due to data access operations in the memory device 102.
Note that the access command 108 and refresh command 114 can be communicated over common address and control lines, in some implementations. Also,
In a memory device such as a DRAM device, the voltage stored in a memory cell 106 can he maintained at the correct level by performing periodic refresh. Refreshing a memory cell refers to reinforcing the voltage in the memory cell to counteract potential corruption of data resulting from current leakage from the storage capacitor of the memory cell. If the voltage stored in the memory cell represents a “1” data value, then refreshing the memory cell causes the voltage to be increased so that the voltage provides a more reliable representation of “1”. On the other hand, if the voltage stored in the memory cell represents a “0” data value, then refreshing the memory cell causes the voltage to be reduced to provide a more reliable representation of “0”. Refreshing memory cells improves the integrity of data values represented by the memory cells. In other examples, a “1” data value can be represented by a low voltage while a “0” data value can be represented by a high voltage.
Periodic refresh can be provided such that any given memory cell 106 in the memory device 102 is refreshed at least once every specified time interval. This periodic refresh is performed to avoid data loss caused by current leakage from a memory cell. Periodic refresh can be governed by a particular refresh policy. In other examples, the particular refresh policy can cause refresh operations that are not periodic, but are instead performed according to some other pattern that still ensures that each memory cell is refreshed at least once within a specified time interval.
In accordance with some implementations, in addition to performing refresh operations according to the particular refresh policy, the refresh control logic 112 can also perform on-demand refresh, based on sampling accesses of data performed by the data access logic 107. The on-demand refresh provides additional refresh operations (in addition to regular refresh operations such as periodic refresh operations) to address the issue of repeated disturbances that may have occurred with respect to a particular group of memory cells since the particular group of memory cells was last accessed or refreshed. Note that the refresh commands 114 from the refresh control logic 107 for performing on-demand refresh are different from normal refresh commands for initiating periodic refresh operations. As discussed further below, an on-demand refresh command 114 can target a specific group (or groups) of memory cells, while a periodic refresh command does not target any specific group for groups) of memory cells (instead, the memory device 102 itself can control which group or groups of memory cells is subject to periodic refresh).
The sampling of data access operations by the refresh control logic 112 involves selecting a sample data access operation from among every N data access operations, where N can be a statically or dynamically configured number that is greater than 1. Selecting a sample data access operation from among every N data access operations can be accomplished by skipping N−1 data access operations before selecting a sample data access operation. In some examples, the value of N can be dynamically configured by varying N randomly (such as by using a pseudorandom number generator) after a data access operation has been sampled. Varying the value of N has the effect of causing the sampling rate to change.
The concept of performing on demand refresh based on sampling of data access operations is according to the notion that disturbance of memory cells occurs in the presence of a relatively large number of accesses of neighboring memory cells. In sampling data access operations, it is more likely that data access operations associated with frequently accessed memory locations are encountered (sampled) than data access operations associated with less frequently accessed memory locations. Thus, it is more likely that any given sampled data access operation is to a memory region that is frequently accessed, which would indicate that neighboring memory cells may be subjected to a relatively high rate of disturbance due to data access operations to the frequently accessed memory region.
In accordance with some implementations, in response to a sample at a data access operation of a particular memory region, an on-demand refresh can be performed to memory cells that are near the particular memory region. For example, the memory cells 106 of the memory device 102 can be arranged in banks. In some implementations, upon detecting a sample of a data access operation to a memory location in a particular bank, the refresh control logic 112 generates a refresh command to cause the memory device 102 to refresh the particular bank, or to refresh portions of multiple banks. In some examples, the refresh command can cause all memory locations of the particular bank to be refreshed. In other examples, instead of refreshing the entire bank, the refresh command can cause a refresh to be performed of some portion of the bank, or some other collection of memory locations that are near the memory location of the sampled data access operation.
As noted above, the refresh control logic 112 can be part of the processing circuit 104 that is in a memory controller (which is external of the memory device 102). In other examples, the refresh control logic 112 can be provided in the memory device 102, or alternatively, the refresh control logic 112 can be provided in the requesting device 110, such as a processor or other device.
Each bank 202 includes an array of memory cells, where the array of memory cells includes rows and columns. In a DRAM device, to access a memory location, a row of memory cells in a bank is activated, and a particular column for multiple particular columns) can be selected to output data from the corresponding memory cell(s).
The memory device 102 includes a data access controller 204, which receives the access command 108 from the processing circuit 104 (
The memory device 102 further includes a refresh controller 208. The refresh controller 208 receives the refresh command 114 from the refresh control logic 112 of the processing circuit 104 of
In response to at least one of the sampled accesses of data, the refresh control process generates (at 304) a refresh command to perform a refresh operation in the memory device 102. As discussed above, this refresh command is used to perform on demand refresh that is used for addressing the issue of data corruption that may potentially be caused by disturbances due to data access operations. The on-demand refresh is performed at memory locations that are considered to be near the memory location that is the target of the sampled data access operation.
The sampling performed by the data access sampler 404 can be based on an output of a counter 406. The counter 406 may be configured to count the number of accesses of data (109). in response to counting N accesses of data (the counter 406 is considered to have expired), the counter 406 activates a trigger indication 405 to the data access sampler 404. Note that the counter 406 can be initialized with the value N, with the counter 406 decrementing with every detected data access. The counter 406 expires when the counter 406 reaches a predefined low value (e.g. zero). In other examples, the counter 406 can be initialized with a predefined low value (e.g. zero), and is incremented with every detected data access. In this latter example, the counter 406 expires when the counter 406 reaches the value N. When the counter 406 expires, the counter 406 is re-initialized with its initial value to count towards the next activation of the trigger indication 405, to allow for another sample to be collected.
In other implementations, the counter 406 can be a timer that expires after some predefined time duration.
The trigger indication 405 from the counter 406 causes the data access sampler 404 to collect a sample of the accesses of data 109. The selected data access sample is provided to a refresh command generator 408, which produces the refresh command 114 in response to the data access sample. Note that the refresh command generator 408 can issue the refresh command 114 upon receiving the data access sample. Alternatively, the refresh command generator 408 can issue the refresh command 114 at a later time, and the later-generated refresh command 114 can be based on the data access sample as well as other data access samples. Multiple data access samples can be considered by the refresh control logic 112 to determine whether or not the refresh command 114 is warranted, based on a decision of whether the multiple data access samples are likely to cause memory cell disturbance. For example, the refresh control logic 112 can determine that a group of memory cells is likely to be disturbed based on detecting frequency of accesses of neighboring memory cells from the data access samples.
In some implementations, it is assumed that there is just one requesting device 110 and one memory device 102. In other implementations, there can be more than one requesting device 110, and/or there can be more than one memory device 102. In implementations where there are multiple requesting devices 110 and/or multiple memory devices 102, the refresh control logic 112 can be configured to include one or multiple instances of the data access sampler 404 and counter 406, and/or one or multiple instances of the refresh command generator 408.
By using refresh control logic that is able to initiate on-demand refresh operations in response to data access operations, effects of disturbances caused by the data access operations can be mitigated. The on-demand refresh can be performed on regions of the memory device 102 that are near memory locations that are more frequently accessed. In this way, the sampling rate of any given refresh of the memory device 102 can be tuned to the actual disturbance pattern.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2012/061257 | 10/22/2012 | WO | 00 |