A programmable state machine is incorporated into the core of a network
processor (NP) to monitor the utilization of different processing
elements in the NP and to control the power state of each element as a
function of past and predicted utilization. The state machine can be used
to control a centralized power management control unit or to control a
distributed power management unit where each processing element includes
its own state machine. The function of the power management state machine
can be implemented in any combination of software and/or hardwired logic,
depending on the system design requirements. The monitoring and control
are implemented through the use of a power management state change
algorithm. The determination of the power state of a processing element
accommodates interdependencies between the elements. It also makes
adjustments in gain factors in response to actual performance and
utilization of the network processor.