IP Library Granted Patent US 11,620,192
Granted Patent B2
US 11,620,192 · App. 16/926,520 · Granted Apr 4, 2023

Hardware-assisted memory disaggregation with recovery from network failures using non-volatile memory

Inventors: Andreas Nowatzyk (Palo Alto, CA); Pratap Subrahmanyam (Saratoga, CA); Isam Akkawi (Palo Alto, CA)
Assignee: VMware, Inc.
G06F11/1469G06F9/30043G06F9/467G06F11/0757G06F11/0772G06F11/1451G06F11/1464G06F12/0815G06F15/1735G06F2212/2542
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,620,192
App. No.
16/926,520
Granted
Apr 4, 2023
Kind
B2
Abstract

Techniques for implementing hardware-assisted memory disaggregation with recovery from network failures/problems are provided. In one set of embodiments, a hardware controller of a computer system can maintain a copy of a “remote memory” of the computer system (i.e., a section of the physical memory address space of the computer system that maps to a portion of the physical system memory of a remote computer system) in a local backup memory. The backup memory may be implemented using a non-volatile memory that is slower, but also less expensive, than conventional dynamic random-access memory (DRAM). Then, if the hardware controller is unable to retrieve data in the remote memory from the remote computer system within a specified time window due to, e.g., a network failure or other problem, the hardware controller can retrieve the data from the backup memory, thereby avoiding a hardware error condition (and potential application/system crash).

Claims (76)

1. A method comprising:

receiving, by a hardware controller of a computer system, a memory instruction from a central processing unit (CPU) of the computer system over a cache-coherent interface, wherein the memory instruction is directed to a physical memory address in a remote memory of the computer system, wherein the remote memory corresponds to a section of a physical memory address space of the computer system that is mapped to portion of a physical system memory of another computer system, and wherein the portion of physical system memory of said another computer system is a borrowed memory portion that is inaccessible by other computer systems while it is mapped to the section of the physical memory space of the computer system;

determining, by the hardware controller, whether the memory instruction is a memory load instruction or a memory store instruction; and

upon determining that the memory instruction is a memory store instruction for writing data to the physical memory address in the remote memory:

writing, by the hardware controller, the data associated with the memory store instruction in a cache of the hardware controller; and

at a later time propagating, by the hardware controller, the data written to the cache to the portion of the physical system memory of said another computer system and to a backup memory of the computer system that is attached to the hardware controller.

2. The method of claim 1 wherein the backup memory is implemented using a non-volatile memory.

3. The method of claim 1 further comprising, upon determining that the memory instruction is a memory load instruction:

determining, by the hardware controller, whether data requested via the memory load instruction is present in the cache of the hardware controller; and

upon determining that the data requested via the memory load instruction is not present in the cache of the hardware controller:

translating, by the hardware controller, the memory load instruction into a transaction;

packaging, by the hardware controller, the transaction into a network packet;

transmitting, by the hardware controller, the network packet to said another computer system; and

waiting, by the hardware controller, for a response from said another computer system.

4. The method of claim 3 further comprising, upon determining that the response is not received from said another computer system within a time window T:

retrieving, by the hardware controller, the data requested via the memory load instruction from the backup memory attached to the hardware controller; and

providing, by the hardware controller, the data retrieved from the backup memory to the CPU over the cache coherent interface.

5. The method of claim 4 wherein if the CPU does not receive the data requested via the memory load instruction from the hardware controller within the time window T, the CPU triggers a hardware error condition.

6. The method of claim 3 further comprising, upon determining that the response is received from said another computer system within a time window T:

extracting, by the hardware controller, the data requested via the memory load instruction from the response; and

providing, by the hardware controller, the data extracted from the response to the CPU over the cache coherent interface.

7. The method of claim 1 wherein the backup memory is organized using a log-structured data layout, and wherein propagating the data written to the cache to the backup memory comprises:

aggregating, by the hardware controller, data associated with multiple memory store instructions into a single segment; and

writing, by the hardware controller, the single segment via a single write operation to the backup memory.

8. A hardware controller implemented in a computer system, the hardware controller configured to:

receive a memory instruction from a central processing unit (CPU) of the computer system over a cache-coherent interface, wherein the memory instruction is directed to a physical memory address in a remote memory of the computer system, wherein the remote memory corresponds to a section of a physical memory address space of the computer system that is mapped to portion of a physical system memory of another computer system, and wherein the portion of physical system memory of said another computer system is a borrowed memory portion that is inaccessible by other computer systems while it is mapped to the section of the physical memory space of the computer system;

determine whether the memory instruction is a memory load instruction or a memory store instruction; and

upon determining that the memory instruction is a memory store instruction for writing data to the physical memory address in the remote memory:

write the data associated with the memory store instruction in a cache of the hardware controller; and

at a later time, propagate the data written to the cache to the portion of the physical system memory of said another computer system and to a backup memory of the computer system that is attached to the hardware controller.

9. The hardware controller of claim 8 wherein the backup memory is implemented using a non-volatile memory.

10. The hardware controller of claim 8 wherein the hardware controller is further configured to, upon determining that the memory instruction is a memory load instruction:

determine whether data requested via the memory load instruction is present in the cache of the hardware controller; and

upon determining that the data requested via the memory load instruction is not present in the cache of the hardware controller:

translate the memory load instruction into a transaction;

package the transaction into a network packet;

transmit the network packet to said another computer system; and

wait for a response from said another computer system.

11. The hardware controller of claim 10 wherein the hardware controller is further configured to, upon determining that the response is not received from said another computer system within a time window T:

retrieve the data requested via the memory load instruction from the backup memory attached to the hardware controller; and

provide the data retrieved from the backup memory to the CPU over the cache coherent interface.

12. The hardware controller of claim 11 wherein if the CPU does not receive the data requested via the memory load instruction from the hardware controller within the time window T, the CPU triggers a hardware error condition.

13. The hardware controller of claim 10 wherein the hardware controller is further configured to, upon determining that the response is received from said another computer system within a time window T:

extract the data requested via the memory load instruction from the response; and

provide the data extracted from the response to the CPU over the cache coherent interface.

14. The hardware controller of claim 8 wherein the backup memory is organized using a log-structured data layout, and wherein propagating the data written to the cache to the backup memory comprises:

aggregating data associated with multiple memory store instructions into a single segment; and

writing the single segment via a single write operation to the backup memory.

15. A computer system comprising:

a central processing unit (CPU);

a hardware controller communicatively coupled with the CPU via a cache-coherent interface and comprising a hardware controller cache; and

a backup memory communicatively coupled with the hardware controller,

wherein the hardware controller is configured to:

receive a memory instruction from the CPU over the cache-coherent interface, wherein the memory instruction is directed to a physical memory address in a remote memory of the computer system, wherein the remote memory corresponds to a section of a physical memory address space of the computer system that is mapped to portion of a physical system memory of another computer system, and wherein the portion of physical system memory of said another computer system is a borrowed memory portion that is inaccessible by other computer systems while it is mapped to the section of the physical memory space of the computer system;

determine whether the memory instruction is a memory load instruction or a memory store instruction; and

upon determining that the memory instruction is a memory store instruction for writing data to the physical memory address in the remote memory:

write the data associated with the memory store instruction in the hardware controller cache; and

at a later time, propagate the data written to the hardware controller cache to the portion of the physical system memory of said another computer system and to the backup memory.

16. The computer system of claim 15 wherein the backup memory is implemented using a non-volatile memory.

17. The computer system of claim 15 wherein the hardware controller is further configured to, upon determining that the memory instruction is a memory load instruction:

determine whether data requested via the memory load instruction is present in the hardware controller cache; and

upon determining that the data requested via the memory load instruction is not present in the hardware controller cache:

translate the memory load instruction into a transaction;

package the transaction into a network packet;

transmit the network packet to said another computer system; and

wait for a response from said another computer system.

18. The computer system of claim 17 wherein the hardware controller is further configured to, upon determining that the response is not received from said another computer system within a time window T:

retrieve the data requested via the memory load instruction from the backup memory; and

provide the data retrieved from the backup memory to the CPU over the cache coherent interface.

19. The computer system of claim 18 wherein if the CPU does not receive the data requested via the memory load instruction from the hardware controller within the time window T, the CPU triggers a hardware error condition.

20. The computer system of claim 17 wherein the hardware controller is further configured to, upon determining that the response is received from said another computer system within a time window T:

extract the data requested via the memory load instruction from the response; and

provide the data extracted from the response to the CPU over the cache coherent interface.

21. The computer system of claim 15 wherein the backup memory is organized using a log-structured data layout, and wherein the hardware controller propagates the data written to the hardware controller cache to the backup memory by:

aggregating data associated with multiple memory store instructions into a single segment; and

writing the single segment via a single write operation to the backup memory.

Assignments (3)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
CHANGE OF NAME Recorded Mar 20, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066835/0275 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 4, 2020
From: NOWATZYK, ANDREAS; SUBRAHMANYAM, PRATAP; AKKAWI, ISAM
To: VMWARE INC.
Reel/Frame 054276/0874 →
Continuity (1)
Related Publication 20220012139A1 · Jan 13, 2022