US10025714B2 - Memory type range register with write-back cache strategy for NVDIMM memory locations - Google Patents

Memory type range register with write-back cache strategy for NVDIMM memory locations Download PDF

Info

Publication number
US10025714B2
US10025714B2 US15/282,945 US201615282945A US10025714B2 US 10025714 B2 US10025714 B2 US 10025714B2 US 201615282945 A US201615282945 A US 201615282945A US 10025714 B2 US10025714 B2 US 10025714B2
Authority
US
United States
Prior art keywords
memory locations
nvdimm
cpu
computer system
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US15/282,945
Other versions
US20180095879A1 (en
Inventor
Donald Han
John Chen
Jason Chang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Super Micro Computer Inc
Original Assignee
Super Micro Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Super Micro Computer Inc filed Critical Super Micro Computer Inc
Priority to US15/282,945 priority Critical patent/US10025714B2/en
Assigned to SUPER MICRO COMPUTER, INC. reassignment SUPER MICRO COMPUTER, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHANG, JASON, CHEN, JOHN, HAN, DONALD
Priority to TW106133286A priority patent/TWI644205B/en
Priority to CN201710911037.3A priority patent/CN107885670B/en
Publication of US20180095879A1 publication Critical patent/US20180095879A1/en
Application granted granted Critical
Publication of US10025714B2 publication Critical patent/US10025714B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Definitions

  • the present invention relates generally to computer systems.
  • a computer system may include one or more central processing units and one or more memory modules.
  • a memory module comprises one or more memory integrated circuits (“chips”).
  • a memory chip may comprise volatile memory (e.g., dynamic random access memory (DRAM)), non-volatile memory (e.g., flash memory), or both. Volatile memory loses its contents when the computer system's power is interrupted. In contrast, non-volatile memory keeps its contents even in the absence of system power. Generally speaking, volatile memory is faster than non-volatile memory and is thus preferred as main memory for processes of the operating system, application programs, etc.
  • DIMMs dual in-line memory modules
  • a registered DIMM has a register between the DRAM modules and the memory controller, but is otherwise the same as a DIMM and has only volatile memory.
  • a non-volatile DIMM comprises both volatile memory to provide fast access speeds and non-volatile memory as insurance against power failure.
  • a central processing unit may have an internal cache memory for caching the contents of memory locations.
  • Cached data may be written to corresponding memory locations (i.e., memory locations being cached) in accordance with a write-through cache strategy or write-back cache strategy.
  • write-through data that are written to the cache memory are also written to the corresponding memory location at the same time. This way, the cache memory and the corresponding memory locations are always in synchronization.
  • write-back data that are written to the cache memory are written to the corresponding memory location only at intervals or under certain conditions. Because an NVDIMM is meant to store critical data, NVDIMM memory locations are traditionally cached in accordance with the write-through cache strategy to ensure that the NVDIMM always has the most current data.
  • a computer system includes a DIMM, such as an RDIMM, and an NVDIMM.
  • a CPU of the computer system has internal cache memory locations for caching data for the DIMM and NVDIMM.
  • a memory type range register (MTTR) of the CPU is set for write-back cache strategy for a range of memory locations in the DIMM and NVDIMM.
  • the computer system includes a power supply that, in the event of a power failure, triggers a hardware non-maskable interrupt (NMI) and sustains power to the CPU to allow cached data to be saved to non-volatile memory locations in the NVDIMM before the computer system completely powers down.
  • NMI hardware non-maskable interrupt
  • FIG. 1 is a schematic diagram of a computer system in accordance with an embodiment of the present invention.
  • FIG. 2 is a flow diagram of a computer-implemented method of setting cache strategies of memory locations in accordance with an embodiment of the present invention.
  • FIG. 1 is a schematic diagram of a computer system 100 in accordance with an embodiment of the present invention.
  • the computer system 100 may be implemented using components that are commercially-available from the INTEL Corporation, for example. More specifically, in the example of FIG. 1 , a central processing unit (CPU) 160 may be an INTEL processor.
  • the computer system 100 further includes memory modules comprising one or more RDIMM 170 and one or more NVDIMM 180 . Components of the computer system 100 that are not relevant to the understanding of the present invention are not shown for clarity of illustration.
  • the RDIMM 170 has volatile memory locations 101 (i.e., 101 - 1 , 101 - 2 , . . . , 101 -n).
  • the NVDIMM 180 has volatile memory locations 102 (i.e., 102 - 1 , 102 - 2 , . . . , 102 -n) and non-volatile memory locations 103 (i.e., 103 - 1 , 103 - 2 , . . . , 103 -n).
  • data stored in the NVDIMM 180 are first stored in the memory locations 102 .
  • data in the memory locations 102 are written to the memory locations 103 , such as by asynchronous DRAM refresh (ADR).
  • ADR asynchronous DRAM refresh
  • the CPU 160 has an internal memory controller 161 for reading and writing to the RDIMM 170 and NVDIMM 180 .
  • the CPU 160 includes internal cache memory locations 110 (i.e., 110 - 1 , 110 - 2 , . . . , 110 -n) for caching memory locations in the RDIMM 170 and NVDIMM 180 .
  • the CPU 160 further includes internal memory type range registers (MTRRs) 120 (i.e., 120 - 1 , 120 - 2 , . . . , 120 -n) for setting the cache strategy for particular memory locations in the RDIMM 170 and NVDIMM 180 .
  • MTRRs internal memory type range registers
  • the operating system or other software module or system component, may set an MTRR 120 to indicate whether a particular range of memory locations will be cached in accordance with the write-back or write-through cache strategy. Different ranges of memory locations may have different MTRR 120 settings.
  • the MTRR 120 - 1 may be set for write-back to indicate that memory locations 101 - 1 to 101 - 5 in the RDIMM 170 will be cached in accordance with the write-back cache strategy
  • the MTRR 120 - 2 may be set for write-through to indicate that memory locations 102 - 1 to 102 - 9 in the NVDIMM 180 will be cached in accordance with the write-through cache strategy
  • the MTRR 120 - 3 may be set for write-back to indicate that memory locations 101 - 6 to 101 - 10 in the RDIMM 170 will be cached in accordance with the write-back cache strategy, and so on.
  • the power supply 190 includes a supercapacitor 191 and a non-maskable interrupt (NMI) trigger circuit 192 .
  • the NMI trigger circuit 192 may comprise an electrical circuit that detects for power fail conditions (e.g., low voltage levels, absence of AC power input) and triggers a hardware NMI in response to detecting the power fail condition.
  • the NMI trigger circuit 192 may detect a power fail condition using a comparator circuit, and trigger a hardware NMI by asserting an NMI line/pin or other line/pin that triggers a hardware NMI on a bus of the computer system, for example.
  • power fail conditions e.g., low voltage levels, absence of AC power input
  • the NMI trigger circuit 192 may detect a power fail condition using a comparator circuit, and trigger a hardware NMI by asserting an NMI line/pin or other line/pin that triggers a hardware NMI on a bus of the computer system, for example.
  • the supercapacitor 191 provides a burst of power that allows the CPU 160 to remain operational for a limited time (e.g., for 100 ms) in the event of a power fail condition.
  • the supercapacitor 191 may be sized such that the CPU 160 continues to operate to perform a cache flush to save cached data to the NVDIMM 180 and to allow the NVDIMM 180 to complete an ADR before the computer system 100 completely powers down due to the power fail condition.
  • the MTRR 120 for memory locations in the NVDIMM 180 is set for write-back cache strategy. This way, an MTRR 120 for a range of memory locations that includes memory locations in the NVDIMM 180 and in the RDIMM 170 may be set for write-back cache strategy, thereby reducing the number of MTRRs 120 that is consumed and making the MTTRs 120 more organized and streamlined.
  • the power supply 190 triggers a hardware NMI (see arrow 152 ) to initiate saving critical data to the non-volatile memory locations 103 in the NVDIMM 180 .
  • the supercapacitor 191 provides enough power (see arrow 153 ) to sustain operations for a sufficient amount of time (e.g., 100 ms) to allow cached data in the cache memory locations 110 of the CPU 160 to be saved to the non-volatile memory locations 103 of the NVDIMM 180 before the computer system 100 completely powers down.
  • the CPU 160 In response to receiving the hardware NMI (see arrow 152 ), the CPU 160 initiates a cache flush (see arrow 154 ) to save cache data from the cache memory locations 110 to corresponding memory locations 102 in the NVDIMM 180 . Thereafter, the CPU 160 (or another component) may initiate an ADR to save the now synchronized data in the volatile memory locations 102 to the non-volatile memory locations 103 in the NVDIMM 180 (see arrow 155 ). Cached data in the cache memory locations 110 are thus saved to the non-volatile memory locations 103 in the NVDIMM 180 in the event of a power failure, even when the MTTRs 120 are set to write-back cache strategy for memory locations 102 in the NVDIMM 180 .
  • FIG. 2 is a flow diagram of a computer-implemented method 200 of setting cache strategies of memory locations in accordance with an embodiment of the present invention.
  • the method 200 is explained with reference to previously disclosed components for illustration purposes only. As can be appreciated, other components may also be employed without detracting from the merits of the present invention.
  • the MTRR 120 of the CPU 160 is set for write-back cache strategy for a range of memory locations in the NVDIMM 180 and memory locations in the RDIMM 170 (step 201 ).
  • the MTRR 120 may be set by the operating system, firmware, or other component of the computer system 100 . Accordingly, when data are written to cache memory locations 110 that cache data for the memory locations 102 in the NVDIMM 180 (step 202 ), the memory locations 102 are not updated with the data at the same time the data are cached in the memory locations 110 . Instead, the memory locations 102 in the NVDIMM 180 are updated with the cached data at a later time per the write-back cache strategy (step 203 ).
  • the power supply 190 detects a power failure (step 204 ).
  • the power failure may be due to inadvertent removal of the AC power cord, brown out, etc.
  • the supercapacitor 191 of the power supply 190 provides power to the CPU 160 for a limited time during the power failure (step 205 ), with the limited time being long enough to allow cached data in the cache memory locations 110 of the CPU 160 to be saved to the non-volatile memory locations 103 in the NVDIMM 180 before the computer system 100 completely powers down.
  • the power supply 190 triggers a hardware NMI (step 206 ).
  • the CPU 160 in response to the hardware NMI, performs a cache flush to write cached data in the cache memory locations 110 to corresponding volatile memory locations 102 in the NVDIMM 180 (step 207 ).
  • the data in the volatile memory locations 102 are saved to the non-volatile memory locations 103 (step 208 ).
  • the save to the non-volatile memory locations 103 may be by ADR initiated by the CPU 160 after the cache flush, in response to detecting the power failure.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)

Abstract

A computer system includes a dual in-line memory module (DIMM), such as a registered DIMM (RDIMM), and a non-volatile DIMM (NVDIMM). A central processing unit (CPU) of the computer system has internal cache memory locations for caching data for the DIMM and NVDIMM. A memory type range register (MTTR) of the CPU is set for write-back cache strategy for a range of memory locations in the DIMM and NVDIMM. The computer system includes a power supply that, in the event of a power failure, triggers a hardware non-maskable interrupt (NMI) and sustains power to the CPU to allow cached data to be saved to non-volatile memory locations in the NVDIMM before the computer system completely powers down.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to computer systems.
2. Description of the Background Art
A computer system may include one or more central processing units and one or more memory modules. A memory module comprises one or more memory integrated circuits (“chips”). A memory chip may comprise volatile memory (e.g., dynamic random access memory (DRAM)), non-volatile memory (e.g., flash memory), or both. Volatile memory loses its contents when the computer system's power is interrupted. In contrast, non-volatile memory keeps its contents even in the absence of system power. Generally speaking, volatile memory is faster than non-volatile memory and is thus preferred as main memory for processes of the operating system, application programs, etc. Currently-available computer systems typically employ dual in-line memory modules (DIMMs), which comprise only volatile memory, for main memory. A registered DIMM (RDIMM) has a register between the DRAM modules and the memory controller, but is otherwise the same as a DIMM and has only volatile memory. Unlike a DIMM or RDIMM, a non-volatile DIMM (NVDIMM) comprises both volatile memory to provide fast access speeds and non-volatile memory as insurance against power failure.
A central processing unit (CPU) may have an internal cache memory for caching the contents of memory locations. Cached data may be written to corresponding memory locations (i.e., memory locations being cached) in accordance with a write-through cache strategy or write-back cache strategy. With write-through, data that are written to the cache memory are also written to the corresponding memory location at the same time. This way, the cache memory and the corresponding memory locations are always in synchronization. With write-back, data that are written to the cache memory are written to the corresponding memory location only at intervals or under certain conditions. Because an NVDIMM is meant to store critical data, NVDIMM memory locations are traditionally cached in accordance with the write-through cache strategy to ensure that the NVDIMM always has the most current data.
SUMMARY
In one embodiment, a computer system includes a DIMM, such as an RDIMM, and an NVDIMM. A CPU of the computer system has internal cache memory locations for caching data for the DIMM and NVDIMM. A memory type range register (MTTR) of the CPU is set for write-back cache strategy for a range of memory locations in the DIMM and NVDIMM. The computer system includes a power supply that, in the event of a power failure, triggers a hardware non-maskable interrupt (NMI) and sustains power to the CPU to allow cached data to be saved to non-volatile memory locations in the NVDIMM before the computer system completely powers down.
These and other features of the present invention will be readily apparent to persons of ordinary skill in the art upon reading the entirety of this disclosure, which includes the accompanying drawings and claims.
DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic diagram of a computer system in accordance with an embodiment of the present invention.
FIG. 2 is a flow diagram of a computer-implemented method of setting cache strategies of memory locations in accordance with an embodiment of the present invention.
The use of the same reference label in different drawings indicates the same or like components.
DETAILED DESCRIPTION
In the present disclosure, numerous specific details are provided, such as examples of systems, components, and methods, to provide a thorough understanding of embodiments of the invention. Persons of ordinary skill in the art will recognize, however, that the invention can be practiced without one or more of the specific details. In other instances, well-known details are not shown or described to avoid obscuring aspects of the invention.
FIG. 1 is a schematic diagram of a computer system 100 in accordance with an embodiment of the present invention. The computer system 100 may be implemented using components that are commercially-available from the INTEL Corporation, for example. More specifically, in the example of FIG. 1, a central processing unit (CPU) 160 may be an INTEL processor. In the example of FIG. 1, the computer system 100 further includes memory modules comprising one or more RDIMM 170 and one or more NVDIMM 180. Components of the computer system 100 that are not relevant to the understanding of the present invention are not shown for clarity of illustration.
In the example of FIG. 1, the RDIMM 170 has volatile memory locations 101 (i.e., 101-1, 101-2, . . . , 101-n). The NVDIMM 180 has volatile memory locations 102 (i.e., 102-1, 102-2, . . . , 102-n) and non-volatile memory locations 103 (i.e., 103-1, 103-2, . . . , 103-n). For performance reasons, because non-volatile memory is slower than volatile memory, data stored in the NVDIMM 180 are first stored in the memory locations 102. In the event of a power failure or as commanded by the CPU 160, data in the memory locations 102 are written to the memory locations 103, such as by asynchronous DRAM refresh (ADR).
In the example of FIG. 1, the CPU 160 has an internal memory controller 161 for reading and writing to the RDIMM 170 and NVDIMM 180. To minimize external bus access, the CPU 160 includes internal cache memory locations 110 (i.e., 110-1, 110-2, . . . , 110-n) for caching memory locations in the RDIMM 170 and NVDIMM 180.
In the example of FIG. 1, the CPU 160 further includes internal memory type range registers (MTRRs) 120 (i.e., 120-1, 120-2, . . . , 120-n) for setting the cache strategy for particular memory locations in the RDIMM 170 and NVDIMM 180. More particularly, the operating system (or other software module or system component), may set an MTRR 120 to indicate whether a particular range of memory locations will be cached in accordance with the write-back or write-through cache strategy. Different ranges of memory locations may have different MTRR 120 settings. For example, the MTRR 120-1 may be set for write-back to indicate that memory locations 101-1 to 101-5 in the RDIMM 170 will be cached in accordance with the write-back cache strategy, the MTRR 120-2 may be set for write-through to indicate that memory locations 102-1 to 102-9 in the NVDIMM 180 will be cached in accordance with the write-through cache strategy, the MTRR 120-3 may be set for write-back to indicate that memory locations 101-6 to 101-10 in the RDIMM 170 will be cached in accordance with the write-back cache strategy, and so on.
Setting different cache strategies for different memory locations results in fragmented MTRRs 120 and consumes many MTRRs 120, which are limited in number. Disorganized MTRRs 120 may lead to system hangs, among other problems. This problem is exacerbated by setting the MTRR 120 for the memory locations in the NVDIMM 180 for write-through, given that the MTRR 120 for memory locations in the RDIMM are set for write-back for performance reasons.
In the example of FIG. 1, power to the computer system 100 is provided by a power supply 190. In one embodiment, the power supply 190 includes a supercapacitor 191 and a non-maskable interrupt (NMI) trigger circuit 192. The NMI trigger circuit 192 may comprise an electrical circuit that detects for power fail conditions (e.g., low voltage levels, absence of AC power input) and triggers a hardware NMI in response to detecting the power fail condition. The NMI trigger circuit 192 may detect a power fail condition using a comparator circuit, and trigger a hardware NMI by asserting an NMI line/pin or other line/pin that triggers a hardware NMI on a bus of the computer system, for example. In the example of FIG. 1, the supercapacitor 191 provides a burst of power that allows the CPU 160 to remain operational for a limited time (e.g., for 100 ms) in the event of a power fail condition. The supercapacitor 191 may be sized such that the CPU 160 continues to operate to perform a cache flush to save cached data to the NVDIMM 180 and to allow the NVDIMM 180 to complete an ADR before the computer system 100 completely powers down due to the power fail condition.
In one embodiment, the MTRR 120 for memory locations in the NVDIMM 180 is set for write-back cache strategy. This way, an MTRR 120 for a range of memory locations that includes memory locations in the NVDIMM 180 and in the RDIMM 170 may be set for write-back cache strategy, thereby reducing the number of MTRRs 120 that is consumed and making the MTTRs 120 more organized and streamlined. When a power fail condition is detected (see arrow 151), the power supply 190 triggers a hardware NMI (see arrow 152) to initiate saving critical data to the non-volatile memory locations 103 in the NVDIMM 180. The supercapacitor 191 provides enough power (see arrow 153) to sustain operations for a sufficient amount of time (e.g., 100 ms) to allow cached data in the cache memory locations 110 of the CPU 160 to be saved to the non-volatile memory locations 103 of the NVDIMM 180 before the computer system 100 completely powers down.
In response to receiving the hardware NMI (see arrow 152), the CPU 160 initiates a cache flush (see arrow 154) to save cache data from the cache memory locations 110 to corresponding memory locations 102 in the NVDIMM 180. Thereafter, the CPU 160 (or another component) may initiate an ADR to save the now synchronized data in the volatile memory locations 102 to the non-volatile memory locations 103 in the NVDIMM 180 (see arrow 155). Cached data in the cache memory locations 110 are thus saved to the non-volatile memory locations 103 in the NVDIMM 180 in the event of a power failure, even when the MTTRs 120 are set to write-back cache strategy for memory locations 102 in the NVDIMM 180.
FIG. 2 is a flow diagram of a computer-implemented method 200 of setting cache strategies of memory locations in accordance with an embodiment of the present invention. The method 200 is explained with reference to previously disclosed components for illustration purposes only. As can be appreciated, other components may also be employed without detracting from the merits of the present invention.
In the example of FIG. 2, the MTRR 120 of the CPU 160 is set for write-back cache strategy for a range of memory locations in the NVDIMM 180 and memory locations in the RDIMM 170 (step 201). The MTRR 120 may be set by the operating system, firmware, or other component of the computer system 100. Accordingly, when data are written to cache memory locations 110 that cache data for the memory locations 102 in the NVDIMM 180 (step 202), the memory locations 102 are not updated with the data at the same time the data are cached in the memory locations 110. Instead, the memory locations 102 in the NVDIMM 180 are updated with the cached data at a later time per the write-back cache strategy (step 203). Thereafter, the power supply 190 detects a power failure (step 204). The power failure may be due to inadvertent removal of the AC power cord, brown out, etc. The supercapacitor 191 of the power supply 190 provides power to the CPU 160 for a limited time during the power failure (step 205), with the limited time being long enough to allow cached data in the cache memory locations 110 of the CPU 160 to be saved to the non-volatile memory locations 103 in the NVDIMM 180 before the computer system 100 completely powers down.
In response to detecting the power failure, the power supply 190 triggers a hardware NMI (step 206). The CPU 160, in response to the hardware NMI, performs a cache flush to write cached data in the cache memory locations 110 to corresponding volatile memory locations 102 in the NVDIMM 180 (step 207). In the NVDIMM 180, the data in the volatile memory locations 102 are saved to the non-volatile memory locations 103 (step 208). The save to the non-volatile memory locations 103 may be by ADR initiated by the CPU 160 after the cache flush, in response to detecting the power failure.
Systems and methods for configuring memory type range registers have been disclosed. While specific embodiments of the present invention have been provided, it is to be understood that these embodiments are for illustration purposes and not limiting. Many additional embodiments will be apparent to persons of ordinary skill in the art reading this disclosure.

Claims (8)

What is claimed is:
1. A computer system comprising:
a dual in-line memory module (DIMM);
a non-volatile dual in-line memory module (NVDIMM);
a central processing unit (CPU) with internal cache memory locations for storing cached data and an internal memory type range register (MTRR) that indicates a cache strategy for caching data for a range of memory locations, the MTTR being configured for write-back cache strategy for the range of memory locations that includes memory locations in the DIMM and memory locations in the NVDIMM; and
a power supply that is configured to trigger a hardware non-maskable interrupt (NMI) in response to detecting a power failure and to provide power to the CPU during the power failure to allow the cached data in the internal cache memory locations of the CPU to be saved to non-volatile memory locations in the NVDIMM before the computer system completely powers down due to the power failure,
wherein, before power to the CPU is completely gone due to the power failure, the cached data are flushed from the internal cache memory locations of the CPU to corresponding volatile memory locations in the NVDIMM that are included in the range of memory locations for write-back cache strategy as set in the MTTR, and the cached data are saved from the volatile memory locations in the NVDIMM to the non-volatile memory locations that are also in the NVDIMM.
2. The computer system of claim 1, wherein the power supply is configured to trigger the hardware NMI by asserting a line on a bus of the computer system.
3. The computer system of claim 1, wherein the power supply comprises a supercapacitor that is configured to provide the power to the CPU after detection of the power failure but before the computer system completely powers down due to the power failure.
4. The computer system of claim 1, wherein the DIMM is a registered DIMM (RDIMM).
5. A computer-implemented method of setting a cached strategy of memory locations of a computer system, the method comprising:
setting a memory type range register (MTTR) for a range of memory locations for write-back cache strategy, the range of memory locations including memory locations in a non-volatile dual in-line memory module (NVDIMM) and memory locations in a dual in-line memory module (DIMM);
detecting a power failure;
triggering a hardware non-maskable interrupt (NMI) in response to detecting the power failure;
in response to the hardware NMI, performing a cache flush to write cached data from internal cache memory locations of a central processing unit (CPU) to volatile memory locations in the NVDIMM that are included in the range of memory locations for write-back cache strategy as set in the MTTR; and
before power to the CPU is completely gone because of the power failure, saving the cached data from the volatile memory locations in the NVDIMM to non-volatile memory locations that are also in the NVDIMM.
6. The method of claim 5, wherein saving the cached data from the volatile memory locations in the NVDIMM to the non-volatile memory locations that are also in the NVDIMM comprises:
performing an asynchronous dynamic random access memory refresh.
7. The method of claim 5, further comprising:
sustaining, by a supercapacitor, power to the CPU.
8. The method of claim 5, wherein the hardware NMI is triggered by a power supply in response to detecting the power failure.
US15/282,945 2016-09-30 2016-09-30 Memory type range register with write-back cache strategy for NVDIMM memory locations Active 2036-12-14 US10025714B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/282,945 US10025714B2 (en) 2016-09-30 2016-09-30 Memory type range register with write-back cache strategy for NVDIMM memory locations
TW106133286A TWI644205B (en) 2016-09-30 2017-09-28 Computer system having memory tape range register with write-back cahe strategy and computer-implemented method for the same
CN201710911037.3A CN107885670B (en) 2016-09-30 2017-09-29 Computer system and computer execution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/282,945 US10025714B2 (en) 2016-09-30 2016-09-30 Memory type range register with write-back cache strategy for NVDIMM memory locations

Publications (2)

Publication Number Publication Date
US20180095879A1 US20180095879A1 (en) 2018-04-05
US10025714B2 true US10025714B2 (en) 2018-07-17

Family

ID=61758866

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/282,945 Active 2036-12-14 US10025714B2 (en) 2016-09-30 2016-09-30 Memory type range register with write-back cache strategy for NVDIMM memory locations

Country Status (3)

Country Link
US (1) US10025714B2 (en)
CN (1) CN107885670B (en)
TW (1) TWI644205B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977900B2 (en) 2021-05-10 2024-05-07 Hewlett Packard Enterprise Development Lp Dynamic timing for shutdown including asynchronous dynamic random access memory refresh (ADR) due to AC undervoltage

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180239725A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Persistent Remote Direct Memory Access
US10496443B2 (en) 2017-05-03 2019-12-03 Vmware, Inc. OS/hypervisor-based persistent memory
US10474550B2 (en) 2017-05-03 2019-11-12 Vmware, Inc. High availability for persistent memory
US10929234B2 (en) 2017-10-27 2021-02-23 Vmware, Inc. Application fault tolerance via battery-backed replication of volatile state
US11016669B2 (en) * 2018-05-01 2021-05-25 Qualcomm Incorporated Persistent write data for energy-backed memory
TW202008171A (en) 2018-07-20 2020-02-16 大陸商深圳大心電子科技有限公司 Data writing method and storage controller
CN111459745A (en) * 2019-01-21 2020-07-28 美超微电脑股份有限公司 Method for testing system host storage device connection port
US11030100B1 (en) * 2019-11-18 2021-06-08 International Business Machines Corporation Expansion of HBA write cache using NVDIMM

Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467286A (en) * 1993-11-03 1995-11-14 Square D Company Metering unit with downloadable firmware
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US20040103238A1 (en) * 2002-11-26 2004-05-27 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US20040243766A1 (en) * 2003-05-30 2004-12-02 Lovelace John V. Writing cached data to system management memory
US20050108494A1 (en) * 2003-10-31 2005-05-19 Kimon Berlin Accommodating multiple operating systems and memory sizes on IA-32 platforms
US20130103887A1 (en) * 2011-10-20 2013-04-25 Smart Modular Technologies, Inc. Computing system with non-disruptive fast memory restore mechanism and method of operation thereof
US8677037B1 (en) * 2007-08-30 2014-03-18 Virident Systems, Inc. Memory apparatus for early write termination and power failure
US20140297919A1 (en) * 2011-12-21 2014-10-02 Murugasamy K Nachimuthu Apparatus and method for implementing a multi-level memory hierarchy
US20140325116A1 (en) * 2013-04-29 2014-10-30 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage
US20150279463A1 (en) * 2014-03-31 2015-10-01 Dell Products, L.P. Adjustable non-volatile memory regions of dram-based memory module
US20150301126A1 (en) * 2012-10-31 2015-10-22 Thomson Licensing Device and method for early detection of power failure in an external power supply
US20150380985A1 (en) * 2014-06-27 2015-12-31 Bull Sas Micro power outage compensating module for a server
US20150378808A1 (en) * 2014-06-30 2015-12-31 Mohan J. Kumar Techniques for Handling Errors in Persistent Memory
US20160011802A1 (en) * 2014-07-09 2016-01-14 Dell Products, Lp System and Method for Enabling Transportability of a Non Volatile Dual Inline Memory Module
US20160118121A1 (en) * 2014-10-24 2016-04-28 Microsoft Technology Licensing, Llc Configurable Volatile Memory Data Save Triggers
US20160179375A1 (en) * 2014-12-22 2016-06-23 Intel Corporation Allocating and configuring persistent memory
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9529543B1 (en) * 2015-12-02 2016-12-27 International Business Machines Corporation Concurrent upgrade and backup of non-volatile memory
US20170017402A1 (en) * 2015-07-13 2017-01-19 Hongzhong Zheng Nvdimm adaptive access mode and smart partition mechanism
US9563565B2 (en) * 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9645829B2 (en) * 2014-06-30 2017-05-09 Intel Corporation Techniques to communicate with a controller for a non-volatile dual in-line memory module
US20170168937A1 (en) * 2015-12-09 2017-06-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Committing transaction without first flushing processor cache to non-volatile memory when connected to ups
US9710343B2 (en) * 2015-03-27 2017-07-18 Facebook, Inc. Power fail circuit for multi-storage-device arrays
US9727112B1 (en) * 2007-08-30 2017-08-08 Virident Systems, Llc Methods for early write termination with non-volatile memory
US9740606B1 (en) * 2013-11-01 2017-08-22 Amazon Technologies, Inc. Reliable distributed messaging using non-volatile system memory
US9747208B2 (en) * 2014-12-23 2017-08-29 Intel Corporation Instruction and logic for flush-on-fail operation
US9767015B1 (en) * 2013-11-01 2017-09-19 Amazon Technologies, Inc. Enhanced operating system integrity using non-volatile system memory
US20170337009A1 (en) * 2011-12-29 2017-11-23 Intel Corporation Multi-level memory with direct access

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136765A1 (en) * 2004-12-03 2006-06-22 Poisner David L Prevention of data loss due to power failure
US20070124542A1 (en) * 2005-11-30 2007-05-31 Red Hat, Inc. Method and system to control write caches to reduce risk of data loss
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
CN102841821A (en) * 2011-06-21 2012-12-26 Lsi公司 Data operation during memory backup period
JP2013061799A (en) * 2011-09-13 2013-04-04 Toshiba Corp Memory device, control method for memory device and controller
CN102929805A (en) * 2012-10-19 2013-02-13 浪潮电子信息产业股份有限公司 Power-down protection method for cache data in memory system
KR20150120558A (en) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 Volatile memory device, memory module including the same and operation method of the memory module

Patent Citations (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467286A (en) * 1993-11-03 1995-11-14 Square D Company Metering unit with downloadable firmware
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US20040103238A1 (en) * 2002-11-26 2004-05-27 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US20040243766A1 (en) * 2003-05-30 2004-12-02 Lovelace John V. Writing cached data to system management memory
US20050108494A1 (en) * 2003-10-31 2005-05-19 Kimon Berlin Accommodating multiple operating systems and memory sizes on IA-32 platforms
US8677037B1 (en) * 2007-08-30 2014-03-18 Virident Systems, Inc. Memory apparatus for early write termination and power failure
US9727112B1 (en) * 2007-08-30 2017-08-08 Virident Systems, Llc Methods for early write termination with non-volatile memory
US20130103887A1 (en) * 2011-10-20 2013-04-25 Smart Modular Technologies, Inc. Computing system with non-disruptive fast memory restore mechanism and method of operation thereof
US20140297919A1 (en) * 2011-12-21 2014-10-02 Murugasamy K Nachimuthu Apparatus and method for implementing a multi-level memory hierarchy
US20170337009A1 (en) * 2011-12-29 2017-11-23 Intel Corporation Multi-level memory with direct access
US20150301126A1 (en) * 2012-10-31 2015-10-22 Thomson Licensing Device and method for early detection of power failure in an external power supply
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US20140325116A1 (en) * 2013-04-29 2014-10-30 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage
US9563565B2 (en) * 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9767015B1 (en) * 2013-11-01 2017-09-19 Amazon Technologies, Inc. Enhanced operating system integrity using non-volatile system memory
US9740606B1 (en) * 2013-11-01 2017-08-22 Amazon Technologies, Inc. Reliable distributed messaging using non-volatile system memory
US20170371778A1 (en) * 2013-11-01 2017-12-28 Amazon Technologies, Inc. Reliable Distributed Messaging Using Non-Volatile System Memory
US20150279463A1 (en) * 2014-03-31 2015-10-01 Dell Products, L.P. Adjustable non-volatile memory regions of dram-based memory module
US9787134B2 (en) * 2014-06-27 2017-10-10 Bull Sas Micro power outage compensating module for a server
US20150380985A1 (en) * 2014-06-27 2015-12-31 Bull Sas Micro power outage compensating module for a server
US20150378808A1 (en) * 2014-06-30 2015-12-31 Mohan J. Kumar Techniques for Handling Errors in Persistent Memory
US9645829B2 (en) * 2014-06-30 2017-05-09 Intel Corporation Techniques to communicate with a controller for a non-volatile dual in-line memory module
US9753793B2 (en) * 2014-06-30 2017-09-05 Intel Corporation Techniques for handling errors in persistent memory
US20160011802A1 (en) * 2014-07-09 2016-01-14 Dell Products, Lp System and Method for Enabling Transportability of a Non Volatile Dual Inline Memory Module
US20160118121A1 (en) * 2014-10-24 2016-04-28 Microsoft Technology Licensing, Llc Configurable Volatile Memory Data Save Triggers
US20160179375A1 (en) * 2014-12-22 2016-06-23 Intel Corporation Allocating and configuring persistent memory
US9747208B2 (en) * 2014-12-23 2017-08-29 Intel Corporation Instruction and logic for flush-on-fail operation
US9710343B2 (en) * 2015-03-27 2017-07-18 Facebook, Inc. Power fail circuit for multi-storage-device arrays
US20170017402A1 (en) * 2015-07-13 2017-01-19 Hongzhong Zheng Nvdimm adaptive access mode and smart partition mechanism
US9529543B1 (en) * 2015-12-02 2016-12-27 International Business Machines Corporation Concurrent upgrade and backup of non-volatile memory
US9875036B2 (en) * 2015-12-02 2018-01-23 International Business Machines Corporation Concurrent upgrade and backup of non-volatile memory
US9772942B2 (en) * 2015-12-09 2017-09-26 Lenovo Enterprise Solutions (Singapore) PTE., LTD. Committing transaction without first flushing processor cache to non-volatile memory when connected to UPS
US20170168937A1 (en) * 2015-12-09 2017-06-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Committing transaction without first flushing processor cache to non-volatile memory when connected to ups

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Memory type range register-from Wikipedia, the free encyclopedia, 3 sheets [retrieved on Sep. 13, 2016], retrieved from the internet: https://en.wikipedia.org/wiki/Memory_type_range_register.
Memory type range register—from Wikipedia, the free encyclopedia, 3 sheets [retrieved on Sep. 13, 2016], retrieved from the internet: https://en.wikipedia.org/wiki/Memory_type_range_register.
Supercapacitor-from Wikipedia, the free encyclopedia, 35 sheets [retrieved on Sep. 28, 2016], retrieved from the internet: https://en.wikipedia.org/wiki/Supercapacitor.
Supercapacitor—from Wikipedia, the free encyclopedia, 35 sheets [retrieved on Sep. 28, 2016], retrieved from the internet: https://en.wikipedia.org/wiki/Supercapacitor.
Supermicro-Implementation of high speed storage solutions by Alan Johnson, Storage Industry Summit Realizing the Benefits of the Convergence of Storage and Memory, Jan. 20, 2015, pp. 1-24.
Supermicro—Implementation of high speed storage solutions by Alan Johnson, Storage Industry Summit Realizing the Benefits of the Convergence of Storage and Memory, Jan. 20, 2015, pp. 1-24.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977900B2 (en) 2021-05-10 2024-05-07 Hewlett Packard Enterprise Development Lp Dynamic timing for shutdown including asynchronous dynamic random access memory refresh (ADR) due to AC undervoltage

Also Published As

Publication number Publication date
CN107885670B (en) 2021-07-06
TWI644205B (en) 2018-12-11
TW201814530A (en) 2018-04-16
CN107885670A (en) 2018-04-06
US20180095879A1 (en) 2018-04-05

Similar Documents

Publication Publication Date Title
US10025714B2 (en) Memory type range register with write-back cache strategy for NVDIMM memory locations
US9030903B2 (en) Method, apparatus and system for providing a memory refresh
JP7142946B2 (en) Rowhammer Correction Logic for DRAMs with Integrated Processors
JP6334828B2 (en) Solid state drive with self-refresh power saving mode
US20040190210A1 (en) Memory back up and content preservation
US9727462B2 (en) Runtime backup of data in a memory module
Aichinger DDR memory errors caused by Row Hammer
US8607023B1 (en) System-on-chip with dynamic memory module switching
US20150127890A1 (en) Memory module with a dual-port buffer
EP3314452B1 (en) Flushing and restoring core memory content to external memory
CN111258842B (en) Memory module and memory system
EP2951831A1 (en) Apparatuses and methods for targeted refreshing of memory
US20190163557A1 (en) Error recovery in volatile memory regions
US20050160326A1 (en) Methods and apparatuses for reducing infant mortality in semiconductor devices utilizing static random access memory (SRAM)
KR20160120323A (en) Method, apparatus and system for handling data error events with memory controller
US10922261B2 (en) Memory clock frequency adjusting method, mainboard, and computer operating system
KR101141487B1 (en) Enabling an integrated memory controller to transparently work with defective memory devices
US20140337589A1 (en) Preventing a hybrid memory module from being mapped
US8806140B1 (en) Dynamic memory module switching with read prefetch caching
US20160202930A1 (en) Method of controlling volatile memory and system thereof
US10657003B2 (en) Partial backup during runtime for memory modules with volatile memory and non-volatile memory
US20150023101A1 (en) Memory system and method of controlling memory system
KR20070080493A (en) Data processing system with hardware polling processing device
US11682444B2 (en) Dynamic random-access memory array including sensor cells
US20130073792A1 (en) Electronic apparatus using nand flash and memory management method thereof

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUPER MICRO COMPUTER, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAN, DONALD;CHEN, JOHN;CHANG, JASON;SIGNING DATES FROM 20160929 TO 20160930;REEL/FRAME:040031/0591

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4