Memory devices may be broadly classified as providing volatile or non-volatile storage. Volatile memory retains stored data only while power is applied. Non-volatile memory, however, retains information after power has been removed.
Random access memory (“RAM”) is one type of volatile memory. As long as the addresses of the desired cells of RAM are known, RAM may be accessed in any order. Dynamic random access memory (“DRAM”) is one type of RAM. In DRAM, a capacitor is used to store a memory bit, and the capacitor must be periodically refreshed to maintain a high electron state. Because the DRAM circuit is small and inexpensive, it may be used as memory for computer systems.
FLASH memory is one type of non-volatile memory. Generally, FLASH memory is accessible in blocks or pages. For example, a page of FLASH memory may be erased in one operation or one “flash.” Accesses to FLASH memory are relatively slow compared with accesses to DRAM. As such, FLASH memory may be used as long term, persistent, or secondary storage for computer systems, rather than as primary storage. Because of the different features and capabilities provided, DRAM and FLASH memory may be complementarily employed in a computer system.
For a detailed description of various examples of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, through an indirect connection via other devices and connection, or through a wireless connection. The recitation “based on” is intended to mean “based at least in part on.” Therefore, if X is based on Y, X may be based on Y and any number of other factors.
The following discussion is directed to various implementations of memory modules and systems employing the memory modules. Although one or more of these implementations may be preferred, the implementations disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any implementation is illustrative and is not intended to intimate that the scope of the disclosure, including the claims, is limited to that implementation.
The speed and functionality of computers is ever increasing. Higher speeds may be provided by increasing clock frequencies, which often dictate reduced signal transition times, and greater likelihood of signal induced noise from reflections and crosstalk. Expansion of functionality may require that an increasing number of components occupy a limited amount of space. Furthermore, adding components may increase signal line loading and compromise signal integrity.
Memory modules, such as the dual in-line memory module (DIMM), used in computing devices (such as computers) are subject to the above-mentioned advances in computer development. Electronic system and memory speed increases, and addition of functionality expanding components to the DIMM, can result in noise or signal degradation that limits module performance and/or form factor expansion that detrimentally affects module size. The memory modules disclosed herein include a dual-port buffer device that provides improved module noise immunity and supports additional module functionality without increasing the form factor of the module.
The non-volatile memory subsystem 104 provides backup storage for preservation of the data stored in volatile memory 106. The non-volatile memory subsystem 104 is shown in greater detail in
The ratio of volatile memory 106 to non-volatile memory 204 in the memory module 100 may vary from implementation to implementation. For example, in some implementations the storage capacity of the non-volatile memory 204 may equal the storage capacity of the volatile memory 106. Other implementations of the memory module 100 may provide different volatile memory 106 to non-volatile memory 204 storage ratios.
The backup controller 202 is coupled to the non-volatile memory 204, and controls movement of data from the volatile memory 106 to the non-volatile memory 204 and vice versa. The backup controller 202 may move the data stored in volatile memory 106 to non-volatile memory 204 in the event of a power failure or other situation deemed likely result in loss of data stored in the volatile memory 106. The non-volatile memory subsystem 104 may include power fail detectors (e.g., power supply voltage level detectors) to detect imminent power loss. Detection of potential loss of data from the volatile memory 106 (e.g., imminent power loss) may trigger the backup controller 202 to copy data from the volatile memory 106 to the non-volatile memory 204. To facilitate backup of data, the memory module 100 may include access to a power source, such as a battery or charged super-capacitor, to power the memory module 100 for a time interval sufficient to move data from volatile memory 106 to non-volatile memory 204. In some implementations of the backup controller 202, copying of data from volatile memory 106 to non-volatile memory 204 may be triggered by expiration of a timer or another event. Similarly, the backup controller 204 restores data to the volatile memory 106 from the non-volatile memory 204 when a data loss event has passed (e.g., power is restored to operational levels).
The backup controller 202 may include a processor and internal storage for instructions and data. The processor may be a general-purpose microprocessor, microcontroller, or other suitable instruction execution devices known in the art. The processor may retrieve instructions from the internal storage, where the internal storage is a computer-readable medium, and execute the instructions to perform the operations described herein. For example, the instructions, when executed, may cause the processor to detect potential data loss and copy data stored in the volatile memory 106 to the non-volatile memory 204, restore data to volatile memory 106 from non-volatile memory 204, and the like.
The host port 108 provides an interface through which systems and components external to the memory module 100 access the memory and other components of the memory module 100. For example, a host processor, direct memory access engine, graphics processor, or other data processing unit of a computer system may access the memory module 100 via the host port 108 by asserting an address, a command (e.g., read, write, etc.), a data value, etc.
The host port 108, backup controller 202, and volatile memory 106 are coupled to the dual-port buffer device 102. The dual-port buffer device 102 selectively provides routing for data moving between the volatile memory 106 and either of the host port 108 and the backup controller 202. The dual port buffer device 102 may also include registers that buffer and synchronize data, address, and/or control signals provided to the volatile memory 106 from the host port 108 and/or the backup controller 202. The dual-port buffer device may be an integrated circuit that performs the functions described herein.
As shown in the example of
By routing and buffering signals to and from the volatile memory 106 in the dual-port buffer device 102, the memory module 100 avoids signal integrity issues that may occur with the use of external switches, multiplexers, and/or multiple bus masters (e.g., backup controller 202 and synchronization register) for accessing the volatile memory 106 from the host port 108 and the backup controller 202. Thus, the memory module 100 provides access to the volatile memory 106 for both external and on memory module bus masters with no degradation of signal integrity or additional use of memory module real estate.
In the memory module 100, the volatile memory 106 is partitioned into a number of lanes. For example, a 72-bit implementation of the volatile memory 106 may be partitioned into nine 8-bit lanes (byte lanes). The clock enable logic 208 of the dual-port buffer device 102 provides a plurality of clock enable signals, such that a different clock enable signal is provided for each lane of the volatile memory 106. The clock enable logic 208 controls assertion of the clock enable signals in accordance with a current access of the volatile memory 106. If the volatile memory 106 is being accessed via the host port 108, the clock enable logic 208 may assert clock enable signals to all lanes of the volatile memory 106. If the volatile memory 106 is being accessed via neither of the host port and the backup controller 202, then the clock enable logic 208 may negate clock enable signals to all lanes of the volatile memory, thereby enabling a self-refresh mode if the volatile memory 106 includes DRAMs.
The backup controller 202 may access fewer than all lanes of the volatile memory 106 at a time. For example, the backup controller 202 may access the volatile memory 106 one lane at time. To accommodate such operation, the clock enable logic 208 provides for individual control and assertion of clock enable signals to selected lanes of the volatile memory 106 based on lane selection information provided by the backup controller 202. For example, the backup controller 202 may assert signals that provide an address or other lane selection information to the clock enable logic 208 thereby identifying a lane of the volatile memory 106 to be accessed. In response, the clock enable logic 208 may assert a clock enable signal associated with the lane(s) selected by the backup controller 202.
To copy the contents of volatile memory 106 to non-volatile memory 204, the backup controller 202 asserts signals informing the dual-port buffer device 102 to connect the backup controller to the volatile memory 106, and designating which of the lanes of the volatile memory 106 are to be accessed. The dual port buffer device 102 disables host port accesses to the volatile memory 106, configures routing circuitry 206 for backup controller 202 access of volatile memory 106, and asserts the clock enable signals associated with the designated lanes while negating clock enable signals associated with lanes not designated. The backup controller 202 can then retrieve data from the designated lane(s) of volatile memory 106 and store the retrieved data in the non-volatile memory 204. Similar operations may be performed to restore data to the volatile memory 106 from the non-volatile memory 204.
The processor 304 may include, for example, one or more general-purpose microprocessors, digital signal processors, microcontrollers, graphics processors, direct memory access controllers, or other suitable instruction execution devices known in the art. Processor architectures generally include execution units (e.g., fixed point, floating point, integer, etc.), storage (e.g., registers, memory, etc.), instruction decoding, peripherals (e.g., interrupt controllers, timers, direct memory access controllers, etc.), input/output systems (e.g., serial ports, parallel ports, etc.) and various other components and sub-systems. The processor 304 may access the memory module 100 via the memory controller 302 for storage and/or retrieval of instructions and/or data.
In block 402, the backup controller 202 is preparing to access the volatile memory 106. The backup controller 202 asserts routing control signals to the dual-port buffer device 102. The routing control signals that backup controller 202 provide to the dual-port buffer device 102 cause the dual port buffer device 102 to allow the backup controller to access the volatile memory 106.
In block 404, the dual-port buffer device 102 sets the routing circuitry 206 in accordance with the routing control signals asserted by the backup controller 202. In accordance with routing control signals, the routing circuitry 206 is set to connect the backup controller 202 to the volatile memory 106 and to disconnect the host port 108 from the volatile memory 106. Thus, host port 108 access to the volatile memory 106 is disabled, and backup controller 204 access to the volatile memory 106 is enabled.
Because the backup controller 204 may simultaneously access fewer than all the lanes of the volatile memory 106, the routing control signals asserted by the backup controller 204 may also designate a particular lane or lanes of the volatile memory 106 to be accessed. In block 406, the clock enable logic 208 of the dual-port buffer device 102 asserts a clock enable signal to the designated lane(s) of the volatile memory 106. The clock enable logic 208 negates the clock enable signals to all lanes not designated by the backup controller 204.
In block 408, the backup controller 204 transfers data between the volatile memory 106 and the non-volatile memory 204 via the lane(s) associated with the clock enable signal(s) asserted by the dual-port buffer device 102. The backup controller 202 may move data from volatile memory 106 to non-volatile memory 204 or vice versa. The backup controller 202 may repeat the operations described above to access additional lanes of the volatile memory 106.
When access of the volatile memory 106 by the backup controller 202 is complete, the dual-port buffer device 102 may set the routing circuitry 206 and the clock enable logic 208 to allow access to the volatile memory 106 via the host port 108.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/044696 | 6/28/2012 | WO | 00 | 11/12/2014 |