IP Library › Granted Patent US 12,293,227
Granted Patent B2
US 12,293,227 · App. 17/254,195 · Granted May 6, 2025

Memory allocation in a hierarchical memory system

Inventors: Amir Roozbeh (Stockholm, SE); Alireza Farshin (Stockholm, SE); Dejan Kostic (Solna, SE); Gerald Q. Maguire, Jr. (Stockholm, SE)
Assignee: TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
G06F9/5016G06F12/0811G06F2212/608
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,293,227
App. No.
17/254,195
Granted
May 6, 2025
Kind
B2
Abstract

A memory allocator in a computer system comprising a plurality of CPU cores ( 5101 - 5104 ) and a first ( 530 ) and a second ( 5120 ) memory unit having different data access times and wherein each one of the first and the second memory units is divided into memory portions wherein each memory portion (SLICE 0-3) in the second memory unit is associated with at least one memory portion (A-G) in the first memory unit, and wherein each memory portion in the second memory unit is associated with a CPU core. If at least a predetermined number of memory portions in the first memory unit being part of the available requested memory is associated with the memory portion in the second memory unit that is associated with the CPU core on which the requesting application is running, the requested available memory is allocated to the requesting application.

Claims (29)

1. A method performed by a memory allocator in a computer system for allocating memory to applications, wherein the computer system comprises at least one computer server comprising a plurality of central processing unit (CPU) cores, the plurality of CPU cores comprising a first CPU core and a second CPU core, and the computer server further comprising at least a first memory unit and a second memory unit having different data access times, and wherein the second memory unit is divided into a plurality of slices, wherein the plurality of slices of the second memory unit comprises a first slice and a second slice, the first slice is associated with the first CPU core, and the second slice is associated with the second CPU core, the method comprising:

receiving a request from an application for allocating memory to the application, wherein the application is running on the first CPU core;

in response to the request, selecting a memory block from the first memory unit, wherein the memory block comprises a set of memory chunks;

determining whether at least T number of the memory chunks included in the selected memory block of the first memory unit are associated with the first slice of the second memory unit, where T is a predetermined threshold;

in response to determining that at least T number of the memory chunks included in the selected memory block of the first memory unit are associated with the first slice of the second memory unit, allocating the selected memory block to the requesting application.

2. The method of claim 1 , further comprising monitoring a selection algorithm that controls which memory chunks in the first memory unit are loaded into a slice of the second memory unit; and

determining which memory chunks of the first memory unit are associated with the first slice of the second memory unit.

3. The method of claim 2 , wherein the selection algorithm uses a hash function.

4. The method of claim 2 , wherein the monitoring of the selection algorithm is done by a memory allocation enhancer unit.

5. The method of claim 1 , further comprising, for each CPU core in the plurality of CPU cores, determining a data access time between the CPU core and each slice of the second memory unit.

6. The method of claim 5 , further comprising associating each CPU core with at least one slice of the second memory unit based on the determined data access times.

7. The method of claim 1 , wherein

the first memory unit is a dynamic random-access memory (DRAM), and

the second memory unit is a last level cache (LLC).

8. A memory allocator in a computer system for allocating memory to applications, wherein the computer system comprises at least one computer server comprising a plurality of central processing unit (CPU) cores, the plurality of CPU cores comprising a first CPU core and a second CPU core, and the computer server further comprises at least a first memory unit and a second memory unit having different data access times, and wherein the second memory unit is divided into a plurality of slices, wherein the plurality of slices of the second memory unit comprises a first slice and a second slice, the first slice is associated with the first CPU core, and the second slice is associated with the second CPU core, further wherein the computer system is further comprising a processor and a memory containing instructions which, when executed by the processor instructs the memory allocator to perform a method comprising:

receiving a request from an application for allocating memory to the application, wherein the application is running on the first CPU core;

in response to the request, selecting a memory block from the first memory unit, wherein the memory block comprises a set of memory chunks;

determining whether at least T number of the memory chunks included in the selected memory block of the first memory unit are associated with the first slice of the second memory unit, where T is a predetermined threshold;

in response to determining that at least T number of the memory chunks included in the selected memory block of the first memory unit are associated with the first slice of the second memory unit, allocating the selected memory block to the requesting application.

9. A Key Value Storage data base comprising the memory allocator of claim 8 .

10. The memory allocator of claim 8 , further comprising monitoring a selection algorithm that controls which memory chunks in the first memory unit are loaded into a slice of the second memory unit; and

determining which memory chunks of the first memory unit are associated with the first slice of the second memory unit.

11. The memory allocator of claim 10 , wherein the selection algorithm uses a hash function.

12. The memory allocator of claim 10 , wherein the monitoring of the selection algorithm is done by a memory allocation enhancer unit.

13. The memory allocator of claim 8 , further comprising, for each CPU core in the plurality of CPU cores, determining a data access time between the CPU core and each slice of the second memory unit.

14. The memory allocator of claim 13 , further comprising associating each CPU core with at least one slice of the second memory unit based on the determined data access times.

15. The memory allocator of claim 8 , wherein

the first memory unit is a dynamic random-access memory (DRAM), and

the second memory unit is a last level cache (LLC).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2021
From: ROOZBEH, AMIR; FARSHIN, ALIREZA; KOSTIC, DEJAN; MAGUIRE, GERALD Q., JR.
To: TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
Reel/Frame 055004/0101 →
Priority Claims (1)
WO PCT/SE2018/050676 · Jun 21, 2018 · international
Continuity (1)
Related Publication 20210191777A1 · Jun 24, 2021
References Cited (12)
US 5329489A · Diefendorff · 1994 [cited by examiner]
US 9836400B2 · Wang et al. · 2017 [cited by applicant]
US 10103902B1 · Sampath · 2018 [cited by examiner]
US 20140006715A1 · Saraf et al. · 2014 [cited by applicant]
US 20150370823A1 · Laker · 2015 [cited by examiner]
US 20170052741A1 · Hassan · 2017 [cited by examiner]
US 20190121563A1 · Cohen · 2019 [cited by examiner]
US 20190278849A1 · Chandramouli · 2019 [cited by examiner]
CN 106484539A · 2017 [cited by applicant]
WO 2009021835A1 · 2009 [cited by applicant]
International Search Report and Written Opinion issued in International Application No. PCT/SE2019/050596 dated Sep. 16, 2019 (13 pages). [cited by applicant]
Clémentine, M., et al, “Reverse Engineering Intel Last-Level Cache Complex Addressing Using Performance Counters”, Dec. 12, 2015 (Dec. 12, 2015), International Conference on Computer Analysis of Images and Patterns. CAI… [cited by applicant]