IP Library Granted Patent US 9,933,809
Granted Patent B2
US 9,933,809 · App. 14/940,981 · Granted Apr 3, 2018

Automatic data rate matching

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 9,933,809
App. No.
14/940,981
Granted
Apr 3, 2018
Kind
B2
Abstract

Pacing of a producer, operating in a producer clock domain, may be based on at least one heuristic of a credit wire that is used to return credits to the producer. The returned credits may indicate that a consumer, operating in a consumer clock domain, has consumed data produced by the producer. The at least one heuristic may be a rate at which the credits are returned to the producer. Pacing the producer based on the rate at which the credits are returned to the producer may reduce latency of the data, flowing from the producer clock domain to the consumer clock domain, by minimizing an average number of entries in use in a First-In-First-Out (FIFO) operating in a pipeline between the producer and the consumer.

Claims (52)

1. A method comprising:

popping a First-In First-Out (FIFO) at a consumer rate corresponding to a consumer clock domain;

pushing the FIFO at a producer rate from an element operating in a producer clock domain, the producer rate slower than the consumer rate and the producer clock domain faster than the consumer clock domain;

asserting a low indicator at the FIFO based on a fullness of the FIFO falling below a threshold; and

increasing the producer rate for a period based on the low indicator asserted, the increasing causing a push to the FIFO a clock cycle earlier than otherwise caused by the producer rate.

2. The method of claim 1 , further comprising determining the producer rate based on a credit return rate at which credits are returned from the consumer clock domain.

3. The method of claim 1 , further comprising ignoring the low indicator asserted for an overlook time frame, following the push to the FIFO the clock cycle earlier than otherwise caused by the producer rate, to enable a given number of pushes to the FIFO at the producer rate, irrespective of the low indicator asserted.

4. The method of claim 3 , wherein the overlook time frame corresponds to an integral number of producer clock domain clock cycles.

5. The method of claim 1 , wherein the element operating in the producer clock domain is a converter element and the method further comprises:

producing, as a function of the producer rate, units of data having a produced width, by a producer element operating in the producer clock domain;

converting the produced units of data having the produced width to converted units of data having a converted width, by the converter element, the produced width greater than the converted width;

returning credits, from the FIFO to the producer element, via a synchronizing element operating between the consumer and producer clock domains, each credit returned indicating consumption, of a popped unit of data from the FIFO, by a consumer element in the consumer clock domain, each popped unit of data having the converted width;

synchronizing the credits returned to the producer clock domain, by the synchronizer element; and

determining the producer rate based on a credit return rate of the synchronized credits returned.

6. The method of claim 5 , wherein determining the producer rate based on the credit return rate of the synchronized credits returned includes counting a number of producer clock domain clock cycles that transpire in an elapsed time frame, the elapsed time frame used for returning a given number of the synchronized credits, and wherein the method further comprises selecting a given number of produced units of data having the produced width for producing as a function of the number of producer clock domain clock cycles counted.

7. The method of claim 6 , wherein the given number of the synchronized credits is a function of rounding down a value, to a nearest integer, and incrementing the rounded down value by one, wherein the value is computed by:

computing a product by multiplying the produced width by the selected given number of produced units of data having the produced width;

left shifting the computed product by a shift count value of one or more; and

dividing the left shifted computed product by the converted width.

8. The method of claim 6 , wherein the selected given number of produced units of data having the produced width is a power of two.

9. The method of claim 8 , wherein the selected given number of produced units of data having the produced width is 32.

10. The method of claim 6 , further comprising pacing the producing, of the selected given number of produced units of data having the produced width, by the producer element as a function of the number of producer clock domain clock cycles counted.

11. The method of claim 10 , wherein each unit of data having the produced width is produced every N number of producer clock domain clock cycles, wherein N is computed by:

right shifting the number of producer clock domain clock cycles counted by a shift count value of one or more; and

dividing the right shifted number of producer clock domain clock cycles by the selected given number of produced units of data having the produced width.

12. The method of claim 11 , wherein, in an event dividing the right shifted number of producer clock domain clock cycles by the selected given number of produced units of data having the produced width results in a remainder value, pacing the producing includes delaying production of each next unit of data having the produced width to produce each next unit of data after the N number of producer clock domain clock cycles or after the N number of producer clock domain clock cycles plus one.

13. The method of claim 1 , wherein the threshold is based on a disparity between the consumer and producer rates and a worst case delay for processing the low indicator asserted.

14. The method of claim 1 , further comprising determining the producer rate based on a credit return rate at which credits are returned from the consumer clock domain, to enable an amount of data in flight between a producer element operating in the producer clock domain and a consumer element operating in the consumer clock domain to be minimized, to reduce a fullness level for the FIFO and a latency of data flowing from the producer element to the consumer element, each credit returned indicating consumption, by the consumer element, of a popped unit of data from the FIFO.

15. A system comprising:

a First-In First-Out (FIFO);

a consumer element operating in a consumer clock domain configured to consume popped units of data from the FIFO at a consumer rate corresponding to the consumer clock domain; and

a producer element operating in a producer clock domain configured to produce units of data for pushing to the FIFO at a producer rate, the producer rate slower than the consumer rate and the producer clock domain faster than the consumer clock domain, wherein the FIFO is configured to assert a low indicator based on a fullness of the FIFO falling below a threshold and wherein the producer element is further configured to increase the producer rate for a period based on the low indicator asserted, causing a push to the FIFO a clock cycle earlier than otherwise caused by the producer rate.

16. The system of claim 15 , wherein the producer element is further configured to determine the producer rate based on a credit return rate at which credits are returned from the consumer clock domain.

17. The system of claim 15 , wherein the producer element is further configured to ignore the low indicator for an overlook time frame, following the push to the FIFO the clock cycle earlier than otherwise caused by the producer rate, to enable a given number of pushes to the FIFO at the producer rate, irrespective of the low indicator asserted.

18. The system of claim 17 , wherein the overlook time frame corresponds to an integral number of producer clock domain clock cycles.

19. The system of claim 15 , wherein the produced units of data have a produced width, and the system further comprises:

a converter element operating in the producer clock domain and configured to convert the produced units of data having the produced width to converted units of data having a converted width, for pushing to the FIFO, the produced width greater than the converted width; and

a synchronizer element operating between the consumer and producer clock domains, wherein the FIFO is further configured to return credits to the producer element, via the synchronizer element, each credit returned indicating consumption, of a popped unit of data from the FIFO, by the consumer element, each popped unit of data having the converted width and the synchronizer element is configured to synchronize the credits returned to the producer clock domain, and the producer element is further configured to determine the producer rate based on a credit return rate of the synchronized credits returned.

20. The system of claim 19 , wherein to determine the producer rate based on the credit return rate of the synchronized credits returned includes counting a number of producer clock domain clock cycles that transpire in an elapsed time frame used for returning a given number of the synchronized credits, and wherein the producer element is further configured to produce a selected given number of produced units of data having the produced width as a function of the number of producer clock domain clock cycles counted.

21. The system of claim 20 , wherein the given number of the synchronized credits is a function of rounding down a value, to a nearest integer, and incrementing the rounded down value by one, wherein the value is computed by:

computing a product by multiplying the produced width by the selected given number of produced units of data having the produced width;

left shifting the computed product by a shift count value of one or more; and

dividing the left shifted computed product by the converted width.

22. The system of claim 20 , wherein the selected given number of produced units of data having the produced width is a power of two.

23. The system of claim 22 , wherein the given number of produced units of data having the produced width is 32.

24. The system of claim 20 , wherein the producer element is further configured to pace the producing of the selected number of produced units of data having the produced width as a function of the number of producer clock domain clock cycles counted.

25. The system of claim 24 , wherein each unit of data having the produced width is produced every N number of producer clock domain clock cycles, wherein N is computed by:

right shifting the number of producer clock domain clock cycles counted by a shift count value of one or more; and

dividing the right shifted number of producer clock domain clock cycles by the selected given number of produced units of data having the produced width.

26. The system of claim 25 , wherein, in an event dividing the right shifted number of producer clock domain clock cycles by the selected given number of produced units of data having the produced width results in a remainder value, to pace producing includes delaying production of each next unit of data having the produced width to produce each next unit of data after the N number of producer clock domain clock cycles or after the N number of producer clock domain clock cycles plus one.

27. The system of claim 15 , wherein the threshold is based on a disparity between the consumer and producer rates and a worst case delay for processing the low indicator asserted.

28. The system of claim 15 , wherein the producer element is further configured to determine the producer rate based on a credit return rate at which credits are returned from the consumer clock domain, to enable an amount of data in flight between the producer element and the consumer element to be minimized, to reduce a fullness level for the FIFO and a latency of data flowing from the producer element to the consumer element, each credit returned indicating consumption, by the consumer element, of a popped unit of data from the FIFO.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2016
From: BARNER, STEVEN C.
To: CAVIUM, INC.
Reel/Frame 037560/0298 →