Memory allocator

Dynamic allocation of memory attributes through memory allocators solves the problem of failing to effectively consider memory attributes in the prior art, achieving more efficient and lower-cost memory usage, and meeting the performance needs of different requesters.

CN120295750APending Publication Date: 2025-07-11TEXAS INSTRUMENTS INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411984639.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-01-09
Filing Date
2024-12-31
Publication Date
2025-07-11

AI Technical Summary

Technical Problem

Existing memory allocation technology fails to effectively consider the properties of memory, resulting in waste of resources and performance degradation, and fails to meet the specific needs of different requesters.

Method used

Dynamic allocation of memory is optimized by the memory allocator based on requester requirements and available memory properties, ensuring that the memory is allocated to the appropriate memory type to meet specific performance requirements.

Benefits of technology

It improves memory usage efficiency, reduces power consumption and cost, and at the same time improves system performance, meeting the needs of different application environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120295750A_ABST
    Figure CN120295750A_ABST
Patent Text Reader

Abstract

The invention relates to a memory allocator. In some examples, an apparatus (104) includes a data store (204) and a controller (206). The controller is communicatively coupled to the data storage area. 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, in response to receiving the request, determine an available memory among a plurality of memories accessible by the device based on one or more memory attributes of the plurality of memories, the available memory being capable of providing the requested memory attribute. The controller is also configured to make a memory allocation decision in response to determining the available memory.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure generally relates to an electronic system and method, and in particular embodiments, to a memory allocator. Background Art

[0002] Various electronic devices include memory for storing data. Some devices include multiple different types of memory. Summary of the Invention

[0003] In some examples, a device includes a data storage area and a controller. The controller is communicatively coupled to the data storage area. The controller is configured to receive a request to allocate a memory cluster, the request indicating a requested memory attribute other than the requested size of the memory cluster. The controller is further configured to, in response to receiving the request, determine available memory among the multiple memories accessible by the device based on one or more memory attributes of the multiple memories, the available memory being capable of providing the requested memory attribute. The controller is further configured to, in response to determining the available memory, make a memory allocation decision. Brief Description of the Drawings

[0004] Figure 1 Is a block diagram of an electronic device according to various examples.

[0005] Figure 2 Is a block diagram of an allocator according to various examples.

[0006] Figure 3 Is a flowchart of a method for operating an allocator according to various examples.

[0007] Figure 4 Is a flowchart of a method for operating an allocator according to various examples.

[0008] Figure 5 Is a flowchart of a method for operating an allocator according to various examples.

[0009] Figure 6 Is a flowchart of a method for operating an allocator according to various examples. Detailed Description

[0010] The making and using of the disclosed embodiments are discussed in detail below. It should be understood that many applicable inventive concepts provided by this disclosure can be implemented in a variety of specific contexts. The specific embodiments discussed merely illustrate specific ways of making and using the invention and do not limit the scope of the invention.

[0011] The following description sets forth various specific details in order to provide a thorough understanding of several example embodiments in accordance with the description. Embodiments may be obtained without one or more of the specific details or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations have not been shown or described in detail so as not to obscure various aspects of the embodiments. References to "an embodiment" in this specification indicate that a particular configuration, structure, or feature described relative to the embodiment is included in at least one embodiment. Thus, phrases such as "in one embodiment" or "in an instance" that may appear at different points in this specification do not necessarily all refer to the same embodiment. Furthermore, the specific forms, structures, or features may be combined in any suitable manner in one or more embodiments.

[0012] In one embodiment, a memory attribute-aware memory allocator allocates clusters to one or more requesters (from one or more hardware entities) based on at least one memory attribute different from the requested size. By allocating clusters based on the requirements of each requester and the characteristics of the available memory, some embodiments can advantageously consume less power, achieve higher performance (e.g., lower latency, higher throughput, etc.), and / or reduce costs (e.g., by reducing the amount of memory without affecting performance, e.g., by optimizing memory allocation).

[0013] Some electronic devices include multiple memories. The multiple memories can be of different types and can have various memory attributes (e.g., speed, security, power, availability of cache, etc.), such that for a given capability, a first memory can provide increased performance or functionality compared to a second memory. Space in the memory can be statically allocated, e.g., statically allocated at the time of compilation or build of a program on or by an electronic device, thereby providing a predefined and reserved allocation or static memory mapping as determined at compile or build time. For example, the code of a program can be compiled to form an image or executable file, which implements the program via a processor in response to execution by the processor. A compiler that compiles code to form executable code can construct a memory allocation mapping that defaults to allocate portions of the memory to the program. In some instances, a user can enforce allocation constraints on some or all parts of the code. In contrast to the static allocation of space or clusters in the memory, space or clusters in the memory can be dynamically allocated (e.g., in addition to static allocation). For example, at runtime of a program on an electronic device, the program can request to allocate a specific amount of space in the memory.

[0014] In both static memory allocation and dynamic memory allocation, the allocation can be performed in a manner that is unaware of the memory attributes of the memory on which the allocation is being performed. Thus, a requester (e.g., a program, a device, a process, etc.) that could benefit from allocating memory of a device having specific attributes (e.g., low latency, low power, high throughput, fast read, fast write, etc.) may instead be allocated memory of a device that does not have these specific characteristics.

[0015] For example, in a first scenario, if memory allocation is performed without attribute awareness, then a requester that could benefit from a fast temporary read / write speed (e.g., from static random access memory (RAM) (SRAM)) may instead be allocated memory having a slow read / write speed. As another example, if memory allocation is performed without attribute awareness, then a requester that can function with memory having a slow read / write speed may instead be allocated memory having a fast read / write speed, thereby unnecessarily occupying space in the fast memory and preventing other requesters that could benefit from the fast memory from being allocated to the fast memory.

[0016] In some embodiments, the memory allocation is attribute-aware such that memory is assigned to requesters based on the needs or requests of each requester (e.g., subject to availability), which can advantageously result in higher performance, lower power, and / or lower memory space requirements (e.g., which can advantageously result in lower cost). In this way, memory having a faster temporary read / write speed, which may be more limited in available storage capacity due to the relatively large space consumption and power consumption of the memory, can be reserved for requesters that could benefit from the fast temporary read / write speed, rather than allocating memory having a faster temporary read / write speed to requesters that can function with memory having a slower read / write speed.

[0017] In some embodiments, a device may include high-performance memory (e.g., to facilitate high-performance devices). Compared to other lower-performance memories, high-performance memory may have a higher cost, consume a larger amount of space, and consume a greater amount of power. These characteristics may make high-performance memory unsuitable for some application environments, e.g., due to memory resource constraints. For example, some application environments (e.g., Internet of Things (IoT) or other devices) may be area-constrained, power-constrained, or cost-constrained. However, devices in these application environments may still require at least some high-performance memory. Thus, a device may include multiple memories, where the memories have different memory attributes. Memory attributes may include, for example, the location of the memory (e.g., inside or outside the device), the access speed or time of the memory, the availability or unavailability of a cache memory, the availability or unavailability of security features, the availability or unavailability of encryption, power consumption (e.g., read, write, peak, average, or the like), the persistence or non-persistence of the memory, the volatility or non-volatility of the memory, whether the memory is reserved or non-reserved memory, the reliability characteristics of the memory, the redundancy characteristics of the memory, layout constraints, or the like. In some instances, the memory attributes are independent of the memory size or available memory space of the memory.

[0018] Because some requesters or specific operations of a requester may benefit more from specific characteristics of a specific memory (e.g., the increased performance of high-performance memory, the lower power of low-power memory, etc.) than other requesters, or more generally, the amount of benefit from a memory having specific memory attributes or memory attribute combinations may be greater than what other requesters may receive, it may be useful to allocate the requester or certain operations of the requester to a specific memory. Some embodiments optimize memory allocation among the available memories in an electronic device for one or more requesters.

[0019] Conventional memory allocation does not consider memory attributes other than available space when performing. To perform optimized memory allocation, in some embodiments, the memory allocation is memory-attribute-aware such that the memory allocator performs static and / or dynamic memory allocation to memories considering the memory attributes of the memories and the values of those memory attributes available to the requester.

[0020] In some instances, a requester provides a memory allocation request for an allocation within a requested memory. The memory allocation request may include an implicit request for specific memory attributes of the memory in which the requester receives the memory allocation. The implicit request may be inferred or determined by an allocator from the memory allocation request received from the requester. For example, the memory allocation request may at least include an indication of the requested size of the memory cluster to be allocated in the memory and an identifier of the requester that issues the memory allocation request. As used herein, a memory cluster may be a discontinuous memory space that may include several memory types to be grouped together. The allocator may receive the memory allocation request using the identifier of the requester that issues the memory allocation request and retrieve a database. Based on the identifier and the database, the allocator may determine the requested memory attributes of the memory allocation request from the specific requester. For example, the database may indicate that all memory allocation requests from a requester with a first identifier are to receive memory allocations in a memory with a speed greater than a first threshold (if available), and all memory allocation requests from a second requester with a second identifier are to receive memory allocations in a second memory with a speed less than the first threshold and less than a second threshold (if available), or the like. In some instances, the database may also consider the size of the memory cluster requested in the memory allocation request. For example, based on the requested memory attributes of the requester for the size of the requested memory cluster, a memory allocation request from a requester with a first identifier for a memory cluster of a first size may be serviced by an allocation to a first memory, while a memory allocation request from a requester with a first identifier for a memory cluster of a second size may be serviced by an allocation to a second memory.

[0021] In some embodiments, a memory allocator may receive a conventional memory allocation request from a requester and still perform memory attribute-aware allocation based on determining the source identity of the memory request (e.g., based on the time the request is received, the mechanism by which the request is received (e.g., wire), or some other way) and using the source identity to query a database to determine the memory preferences associated with the request.

[0022] In some instances, a requester may include an explicit request for specific memory attributes of the memory in which the requester receives the memory allocation. For example, the requester may provide a memory allocation request to an allocator, where the requester specifies values for one or more memory attributes of the requested memory allocation. For example, the requester may explicitly request to allocate a memory cluster in a memory with a speed greater than a first threshold, with a power consumption less than a second threshold, with encryption, or any other one or more memory attributes, as described above.

[0023] In various examples, an allocator attempts to allocate a memory cluster in memory having memory attributes specified or requested by a requester in a memory allocation request. For example, the allocator may maintain or be able to access a database having information on memory attributes of memory accessible by an electronic device. In response to receiving a memory allocation request, the allocator may determine the requested memory attributes for the memory allocation (e.g., implicitly, by looking up a requester identifier in another database to determine the requested memory attributes associated with the requester identifier, or explicitly based on the values of the requested memory attributes included in the memory allocation request), access the database to determine available memory accessible by the electronic device and capable of providing the requested memory attributes, and determine whether there is sufficient space in the available memory to provide the requested memory allocation.

[0024] In response to there being sufficient space, the allocator may modify the memory map associated with one or more of the available memories to include the memory cluster requested by the memory allocation request. In response to there not being sufficient space, or in response to no memory being accessible by the electronic device at a given time capable of providing the requested memory attributes, the allocator may perform one or more actions. In one example, the allocator may wait a programmed amount of time and attempt the allocation again. In another example, the allocator may perform a best-fit allocation that does not satisfy at least one of the requested memory attributes indicated by the memory allocation request. In this example, the allocator may provide notice to the requester that a memory allocation has been performed but the memory allocation does not provide at least one of the requested memory attributes. In another example, the allocator may notify the requester that memory having at least one of the requested memory attributes is not available. In such examples, the allocator may provide a recommendation for modifying at least one of the requested memory attributes from a first value that is not available in memory accessible by the electronic device to a second value that is available in memory accessible by the electronic device. In some examples, in response to the notice, the allocator receives a second memory allocation request from the requester, where the second memory allocation request includes a memory allocation in memory capable of providing the requested memory attributes having the second value. In response to the second memory allocation request, the allocator may modify the memory map associated with one or more of the available memories to include the memory cluster requested by the second memory allocation request.

[0025] Figure 1FIG. 0 is a block diagram of an electronic device 100 according to various examples. In one example, the electronic device 100 represents an electronic device such as an IoT device, a sensor device, a smartphone, a computing device, or the like. In various examples, the electronic device 100 includes a processor 102, a memory allocator 104, a plurality of memories 106, and a memory map 108. In some examples, the plurality of memories 106 includes or implements a data storage area in which data can be stored, such as a database for reference or use in the operation of the electronic device 100. For example, the memory, the database, or the like can be stored as a partition or other logical structure of the data storage area or stored therein. Although Figure 1 shown, the memory map 108 may not be a physical component but may actually be a data structure stored in any suitable database, which can be stored inside the electronic device 100 (e.g., stored in a memory not shown in Figure 1 ) and / or outside the electronic device 100, e.g., accessible via the Internet or local or external memory. In one example, the processor 102 executes instructions of an executable file such as a program image to execute a program. In some examples, more than one processor 102 may be present in the electronic device 100.

[0026] Although Figure 1 illustrating a single processor 102, some embodiments may include multiple hardware entities (hardware accelerators, processors, etc.) operating as requesters. For example, in one embodiment, the electronic device 100 includes or is coupled to a processor 103. In one example, the processor 103 may be included in the electronic device 100. In another example, the processor 103 may be included in another device (not shown) and coupled to the electronic device 100 to access the plurality of memories 106 such that the plurality of memories 106 serves as a shared memory pool. Generally, in interaction with the allocator 104, the processor 103 operates in a manner generally similar to that described herein with reference to the processor 102, and the description of the processor is not separately repeated for the processor 103.

[0027] In response to loading instructions of an executable file into processor 102 for subsequent execution or executing the instructions of the executable file, processor 102 (e.g., a program / application and / or other hardware or software entity within processor 102) may provide one or more memory allocation requests to allocator 104. In response to receiving the memory allocation request, allocator 104 determines the requested memory attributes of the memory allocation request. The requested memory attributes may be the requested memory attributes of the memory that a memory cluster is to be allocated or may be allocated according to the memory allocation request, and may be independent of the requested size of the memory cluster. In some instances, allocator 104 determines the requested memory attributes via an implicit indication, such as an identifier of processor 102 (e.g., or an identifier of an associated program / application / thread running on processor 102) or the requester for which the memory cluster is to be allocated, as described above. In some instances, allocator 104 determines the requested memory attributes via an explicit indication included in the memory allocation request (e.g., an explicitly provided value of the requested memory attributes included in the memory allocation request).

[0028] In response to determining the requested memory attributes, allocator 104 determines whether the memory in the plurality of memories 106 is available to provide a memory cluster having the requested size and the requested memory attributes. For example, allocator 104 may check a list containing the plurality of memories 106 and a database of the memory attributes that each of the plurality of memories 106 is capable of supporting or providing. In response to determining that one or more of the plurality of memories 106 are available (e.g., capable) of providing the requested memory attributes, allocator 104 determines whether the available memory has sufficient available space to provide a memory cluster having the requested size. In some instances, allocator 104 determines whether the available memory has sufficient available space by checking memory map 108 or another memory map (not shown), such as a temporary memory map stored by allocator 104. In response to determining that the available memory has sufficient space to provide a memory cluster, allocator 104 may allocate the memory cluster in the available memory. Allocator 104 may allocate the memory cluster by making an entry or otherwise modifying memory map 108 or the temporary memory map.

[0029] In response to determining that the available memory does not have sufficient space to allocate a memory cluster, or in response to determining that the memories in the plurality of memories 106 are not available to provide the requested memory attributes, the allocator 104 will notify the processor 102. In some instances, the notification is a memory allocation request feedback message or is included therein. The notification may indicate that the memory has not been allocated according to the memory allocation request, may provide a recommendation to change the value of the requested memory attributes to cause the memories in the plurality of memories to be able to provide the requested memory attributes, or the like. In some instances, the notification may indicate that a memory cluster that does not have the requested memory attributes has been allocated to the processor 102. For example, a memory cluster memory allocation request may be allocated in a memory in the plurality of memories 106 that has the best or closest match to one or more of the requested memory attributes indicated by the memory allocation request. In some instances, in response to the notification, the processor 102 may transmit a second memory allocation request to the allocator 104. The second memory allocation request may include second requested memory attributes, where the second requested memory attributes have a value different from the requested memory attributes indicated by the first memory allocation request. For example, the second requested memory attributes may be selected by the allocator 104 based on the recommendation included in the notification. In some embodiments, the processor 102 may be implemented as a general-purpose or custom processor or controller, e.g., capable of executing instructions stored in an associated memory. In some embodiments, the processor 102 may include multiple processing cores. In some embodiments, the processor 102 may implement a stack, such as a Bluetooth or Bluetooth Low Energy (BLE) stack, where an application running at the application layer of the stack acts as a requester.

[0030] In one instance, the processor 102 shares some or all of the plurality of memories 106 with the processor 103 as a shared resource, where each of the processor 102 and the processor 103 may request and be allocated memory space or a memory cluster in the plurality of memories 106. In one instance, the processor 102 may request via a first memory allocation request and receive a memory allocation in a first memory in the plurality of memories 106, as described above. The processor 103 may also request via a second memory allocation request and receive a memory allocation in a second memory in the plurality of memories 106, as described above, even though the first memory has sufficient available storage space to service the memory allocation for the processor 103. For example, the first memory allocation request may include a first identifier of the processor 102, and the second memory allocation request may include a second identifier of the processor 103. In some instances, according to the service or allocation policy of the allocator 104, the allocator 104 provides a memory allocation in the first memory based on the first identifier for the processor 102, and provides a memory allocation in the second memory based on the second identifier for the processor 103, or vice versa.

[0031] In some embodiments, the memory allocator 104 may include one or more general-purpose or custom processors or controllers, state machines, and / or other hardware (e.g., logic / combinatorial) circuits for implementing the functions described herein. In some embodiments, the memory allocator 104 is external to the processor 102, as Figure 1 shown. In some embodiments, the memory allocator 104 may be implemented as part of the processor 102.

[0032] In some embodiments, one (or more, e.g., all) of the plurality of memories 106 has a different type and exhibits different characteristics from the other memories of the plurality of memories 106. Each of the memories may be implemented in any manner known in the art.

[0033] In some embodiments, the device 100 may be a microcontroller unit (MCU), a microprocessor unit (MPU), a digital signal processor (DSP), a central processing unit (CPU), a graphics processing unit (GPU), a data processing unit (DPU), or the like, which includes the processor 102 (and sometimes the processor 103) and the memory allocator 104. In some embodiments, the processor 102 (and sometimes the processor 103) and the memory allocator 104 are integrated in a single integrated circuit (IC), which may include one or more (or all) of the memories 106.

[0034] Figure 2 FIG. is a block diagram of the allocator 104 according to various examples. In some examples, the allocator 104 includes a system performance database 202, a memory attribute database 204, a controller 206, and a temporary allocation map database 208. In at least some examples, the controller 206 may perform the actions ascribed to the allocator 104 herein to receive a memory allocation request from the processor 102 and perform a memory allocation, or indicate that a memory allocation with the requested memory attributes may not be performed.

[0035] As described above, the allocator 104 may receive a memory allocation request from, for example, the processor 102 or another processor, circuit, program, process, or requester via, for example, the controller 202. In various examples, in servicing a memory allocation request, the controller 206 considers the content of the memory allocation request (e.g., one or more requested memory attributes, the ID of the memory allocation requester, and / or the priority of the memory allocation request (e.g., in the case of multiple or competing memory allocation requests)), the memory attributes of the plurality of memories (e.g., which may be stored in the memory attribute database 204), and / or the system limitations of the electronic device 100 (e.g., which may be stored in the memory performance database 202).

[0036] In response to receiving a memory allocation request, the controller 206 determines whether any requested memory attributes other than the requested memory cluster size are indicated by, included in, or otherwise associated with the memory allocation request. For example, the requested memory attributes may be indicated implicitly or explicitly. In one instance, an implicit indication may be based on the ID of the memory allocation requester (e.g., the ID of the processor 102, program, process, function, requester, or other device providing the memory allocation request). For example, the controller 206 may retrieve, otherwise reference, or access a database (not shown) to determine one or more requested memory attributes associated with the ID of the memory allocation requester. In some instances, for a memory allocation request requesting a memory cluster with a requested size within a first size range, a first set of requested memory attributes (which may be a set of 1) is associated with the ID of the memory allocation requester. Similarly, for a memory allocation request requesting a memory cluster with a requested size within a second size range different from the first size range, a second set of requested memory attributes (which may also be a set of 1) is associated with the ID of the memory allocation requester. In another instance, an explicit indication may be included in the memory allocation request. For example, the memory allocation request may include one or more values of the respective memory attributes requested by the memory allocation request other than the requested memory cluster size. In various instances, the requested memory attributes may be the memory cluster access speed or responsiveness (e.g., minimum, maximum, typical, median, mean, mode, etc.), the memory cluster access type (e.g., read, read and write, data access, code execution access, etc.), the memory cluster power consumption (e.g., minimum, maximum, typical, median, mean, mode, etc.), the memory cluster operation profile (e.g., critical or non-critical, secure or insecure, encrypted or unencrypted, requires or does not require startup / resume, cache availability or unavailability, etc.), the memory cluster reliability characteristics, the memory cluster redundancy characteristics, the memory cluster rearrangement policy, or the like. In some instances, the requested memory attributes may also include recommended constraints for achieving specific performance characteristics, such as a recommended memory from among multiple available memories capable of providing a specific memory attribute. In some instances, the requested memory attributes may also include memory cluster dependencies (e.g., dependencies on other already allocated memory clusters or unallocated memory clusters, simultaneous memory cluster allocation, memory cluster lifetime, etc.). In some instances, the requested memory attributes may also indicate whether rearrangement of supporting memory clusters, e.g., via a memory reallocation request, is permitted to facilitate servicing of the memory allocation request.

[0037] In response to determining the requested memory attributes indicated by a memory allocation request, the controller 206 determines whether there is available memory to provide a memory cluster with the requested memory attributes. For example, the controller 206 may retrieve or otherwise reference or access a memory attribute database 204 to determine whether any memory available to the allocator 104 (e.g., a memory among the plurality of memories 106) is capable of providing the requested memory attributes. In some instances, the memory attribute database 204 includes a table or other data structure correlating the available or supported memory attributes with the memories available to the allocator 104. For example, for each memory accessible by the allocator 104, the memory attribute database 204 may include the location of the memory (e.g., inside or outside the electronic device 100), access (e.g., read or write) time (e.g., minimum, maximum, typical, median, mean, mode, etc.), availability or unavailability of a cache memory, availability or unavailability of security features, availability or unavailability of encryption, power consumption (e.g., minimum, maximum, typical, median, mean, mode, etc.), persistence or non-persistence, volatility or non-volatility, retention or non-retention, reliability, redundancy, layout constraints (e.g., whether the memory is designated for placement at a specific or particular memory address at build time), or the like.

[0038] In some instances, the controller 206 also considers system performance parameters of the electronic device 100. For example, after determining that a memory accessible by the allocator 104 is available to provide the requested memory attributes, the controller 206 may retrieve or otherwise reference or access a system performance database 202 to determine the performance characteristics or limitations of the electronic device 100. For example, the system performance database 202 may include information related to limitations or operating characteristics of the processor 102, information related to limitations or operating characteristics of a communication bus in the electronic device 100, user-defined policies or profiles for memory cluster allocation, limitations on memory groupings or collections, or the like.

[0039] In response to determining that the requested memory attribute can be supported in the electronic device 100 based on the system performance database 202 and the memory attribute database, the controller 206 determines whether there is sufficient space in the available memory to allocate a memory cluster having the requested size. For example, the controller 206 may check the temporary allocation map database 208 to determine whether there is sufficient space in the available memory to allocate a memory cluster having the requested size. In some instances, the temporary allocation map database 208 contains temporary memory allocation maps indicating the allocation ranges (e.g., free allocation ranges) available for each memory in the memory (e.g., multiple memories 106) accessible by the allocator 104. Based on the available memory and the allocation ranges available for the available memory, the controller 206 makes a memory allocation decision or determination. For example, the controller 206 may allocate a memory cluster in one or more of the available memories to satisfy the memory allocation request, or may determine that there is not enough available space to allocate the requested memory cluster.

[0040] In some instances, the controller 206 provides memory allocation feedback (e.g., a memory allocation request feedback message, for example) to the processor 102, or to a program, function, process, requester, or other device from which the memory allocation request is received. In various instances, the memory allocation feedback may include a memory allocation map (e.g., a final memory allocation map, such as the memory allocation map 108, or a temporary memory allocation map, such as stored in the temporary allocation map database 208), one or more recommendations for memory maps or memory attributes that may result in performance improvements based on reallocation of existing allocated memory clusters, expected performance key performance indicator (KPI) values for the allocated memory cluster, various status information for the allocated memory cluster, the allocator, or the memory, a notification or indication that the requested memory attribute and / or the requested memory cluster size may not be provided and thus no memory cluster is allocated, a memory cluster in the memory that may not provide the requested memory attribute and / or the requested memory cluster size and thus provides the best fit or closest match to the requested memory attribute, or the like. In some instances, the notification or indication that the requested memory attribute and / or the requested memory cluster size may not be provided and thus no memory cluster is allocated may also include a recommendation to revise the value of the requested memory attribute such that the controller 206 can allocate a memory cluster having a performance compatible with the revised value of the requested memory attribute.

[0041] In some instances, in response to a memory allocation decision to allocate a memory cluster in the memory accessible by allocator 104, controller 206 modifies the temporary memory allocation result stored in the temporary allocation map database 208. For example, during the build process of executable code (e.g., software, program, etc.), multiple memory allocations may be attempted and aggregated into the temporary allocation map database 208. In this way, temporary allocations can be made and the allocations can be optimized (or similar operations) in the temporary allocation map database 208 during the build. At the end of the build, the temporary allocation map database 208 may be stored as the final memory image, such as memory image 108.

[0042] In some instances, allocator 104 may be configurable or reconfigurable during build time or at runtime. For example, processor 102 or another device, requester, or the like may configure or reconfigure allocator 104. In some instances, different devices may have different privilege levels with respect to allocator 104. For example, a first device may have the privilege to modify the configuration of controller 206, while a second device does not have such privilege. Similarly, a third device may have the privilege to modify one or more of databases 202, 204, while a fourth device does not have the privilege to modify one or more of databases 202, 204. In an embodiment, processor 102 has the privilege to modify the configuration of controller 206 and databases 202 and 204.

[0043] Figure 3 FIG. 300 is a flowchart of a method of operation of allocator 104 according to various instances. In some instances, method 300 is at least partially implemented by controller 206, such as in response to receiving a memory allocation or reallocation request. In one instance, method 300 is implemented as a series of computer-executable instructions or code that can be stored in a non-transitory storage medium and executed by one or more processors, one or more controllers, or the like. For example, the computer-executable instructions can be executed by controller 206 at least to provide at least some functionality of method 300. Upon execution, the instructions may cause a processor and / or other components of a computing device to be configured or programmed in a particular state, or to control the processor or other components to perform one or more actions.

[0044] At operation 302, a memory allocation (or reallocation) request is received from a requester. In some instances, the memory allocation request is received by allocator 104 (e.g., by controller 206). The memory allocation request may be generally as described hereinabove, and indicates or includes one or more memory attributes requested implicitly or explicitly and the size of the requested memory cluster. In some instances, a reallocation request may be processed as a sequential deallocation operation, as described below with respect to Figure 4 as described, followed by as described with respect toFigure 3 The described allocation operation, or vice versa, where data is copied from deallocated memory to reallocated memory, is not described separately herein.

[0045] At operation 304, the controller 206 determines one or more requested memory attributes. The requested memory attributes may be determined implicitly or explicitly (if provided), as described above.

[0046] At operation 306, the controller 206 accesses one or more databases associated with memory allocation. For example, the controller 206 may access the system performance database 202, the memory attribute database 204, and / or the temporary allocation map database 208. In some instances, accessing the database includes retrieving or otherwise referencing or accessing the database. In other instances, accessing the database includes loading data from the database into a temporary storage device of the controller 106 (e.g., one or more registers, one or more caches, or the like).

[0047] At operation 308, the controller 206 processes the memory allocation request to make a memory allocation decision. In some instances, the memory allocation decision results in the allocation of memory that meets the requested memory attributes. In some instances, the memory allocation decision results in the allocation of memory that does not meet the requested memory attributes. In some instances, the memory allocation decision does not result in the allocation of memory.

[0048] For example, based on the requested memory attributes and the requested memory cluster size, the controller 206 determines whether there is available memory, whether the requested memory attributes can be supported by the operating parameters of the electronic device 100, and whether there is a sufficient allocation range available in the available memory, as described herein. Based on this determination, a memory allocation decision is formed.

[0049] In various instances, method 300 further includes operation 310. At operation 310, in response to the memory allocation decision, the controller 206 takes other actions based on the memory allocation decision. For example, the controller 206 may perform a memory allocation, as described above herein, to update the temporary and / or final memory map. At operation 310, the controller 206 may also or alternatively provide memory allocation feedback indicating the performance of a compliant memory allocation, may provide memory allocation feedback indicating the performance of a non-compliant memory allocation, may provide memory allocation feedback indicating that no memory allocation is performed (which may or may not include a recommendation to modify the memory allocation request with a changed value having the requested memory attributes, e.g., a value corresponding to a lower performance level), or any other suitable feedback or information related to the memory, the allocator 104, or the memory allocation.

[0050] In some instances, in response to memory allocation feedback, the controller 206 may receive a second memory allocation request. In such instances, the second memory allocation request may be processed as if it were the original memory allocation request, starting at operation 302.

[0051] Figure 4 FIG. 400 is a flow chart of a method of operation of the allocator 104 according to various instances. In some instances, the method 400 is at least partially implemented by the controller 206, such as in response to receiving a memory deallocation request. In one instance, the method 400 is implemented as a series of computer-executable instructions or code that may be stored in a non-transitory storage medium and executed by one or more processors, one or more controllers, or the like. For example, the computer-executable instructions may be executed at least by the controller 206 to provide at least some of the functionality of the method 400. In response to execution, the instructions may cause the processor and / or other components of the computing device to be configured or programmed in a particular state, or to control the processor or other components to perform one or more actions.

[0052] At operation 402, the controller 206 receives a memory deallocation request. In some instances, the memory deallocation request may be implicit in a received memory reallocation request, as described hereinabove.

[0053] At operation 404, the controller 206 deallocates one or more memory clusters by modifying the temporary and / or final memory map.

[0054] At operation 406, the controller 206 may also or alternatively provide memory deallocation feedback indicating that the deallocation has been successfully performed, including the updated memory map, indicating that the memory deallocation request is invalid and thus the memory deallocation has not been performed, indicating an error in the memory deallocation, etc.

[0055] Figure 5 FIG. 500 is a flow chart of a method of operation of the allocator 104 according to various instances. In some instances, the method 500 is at least partially implemented by the controller 206, such as in response to receiving a memory allocation or reallocation request. In one instance, the method 500 is implemented as a series of computer-executable instructions or code that may be stored in a non-transitory storage medium and executed by one or more processors, one or more controllers, or the like. For example, the computer-executable instructions may be executed at least by the controller 206 to provide at least some of the functionality of the method 500. In response to execution, the instructions may cause the processor and / or other components of the computing device to be configured or programmed in a particular state, or to control the processor or other components to perform one or more actions. In some instances, the method 500 is implemented with respect to Figure 3In operation 308 and / or operation 310 of the described method 300, or implemented as at least a part thereof.

[0056] At operation 502, the controller 206 determines whether there is sufficient space in the memory that has the requested memory attributes and is determined to be available for providing the requested memory allocation. In response to the presence of sufficient space, method 500 proceeds to operation 504. In response to the absence of sufficient space, or in response to there being no memory accessible by the electronic device at a given time that can provide the requested memory attributes, method 500 proceeds to operation 506.

[0057] At operation 504, the controller modifies the memory map associated with one or more of the available memories to include the memory clusters requested by the memory allocation request. The memory map can be a final memory map or a temporary memory map that is subsequently copied or written to the final memory map, as described hereinabove.

[0058] At operation 506, the controller 206 performs one or more actions. In one example, the controller 206 can wait for a programmed amount of time and retry the allocation (e.g., by returning to operation 502). In another example, the controller 206 can perform a best-fit allocation that does not satisfy at least one of the requested memory attributes indicated by the memory allocation request. In such examples, the controller 206 can proceed to operation 508 and provide a notification (e.g., a non-compliant allocation notification) to the requester that a memory allocation has been performed but the memory allocation does not provide at least one of the requested memory attributes. In another example, the controller 206 can proceed to operation 508 and provide a notification to the requester that the memory with at least one of the requested memory attributes is not available. In such examples, the controller 206 can provide a recommendation for modifying at least one of the requested memory attributes from a first value that is not available in the memory accessible by the electronic device to a second value that is available in the memory accessible by the electronic device.

[0059] In some examples, in response to the notification, at operation 510, the controller 206 receives a second memory allocation request from the requester, where the second memory allocation request includes a memory allocation in the memory that can provide the requested memory attributes with the second value. In response to the second memory allocation request, at operation 512, the controller 206 can modify the memory map associated with one or more of the available memories to include the memory clusters requested by the second memory allocation request.

[0060] Figure 6FIG. 600 is a flow chart of a method 600 of operation of the allocator 104 according to various examples. In some examples, the method 600 is implemented at least in part by the controller 206, such as in response to receiving a memory allocation or reallocation request. In one example, the method 600 is implemented as a series of computer-executable instructions or code that can be stored in a non-transitory storage medium and executed by one or more processors, one or more controllers, or the like. For example, the computer-executable instructions can be executed at least by the controller 206 to provide at least some of the functionality of the method 600. In response to execution, the instructions can cause the processor and / or other components of the computing device to be configured or programmed in a particular state, or to control the processor or other components to perform one or more actions.

[0061] At operation 602, the controller 206 receives a first memory allocation request from a first requester, which can be a first processor, such as processor 102. In one example, the first memory allocation request includes a first requester identifier that uniquely identifies the first requester. The first memory allocation request can be a request for an allocation of a first size of memory in a memory having a first memory attribute.

[0062] At operation 604, the controller 206 allocates a memory cluster in the first memory for the first requester in response to the first memory allocation request. In one example, the controller 206 allocates the memory cluster in the first memory for the first requester at least in part in response to the value of the first request identifier.

[0063] At operation 606, the controller 206 receives a second memory allocation request from a second requester, which can be a second processor, such as processor 103. In one example, the second memory allocation request includes a second requester identifier that uniquely identifies the second requester. The second memory allocation request can be a request for an allocation of a second size of memory in a memory having a second memory attribute. In some examples, the second memory attribute can be the same as the first memory attribute, or the first memory may be capable of providing a memory cluster having both the first memory attribute and the second memory attribute, and may have sufficient unallocated or free space for allocating the memory cluster based on both the first memory allocation request and the second memory allocation request.

[0064] At operation 608, the controller 206 determines a second memory that can provide the second requested memory attribute based on the memory attributes of the accessible memory. In one example, the second memory may have sufficient unallocated or free space for allocating the memory cluster based on both the first memory allocation request and the second memory allocation request. In some examples, the second memory has at least one performance level less than that of the first memory.

[0065] At operation 610, in response to determining that there is sufficient space in the second available memory, a second memory cluster in the second memory is allocated based on the second memory allocation request. In one example, the controller 206 allocates the second memory cluster in the second memory at least in part in response to the value of the second request identifier. For example, although the first memory has sufficient available space to support the second memory cluster and the first memory has the ability to provide the requested second memory attributes, based on the second request identifier, the controller 206 may allocate the second memory cluster in the second memory rather than in the first memory.

[0066] In some embodiments, method 600 is implemented by a controller (such as 206) implemented as part of a system-on-chip (SoC) that also includes, for example, a first processor (such as 102) as a first requester for executing, for example, an application, and a second processor (such as, 103) as a second requester for controlling (for example, wireless) communication with other devices (for example, for implementing / controlling the physical layer of, for example, Bluetooth or Bluetooth Low Energy) in a single integrated circuit, where, for example, the first memory is faster and / or consumes more power than the second memory.

[0067] Exemplary embodiments of the present disclosure are summarized herein. Other embodiments will be understood from the entire specification and the claims submitted herewith.

[0068] Example 1. An apparatus comprising: a data storage area; and a controller communicatively coupled to the data storage area, the controller configured to: receive a request to allocate a memory cluster, the request indicating requested memory attributes other than the requested size of the memory cluster; in response to receiving the request, determine available memory among a plurality of memories accessible by the apparatus based on one or more memory attributes of the plurality of memories, the available memory capable of providing the requested memory attributes; and in response to determining the available memory, make a memory allocation decision.

[0069] Example 2. The apparatus of Example 1, wherein the controller is configured to: receive the request from a requester; and transmit a memory allocation feedback to the requester based on the memory allocation.

[0070] Example 3. The apparatus of any one of Examples 1 or 2, wherein the controller is configured to: receive the request from a processor; and transmit a memory allocation feedback to the processor based on the memory allocation.

[0071] Example 4. The apparatus according to any one of Examples 1 to 3, wherein the controller is configured to access a partition of the data store to determine available memory attributes of memory accessible by the apparatus.

[0072] Example 5. The apparatus according to any one of Examples 1 to 4, wherein the request is a first request associated with a first requester identifier, the available memory is a first available memory, and wherein the controller is configured to: receive a second request to allocate a second memory cluster, the second request being associated with a second requester identifier and indicating a second requested memory attribute other than a requested size of the second memory cluster, wherein the second requested memory attribute is for a performance level different from the requested memory attribute; in response to receiving the second request and the value of the second requester identifier, determine a second available memory among the plurality of memories based on the one or more memory attributes of the plurality of memories accessible by the apparatus, the second available memory being capable of providing the second requested memory attribute, wherein the second available memory has at least one performance level less than the first available memory; determine whether there is sufficient space in the second available memory based on the requested size of the second memory cluster, wherein based on the requested size of the second memory cluster, there is sufficient space in the available memory; and in response to determining that there is sufficient space in the second available memory, allocate the second memory cluster in the second available memory based on the second request.

[0073] Example 6. The apparatus according to any one of Examples 1 to 5, wherein: the request is a first request received from a first requester, the first request including a first requester identifier that uniquely identifies the first requester and the requested size of the memory cluster; the plurality of memories includes at least the available memory and a second memory; and the controller is configured to: receive a second request to allocate a second memory cluster from a second processor, the second request including a second source identifier that uniquely identifies the second processor and a second requested size of the second memory cluster; based on the memory allocation decision, allocate the memory cluster in the available memory based on the value of the first source identifier, wherein the available memory has a first free space amount greater than a sum of the requested size of the memory cluster and the second requested size of the second memory cluster; and allocate the second memory cluster in the second memory based on the value of the second source identifier, wherein the second memory has a second free space amount greater than the sum of the requested size of the memory cluster and the second requested size of the second memory cluster.

[0074] Example 7. The apparatus according to any one of Examples 1 to 6, wherein the request is received during a build process, and the request is for a memory cluster to be assigned during the build process in an initial memory image determined by the controller.

[0075] Example 8. The apparatus according to any one of Examples 1 to 7, wherein the indication of the requested memory attribute is an implicit indication.

[0076] Example 9. The apparatus according to any one of Examples 1 to 8, wherein the indication of the requested memory attribute is the identity of the requester from which the request is received.

[0077] Example 10. The apparatus according to any one of Examples 1 to 9, wherein the controller is configured to reference the data store based on the identity of the requester providing the request to determine the requested memory attribute, wherein the requested memory attribute is mapped to the identity of the requester in a partition of the data store.

[0078] Example 11. The apparatus according to any one of Examples 1 to 10, wherein the indication of the requested memory attribute is an explicit indication of the requested value of the requested memory attribute provided in the request.

[0079] Example 12. The apparatus according to any one of Examples 1 to 11, wherein in response to determining the available memory, the controller is configured to: determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; and in response to determining that there is sufficient space in the available memory, allocate the memory cluster in the available memory based on the request.

[0080] Example 13. The apparatus according to any one of Examples 1 to 12, wherein in response to allocating the memory cluster in the available memory based on the request, the controller is configured to provide the memory allocation feedback indicating a memory allocation image of the available memory.

[0081] Example 14. The apparatus according to any one of Examples 1 to 13, wherein in response to determining the available memory, the controller is configured to: determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; in response to determining that there is not sufficient space in the available memory, deallocate a second memory cluster from the available memory; and allocate the memory cluster in the available memory based on the request.

[0082] Example 15. The apparatus according to any one of Examples 1 to 14, wherein in response to allocating the memory cluster in the available memory based on the request, the controller is configured to provide the memory allocation feedback indicating the memory allocation map of the available memory.

[0083] Example 16. The apparatus according to any one of Examples 1 to 15, wherein in response to determining the available memory, the controller is configured to: determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; and in response to determining that there is not enough space in the available memory, provide the memory allocation feedback indicating that the requested memory cluster cannot be allocated.

[0084] Example 17. The apparatus according to any one of Examples 1 to 16, wherein in response to determining the available memory, the controller is configured to: determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; and in response to determining that there is not enough space in the available memory, allocate the memory cluster to another memory in the plurality of memories, wherein the other memory at least partially conforms to the requested memory attributes.

[0085] Example 18. The apparatus according to any one of Examples 1 to 17, wherein the controller is further configured to provide the memory allocation feedback indicating that the requested memory cluster has been allocated to the other memory and not to the available memory.

[0086] Example 19. The apparatus according to any one of Examples 1 to 18, wherein the requested memory attributes include access speed, access type, power consumption value, operation profile, cluster arrangement strategy, reliability value, security policy, or redundancy value.

[0087] Example 20. The apparatus according to any one of Examples 1 to 19, further comprising the plurality of memories.

[0088] Example 21. The apparatus according to any one of Examples 1 to 20, wherein the controller, the data storage area, and the plurality of memories are integrated in the same integrated circuit.

[0089] Example 22. The apparatus according to any one of Examples 1 to 20, wherein the plurality of memories are external to the data storage area and the controller.

[0090] Example 23. The apparatus according to any one of Examples 1 to 22, wherein the available memory is a shared memory configured to be shared among multiple requesters.

[0091] Example 24. A device, comprising: a data storage area; a controller communicatively coupled to the data storage area and configured to: receive a request to allocate a memory cluster, the request indicating a requested memory attribute other than the requested size of the memory cluster; in response to receiving the request, access a first partition of the data storage area at a first time to determine available memory attributes of a plurality of memories accessible by the device; based on the available memory attributes, determine that none of the plurality of memories can provide the requested memory attribute; in response to the determination, make a memory allocation decision; and transmit a memory allocation feedback based on the memory allocation decision to a requester from which the request is received.

[0092] Example 25. The device according to Example 24, wherein in response to determining that none of the plurality of memories can provide the requested memory attribute, the controller is configured to determine that the memory allocation decision indicates that the request cannot be executed, and provide a memory allocation feedback indicating that the memory cluster has not been allocated according to the request.

[0093] Example 26. The device according to any one of Examples 24 or 25, wherein in response to determining that none of the plurality of memories can provide the requested memory attribute, the controller is configured to: determine available memory among the plurality of memories that can provide performance within a programmed threshold range of the requested memory attribute; allocate a memory cluster from the available memory based on the request; and provide a memory allocation feedback indicating a memory allocation map of the available memory and an indication that the requested memory attribute is not provided or an indication of the value of the requested memory attribute provided by the available memory.

[0094] Example 27. The device according to any one of Examples 24 to 26, wherein the controller is configured to provide, in the memory allocation feedback, a value of a second requested memory attribute that a second memory among the memories can provide.

[0095] Example 28. The device according to any one of Examples 24 to 27, wherein the controller is configured to: receive a second request to allocate the memory cluster, the second request indicating the second requested memory attribute, wherein the second requested memory attribute is an attribute other than the requested size of the memory cluster; allocate the memory cluster from the second available memory based on the request; and provide a second memory allocation feedback indicating a memory allocation map of the second available memory.

[0096] Example 29. The apparatus according to any one of Examples 24 to 28, wherein in response to determining that no memory among the plurality of memories can provide the requested memory attribute, the controller is configured to: wait for a programmed amount of time; after the programmed amount of time has expired, access a first partition of the data storage area at a second time to determine a second available memory attribute of the memory accessible by the apparatus, determine available memory among the memories based on the second available memory attribute, the available memory being capable of providing the requested memory attribute; allocate the memory clusters in the available memory based on the request; and provide the memory allocation feedback indicating a memory allocation map of the available memory.

[0097] Example 30. The apparatus according to any one of Examples 24 to 29, wherein the controller is configured to, prior to receiving the request: determine a memory attribute of the memory accessible by the apparatus; write the memory attribute to the first partition of the data storage area; and update the first partition of the data storage area in response to servicing an allocation request, a reallocation request, or a deallocation request with respect to any one of the memories.

[0098] Example 31. The apparatus according to any one of Examples 24 to 30, wherein the indication of the requested memory attribute is an implicit indication.

[0099] Example 32. The apparatus according to any one of Examples 24 to 31, wherein the indication of the requested memory attribute is an identity of the requester.

[0100] Example 33. The apparatus according to any one of Examples 24 to 32, wherein the controller is configured to refer to a data storage area based on an identity of a requester providing a request for determining a requested memory attribute, wherein the requested memory attribute is mapped to the identity of the requester in a second partition of the data storage area.

[0101] Example 34. The apparatus according to any one of Examples 24 to 33, wherein the indication of the requested memory attribute is an explicit indication providing a requested value of the requested memory attribute in the request.

[0102] Example 35. The apparatus according to any one of Examples 24 to 34, wherein the requested memory attribute includes an access speed, an access type, a power consumption value, an operation profile, a cluster layout policy, a reliability value, a security policy, or a redundancy value.

[0103] Although the present disclosure has been described with reference to illustrative embodiments, the description is not restrictive. Those skilled in the art will appreciate various modifications and combinations of the illustrative embodiments as well as other embodiments after referring to the description.

Claims

1. A device, comprising: A data storage area; And A controller communicatively coupled to the data storage area, the controller being configured to: Receive a request to allocate a memory cluster, the request indicating requested memory attributes other than the requested size of the memory cluster; In response to receiving the request, determine available memory among the plurality of memories accessible by the device based on one or more memory attributes of the plurality of memories, the available memory being capable of providing the requested memory attributes; And In response to determining the available memory, make a memory allocation decision.

2. The device according to claim 1, wherein the controller is configured to: Receive the request from a requester; and Transmit a memory allocation feedback to the requester based on the memory allocation.

3. The device according to claim 1, wherein the controller is configured to access a partition of the data storage area to determine available memory attributes of the memories accessible by the device.

4. The device according to claim 1, wherein the request is a first request associated with a first requester identifier, the available memory is a first available memory, and wherein the controller is configured to: Receive a second request to allocate a second memory cluster, the second request being associated with a second requester identifier and indicating second requested memory attributes other than the requested size of the second memory cluster, wherein the second requested memory attributes are for a performance level different from the requested memory attributes; In response to receiving the second request and the value of the second requester identifier, determine second available memory among the plurality of memories accessible by the device based on the one or more memory attributes of the plurality of memories, the second available memory being capable of providing the second requested memory attributes, wherein the second available memory has at least one performance level less than the first available memory; Determine whether there is sufficient space in the second available memory based on the requested size of the second memory cluster, wherein based on the requested size of the second memory cluster, there is sufficient space in the available memory; And In response to determining that there is sufficient space in the second available memory, allocate the second memory cluster in the second available memory based on the second request.

5. The device according to claim 1, wherein: The request is a first request received from a first requester, the first request including a first requester identifier uniquely identifying the first requester and the requested size of the memory cluster; The plurality of memories includes at least the available memory and a second memory; and The controller is configured to: Receive a second request to allocate a second memory cluster from a second processor, the second request including a second source identifier uniquely identifying the second processor and a second requested size of the second memory cluster; Based on the memory allocation decision, allocate the memory clusters in the available memory based on the value of the first source identifier, wherein the available memory has a first free space amount greater than the sum of the requested size of the memory clusters and the second requested size of the second memory clusters; And Allocate the second memory clusters in the second memory based on the value of the second source identifier, wherein the second memory has a second free space amount greater than the sum of the requested size of the memory clusters and the second requested size of the second memory clusters.

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

7. The apparatus according to claim 1, wherein the indication of the requested memory attribute is an implicit indication.

8. The apparatus according to claim 7, wherein the indication of the requested memory attribute is the identity of the requester from which the request is received.

9. The apparatus according to claim 8, wherein the controller is configured to refer to the data storage area based on the identity of the requester providing the request to determine the requested memory attribute, wherein the requested memory attribute is mapped to the identity of the requester in a partition of the data storage area.

10. The apparatus according to claim 1, wherein the indication of the requested memory attribute is an explicit indication providing the requested value of the requested memory attribute in the request.

11. The device according to claim 1, wherein, In response to determining the available memory, the controller is configured to: Determine whether there is sufficient space in the available memory based on the requested size of the memory clusters; And In response to determining that there is sufficient space in the available memory, allocate the memory clusters in the available memory based on the request.

12. The apparatus according to claim 11, wherein in response to allocating the memory clusters in the available memory based on the request, the controller is configured to provide the memory allocation feedback indicating the memory allocation image of the available memory.

13. The device according to claim 1, wherein, In response to determining the available memory, the controller is configured to: Determine whether there is sufficient space in the available memory based on the requested size of the memory clusters; In response to determining that there is not sufficient space in the available memory, deallocate a second memory cluster from the available memory; And Allocate the memory clusters in the available memory based on the request.

14. The apparatus according to claim 13, wherein in response to allocating the memory clusters in the available memory based on the request, the controller is configured to provide the memory allocation feedback indicating the memory allocation image of the available memory.

15. The device according to claim 1, wherein, In response to determining the available memory, the controller is configured to: Determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; And In response to determining that there is not sufficient space in the available memory, provide memory allocation feedback indicating that the requested memory cluster cannot be allocated.

16. The device according to claim 1, wherein, In response to determining the available memory, the controller is configured to: Determine whether there is sufficient space in the available memory based on the requested size of the memory cluster; And In response to determining that there is not sufficient space in the available memory, allocate the memory cluster to another memory among the plurality of memories, wherein the another memory at least partially conforms to the requested memory attributes.

17. The apparatus according to claim 16, wherein the controller is further configured to provide memory allocation feedback indicating that the requested memory cluster has been allocated to the another memory and not to the available memory.

18. The apparatus according to claim 1, wherein the requested memory attributes include access speed, access type, power consumption value, operation profile, cluster arrangement strategy, reliability value, security policy, or redundancy value.

19. The apparatus according to claim 1, further comprising the plurality of memories.

20. The apparatus according to claim 19, wherein the controller, the data storage area, and the plurality of memories are integrated in the same integrated circuit.

21. The apparatus according to claim 19, wherein the plurality of memories are external to the data storage area and the controller.

22. The apparatus according to claim 1, wherein the available memory is a shared memory configured to be shared among a plurality of requesters.