IP Library Granted Patent US 8,320,392
Granted Patent B1
US 8,320,392 · App. 12/639,554 · Granted Nov 27, 2012

Method and apparatus for programmable buffer with dynamic allocation to optimize system throughput with deadlock avoidance on switches

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 8,320,392
App. No.
12/639,554
Granted
Nov 27, 2012
Kind
B1
Abstract

A method and apparatus for programmable buffer with dynamic allocation to optimize system throughput with deadlock avoidance on switches have been disclosed where a buffer availability is based on a programmable reservation size for dynamic allocation.

Claims (51)

1. A method comprising:

programming into each of a first plurality of registers a buffer programmable size and a unique buffer priority;

allocating a first plurality of buffers wherein each of said first plurality of buffers is based on a respective each of said first plurality of registers, said first plurality of buffers each having a size based on said respective buffer programmable size and a priority based on said respective unique buffer priority;

receiving a packet on an ingress port, said packet having packet data and a packet priority;

determining a first buffer availability for said packet; and

if said first buffer availability is a yes, then storing said packet data in one of said first plurality of buffers wherein said one of said first plurality of buffers has a same priority as said packet priority;

if said first buffer availability is a no, then not storing said packet data.

2. The method of claim 1 wherein said determining said first buffer availability for said packet further comprises:

calculating a total packet count by summing for each of said first plurality of buffers said received packets that are stored;

calculating a free buffer count by subtracting said total packet count from a total buffer count; and

if said free buffer count is greater than zero, then returning a yes for said first buffer availability for a buffer having a highest priority in said first plurality of buffers;

if said free buffer count is not greater than zero, then returning a no for said first buffer availability for said buffer having a highest priority.

3. The method of claim 2 further comprising:

determining if said buffer having said highest priority in said first plurality of buffers has a packet count less than said buffer having said highest priority in said first plurality of buffers buffer programmable size; and

if no, then setting a highest priority reservation size to zero;

if yes, then setting a highest priority reservation size to equal said buffer having said highest priority in said first plurality of buffers programmed size minus said buffer having said highest priority in said first plurality of buffers priority packet count.

4. The method of claim 1 wherein said first plurality of registers and said first plurality of buffers and said first buffer availability is associated with a plurality of input buffers.

5. The method of claim 4 further comprising a second plurality of registers and a second plurality of buffers and a second buffer availability associated with a plurality of crosspoint buffers.

6. The method of claim 5 further comprising a third plurality of registers and a third plurality of buffers and a third buffer availability associated with a plurality of final buffers.

7. The method of claim 6 wherein outputs from said first plurality of buffers are in communication with said second plurality of buffers, and wherein outputs from said second plurality of buffers are in communication with said third plurality of buffers, and wherein outputs from said third plurality of buffers are capable of being received by another device.

8. The method of claim 7 wherein a buffer having a highest priority in said first plurality of buffers can utilize any buffer having a lower than said highest priority in said first plurality of buffers.

9. The method of claim 8 wherein a second buffer having a highest priority in said second plurality of buffers can utilize any buffer having a lower than said highest priority in said second plurality of buffers.

10. The method of claim 9 wherein a third buffer having a highest priority in said third plurality of buffers can utilize any buffer having a lower than said highest priority in said third plurality of buffers.

11. The method of clam 1 further comprising allocating one additional buffer to that plurality of buffers having a highest said unique buffer priority.

12. A method comprising:

receiving a plurality of buffer size and unique priority requests;

storing said received plurality of buffer size and unique priority requests;

allocating a plurality of buffers wherein each of said plurality of buffers has a buffer size and unique priority based on said stored received plurality of buffer size and unique priority requests wherein said allocating said plurality of buffers comprises programming into each of said plurality of buffers a buffer programmable size and a unique buffer priority;

receiving a buffer availability request, said received buffer availability request having one of said plurality of unique priority; and

returning a buffer availability response.

13. The method of claim 12 wherein said returned buffer availability response is affirmative when said received buffer availability request having one of said plurality of unique priority is a highest of said unique priority and a corresponding said plurality of buffers having said highest of said unique priority has no buffered contents.

14. The method of claim 12 wherein said allocating a plurality of buffers further comprises allocating a single buffer to each of said plurality of buffers having a said unique priority.

15. The method of claim 12 further comprising for each of said allocated plurality of buffers a buffer size reservation register.

16. The method of claim 15 further comprising for each of said allocated plurality of buffers a packet count register.

17. The method of claim 16 wherein said returned buffer availability response for a particular said unique priority is based on said buffer size reservation register and said packet count register.

18. A method comprising:

programming into each of a first plurality of registers a buffer programmable size and a unique buffer priority;

allocating a first plurality of buffers wherein each of said first plurality of buffers is based on a respective each of said first plurality of registers, said first plurality of buffers each having a size based on said respective buffer programmable size and a priority based on said respective unique buffer priority;

receiving a packet, said packet having packet data and a packet priority;

determining a first buffer availability for said packet;

if said first buffer availability is a yes, then storing said packet data in one of said first plurality of buffers wherein said one of said first plurality of buffers has a same priority as said packet priority.

if said first buffer availability is a no, then not storing said packet data;

wherein said determining said first buffer availability for said packet further comprises: calculating a total packet count by summing for each of said first plurality of buffers said received packets that are stored;

calculating a free buffer count by subtracting said total packet count from a total buffer count; and

if said free buffer count is greater than zero, then returning a yes for said first buffer availability for a buffer having a highest priority in said first plurality of buffers;

if said free buffer count is not greater than zero, then returning a no for said first buffer availability for said buffer having a highest priority; and

determining if said buffer having said highest priority in said first plurality of buffers has a packet count less than said buffer having said highest priority in said first plurality of buffers buffer programmable size; and

if no, then setting a highest priority reservation size to zero;

if yes, then setting a highest priority reservation size to equal said buffer having said highest priority in said first plurality of buffers programmed size minus said buffer having said highest priority in said first plurality of buffers priority packet count.

19. The method of claim 18 wherein said first plurality of registers and said first plurality of buffers and said first buffer availability is associated with a plurality of input buffers.

20. The method of claim 19 further comprising a second plurality of registers and a second plurality of buffers and a second buffer availability associated with a plurality of crosspoint buffers.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2025
From: RENESAS ELECTRONICS AMERICA INC.
To: AXIRO SEMICONDUCTOR INC.
Reel/Frame 070864/0142 →
MERGER Recorded Apr 15, 2025
From: INTEGRATED DEVICE TECHNOLOGY, INC.
To: RENESAS ELECTRONICS AMERICA INC.
Reel/Frame 070851/0391 →
RELEASE OF SECURITY INTEREST Recorded Mar 29, 2019
From: JPMORGAN CHASE BANK, N.A.
To: INTEGRATED DEVICE TECHNOLOGY, INC.; GIGPEAK, INC.; CHIPX, INCORPORATED; ENDWAVE CORPORATION; MAGNUM SEMICONDUCTOR, INC.
Reel/Frame 048746/0001 →
SECURITY AGREEMENT Recorded Apr 5, 2017
From: INTEGRATED DEVICE TECHNOLOGY, INC.; GIGPEAK, INC.; MAGNUM SEMICONDUCTOR, INC.; ENDWAVE CORPORATION; CHIPX, INCORPORATED
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042166/0431 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2009
From: WANG, CHI-LIE; MO, JASON Z.
To: INTEGRATED DEVICE TECHNOLOGY, INC.
Reel/Frame 023725/0082 →