IP Library › Granted Patent US 12,536,043
Granted Patent B2
US 12,536,043 · App. 18/094,474 · Granted Jan 27, 2026

Inter-server memory pooling

Inventors: Christopher Haywood (Cary, NC); Evan Lawrence Erickson (Chapel Hill, CA)
Assignee: Rambus Inc.
G06F9/5016G06F9/452G06F9/5077G06F12/0238G06F12/1009G06F12/1072G06F2212/7201
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 12,536,043
App. No.
18/094,474
Granted
Jan 27, 2026
Kind
B2
Abstract

A memory allocation device for deployment within a host server computer includes control circuitry, a first interface to a local processing unit disposed within the host computer and local operating memory disposed within the host computer, and a second interface to a remote computer. The control circuitry allocates a first portion of the local memory to a first process executed by the local processing unit and transmits, to the remote computer via the second interface, a request to allocate to a second process executed by the local processing unit a first portion of a remote memory disposed within the remote computer. The control circuitry further receives instructions via the first interface to store data at a memory address within the first portion of the remote memory and transmits those instructions to the remote computer via the second interface.

Claims (34)

1 . A memory allocation integrated circuit (memory allocation IC) for deployment within a first computing device, the first computing device having a processing unit and operating memory that are separate and distinct from the memory allocation IC, the memory allocation IC comprising:

a first interface to be coupled to the processing unit;

a second interface to be coupled, via an interconnect fabric, to a second computing device; and

control circuitry to:

allocate a first region of the operating memory for read and write access exclusively in response to instructions issued by the processing unit and received via the first interface; and

receive a request to allocate memory to the second computing device and, in response to the request, allocate a second region of the operating memory for read and write access exclusively in response to instructions issued by the second computing device via the interconnect fabric and received via the second interface.

2 . The memory allocation IC of claim 1 wherein the second interface to the second computing device comprises an interface compliant with a cache-coherent communications standard.

3 . The memory allocation IC of claim 1 wherein the control circuitry to receive the request to allocate the second region of the operating memory comprises circuitry to receive the request from the second computing device via the interconnect fabric.

4 . The memory allocation IC of claim 1 wherein the control circuitry to allocate the first region of the operating memory comprises circuitry responsive to a memory allocation request received from the processing unit via the first interface.

5 . The memory allocation IC of claim 1 wherein the control circuitry further comprises circuitry to transmit via the interconnect fabric a request to the second computing device to allocate, to a process executed by the processing unit, a portion of a remote memory disposed within the second computing device.

6 . The memory allocation IC of claim 5 wherein the control circuitry further comprises circuitry to receive a request from the processing unit via the first interface to read remote data from one or more storage locations within the portion of the remote memory, and to transmit via the interconnect fabric one or more instructions to the second computing device interface to return the remote data requested by the processing unit.

7 . The memory allocation IC of claim 6 wherein the circuitry to receive the request from the processing unit to read the remote data comprises circuitry to (i) receive a first virtual address from the processing unit in association with the request to read the remote data, (ii) translate the first virtual address into a second virtual address, and (iii) transmit the second virtual address to the second computing device in association with the one or more instructions to return the remote data.

8 . The memory allocation IC of claim 1 wherein the control circuitry further comprises circuitry to receive read and write instructions from the second computing device via the second interface and to output corresponding instructions to read data from and write data to the second region of the operating memory.

9 . The memory allocation IC of claim 8 wherein the circuitry to receive the read and write instructions from the second computing device and to output corresponding instructions to read data from and write data to the second region of the operating memory comprises circuitry to receive respective virtual address values from the second computing device in association with the read and write instructions and to translate the virtual address values into physical address values corresponding to respective locations within the second region of the operating memory.

10 . The memory allocation IC of claim 1 wherein the control circuitry to allocate the first and second regions of the operating memory comprises circuitry to allocate the first region of the operating memory to a first process executed by the processing unit to allocate the second region of the operating memory to a second process executed by the second computing device.

11 . A method of operation within a memory allocation integrated circuit (memory allocation IC) disposed within a first computing device, the first computing device having a processing unit and operating memory that are separate and distinct from the memory allocation IC, the method comprising:

allocating a first region of the operating memory for read and write access exclusively in response to instructions issued by the processing unit and received via a first interface of the memory allocation IC;

receiving a request to allocate memory to a second computing device coupled via an interconnect fabric to a second interface of the memory allocation IC; and

in response to the request, allocating a second region of the operating memory for read and write access exclusively in response to instructions issued by the second computing device via the interconnect fabric and received via the second interface.

12 . The method of claim 11 further comprising receiving the instructions issued by the second computing device within an interface to the interconnect fabric compliant with a cache-coherent communications standard.

13 . The method of claim 11 wherein receiving the request to allocate memory to the second computing device comprises receiving the request from the second computing device via the interconnect fabric.

14 . The method of claim 11 further comprising receiving a memory allocation request from the processing unit, and wherein allocating the first region of the operating memory comprises allocating the first region of the operating memory in response to the memory allocation request received from the processing.

15 . The method of claim 11 further comprising transmitting via the interconnect fabric a request to the second computing device to allocate, to a process executed by the processing unit, a portion of a remote memory disposed within the second computing device.

16 . The method of claim 15 further comprising receiving a request from the processing unit to read remote data from one or more storage locations within the portion of the remote memory, and transmitting via the interconnect fabric one or more instructions to the second computing device interface to return the remote data requested by the processing unit.

17 . The method of claim 16 wherein receiving the request from the processing unit to read the remote data comprises receiving a first virtual address from the processing unit in association with the request to read the remote data and translating the first virtual address into a second virtual address, the method further comprising transmitting the second virtual address to the second computing device in association with the one or more instructions to return the remote data.

18 . The method of claim 11 further comprising receiving read and write instructions from the second computing device via the second interface outputting corresponding instructions to a memory controller within the first computing device to read data from and write data to the second region of the operating memory.

19 . The method of claim 18 wherein receiving the read and write instructions from the second computing device and outputting corresponding instructions to read data from and write data to the second region of the operating memory comprises receiving respective virtual address values from the second computing device in association with the read and write instructions and translating the virtual address values into physical address values corresponding to respective locations within the second region of the operating memory.

20 . The method of claim 11 wherein allocating the first region of the operating memory comprises allocating the first region of the operating memory to a first process executed by the processing unit, and wherein allocating the second region of the operating memory for read and write access exclusively in response to instructions issued by the second computing device comprises allocating the second region of the operating memory to a second process executed by the second computing device.

21 . A memory allocation integrated circuit (memory allocation IC) for deployment within a first computing device, the first computing device having a processing unit and operating memory that are separate and distinct from the memory allocation IC, the memory allocation IC comprising:

a first interface to be coupled to the processing unit;

a second interface to be coupled, via an interconnect fabric, to a second computing device; and

means for:

allocating a first region of the operating memory for read and write access exclusively in response to instructions issued by the processing unit and received via the first interface; and

receiving a request to allocate memory to the second computing device and, in response to the request, allocating a second region of the operating memory for read and write access exclusively in response to instructions issued by the second computing device via the interconnect fabric and received via the second interface.

Continuity (4)
Continuation 17084392 · Oct 29, 2020
Provisional Application 63061943 · Aug 6, 2020
Provisional Application 62930173 · Nov 4, 2019
Related Publication 20230305891A1 · Sep 28, 2023
References Cited (36)
US 5845310A · Brooks · 1998 [cited by examiner]
US 5864876A · Rossum et al. · 1999 [cited by applicant]
US 5914730A · Santos et al. · 1999 [cited by applicant]
US 5918249A · Cox et al. · 1999 [cited by applicant]
US 5920881A · Porterfield · 1999 [cited by applicant]
US 6226671B1 · Hagersten · 2001 [cited by examiner]
US 6272612B1 · Bordaz et al. · 2001 [cited by applicant]
US 6321276B1 · Forin · 2001 [cited by examiner]
US 6336180B1 · Long et al. · 2002 [cited by applicant]
US 6487628B1 · Duong et al. · 2002 [cited by applicant]
US 6598130B2 · Harris et al. · 2003 [cited by applicant]
US 6701421B1 · Elnozahy et al. · 2004 [cited by applicant]
US 6925547B2 · Scott et al. · 2005 [cited by applicant]
US 7000087B2 · Atherton et al. · 2006 [cited by applicant]
US 8392565B2 · Tripathi et al. · 2013 [cited by applicant]
US 8938571B1 · Vincent · 2015 [cited by applicant]
US 9465729B2 · Solihin · 2016 [cited by applicant]
US 9766916B2 · Arroyo et al. · 2017 [cited by applicant]
US 10241956B2 · Anumula et al. · 2019 [cited by applicant]
US 20010016879A1 · Sekiguchi et al. · 2001 [cited by applicant]
US 20050055406A1 · Singhai et al. · 2005 [cited by applicant]
US 20050223184A1 · Russell et al. · 2005 [cited by applicant]
US 20060155791A1 · Tene · 2006 [cited by examiner]
US 20060195618A1 · Arndt et al. · 2006 [cited by applicant]
US 20060195623A1 · Arndt et al. · 2006 [cited by applicant]
US 20060236063A1 · Hausauer et al. · 2006 [cited by applicant]
US 20140089585A1 · Nakajima · 2014 [cited by examiner]
US 20190042133A1 · Peterson et al. · 2019 [cited by applicant]
US 20190042294A1 · Guim Bernat et al. · 2019 [cited by applicant]
US 20190042518A1 · Marolia · 2019 [cited by examiner]
US 20190102292A1 · Agarwal et al. · 2019 [cited by applicant]
US 20190102311A1 · Gupta et al. · 2019 [cited by applicant]
US 20200125490A1 · Blagodurov et al. · 2020 [cited by applicant]
US 20200136996A1 · Li et al. · 2020 [cited by applicant]
US 20220083367A1 · Yao · 2022 [cited by examiner]
Pinto, Christian et al., “Teleporting Memory Across Two Servers”, IBM Research Blog, IBM Research Europe, Aug. 2020, https://www.ibm.com/blogs/research/2020/08/teleporting-memory-across-two-servers/, 11 pages. [cited by applicant]