# US 12,192,122 B2 · Allocation of shared reserve memory

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

- Number: US 12,192,122 B2
- Document ID: US12192122B2
- Status: Granted
- Kind: B2
- Application number: 18/581,423
- Filed: 2024-02-20
- Published: 2024-06-13
- Granted: 2025-01-07
- Earliest claimed: 2022-01-31
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Niv Aibester; Barak Gafni
- Web page: https://patentgrep.com/patent/US12192122B2

## CPC

- H04L 49/103: using a shared central buffer; using a shared memory
- H04L 49/90: Buffering arrangements
- H04L 45/122: by minimising distances, e.g. by selecting a route with minimum of number of hops
- H04L 47/30: in combination with information about buffer occupancy at either end or at transit nodes
- H04L 47/50: Queue scheduling
- H04L 49/9005: using dynamic buffer space allocation
- H04L 49/9047: including multiple buffers, e.g. buffer pools
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A device includes ports, a packet processor, and a memory management circuit. The ports communicate packets over a network. The packet processor processes the packets using queues. The memory management circuit maintains a shared buffer in a memory and adaptively allocates memory resources from the shared buffer to the queues, maintains in the memory, in addition to the shared buffer, a shared-reserve memory pool for use by the queues, identifies, among the queues, a queue that requires additional memory resources, the queue having an occupancy that is (i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and (ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool, and allocates memory resources to the identified queue from the shared-reserve memory pool.

## Claims

### Claim 1

A device, comprising:
one or more ports, to communicate packets over a network;
a packet processor, to process the packets using a plurality of queues; and
a memory management circuit, to:
maintain a shared buffer in a memory, and adaptively allocate memory resources from the shared buffer to the queues;
maintain in the memory, in addition to the shared buffer, a shared-reserve memory pool for use by one or more of the queues;
identify, among the queues, a queue that requires additional memory resources, the queue having an occupancy that is:
(i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and
(ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool; and
allocate memory resources to the identified queue from the shared-reserve memory pool.

### Claim 2 (depends on 1)

The device according to claim 1, wherein the memory management circuit is to identify that the queue requires additional memory resources by receiving a request from the queue.

### Claim 3 (depends on 1)

The device according to claim 1, wherein the memory management circuit is to pre-allocate to the queue a private-reserve memory resource, irrespective of the shared buffer and the shared-reserve memory pool.

### Claim 4 (depends on 1)

The device according to claim 1, wherein the queues are associated with a same port of the network device.

### Claim 5

A memory management circuit, comprising:
one or more interfaces, to communicate with a plurality of queues of the network device that process packets, and with a memory; and
circuitry, to:
maintain a shared buffer in the memory, and adaptively allocate memory resources from the shared buffer to the queues;
maintain in the memory, in addition to the shared buffer, a shared-reserve memory pool for use by one or more of the queues;
identify, among the queues, a queue that requires additional memory resources, the queue having an occupancy that is:
(i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and
(ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool; and
allocate memory resources to the identified queue from the shared-reserve memory pool.

### Claim 6 (depends on 5)

The memory management circuit according to claim 5, wherein the circuitry is to identify that the queue requires additional memory resources by receiving a request from the queue.

### Claim 7 (depends on 5)

The memory management circuit according to claim 5, wherein the circuitry is to pre-allocate to the queue a private-reserve memory resource, irrespective of the shared buffer and the shared-reserve memory pool.

### Claim 8 (depends on 5)

The memory management circuit according to claim 5, wherein the queues are associated with a same port of the network device.

### Claim 9

A method for communication, the method comprising:
communicating packets over a network, and processing the packets using a plurality of queues;
maintaining a shared buffer in a memory, and adaptively allocating memory resources from the shared buffer to the queues;
maintaining in the memory, in addition to the shared buffer, a shared-reserve memory pool for use by one or more of the queues;
identifying, among the queues, a queue that requires additional memory resources, the queue having an occupancy that is:
(i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and
(ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool; and
allocating memory resources to the identified queue from the shared-reserve memory pool.

### Claim 10 (depends on 9)

The method according to claim 9, wherein identifying that the queue requires additional memory resources comprises receiving a request from the queue.

### Claim 11 (depends on 9)

The method according to claim 9, wherein further comprising pre-allocate to the queue a private-reserve memory resource, irrespective of the shared buffer and the shared-reserve memory pool.

### Claim 12 (depends on 9)

The method according to claim 9, wherein the queues in the subset are associated with a same port of the network device.

### Claim 13

A method for memory management, the method comprising:
communicating with a plurality of queues of the network device that process packets, and with a memory;
maintaining a shared buffer in the memory, and adaptively allocating memory resources from the shared buffer to the queues;
maintaining in the memory, in addition to the shared buffer, a shared-reserve memory pool for use by one or more of the queues;
identifying, among the queues, a queue that requires additional memory resources, the queue having an occupancy that is:
(i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and
(ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool; and
allocating memory resources to the identified queue from the shared-reserve memory pool.

### Claim 14

A method for memory management using queues, the method comprising:
maintaining in a memory (i) a shared buffer and (ii) a shared-reserve memory pool;
identifying a queue that requires additional memory resources and has an occupancy that is:
(i) above a current value of a dynamic threshold, rendering the queue ineligible for additional allocation from the shared buffer, and
(ii) no more than a defined margin above the current value of the dynamic threshold, rendering the queue eligible for allocation from the shared-reserve memory pool; and
allocating memory resources to the identified queue from the shared-reserve memory pool.
