# US 9,519,514 B2 · Interfacing with a buffer manager via queues

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

- Number: US 9,519,514 B2
- Document ID: US9519514B2
- Status: Granted
- Kind: B2
- Application number: 14/606,268
- Filed: 2015-01-27
- Published: 2015-07-30
- Granted: 2016-12-13
- Earliest claimed: 2014-01-29
- Assignees: Marvell Israel (M.I.S.L) Ltd.
- Applicants: Marvell Israel (M.I.S.L) Ltd.
- Inventors: Dan Ilan; Alon Rachmani; Michael Weiner
- Web page: https://patentgrep.com/patent/US9519514B2

## CPC

- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 12/0802: Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F 12/0888: using selective caching, e.g. bypass
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments include a system on chip (SOC) comprising: a cache; a buffer manager configured to manage a plurality of buffer locations; and a processing core configured to issue a buffer allocation request to the buffer manager to request the buffer manager to allocate one or more buffer locations to the processing core, the buffer manager being further configured to, in response to receiving the buffer allocation request, allocate a first buffer location to the processing core by writing a first buffer pointer associated with the first buffer location to the cache, and the processing core being further configured to obtain the allocation of the first buffer location by reading the first buffer pointer from the cache.

## Claims

### Claim 1

A system on chip (SOC) comprising:
a cache;
a buffer manager configured to manage a plurality of buffer locations; and
a processing core configured to issue a buffer allocation request to the buffer manager to request the buffer manager to allocate one or more buffer locations to the processing core, the buffer manager being further configured to, in response to receiving the buffer allocation request, allocate a first buffer location to the processing core by writing a first buffer pointer associated with the first buffer location to the cache, the processing core being further configured to receive an indication from the buffer manager that the first buffer location has been allocated to the processing core by the first buffer pointer being written to the cache, and the processing core being further configured to obtain the allocation of the first buffer location by reading the first buffer pointer from the cache.

### Claim 2 (depends on 1)

The SOC of claim 1, wherein the processing core is further configured to, based on the first buffer location being allocated to the processing core, store information in the first buffer location allocated by the buffer manager.

### Claim 3 (depends on 2)

The SOC of claim 2, wherein the processing core is further configured to store the information in the first buffer location allocated by the buffer manager, the information comprising one of a data packet or a packet descriptor associated with the data packet.

### Claim 4 (depends on 1)

The SOC of claim 1, wherein the first buffer pointer comprises an address of the first buffer location, and wherein the processing core is further configured to access the first buffer location using the address of the first buffer location included in the first buffer pointer read by the processing core.

### Claim 5 (depends on 1)

The SOC of claim 1, wherein the cache is a level 1 (L1) cache.

### Claim 6 (depends on 1)

The SOC of claim 1, wherein:
the processing core is further configured to request release of a second buffer location, which was previously allocated to the processing core by the buffer manager, by writing a second buffer pointer associated with the second buffer location in the cache; and
the buffer manager is further configured to (i) read the second buffer pointer from the cache and (ii) release the second buffer location by making the second buffer location available for allocation to an appropriate component of the SOC.

### Claim 7 (depends on 6)

The SOC of claim 6, wherein:
the buffer manager is further configured to write the first buffer pointer associated with the first buffer location in a first queue in the cache; and
the processing core is further configured to write the second buffer pointer associated with the second buffer location in a second queue in the cache, the second queue being different from the first queue.

### Claim 8 (depends on 6)

The SOC of claim 6, wherein ones of the first queue and the second queue are first-in first-out (FIFO) queues.

### Claim 9 (depends on 1)

The SOC of claim 1, further comprising:
a plurality of processing cores; and
ones of the plurality of processing cores are respectively configured to transmit corresponding buffer allocation requests to the buffer manager and to request the buffer manager to allocate one or more corresponding buffer locations to the corresponding processing cores.

### Claim 10 (depends on 1)

The SOC of claim 1, further comprising:
an interface configured to (i) receive the buffer allocation request from the processing core and (ii) re-transmit the buffer allocation request to the buffer manager.

### Claim 11 (depends on 1)

The method of claim 1, further comprising:
transmitting, by ones of a plurality processing core, corresponding buffer allocation requests to the buffer manager to request the buffer manager to allocate one or more corresponding buffer locations to the corresponding processing cores.

### Claim 12

A method comprising:
issuing, by a processing core, a buffer allocation request to a buffer manager to request the buffer manager to allocate one or more buffer locations to the processing core;
in response to receiving the buffer allocation request, allocating, by the buffer manager, a first buffer location to the processing core by writing a first buffer pointer associated with the first buffer location in a cache;
determining, by the processing core, that one or more buffer pointers have been written in the cache in response to the buffer allocation request; and
in response to determining, by the processing core, that one or more buffer pointers have been written in the cache, obtaining, by the processing core, the allocation of the first buffer location by reading the first buffer pointer from the cache.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
based on the first buffer location being allocated to the processing core, storing, by the processing core, information in the first buffer location.

### Claim 14 (depends on 13)

The method of claim 13, wherein storing information in the first buffer location comprises:
storing, by the processing core, information in the first buffer location such that the information comprises one of a data packet or a packet descriptor associated with the data packet.

### Claim 15 (depends on 12)

The method of claim 12, wherein allocating the first buffer location comprises:
allocating the first buffer location to the processing core by writing the first buffer pointer associated with the first buffer location in the cache such that the first buffer pointer comprises an address of the first buffer location,
wherein the method further comprises:
accessing, by the processing core, the first buffer location using the address of the first buffer location included in the first buffer pointer.

### Claim 16 (depends on 12)

The method of claim 12, wherein allocating the first buffer location comprises:
allocating the first buffer location to the processing core by writing the first buffer pointer associated with the first buffer location in the cache that is a level 1 (L1) cache.

### Claim 17 (depends on 12)

The method of claim 12, further comprising:
requesting, by the processing core, release of a second buffer location that was previously allocated to the processing core by the buffer manager, the requesting comprising writing a second buffer pointer associated with the second buffer location in the cache;
reading, by the buffer manager, the second buffer pointer from the cache; and
releasing, by the buffer manager, the second buffer location by making the second buffer location available for allocation to an appropriate component of the SOC.

### Claim 18 (depends on 17)

The method of claim 17, wherein:
writing the first buffer pointer comprises writing the first buffer pointer associated with the first buffer location in a first queue in the cache; and
writing the second buffer pointer comprises writing the second buffer pointer associated with the second buffer location in a second queue in the cache, the second queue being different from the first queue.

### Claim 19 (depends on 17)

The method of claim 17, wherein:
writing the first buffer pointer comprises writing the first buffer pointer in the first queue that is a first-in first-out (FIFO) queue; and
writing the second buffer pointer comprises writing the second buffer pointer in the second queue that is a FIFO queue.

### Claim 20 (depends on 12)

The method of claim 12, wherein transmitting the buffer allocation request comprises:
transmitting, by the processing core, the buffer allocation request to an interface; and
transmitting, by the interface, the buffer allocation request to the buffer manager.

### Claim 21 (depends on 12)

The method of claim 12, wherein determining, by the processing core, that one or more buffer pointers have been written in the cache further comprises:
polling, by the processing core, the buffer manager to determine that one or more buffer pointers have been written in the cache.
