# US 12,182,394 B2 · Methods and systems for managing memory buffer usage while processing computer system operations

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

- Number: US 12,182,394 B2
- Document ID: US12182394B2
- Status: Granted
- Kind: B2
- Application number: 17/658,292
- Filed: 2022-04-07
- Published: 2023-10-12
- Granted: 2024-12-31
- Earliest claimed: 2022-04-07
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Yamin Friedman; Idan Burstein; Gal Yefet
- Web page: https://patentgrep.com/patent/US12182394B2

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 9/5016: {the resource being the memory}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0673: {Single storage device}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 2209/548: Queue
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and system are provided for limiting unnecessary data traffic on the data communication connections connecting various system components, including the various levels of system memory. Some embodiments may include processing a buffer allotment request and/or a buffer release command in coordination with a system or network operation requiring temporary storage of data in a memory buffer. The buffer allotment request may be capable of indicating the amount of storage space required on the memory buffer to execute the system or network operation. The system may be capable of precluding the system or network operation from executing until there is sufficient space in the memory buffer to complete the operation without evicting operational data from the memory buffer. In some embodiments, the buffer release command may signal completion of the system or network operation and release of the utilized memory buffer space for other operations.

## Claims

### Claim 1

A method comprising:
receiving, by a transaction queue, a transaction and a buffer allotment request,
wherein the transaction requires storage space in a memory buffer communicably coupled with the transaction queue, and
wherein the buffer allotment request comprises a first buffer usage indicator corresponding to the storage space required in the memory buffer to execute the transaction;
precluding, by a buffer arbiter, in response to processing the buffer allotment request, the transaction from processing until determining the memory buffer has sufficient storage space for executing the transaction;
executing the transaction in response to determining the memory buffer has the sufficient storage space defined by the first buffer usage indicator;
receiving, by the transaction queue, a buffer release command comprising a second buffer usage indicator corresponding to storage space in the memory buffer that will be released after execution of the transaction; and
processing the buffer release command following completion of processing of the transaction such that the storage space in the memory buffer used for executing the transaction is released.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving, by a central processor, the transaction requiring the storage space in the memory buffer; and
sending, by the central processor, the buffer allotment request, the transaction, and the buffer release command to the transaction queue.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
initializing a buffer arbiter count maintained by the buffer arbiter to a value representing an available storage in the memory buffer.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
updating the buffer arbiter count, in response to processing the buffer allotment request, based on the first buffer usage indicator; and
updating the buffer arbiter count, in response to processing the buffer release command, based on the second buffer usage indicator.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
processing the transaction by a command processor; and
confining the memory buffer to a cache memory associated with the command processor.

### Claim 6 (depends on 1)

The method according to claim 1, wherein the buffer release command comprising the second buffer usage indicator is received alongside the transaction and the buffer allotment request.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the buffer release command is stored in the transaction queue following the received transaction.

### Claim 8 (depends on 1)

The method according to claim 1, wherein the buffer release command is associated with a transaction identifier and a buffer usage indicator.

### Claim 9 (depends on 8)

The method according to claim 8, wherein the transaction identifier is determined based on a proximately between the buffer release command and the transaction in the transaction queue.

### Claim 10

A system comprising:
a memory buffer configured to store data; and
a transaction queue communicably coupled with the memory buffer, the transaction queue configured to receive a transaction, a buffer allotment request, and a buffer release command wherein:
the transaction requires storage space in the memory buffer;
the buffer allotment request comprises a first buffer usage indicator corresponding to the storage space required in the memory buffer for executing the transaction; and
a buffer arbiter configured to receive the buffer allotment request and to preclude the transaction from executing in response to the buffer allotment request until the buffer arbiter determines the memory buffer has the sufficient storage space to execute the transaction defined by the first buffer usage indicator; and
the buffer release command comprises a second buffer usage indicator corresponding to storage space in the memory buffer that will be released after execution of the transaction, wherein the buffer release command is scheduled to be processed following processing of the transaction such that the storage space in the memory buffer used for executing the transaction is released.

### Claim 11 (depends on 10)

The system of claim 10, further comprising a central processor configured to receive the transaction requiring storage of data in the memory buffer and transmit the buffer allotment request, the transaction, and the buffer release command to the transaction queue.

### Claim 12 (depends on 10)

The system of claim 10, wherein the buffer arbiter further comprises a buffer arbiter count representing an available storage in the memory buffer.

### Claim 13 (depends on 12)

The system of claim 12, wherein the buffer arbiter count is updated in response to processing the buffer allotment request, based on the first buffer usage indicator; and the buffer arbiter count is updated in response to processing the buffer release command, based on the second buffer usage indicator.

### Claim 14 (depends on 10)

The system of claim 10, wherein the transaction is processed by a command processor and the memory buffer is confined to a cache memory associated with the command processor.

### Claim 15 (depends on 14)

The system of claim 14, wherein the buffer arbiter is implemented as part of the command processor.

### Claim 16 (depends on 10)

The system according to claim 10, wherein the buffer release command comprising the second buffer usage indicator is received alongside the transaction and the buffer allotment request.

### Claim 17 (depends on 10)

The system according to claim 10, wherein the buffer release command is stored in the transaction queue following the received transaction.

### Claim 18 (depends on 10)

The system according to claim 10, wherein the buffer release command is associated with a transaction identifier and a buffer usage indicator.

### Claim 19 (depends on 18)

The system according to claim 18, wherein the transaction identifier is determined based on a proximately between the buffer release command and the transaction in the transaction queue.

### Claim 20

A computer program product comprising at least one non-transitory computer-readable storage medium having computer-executable program code instructions comprising program code instructions to:
receive, by a transaction queue, a transaction and a buffer allotment request, wherein the transaction requires storage space in a memory buffer communicably coupled with the transaction queue, and wherein the buffer allotment request comprises a first buffer usage indicator corresponding to the storage space required in the memory buffer to execute the transaction;
preclude, by a buffer arbiter, in response to processing the buffer allotment request, the transaction from processing until determining the memory buffer has the sufficient storage space for executing the transaction defined by the first buffer usage indicator;
execute the transaction in response to determining the memory buffer has sufficient storage space;
receive, by the transaction queue, a buffer release command comprising a second buffer usage indicator corresponding to storage space in the memory buffer that will be released after execution of the transaction; and
process the buffer release command following completion of processing of the transaction such that the storage space in the memory buffer used for executing the transaction is released.
