IP Library Granted Patent US 9,921,771
Granted Patent B2
US 9,921,771 · App. 15/621,537 · Granted Mar 20, 2018

Local primary memory as CPU cache extension

Inventors: Timothy A. Stabrawa (Lombard, IL); Zachary A. Cornelius (Chicago, IL); John Overton (Chicago, IL); Andrew S. Poling (Lombard, IL); Jesse I. Taylor (Glenside, PA)
Assignee: Kove IP, LLC
G06F3/0632G06F3/0604G06F3/067
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 9,921,771
App. No.
15/621,537
Granted
Mar 20, 2018
Kind
B2
Abstract

A system may be provided comprising: a local primary memory; an interconnect; and a processor, the processor configured to cause, in response to a memory allocation request from an application, allocation of a region of an external primary memory included in a memory appliance, the external primary memory in the memory appliance accessible by the system over the interconnect with client-side memory access, wherein the client-side memory access is independent of a central processing unit of the memory appliance, wherein the external primary memory is memory that is external to the system and primary memory to the system, and wherein the processor is further configured to operate the local primary memory as a cache for data accessed in the external primary memory included in the memory appliance.

Claims (40)

1. An apparatus comprising:

a local primary memory;

an interconnect; and

a processor configured to cause, in response to a memory allocation request from an application, allocation of a region of an external primary memory on a memory appliance, the external primary memory on the memory appliance accessible by the apparatus over the interconnect with client-side memory access, wherein the client-side memory access is independent of a central processing unit of the memory appliance, wherein the external primary memory is memory that is external to the apparatus but is primary memory to the apparatus, wherein the processor is further configured to cache data in the local primary memory that is accessed in the external primary memory on the memory appliance, wherein the memory allocation request is a first memory allocation request, and wherein the processor is further configured to:

allocate, in response to a second memory allocation request from the application, a slab of the external primary memory by:

a selection, at the apparatus and independent of the memory appliance, of a subset of the region of the external primary memory to be the slab, and

a mapping, at the apparatus, of the slab of the external primary memory to a virtual address space.

2. The apparatus of claim 1 , wherein the local primary memory is a higher numbered memory tier than at least one of an L1 cache, an L2 cache, or an L3 cache.

3. The apparatus of claim 1 , wherein the local primary memory is combined with the processor.

4. The apparatus of claim 1 , wherein the processor is further configured to migrate data that is stored in a portion of the region of the external primary memory from a first memory tier to a second memory tier.

5. The apparatus of claim 1 , wherein the processor is further configured to cause data for one or more portions of the region to be migrated to lower numbered tiers by a fault-in at a target memory tier.

6. The apparatus of claim 1 , wherein data in a portion of the region is read into the local primary memory in response to a request to read the data received from the application.

7. A system comprising:

a local primary memory;

an interconnect; and

a processor configured to cause, in response to a memory allocation request from an application, allocation of a region of an external primary memory included in a memory appliance, the external primary memory in the memory appliance accessible by the system over the interconnect with client-side memory access, wherein the client-side memory access is independent of a central processing unit of the memory appliance, wherein the external primary memory is memory that is external to the system but is primary memory to the system, wherein the processor is further configured to operate the local primary memory as a cache for data accessed in the external primary memory included in the memory appliance, wherein the memory allocation request is a first memory allocation request, and wherein the processor is further configured to:

allocate, in response to a second memory allocation request from the application, a slab of the external primary memory by:

a selection, within the system and independent of the memory appliance, of a subset of the region of the external primary memory to be the slab, and

a mapping, within the system, of the slab of the external primary memory to a virtual address space.

8. The system of claim 7 , wherein the processor is further configured to cache, in the local primary memory, a portion of data stored in the slab of the external primary memory, the data accessed in a memory access operation performed on the slab of the external primary memory.

9. The system of claim 7 , wherein the client-side memory access includes Remote Direct Memory Access (RDMA).

10. The system of claim 7 , wherein the local primary memory includes a level 4 memory tier.

11. The system of claim 7 , wherein the processor is further configured to change data in a portion of the region from a first memory tier to a second memory tier.

12. The system of claim 7 , wherein the processor is further configured to cause data for one or more portions of the region of the external primary memory to be migrated to lower-numbered tiers in response to a fault incurred at a target memory tier.

13. The system of claim 7 , wherein data in a portion of the region is read into the external primary memory in response to a pre-fetch request.

14. A method comprising:

causing, in response to a first memory allocation request from an application at a client device, allocation of a region of an external primary memory that is included in a memory appliance, wherein the external primary memory is memory that is external to the client device but is primary memory to the client device;

allocating, in response to a second memory allocation request from the application, a slab of the external primary memory by selecting, independent of the memory appliance, a subset of the region of the external primary memory to be the slab, and mapping the slab of the external primary memory to a virtual address space at the client device;

accessing the external primary memory, which is included in the memory appliance, by the client device over an interconnect with client-side memory access, wherein the client-side memory access is independent of a central processing unit of the memory appliance; and

caching data read from the external primary memory in a local primary memory of the client device.

15. The method of claim 14 , wherein caching the data in the local primary memory includes providing a level 4 cache.

16. The method of claim 14 further comprising migrating data for one or more portions of the region of the external primary memory to lower-numbered tiers by faulting-in at a target memory tier.

17. The method of claim 14 , wherein the caching is in response to receiving, from the application, a request to read the data.

18. The method of claim 14 , wherein the caching is in response to a pre-fetch request.

19. A system comprising:

an interconnect; and

a processor configured to cause, in response to a first memory allocation request from an application, allocation of a region of an external primary memory included in a memory appliance, the external primary memory in the memory appliance accessible by the system over the interconnect with client-side memory access, wherein the client-side memory access is independent of a central processing unit of the memory appliance, wherein the external primary memory is memory that is external to the system but is primary memory to the system, wherein the processor is further configured to cache data in a processor cache that is read from the external primary memory included in the memory appliance, and wherein the processor is further configured to:

allocate, in response to a second memory allocation request from the application, a slab of the external primary memory by:

a selection, within the system and independent of the memory appliance, of a subset of the region of the external primary memory to be the slab, and

a mapping, within the system, of the slab of the external primary memory to a virtual address space.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: STABRAWA, TIMOTHY A.; CORNELIUS, ZACHARY A.; OVERTON, JOHN; POLING, ANDREW S.; TAYLOR, JESSE I.
To: KOVE IO, INC.
Reel/Frame 042757/0499 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: KOVE IO, INC.
To: KOVE IP, LLC
Reel/Frame 042757/0552 →
Continuity (4)
Continuation 14854657 · Sep 15, 2015
Continuation In Part 14530908 · Nov 3, 2014
Provisional Application 62051144 · Sep 16, 2014
Related Publication 20170285997A1 · Oct 5, 2017