IP Library Granted Patent US 12663930
Granted Patent B2
US 12663930 · App. 18/408,023 · Granted Jun 23, 2026

Memory allocator

Inventors: Yaron Alpert (Hod-Hasharon, IL); Avi Sammy Berkovich (Herzliya, IL); Yoav Ben Yehezkel (Netanya, IL)
Assignee: Texas Instruments Incorporated
G06F3/0631G06F3/0644G06F3/0658G06F3/0604G06F3/0671
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 12663930
App. No.
18/408,023
Granted
Jun 23, 2026
Kind
B2
Abstract

In some examples, an apparatus includes a data store and a controller. The is communicatively coupled to the data store. The controller is configured to receive a request to allocate a memory cluster, the request indicating a requested memory attribute other than a requested size of the memory cluster. The controller is also configured to, responsive to receipt of the request, determine, based on one or more memory attributes of a plurality of memories accessible by the apparatus, an available memory from among the plurality of memories, the available memory capable of providing the requested memory attribute. The controller is also configured to, responsive to determining the available memory, make a memory allocation decision.

Claims (64)

1 . An apparatus, comprising:

a data store; and

a controller communicatively coupled to the data store, the controller configured to:

receive a first request to allocate first a memory cluster, the first request indicating a first requested memory attribute other than a requested size of the first memory cluster;

responsive to the first request, determine, based on one or more memory attributes of a plurality of memories a first memory from the plurality of memories the first memory capable of providing the first requested memory attribute;

responsive to determining the first memory, determine whether sufficient space exists in the first memory based on the requested size of the first memory cluster; and

responsive to determining that sufficient space does not exist in the first memory, deallocate a second memory cluster from the first memory; and

allocate the first memory cluster in first available memory.

2 . The apparatus of claim 1 , wherein the controller is configured to:

receive the first request from a requester; and

transmit, to the requester, memory allocation feedback based on the allocation of the first memory cluster.

3 . The apparatus of claim 1 , wherein the controller is configured to access a partition of the data store to determine the one or more memory attributes of the plurality of memories.

4 . The apparatus of claim 1 , wherein the first request is associated with a first requester identifier, and wherein the controller is configured to:

receive a second request to allocate a third memory cluster, the second request associated with a second requester identifier and indicating a second requested memory attribute other than a requested size of the third memory cluster, wherein the second requested memory attribute is for a performance level different than the first requested memory attribute;

responsive to the second request and a value of the second requester identifier, determine, based on the one or more memory attributes of the plurality of memories, a second memory from the plurality of memories, the second memory capable of providing the second requested memory attribute, wherein the second memory has at least one performance level less than the first memory;

determine whether sufficient space exists in the second memory based on the requested size of the third memory cluster; and

responsive to determining that sufficient space exists in the second memory, allocate the third memory cluster in the second memory.

5 . The apparatus of claim 1 , wherein:

the first request is received from a first requester, the first request includes a first source identifier uniquely identifying the first requester and the requested size for the first memory cluster; and

the controller is configured to:

receive a second request from a second requester to allocate a third memory cluster, the second request including a second source identifier uniquely identifying the second requester and a second requested size for the third memory cluster;

allocate the first memory cluster in the first memory based on a value of the first source identifier, wherein the first memory has a first amount of free space greater than a sum of the requested size for the first memory cluster and the second requested size for the third memory cluster; and

allocate the third memory cluster in a second memory of the plurality of memories based on the second source identifier, wherein the second memory has a second amount of free space greater than the sum of the requested size for the first memory cluster and the second requested size for the third memory cluster.

6 . The apparatus of claim 1 , wherein the first request is received in a build process and the first request is for a memory cluster to be assigned during the build process in an initial memory map determined by the controller.

7 . The apparatus of claim 1 , wherein the first requested memory attribute is indicated by an implicit indication.

8 . The apparatus of claim 7 , wherein the first requested memory attribute is indicated by an identification of a requester from which the request was received.

9 . The apparatus of claim 8 , wherein the controller is configured to reference into the data store based on the identification of the requester to determine the first requested memory attribute, and wherein the first requested memory attribute is mapped in a partition of the data store to the identification of the requester.

10 . The apparatus of claim 1 , wherein the first requested memory attribute is indicated by an explicit indication providing a requested value for the first requested memory attribute.

11 . The apparatus of claim 1 , wherein, responsive to determining the first memory, the controller is configured to:

responsive to determining that sufficient space exists in the first memory, allocate the first memory cluster in the first memory without deallocating the second memory cluster from the first memory.

12 . The apparatus of claim 11 , wherein responsive to allocating the first memory cluster in the first memory, the controller is configured to provide memory allocation feedback indicating a memory allocation map of the first memory.

13 . The apparatus of claim 1 , wherein the controller is configured to:

responsive to determining that sufficient space does not exist in the first memory, provide memory allocation feedback indicating the first memory cluster cannot be allocated.

14 . The apparatus of claim 1 , wherein the controller is configured to:

responsive to determining that sufficient space does not exist in the first memory, allocating the first memory cluster to a second memory of the plurality of memories, wherein the second memory at least partially conforms to the first requested memory attribute.

15 . The apparatus of claim 14 , wherein the controller is further configured to provide memory allocation feedback indicating the first memory cluster is allocated to the second memory and not to the first memory.

16 . The apparatus of claim 1 , wherein the first requested memory attribute includes one or more of: an access speed, an access type, a power consumption value, an operation profile, a cluster arrangement policy, a reliability value, a security policy, or a redundancy value.

17 . The apparatus of claim 1 , further comprising the plurality of memories.

18 . The apparatus of claim 17 , wherein the controller, the data store, and the plurality of memories are integrated in a same integrated circuit.

19 . The apparatus of claim 17 , wherein the plurality of memories is external to the data store and the controller.

20 . The apparatus of claim 1 , wherein the first memory is a shared memory configured to be shared among a plurality of requesters.

21 . The apparatus of claim 1 , wherein the first memory cluster has been deallocated prior to receipt of the first request, and wherein the first request is a request to re-allocate the first memory cluster.

22 . A method, comprising:

receiving, by a controller, a first request to allocate a first memory cluster, the first request indicating a first requested memory attribute other than a requested size of the first memory cluster;

determining, by the controller, a first memory from a plurality of memories based on one or more memory attributes of the plurality of memories, wherein the first memory is capable of providing the first requested memory attribute;

determining, by the controller, whether available space exists in the first memory based on the requested size of the first memory cluster; and

responsive to determining that sufficient space does not exist in the first memory, deallocating, by the controller, a second memory cluster from the first memory; and

allocating, by the controller, the first memory cluster in the first memory.

23 . The method of claim 22 , wherein the first request is provided by a requester; and the method further comprises:

transmitting, by the controller, memory allocation feedback based on the allocation of the first memory cluster to the requester.

24 . The method of claim 22 , wherein the first request is associated with a first requester identifier, and wherein the method further comprises:

receiving, by the controller, a second request to allocate a third memory cluster, the second request associated with a second requester identifier and indicating a second requested memory attribute for a performance level different than the first requested memory attribute;

determining, by the controller, a second memory from the plurality of memories, based on the one or more memory attributes of the plurality of memories, wherein the second memory is capable of providing the second requested memory attribute, and wherein the second memory has at least one performance level less than the first memory;

determining, by the controller, whether sufficient space exists in the second memory based on the requested size of the third memory cluster; and

responsive to determining that sufficient space exists in the second memory, allocating, by the controller, the third memory cluster in the second memory.

25 . The method of claim 22 , wherein the first requested memory attribute is indicated by an identification of a requester which provides the first request.

26 . The method of claim 25 , wherein the controller references a data store based on the identification of the requester to determine the first requested memory attribute, and wherein the first requested memory attribute is mapped in a partition of the data store to the identification of the requester.

27 . The method of claim 22 , wherein the first requested memory attribute is indicated by an explicit indication providing a requested value for the first requested memory attribute.

28 . The method of claim 22 , further comprising:

responsive to determining that sufficient space exists in the first memory, allocating, by the controller, the first memory cluster in the first memory without deallocating the second memory cluster from the first memory.

29 . The method of claim 28 , further comprising:

providing, by the controller, memory allocation feedback indicating a memory allocation map of the first memory.

30 . The method of claim 22 , wherein the first requested memory attribute includes one or more of: an access speed, an access type, a power consumption value, an operation profile, a cluster arrangement policy, a reliability value, a security policy, or a redundancy value.

31 . The method of claim 22 , wherein the first request is a request to re-allocate the first memory cluster.