Volatile memory devices, such as dynamic random access memory devices, maintain stored data while the storage devices are being electrically powered. The electric power is utilized to refresh the stored data. Some volatile memory devices refresh data several times every second. To reduce power consumption, memory controllers sometimes transmit commands to the volatile memory devices, across a command bus, directing the volatile memory device to enter a lower power state.
Volatile memory devices, such as dynamic random access memory devices, are often used to temporarily store data. To maintain the stored data, the volatile memory devices consume electrical power. To reduce power consumption, memory controllers sometimes transmit commands to the volatile memory devices, across a command bus, directing the volatile memory device to enter a lower power state. Such commands increase traffic on the command bus, consuming valuable bandwidth.
Volatile memory device 20 comprises memory array 30, counter 40 and control element 50. Memory array 30 comprises an array of volatile charge storage cells. Such storage cells temporarily store data, wherein the data is periodically refreshed. One example of memory array 30 is a dynamic random access memory array. In other implementations, memory array 30 may comprise other presently developed or future developed volatile memory arrays such as those comprising spin transfer torque memory arrays.
Counter 40 comprises a component, incorporated as part of memory device 20, that tracks a time or a lapse of time since the volatile memory device 20 last received a read or write command, such as a last time that device 20 received a read or write command from a memory controller. In one implementation, counter 240 comprises a decay counter which counts down from a predetermined value, control element 50 is triggered to initiate a lower power state in response to the decay counter counting down to a predetermined value, such as zero. In another implementation, counter 40 comprises an incremental counter which increases in value as time passes since receipt of a last access command (read or write command) from a memory controller, wherein control element 50 is triggered to initiate a lower power state in response to the value of the counter meeting or surpassing a predefined threshold.
Control element 50 comprises a processing unit that follows instructions contained in a non-transient computer-readable medium. For purposes of this application, the term “processing unit” shall mean a presently developed or future developed processing unit that executes sequences of instructions contained in a memory. Execution of the sequences of instructions causes the processing unit to perform steps such as generating control signals. The instructions may be loaded in a random access memory (RAM) for execution by the processing unit from a read only memory (ROM), a mass storage device, or some other persistent storage. In other embodiments, hard wired circuitry may be used in place of or in combination with software instructions to implement the functions described. For example, control element 50 may be embodied as part of one or more application-specific integrated circuits (ASICs). Unless otherwise specifically noted, the controller is not limited to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the processing unit.
Control element 50, following such instructions, carries out the example energy conserving method 100 set forth in
As indicated by block 106, control element 50 automatically changes volatile memory device 20 to a lower power state based upon the counter signal from the counter. In one implementation, the control element 50 automatically rewrites a page stored in a buffer of the array back to the memory array and deactivates the buffer, such as by deactivating read and/or write drivers of the buffer to reduce power consumption. In one implementation, control element 50 outputs control signals that automatically deactivate an external clock interface, such as a phase locked loop of the volatile memory device 20. In one implementation, control element 50 outputs control signals automatically deactivating a refresh counter of the volatile memory device 20. In yet other implementations, the control element 50 may automatically initiate other power saving protocols for volatile memory device 20 in response to the counter signal.
Volatile storage 210 comprises a module comprising a plurality of volatile memory devices, such as the example volatile memory device 220 illustrated. As schematically shown by
Memory array 230 is similar to memory array 30 described above. In one implementation, memory array 230 comprises multiple banks of arrays. In one implementation, memory array 230 comprises dynamic read access memory arrays. In such implementations, memory array 230 may additionally comprise a buffer or latches to temporarily store data read from the array or data to be written to the array. In yet other implementation, memory array 230 may comprise other presently available or future available volatile charge storage cells. In yet another implementation, memory array 230 may comprise presently available or future available non-volatile storage cells.
Command decode electronics 232, sometimes referred to as a command decoder, comprise electronics that manage access operations for memory array 230. In one implementation, command decode electronics 232 facilitate the sequencing of commands in accordance with a clock cycle time.
Address decode electronics 234 comprise electronics by which selected portions of memory array 230 are addressed and accessed in response to access operation commands from command decode electronics 232. In some implementations, address decode electronics 234 include such components as an address register, and address counter, a bank control, a row address latch and decoder, a column decoder and the like.
Refresh timer electronics 236 comprises a decay counter or other timing device establishing a refresh interval. Refresh timer electronics 236 tracks the time since the last refresh of memory array 230 and triggers a memory refresh cycle for memory array 230. In one implementation, the refreshing of memory 230 may comprise a burst refresh. In other implementations, the refresh of memory array 230 may comprise a distributed refresh. In yet other implementations, other refresh protocols for memory array 230 may be employed.
Counter 240 is similar to counter 40 described above. Counter 40 comprises a counter, clock or other timing device by which a time since the last receipt of an access command, a read or write command, has been received from memory controller 202. Counter 240 incrementally increases in value as time passes since the last receipt of an access command.
Power down control element 250 is similar to control element 50 described above. Power down control element 250 comprises a processing unit that follows instructions contained in a non-transient computer-readable medium. Power down control element 250 carries out an energy conserving method in which control element 250 automatically changes a state or operational mode of volatile memory device 220 to a lower power state or power conserving mode based upon signals from counter 240. In one implementation, power down control element 250 carries out method 100 described above. In another implementation, power down control element 250 carries out, the example method 300 illustrated in
As illustrated by
As further indicated by
As indicated by block 320, if the current value of counter 240 does not satisfy Threshold 1, power down control element 250 compares the current value of counter 240 to a second threshold, Threshold 2, which is less than Threshold 1. As indicated by block 322, if the current value of counter 240 meets or exceeds the predetermined Threshold 2, power down control element 250 automatically changes volatile memory device 220 to a second lower power state, Power State 2. In one implementation, Power States 2 is less extensive, less impactful or less debilitating as compared to Power State 1.
As indicated by block 324, if the current value of counter 240 does not satisfy Threshold 2, power down control element 250 compares the current value of counter 240 to a third threshold, Threshold 3, which is less than Threshold 2. As indicated by block 326, if the current value of counter 240 meets or exceeds the predetermined Threshold 3, power down control element 250 automatically changes volatile memory device 220 to a third lower power state, Power State 3. In one implementation, Power State 3 is less extensive, less impactful or less debilitating as compared to Power States 1 and 2. If the current value of counter 240 does not satisfy Threshold 3, power down control element 250 returns to decision block 310, wherein power down control element 250 continues to monitor for the receipt of commands from memory controller 202 and wherein counter 240 continues to be incremented.
In one implementation, in Power State 3, power down control element 250 outputs control signals to automatically rewrite any page in a buffer of the memory array 230 and deactivates the buffer of the memory array 230, such as by deactivating drivers of the buffer. In Power State 2, power down control element 250 outputs control signals that automatically deactivate an external clock interface, wherein the volatile memory device 220 relies on his own internal clock or counters 236 for triggering or monitoring refresh cycles. In Power State 1, power down control element 250 outputs control signals automatically deactivating a refresh counter of the volatile memory device 220.
In yet other implementations, power down control element 250 may have a fewer or greater of such different lower power states for volatile memory device 220. For example, in other implementations, Power State 1, triggered in response to satisfaction of Threshold 1, may comprise both the deactivation of the buffers of memory array 230 as well as the deactivation of the external clock interface and/or the deactivation of the refresh counter. In yet other implementations, the control element 250 may automatically initiate other power saving protocols for volatile memory device 210 in response to the counter signal.
In one implementation, Thresholds 1, 2 and 3 are each predetermined and stored within a register other memory associated with power down control element 250. In some implementations, Thresholds 1, 2 and 3 are periodically transmitted to volatile memory storage device 220 from an external source, such as memory controller 202 or the central processing unit connected to memory controller 202. In such implementations, Thresholds 1, 2 or 3 may be dynamically changed or adjusted over time. For example, Thresholds 1, 2 or 3 may be dynamically changed or adjusted based upon input or preferences of a user. Thresholds 1, 2 or 3 may be dynamically changed or adjusted based upon other sensed factors such as the time of day, the age of the volatile memory storage device or the like. For example, such thresholds may be dynamically changed or adjusted to a lower value at certain times of the day as compared to other times of the day.
Volatile memory device 420 comprises memory array 430, sense amplifiers 432, read latch/write buffer 434, column address latch 436, row address latch 438, bank control logic 440, address and bank decoder 442, refresh counter 444 and control logic 446. Memory array 430 is similar to memory array 30 described above. In the example illustrated, memory array 430 comprises multiple banks. A memory bank is a logic unit of storage in memory array 430.
Sense amplifiers 432 comprise circuitry that are utilize when data is read from memory array 430. Sense amplifiers 432 sense low-amplitude signals from a bit line that represents a data bit stored in the memory and amplify the small voltages to recognizable logic levels for data interpretation by outside logic.
Read latch write buffer 434 comprises an electronic buffer for temporarily retaining data that is been read from memory array 430, waiting transmission via data bus 206 or retaining data to be written to memory array 430.
Column address latch 436 and row address latch 438 comprise the digital electronic logic circuits that receive and temporarily retain a column address and a row address, respectively. Bank control logic 440 comprises circuitry that controls which of the banks of memory array 430 are being accessed. Address and bank decoder 442 comprises circuitry that receives and decodes bank/address information received via address bus 204.
Refresh counter 444 comprises an internal clock of volatile memory device 420. Refresh counter 444 tracks time since a last refresh of data in memory 430. It comprises of a decay counter or other timing device establishing a refresh interval. Refresh timer electronics 236 tracks the time since the last refresh of memory array 430 and triggers a memory refresh cycle for memory array 430. In one implementation, the refreshing of memory array 430 may comprise a burst refresh. In other implementations, the refresh of memory array 430 may comprise a distributed refresh. In yet other implementations, other refresh protocols for memory array 430 may be employed.
Control logic 446 controls access to memory array 430 as well as other operations of volatile memory device 420. Control logic 446 comprises mode register 450, phase locked loop 452, command decoder 454, counter 456 and power down control element 460. Mode register 450 comprise a register storing various settings or modes for the volatile memory device 420. Phase locked loop 452 comprises electronics that synchronize the internal clocks of volatile memory device 420 with external clocks.
Command decoder 454 comprise electronics that manage access operations for memory array 430. In one implementation, command decode electronics 454 facilitate the sequencing of commands in accordance with a clock cycle time. Such sequencing may be based upon settings stored in mode register 450.
Counter 456 is similar to counter 40 and counter 240 described above. Counter 456 comprises a component, incorporated as part of memory device 420, that tracks a time or a lapse of time since the volatile memory device 420 last received a read or write command, such as a last time that device 420 received a read or write command from a memory controller. In one implementation, counter 456 comprises a decay counter which counts down from a predetermined value, control element 460 is triggered to initiate a lower power state in response to the decay counter counting down to a predetermined value, such as zero. In another implementation, counter 456 comprises an incremental counter which increases in value as time passes since receipt of a last axis command (read or write command) from a memory controller, wherein control element 460 is triggered to initiate a lower power state in response to the value of the counter meeting or surpassing a predefined threshold.
Power down control element 460 is similar to power down control element 250 described above. In one implementation, power down control element 460, following instructions contained in a non-transient computer-readable medium, carries out method 100 described above with respect to
In another implementation, power down control element 460, following instructions contained in a non-transient computer readable medium carries out method 300 described above with respect to
Although the present disclosure has been described with reference to example implementations, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the claimed subject matter. For example, although different example implementations may have been described as including one or more features providing one or more benefits, it is contemplated that the described features may be interchanged with one another or alternatively be combined with one another in the described example implementations or in other alternative implementations. Because the technology of the present disclosure is relatively complex, not all changes in the technology are foreseeable. The present disclosure described with reference to the example implementations and set forth in the following claims is manifestly intended to be as broad as possible. For example, unless specifically otherwise noted, the claims reciting a single particular element also encompass a plurality of such particular elements. The terms “first”, “second”, “third” and so on in the claims merely distinguish different elements and, unless otherwise stated, are not to be specifically associated with a particular order or particular numbering of elements in the disclosure.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2015/057268 | 10/25/2015 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2017/074292 | 5/4/2017 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5127014 | Raynham | Jun 1992 | A |
5446695 | Douse et al. | Aug 1995 | A |
6349390 | Dell et al. | Feb 2002 | B1 |
6707744 | Jo | Mar 2004 | B2 |
6941415 | Ryan | Sep 2005 | B1 |
7099234 | Parris | Aug 2006 | B2 |
7177220 | Chou et al. | Feb 2007 | B2 |
7343502 | Samson et al. | Mar 2008 | B2 |
7437579 | Jeddeloh | Oct 2008 | B2 |
7739461 | Hur | Jun 2010 | B2 |
8161356 | Bains et al. | Apr 2012 | B2 |
8938589 | Muralimanohar et al. | Jan 2015 | B2 |
9042196 | Tanaka | May 2015 | B2 |
9818458 | Jayachandran | Nov 2017 | B1 |
20030009721 | Hsu | Jan 2003 | A1 |
20040243886 | Klein | Dec 2004 | A1 |
20060206738 | Jeddeloh et al. | Sep 2006 | A1 |
20080082766 | Okin | Apr 2008 | A1 |
20080177929 | Gower | Jul 2008 | A1 |
20090019243 | Hur et al. | Jan 2009 | A1 |
20090144506 | Barth, Jr. et al. | Jun 2009 | A1 |
20110022873 | Drexler | Jan 2011 | A1 |
20110138387 | Ahn et al. | Jun 2011 | A1 |
20120317352 | Kang et al. | Dec 2012 | A1 |
20130139008 | Kalyanasundharam | May 2013 | A1 |
20140281810 | Gifford et al. | Sep 2014 | A1 |
20170185320 | Krause | Jun 2017 | A1 |
Number | Date | Country |
---|---|---|
WO-2017065802 | Apr 2017 | WO |
Entry |
---|
Balasubramanya Bhat, “Making DRAM Refresh Predictable,” Jul. 1, 2010, Euromicro Conference on Real-Time Systems, pp. 145-154. |
Intel Enterprise Platforms and Services Division, Intel Server Board S5500BC—Technical Product Specification, Revision 1.8, Jun. 2011 (162 pages). |
Intel White Paper, The Intel Xeon Processor 7500 Series, Advanced Reliability for Intel Xeon Processor-based Servers, Version 1.0, Mar. 2010 (12 pages). |
Manu Awasthi, “Efficient Scrub Mechanisms for Error-Prone Emerging Memories,” High Performance Computer Architecture, IEEE 18th Int'l Symposium, Feb. 25-29, 2012, 12 pages. |
PCT/ISA/KR, International Search Report and Written Opinion, dated Jul. 25, 2016, PCT/US2015/057268, 12 pages. |
PCT/ISA/KR, International Search Report and Written Opinion, dated Jul. 15, 2016, PCT/US2015/055976, 11 pages. |
Number | Date | Country | |
---|---|---|---|
20180301183 A1 | Oct 2018 | US |