IP Library › Granted Patent US 12,314,583
Granted Patent B1
US 12,314,583 · App. 18/600,687 · Granted May 27, 2025

System and method for managing buffers in a computer system

Inventor: Mark Brinicombe (San Mateo, CA)
Assignee: Yellowbrick Data, Inc.
G06F3/0631G06F3/0604G06F3/0656G06F3/067
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,314,583
App. No.
18/600,687
Granted
May 27, 2025
Kind
B1
Abstract

A system and method provides an integrated buffer management with flow control, in some cases via credits that may be redeemed for buffers, and interprocess communication.

Claims (81)

1. A method of allocating a plurality of buffers, comprising portions of memory in a computer system, the method comprising:

requesting, by a parent node to a central authority that manages the plurality of buffers for a plurality of parent nodes comprising the parent node, a plurality of credits, each credit in the plurality comprising a future claim for at least one of the plurality of buffers, the parent node and the central authority comprising processes of the computer system;

assigning to the parent node, by the central authority, the plurality of credits, responsive to the requesting by the parent node step;

receiving, by the parent node, the plurality of credits from the central authority, responsive to the requesting by the parent node step;

providing, by the parent node to a link, the plurality of credits;

requesting, by a child node comprising a process separate from the parent node, the plurality of credits from the link;

providing, by the link, the plurality of credits to the child node;

providing, by the child node, at least one of the plurality of credits to the central authority;

providing, by the central authority to the child node, an identifier of a buffer in the plurality for each of the at least one of the plurality of credits provided; and

recording, by the central authority, each buffer identifier provided.

2. The method of claim 1 , wherein the providing the at least one of the plurality of credits to the central authority comprises:

providing, by the child node, the at least one of the plurality of credits to the link; and

forwarding, by the link, the at least one of the plurality of credits to the central authority.

3. The method of claim 2 :

additionally comprising:

recording, by the link, the plurality of credits; and

comparing, by the link, the at least one of the plurality of credits, to the plurality of credits recorded; and

wherein the forwarding by the link is responsive to the comparing by the link.

4. The method of claim 1 , additionally comprising providing to the link by the child node, the identifier of each of the at least one buffer provided.

5. The method of claim 1 , additionally comprising:

providing by the parent node to the link an instruction regarding discarding buffers returned by the child node to the parent node;

providing by the child node to the link the at least one buffer identifier to be returned to the parent node; and

providing by the link to the central authority a command to return at least some of the at least one buffer identifier to a pool of available buffer identifiers that will not be returned to the parent node, responsive to the instruction.

6. The method of claim 1 :

wherein the at least one of the plurality of credits comprises more than one of the plurality of credits; and

additionally comprising:

providing by the parent node to the link an instruction regarding queueing buffers returned by the child node to the parent node;

providing by the child node to the link the plurality of buffer identifiers to be returned to the parent node; and

providing by the link to the parent node, the plurality of buffer identifiers in a plurality of batches, each having a size responsive to the instruction.

7. A system for allocating a plurality of buffers, comprising portions of memory in a computer system, the system comprising:

a node buffer/credit requester at a parent node in a plurality of parent nodes, for providing at an output a request for a plurality of credits, each credit in the plurality of credits comprising a future claim on at least one of the plurality of buffers, the parent node and a central authority comprising processes of the computer system;

a central authority buffer provider at the central authority that manages the plurality of buffers for the plurality of parent nodes, the central authority buffer provider having an input coupled to the node buffer/credit requester output for receiving the request, the central authority buffer provider for assigning to the parent node, the plurality of credits responsive to the request, and for providing at an output the plurality of credits responsive to the request;

the node buffer/credit requester additionally having an input coupled to the central authority buffer provider output for receiving the plurality of credits, and additionally for providing the plurality of credits at the node buffer/credit requester output;

a child credit receiver at a link, and having an input coupled to the node buffer/credit requester output for receiving the plurality of credits, the child credit receiver for providing the plurality of credits at an output;

a child credit redeemer at a child node comprising a process separate from the parent node, having an input coupled to the child credit receiver output for receiving the plurality of credits, the child credit redeemer for providing at least one of the plurality of credits at an output; and

a central authority redeemer having an input coupled to the child credit redeemer output for receiving the at least one of the plurality of credits, the central authority redeemer for providing at an output an identifier of a buffer in the plurality for each of the at least one of the plurality of credits, and for recording each said buffer identifier provided.

8. The system of claim 7 , additionally comprising a link credit redeemer having an input coupled to the child credit redeemer output for receiving the at least one of the plurality of credits, the link credit redeemer for forwarding via an output coupled to the central authority redeemer input, the at least one of the plurality of credits.

9. The system of claim 8 , wherein:

the link credit redeemer input is additionally coupled to the node buffer/credit requester output for receiving at least some of the plurality of credits;

the link credit redeemer is additionally for comparing the at least one of the plurality of credits, to the at least some of the plurality of credits received at the link credit redeemer input; and

the link credit redeemer performs the forwarding responsive to the comparing.

10. The system of claim 7 additionally comprising a link child manager at the link, the link child manager having an input coupled to the central authority redeemer output for receiving each buffer identifier, the link child manager for recording each buffer identifier received at the link child manager input.

11. The system of claim 7 , additionally comprising:

a node buffer provider at the parent node for providing at an output an instruction regarding discarding buffers returned by the child node to the parent node;

a child buffer returner at the child node and having an input coupled to the central authority redeemer output for receiving the at least one buffer identifier, the child buffer returner for providing at an output the at least one buffer identifier, to be returned to the parent node; and

a link parent manager having an input coupled to the node buffer provider output for receiving the instruction and coupled to the child buffer returner output for receiving the at least one buffer identifier, the link parent manager for providing at an output coupled to an input of a central authority buffer receiver at the central authority a command to return at least some of the at least one buffer identifier to a pool of available buffer identifiers managed by the central authority and that will not be returned to the parent node, responsive to the instruction.

12. The system of claim 7 :

wherein the at least one of the plurality of credits comprises more than one of the plurality of credits; and

additionally comprising:

a node buffer provider at the parent node for providing at an output an instruction regarding queueing buffers returned by the child node to the parent node;

a child buffer returner at the child node and having an input coupled to the central authority redeemer output for receiving the at least one buffer identifier, the child buffer returner for providing at an output the plurality of buffer identifiers, to be returned to the parent node; and

a link parent manager having an input coupled to the node buffer provider output for receiving the instruction and coupled to the child buffer returner output for receiving the plurality of buffer identifiers, the link parent manager for providing at an output to an input of a node buffer receiver at the parent node, the plurality of buffer identifiers, in a plurality of batches, each having a size responsive to the instruction.

13. A computer program product comprising a nontransitory computer useable medium having computer readable program code embodied therein for allocating a plurality of buffers, comprising portions of memory in a computer system, the computer program product comprising computer readable program code devices configured to cause a computer system to:

request, by a parent node to a central authority that manages the plurality of buffers for a plurality of parent nodes comprising the parent node, a plurality of credits, each credit in the plurality comprising a future claim for at least one of the plurality of buffers, the parent node and the central authority comprising processes of the computer system;

assign to the parent node, by the central authority, the plurality of credits, responsive to the request by the parent node;

receive, by the parent node, the plurality of credits from the central authority, responsive to the request by the parent node;

provide, by the parent node to a link, the plurality of credits;

request, by a child node comprising a process separate from the parent node, the plurality of credits from the link;

provide, by the link, the plurality of credits to the child node;

provide, by the child node, at least one of the plurality of credits to the central authority;

provide, by the central authority to the child node, an identifier of a buffer in the plurality for each of the at least one of the plurality of credits provided; and

record, by the central authority, each buffer identifier provided.

14. The computer program product of claim 13 , wherein the computer readable program code devices configured to cause the computer system to provide the at least one of the plurality of credits to the central authority comprise computer readable program code devices configured to cause the computer system to:

provide, by the child node, the at least one of the plurality of credits to the link; and

forward, by the link, the at least one of the plurality of credits to the central authority.

15. The computer program product of claim 14 :

additionally comprising computer readable program code devices configured to cause the computer system to:

record, by the link, the plurality of credits; and

compare, by the link, the at least one of the plurality of credits, to the plurality of credits recorded; and

wherein the computer readable program code devices configured to cause the computer system to forward by the link are responsive to the comparing by the link.

16. The computer program product of claim 13 , additionally comprising computer readable program code devices configured to cause the computer system to provide to the link by the child node, the identifier of each of the at least one buffer provided.

17. The computer program product of claim 13 , additionally comprising computer readable program code devices configured to cause the computer system to:

provide by the parent node to the link an instruction regarding discarding buffers returned by the child node to the parent node;

provide by the child node to the link the at least one buffer identifier to be returned to the parent node; and

provide by the link to the central authority a command to return at least some of the at least one buffer identifier to a pool of available buffer identifiers that will not be returned to the parent node, responsive to the instruction.

18. The computer program product of claim 13 :

wherein the at least one of the plurality of credits comprises more than one of the plurality of credits; and

additionally comprising computer readable program code devices configured to cause the computer system to:

provide by the parent node to the link an instruction regarding queueing buffers returned by the child node to the parent node;

provide by the child node to the link the plurality of buffer identifiers to be returned to the parent node; and

provide by the link to the parent node, the plurality of buffer identifiers in a plurality of batches, each having a size responsive to the instruction.

Continuity (5)
Continuation 18190177 · Mar 27, 2023
Continuation 17336172 · Jun 1, 2021
Continuation 16596672 · Oct 8, 2019
Continuation 15976790 · May 10, 2018
Provisional Application 62504483 · May 10, 2017
References Cited (12)
US 5790770A · McClure · 1998 [cited by examiner]
US 7408875B2 · Garmire · 2008 [cited by examiner]
US 9917790B2 · Kuznetsov · 2018 [cited by examiner]
US 10642772B1 · Wentzlaff · 2020 [cited by examiner]
US 20020178306A1 · Shimizu · 2002 [cited by examiner]
US 20030193892A1 · Sharma · 2003 [cited by examiner]
US 20040019714A1 · Kelley · 2004 [cited by examiner]
US 20050226146A1 · Rider · 2005 [cited by examiner]
US 20060050639A1 · Stuart · 2006 [cited by examiner]
US 20110075555A1 · Ziegler · 2011 [cited by examiner]
US 20180217777A1 · Jiang · 2018 [cited by examiner]
US 20200050396A1 · Keil · 2020 [cited by examiner]