# US 11,030,007 B2 · Multi-constraint dynamic resource manager

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,030,007 B2
- Document ID: US11030007B2
- Status: Granted
- Kind: B2
- Application number: 15/847,389
- Filed: 2017-12-19
- Published: 2019-06-20
- Granted: 2021-06-08
- Earliest claimed: 2017-12-19
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: David Chaim Brief; Yoav Markus; Shemmer Choresh
- Web page: https://patentgrep.com/patent/US11030007B2

## CPC

- G06F 9/5016: {the resource being the memory}
- G06F 9/5005: {to service a request}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/3037: {where the computing system component is a memory, e.g. virtual memory, cache (accessing, addressing or allocating within memory systems or architectures G06F12/00; checking stores for correct operation G11C29/00)}
- G06F 11/3051: {Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs (verification or detection of system hardware configuration G06F11/2247)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An arrangement is illustrated wherein a flash controller with a multi-constraints dynamic resource manager module configured to control both software and hardware clients is provided. The arrangement also provides for memory and an interface for connecting the controller to a host.

## Claims

### Claim 1

An arrangement configured to couple to a host, the arrangement comprising: a controller comprising:
a removable physical storage unit comprising one or more buffers;
random access memory (RAM); and
a multi-constraints dynamic resource manager module configured to control both software clients and hardware clients, wherein the multi-constraints dynamic resource manager module is connected to the removable physical storage unit, and wherein the multi-constraints dynamic resource manager module is configured to:
allocate and deallocate resources selected from the group comprising the RAM, data buffers for reads and writes, descriptors, flow control counters, dynamic buffers, and time slots; and
allocate and deallocate the resources to control a power budget of the arrangement or to minimize latency of a task executing on the arrangement.

### Claim 2 (depends on 1)

The arrangement according to claim 1, wherein the module is further configured to determine a maximum amount of resources to be provided to each client.

### Claim 3 (depends on 1)

The arrangement according to claim 1, wherein the module is further configured to identify changes in hardware and software in the host and the controller.

### Claim 4 (depends on 1)

The arrangement according to claim 1, wherein the module comprises at least one processor.

### Claim 5 (depends on 1)

The arrangement according to claim 1, wherein the module is further configured to maintain a power budget for each component controlled by the controller.

### Claim 6 (depends on 2)

The arrangement according to claim 2, further comprising:
a host interface configured to transmit data to and receive data from the host.

### Claim 7 (depends on 6)

The arrangement according to claim 6, wherein the controller further comprises a flash translation layer.

### Claim 8 (depends on 7)

The arrangement according to claim 7, further comprising one or more flash dies coupled to the controller.

### Claim 9 (depends on 8)

The arrangement according to claim 8, wherein the removable physical storage unit is configured to receive, store, and retrieve data.

### Claim 10 (depends on 9)

The arrangement according to claim 9,
wherein the removable physical storage unit is one of a NAND flash unit, a disk drive, and a hybrid drive.

### Claim 11 (depends on 10)

The arrangement according to claim 10, wherein the controller further comprises an Error Correction Code (ECC).

### Claim 12 (depends on 11)

The arrangement according to claim 11, wherein the controller further comprises descriptors, wherein a descriptor is a data structure that defines an operation to be performed by hardware.

### Claim 13 (depends on 1)

The arrangement according to claim 1, wherein the multi-constraints dynamic resource manager module is further configured to allocate and deallocate the resources to reduce task starvation of the arrangement or to perform just-in-time allocation of the resources of the arrangement.

### Claim 14

A method of controlling equipment, comprising:
receiving a plurality of task execution requests at a flash controller, the flash controller comprising RAM, a multi-constraints dynamic resource manager module, and a removable physical storage unit comprising one or more buffers;
monitoring available resources in a host, the host being coupled to the flash controller; and
allocating at least a minimal amount of resources required per request to each request using the multi-constraints dynamic resource manager module, wherein the multi-constraints dynamic resource manager module is connected to the removable physical storage unit, and wherein the multi-constraints dynamic resource manager module is configured to:
allocate and deallocate resources selected from the group comprising the RAM, data buffers for reads and writes, descriptors, flow control counters, dynamic buffers, and time slots; and
allocate and deallocate the resources to control a power budget of the equipment or to minimize latency of a task executing on the equipment.

### Claim 15 (depends on 14)

The method according to claim 14, wherein the monitoring of the available resources is performed continuously.

### Claim 16 (depends on 14)

The method according to claim 14, wherein the allocating the at least minimal amount of resources is allocating a maximum resources currently available.

### Claim 17 (depends on 14)

The method according to claim 14, wherein the receiving the plurality of task execution requests is from at least one of a hardware component and software.

### Claim 18

An arrangement configured to couple to a host, the arrangement comprising:
means for receiving a plurality of task execution requests at a flash controller, the flash controller comprising RAM and a removable physical storage unit comprising one or more buffers;
means for monitoring resources in the host; and
means for allocating at least a minimal amount of resources per request, wherein the means for allocating at least the minimal amount of resources per request is connected to the removable physical storage unit, and wherein the means for allocating at least the minimal amount of resources per request is configured to:
allocate and deallocate resources selected from the group comprising the RAM, data buffers for reads and writes, descriptors, flow control counters, dynamic buffers, and time slots; and
allocate and deallocate the resources to control a power budget of the arrangement or to minimize latency of a task executing on the arrangement.

### Claim 19 (depends on 18)

The arrangement according to claim 18, wherein the means for monitoring resources in the host performs on a continual basis.

### Claim 20 (depends on 19)

The arrangement according to claim 19, wherein the means for allocating the at least the minimal amount of resources further comprises a means to provide a maximum amount of resources available.

### Claim 21 (depends on 18)

The arrangement according to claim 18, wherein the request is from at least one of hardware components and software.

### Claim 22 (depends on 18)

The arrangement according to claim 18, further comprising means for monitoring and controlling an arrangement of descriptors.

### Claim 23 (depends on 18)

The arrangement according to claim 18, further comprising means for providing a memory arrangement.
