IP Library Granted Patent US 12,470,362
Granted Patent B2
US 12,470,362 · App. 18/354,075 · Granted Nov 11, 2025

Continuously changing system clock in a packet processing module based on load

Inventor: Kenneth Edward Neudorf (Ottawa, CA)
Assignee: Ciena Corporation
H04L7/0331G06F1/08
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,470,362
App. No.
18/354,075
Granted
Nov 11, 2025
Kind
B2
Abstract

An apparatus includes circuitry configured to receive a fill level from N first-in, first-out (FIFOs), N is an integer that is greater than or equal to 1, determine a module clock speed based on the fill level, and program a phase lock loop (PLL) based on the determined module clock speed where the PLL provides a module clock at the module clock speed to a packet processing circuit configured to receive packets from the N FIFOs. A packet processing module includes N FIFOs. N is an integer that is greater than or equal to 1; a programming state machine configured to receive a fill level from the N FIFOs and to program a PLL based thereon; and a packet processing circuit configured to receive packets from the N FIFOs, wherein the packet processing circuit receives a module clock from the PLL with a speed determined by the programming state machine.

Claims (32)

1 . An apparatus comprising:

a packet processing circuit configured to receive packets from N first-in, first-out (FIFOs), N is an integer that is greater than or equal to 1;

a phase lock loop (PLL) configured to provide a module clock to the packet processing circuit; and

circuitry configured to continuously

receive a fill level from the N FIFOs,

determine a module clock speed for the packet processing circuit based directly on the received fill level, and

program the PLL based on the determined module clock speed where the PLL provides the module clock at the determined module clock speed to the packet processing circuit, wherein the module clock speed varies continuously as a linear function of the continuously received fill level.

2 . The apparatus of claim 1 , wherein the circuitry is further configured to

continuously program the PLL based on the fill level of the N FIFOs received over time.

3 . The apparatus of claim 1 , wherein the packet processing circuit is configured to perform processing of control information in the received packets, processing of data content in the received packets, and a combination thereof.

4 . The apparatus of claim 1 , wherein the PLL is programmed to increase the module clock speed as the N FIFOs fill up and to decrease the module clock speed as the N FIFOs empty out.

5 . The apparatus of claim 1 , wherein the packet processing circuit is configured to perform packet header processing, routing, forwarding, or switching decisions on the received packets.

6 . The apparatus of claim 1 , wherein N is greater than 1 and the fill level is an aggregate of fill levels of each of the N FIFOs.

7 . A packet processing system comprising:

a phase lock loop (PLL);

N first-in, first-out (FIFOs), N is an integer that is greater than or equal to 1;

a programming state machine implemented in circuitry and configured to continuously receive a fill level from the N FIFOs and to program the PLL directly based thereon; and

a packet processing circuit configured to receive packets from the N FIFOs and to receive a module clock from the PLL with a speed programmed by the programming state machine where the speed is based on the fill level of the N FIFOs, wherein the speed varies continuously as a linear function of the continuously received fill level.

8 . The packet processing system of claim 7 , wherein the programming state machine is configured to continuously program the PLL based on the fill level of the N FIFOs received over time.

9 . The packet processing system of claim 7 , wherein the packet processing circuit is configured to perform processing of control information in the received packets, processing of data content in the received packets, and a combination thereof.

10 . The packet processing system of claim 7 , wherein the PLL is programmed by the programming state machine to increase the module clock speed as the N FIFOs fill up and to decrease the module clock speed as the N FIFOs empty out.

11 . The packet processing system of claim 7 , wherein the packet processing circuit is configured to perform packet header processing, routing, forwarding, or switching decisions on the received packets.

12 . The packet processing system of claim 7 , wherein N is greater than 1 and the fill level is an aggregate of fill levels of each of the N FIFOs.

13 . A method comprising steps of:

operating a circuit comprising N first-in, first-out (FIFOs), N is an integer that is greater than or equal to 1, a phase lock loop (PLL), and a packet processing circuit configured to receive packets from the N FIFOs;

continuously receiving a fill level from the N FIFOs;

determining a module clock speed for the packet processing circuit based directly on the received fill level; and

programming the PLL based on the determined module clock speed where the PLL provides the module clock at the determined module clock speed to the packet processing circuit, wherein the module clock speed varies continuously as a linear function of the continuously received fill level.

14 . The method of claim 13 , wherein the steps further include

continuously programming the PLL based on the fill level of the N FIFOs received over time.

15 . The method of claim 13 , wherein the packet processing circuit is configured to perform processing of control information in the received packets, processing of data content in the received packets, and a combination thereof.

16 . The method of claim 13 , wherein the PLL is programmed to increase the module clock speed as the N FIFOs fill up and to decrease the module clock speed as the N FIFOs empty out.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2023
From: NEUDORF, KENNETH EDWARD
To: CIENA CORPORATION
Reel/Frame 064296/0468 →
Continuity (1)
Related Publication 20250030534A1 · Jan 23, 2025
References Cited (27)
US 5526362A · Thompson · 1996 [cited by examiner]
US 5859850A · Lien · 1999 [cited by examiner]
US 6396853B1 · Humphrey · 2002 [cited by examiner]
US 7317725B2 · Etemadi et al. · 2008 [cited by applicant]
US 7359349B2 · Kayama · 2008 [cited by examiner]
US 7646836B1 · Mays · 2010 [cited by examiner]
US 7769015B2 · Huang et al. · 2010 [cited by applicant]
US 8239579B2 · Tang · 2012 [cited by examiner]
US 8886878B1 · Neudorf et al. · 2014 [cited by applicant]
US 8971471B2 · Kim · 2015 [cited by examiner]
US 9438431B2 · Abbas · 2016 [cited by examiner]
US 9444566B1 · Mustiere et al. · 2016 [cited by applicant]
US 9497522B2 · Neudorf · 2016 [cited by applicant]
US 10136384B1 · Mauer · 2018 [cited by examiner]
US 10374786B1 · Mustiere et al. · 2019 [cited by applicant]
US 11018674B1 · Neudorf et al. · 2021 [cited by applicant]
US 20050086553A1 · Spencer · 2005 [cited by examiner]
US 20070041391A1 · Lin · 2007 [cited by examiner]
US 20080145065A1 · Kawamura · 2008 [cited by examiner]
US 20120155476A1 · Pavani · 2012 [cited by examiner]
US 20120223742A1 · Kadosh · 2012 [cited by examiner]
US 20130170369A1 · Liao · 2013 [cited by examiner]
US 20160261251A1 · Tidwell · 2016 [cited by examiner]
US 20220155991A1 · Neudorf · 2022 [cited by applicant]
US 20220294703A1 · Dejanovic · 2022 [cited by examiner]
JP H10187300A · 1998 [cited by examiner]
Wenlei Bao et al., “Static and Dynamic Frequency Scaling on Multicore CPUs,” CM Trans. Archit. Code Optim. 13, 4, Article 51, Dec. 2016, 26 pages. [cited by applicant]