Patent Description:
Voltage supply to a microprocessor must be kept within a certain operating range to prevent failure and/or decreased performance of the microprocessor. However, a sudden change in circuit switching activity (e.g., transitioning out of an idle state upon receiving an interrupt command, etc.) is common in a microprocessor. This rapid change in electrical current often results in noise for a voltage level provided to transistors of the microprocessor. Conventionally, a certain margin in the voltage level for the microprocessor is maintained during such events. In one example, the microprocessor can be operated at a higher voltage to compensate for such events. However, operating a microprocessor at a higher voltage often reduces performance of the microprocessor.

The above-described description is merely intended to provide a contextual overview of current microprocessor systems and is not intended to be exhaustive. Documents that illustrate previously known solutions on the same technical field include <CIT>, <CIT>, <CIT>, and <CIT>. These describe a system and method utilizing on-chip voltage monitoring to manage power consumption; a microcomputer malfunction preventive apparatus and method; a clock stretched for voltage droop mitigation; and applications of multiple voltage droop detection and instruction throttling instances with customized thresholds across a semiconductor chip respectively.

The invention is defined as set out in the independent claims <NUM> and <NUM>. Further embodiments are depicted in the dependent claims.

In an aspect of the invention, a system for controlling frequency of a clock buffer in association with a voltage droop, comprises a microprocessor that is configured to receive a clock provided by the clock buffer;a voltage detector comprising a low-pass filter, the voltage detector being configured to detect a relative voltage droop associated with a certain amount of voltage supply noise in the system based on a comparison of (a) a voltage associated with the microprocessor with (b) a low-pass filtered version of the voltage associated with the microprocessor; and a controller configured for controlling the frequency of the clock provided by the clock buffer based on the comparison of (a) the voltage associated with the microprocessor with (b) the low-pass filtered version of the voltage associated with the microprocessor, the controller further configured for reducing the frequency of the clock in response to the relative voltage droop being detected as a defined criterion associated with the voltage being satisfied, and incrementally increasing the frequency of the clock in response to the voltage associated with the microprocessor returning to a voltage level that was provided to the microprocessor before the detection of the relative voltage droop as another defined criterion associated with the voltage being satisfied.

In yet another aspect of the invention, a method for improving tolerance to voltage supply noise, comprises monitoring a voltage associated with a microprocessor; detecting a relative voltage droop event associated with a certain amount of voltage supply noise in the system by comparing the voltage associated with the microprocessor with a low-pass filtered version of the voltage associated with the microprocessor;reducing a frequency of a clock provided to the microprocessor in response to detecting the relative voltage droop event as a defined criterion associated with the voltage being satisfied; and incrementally increasing the frequency of the clock in response to the voltage associated with the microprocessor returning to a voltage level that was provided to the microprocessor before the detection of the relative voltage droop as a determination that the voltage droop event has ended.

The disclosure herein is described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject innovation. It may be evident, however, that various disclosed aspects can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject innovation.

Various aspects of the present disclosure provide for mitigating voltage droop associated with a microprocessor (e.g., by controlling a clock associated with the microprocessor). For example, a voltage droop event associated with a microprocessor can be detected by a voltage detector circuit. In response to detection of a voltage droop event by the voltage detector circuit, a clock provided to the microprocessor can be switched to a defined clock frequency that is slower than a normal frequency (e.g., a current frequency) of the clock. Once the voltage droop event ends (e.g., a voltage provided to the microprocessor returns to a voltage level that was provided to the microprocessor before the voltage droop event), the defined clock frequency of the clock can be incrementally increased until the clock frequency of the clock returns to the normal frequency of the clock before the voltage droop event. In an aspect, a controller can reduce frequency of the clock provided to the microprocessor when the voltage droop event occurs. Furthermore, the controller can incrementally increase the frequency of the clock once the voltage droop event has ended (e.g., once voltage provided to the microprocessor returns to a normal voltage level). Therefore, mitigation of voltage droop associated with a microprocessor can be achieved and/or tolerance to voltage supply noise in a microprocessor system can be improved. Accordingly, a voltage margin required to avoid a microprocessor failure can be improved. Moreover, operating voltage of a microprocessor can be lowered (e.g., to save energy) and/or operating frequency of a microprocessor can be increased (e.g., to improve performance of the microprocessor).

Turning now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. The system <NUM> can be a microprocessor system that includes a microprocessor <NUM>. In one example, the system <NUM> can be associated with a system on a chip (SoC). The microprocessor <NUM> can receive a clock (e.g., CLOCK shown in <FIG>) associated with (e.g., provided by) a clock buffer <NUM>. For example, the clock provided to the microprocessor <NUM> can be driven by the clock buffer <NUM>. The clock buffer <NUM> can be, for example, a microprocessor clock buffer. In an aspect, the clock buffer <NUM> can select the clock (e.g., the clock provided to the microprocessor <NUM>) from a set of clocks (e.g., a set of predefined clock values). The microprocessor <NUM> can, for example, generate output (e.g., OUTPUT shown in <FIG>) based at least on the clock (e.g., CLOCK) provided to the microprocessor <NUM>.

System <NUM> also includes a controller <NUM>. The controller <NUM> can be employed to facilitate mitigation of voltage droop in the system <NUM>. For example, the controller <NUM> can include voltage droop mitigation logic configured to detect and/or respond to voltage droop in the system <NUM>. The controller <NUM> can control the clock buffer <NUM> based on a voltage (e.g., VOLTAGE shown in <FIG>) associated with the microprocessor <NUM>. For example, the controller <NUM> can provide a control signal (e.g., CONTROL shown in <FIG>) to the clock buffer <NUM>. The control signal provided to the clock buffer <NUM> can be configured (e.g., by the controller <NUM>) based at least in part on the voltage (e.g., the voltage associated with the microprocessor <NUM>). Therefore, the controller <NUM> can control the clock buffer <NUM> (e.g., frequency of the clock provided by the clock buffer <NUM>) in response to a detection of a voltage droop associated with the voltage (e.g., the voltage associated with the microprocessor <NUM>). In one example, the voltage (e.g., the voltage associated with the microprocessor <NUM>) can be a supply voltage (e.g., power supply voltage, integrated circuit supply voltage, etc.) received by the microprocessor <NUM>. Additionally or alternatively, the controller <NUM> can control the clock buffer <NUM> based on a level of noise associated with the voltage (e.g., the voltage associated with the microprocessor <NUM>). For example, a circuit (not shown) in communication with the controller <NUM> can be configured to detect a level of noise associated with the voltage via one or more noise detection techniques. Therefore, the controller <NUM> can detect voltage noise (e.g., voltage supply noise) in the system <NUM>.

In an embodiment, the clock buffer <NUM> can receive an input clock (e.g., INPUT CLOCK shown in <FIG>). The clock buffer <NUM> can transform the input clock into the clock (e.g., the clock received by the microprocessor <NUM>) based on a the control signal generated by the controller <NUM>. For example, the clock buffer <NUM> can transform the input clock into the clock (e.g., the clock received by the microprocessor <NUM>) based on information provided by the controller <NUM> in response to the voltage. The controller <NUM> can modify a frequency of the input clock and/or the clock provided by the clock buffer <NUM> based on synchronous clock division. In an aspect, the controller <NUM> can reduce a frequency of the input clock (e.g., the clock provided by the clock buffer <NUM> can be lower than the input clock) and/or reduce a frequency of the clock provided by the clock buffer <NUM> in response to a determination that the voltage (e.g., the voltage associated with the microprocessor) satisfies a defined detection criterion. The controller <NUM> can reduce a frequency of the input clock and/or can provide the clock at a lower frequency in response to a determination that the voltage (e.g., the voltage associated with the microprocessor) is below a defined threshold. A frequency of a clock (e.g., a frequency of the input clock) can correspond to a speed of the clock. The defined threshold can be a voltage threshold value associated with a certain voltage amplitude (e.g., a voltage amplitude associated with noise). Therefore, when the voltage is below the defined threshold, the controller <NUM> can control the clock buffer <NUM> so that the clock provided by the clock buffer <NUM> is switched to a slower clock frequency (e.g., the controller <NUM> can temporarily slow the clock provided by the clock buffer <NUM> in response to a determination that the voltage is below the defined threshold). Furthermore, a voltage value below the defined threshold can be associated with a voltage droop event. A voltage droop event can be associated with a certain amount (e.g., an unwanted amount) of voltage noise. Therefore, the controller <NUM> can reduce a frequency of the clock (e.g., the clock provided by the clock buffer <NUM>) in response to a voltage droop event. In another implementation, the controller <NUM> can reduce a frequency of the input clock and/or reduce a frequency of the clock provided by the clock buffer <NUM> in response to a determination that the voltage (e.g., the voltage associated with the microprocessor) satisfies a defined criterion (e.g., a defined threshold) associated with a time-averaged version of the voltage. In yet another implementation, the controller <NUM> can reduce a frequency of the input clock and/or reduce a frequency of the clock provided by the clock buffer <NUM> in response to a determination that the voltage (e.g., the voltage associated with the microprocessor) satisfies a defined criterion (e.g., a defined threshold) associated with a filtered reference voltage. In yet another implementation, the controller <NUM> can reduce a frequency of the input clock and/or reduce a frequency of the clock provided by the clock buffer <NUM> in response to a determination that voltage droop slope associated with the voltage (e.g., the voltage associated with the microprocessor) satisfies a defined criterion. Therefore, the controller <NUM> can be configured to reduce a frequency of the input clock and/or reduce a frequency of the clock provided by the clock buffer <NUM> in response to a fast voltage droop event or a slow voltage droop event. In another aspect, in addition to reducing the frequency of the input clock and/or a frequency of the clock provided by the clock buffer <NUM>, the controller <NUM> can modify a high clock phase of the input clock and/or the clock provided by the clock buffer <NUM> in response to the determination that the voltage satisfies the defined detection criterion. Furthermore, the controller <NUM> can modify a low clock phase of the input clock and/or the clock provided by the clock buffer <NUM> in response to the determination that the voltage satisfies the defined detection criterion. As such, the controller <NUM> can increase a high clock phase and a low clock phase of the input clock and/or the clock provided by the clock buffer <NUM>.

The controller <NUM> can reduce the frequency of the input clock and/or the clock provided by the clock buffer <NUM> to a defined frequency value (e.g., a first frequency) in response to the determination that the voltage (e.g., the voltage associated with the microprocessor) is below the defined threshold. In one example, the controller <NUM> can reduce the frequency of the input clock and/or the clock provided by the clock buffer <NUM> by dividing the frequency of the input clock (e.g., the controller <NUM> can reduce the frequency of the input clock by dividing the frequency of the clock in half, etc.). For example, the controller <NUM> can include clock divider logic that can be configured to divide the frequency of the input clock (e.g., reduce the speed of the input clock). In another example, the controller <NUM> can generate the control signal (e.g., CONTROL) for the clock buffer <NUM> in response to the determination that the voltage is below the defined threshold. In yet another example, the controller <NUM> can control the clock buffer <NUM> to select between a first clock value associated with a first clock frequency (e.g., a full frequency clock) and second clock value associated with a second clock frequency (e.g., a slower clock). The first clock frequency can correspond to a frequency value of the clock before being reduced (e.g., before the voltage droop event). The second clock frequency can correspond to a reduced frequency value after the determination that the voltage (e.g., the voltage associated with the microprocessor) is below the defined threshold. In an implementation, the controller <NUM> can incrementally reduce the frequency of the input clock and/or the clock provided by the clock buffer <NUM> to the defined frequency value (e.g., the first frequency) in response to the determination that the voltage (e.g., the voltage associated with the microprocessor) is below the defined threshold.

Additionally, the controller <NUM> can incrementally increase the frequency of the input clock and/or the clock provided by the clock buffer <NUM> in response to another determination that the voltage is equal to or above the defined threshold after being below the defined threshold. For example, in response to the other determination that the voltage is equal to or above the defined threshold after being below the defined threshold, the controller <NUM> can incrementally increase the frequency of the input clock and/or the clock provided by the clock buffer <NUM> until the frequency reaches a defined frequency level. The defined frequency level can correspond to the frequency of the input clock and/or the clock provided by the clock buffer <NUM> before being reduced (e.g., before the voltage droop event). For example, the controller <NUM> can repeatedly incrementally increase frequency of the clock, until an original frequency of the clock is reached, in response to the voltage being equal to or above the defined threshold after being below the defined threshold. In one example, a voltage value equal to or above the defined threshold can be associated with a normal voltage level (e.g., a voltage level that is not associated with a voltage droop event). The defined frequency level can be, for example, a normal frequency where the clock of the clock buffer <NUM> was operating before the voltage droop event.

It is to be appreciated that the controller <NUM> can alternatively reduce a frequency of the input clock and/or the clock provided by the clock buffer <NUM> in response to a determination that the voltage (e.g., the voltage associated with the microprocessor) is above a defined threshold. Therefore, the controller <NUM> can alternatively incrementally increase the frequency of the input clock and/or the clock provided by the clock buffer <NUM> in response to another determination that the voltage is equal to or below the defined threshold after being above the defined threshold.

In one example, the controller <NUM> can incrementally increase the frequency of the input clock and/or the clock provided by the clock buffer <NUM> based on a timer. By incrementally increasing the frequency of the input clock and/or the clock provided by the clock buffer <NUM>, possibility of repeated voltage droop associated with the voltage can be reduced. In an aspect, the controller <NUM> can include a counter to monitor frequency and/or average length of voltage droop events associated with the voltage provided to the microprocessor. For example, the controller <NUM> can increment the counter in response to the determination that the voltage is below the defined threshold. Furthermore, the controller can determine an amount of time that the voltage is below the defined threshold before returning to a voltage value that is equal to or above the defined threshold.

In an implementation, the controller <NUM> can reduce the frequency of the clock provided by the clock buffer <NUM> to a first frequency that is less than the frequency of the clock in response to the determination that the voltage is below the defined threshold. Furthermore, the controller <NUM> can increase the first frequency of the clock provided by the clock buffer <NUM> to a second frequency that is greater than the first frequency in response to the other determination that the voltage is equal to or above the defined threshold after being below the defined threshold. Then, the controller <NUM> can increase the second frequency of the clock to a third frequency that is greater than the second frequency in response to the other determination that the voltage is equal to or above the defined threshold after being below the defined threshold. In one example, the controller <NUM> can increase the second frequency of the clock to the third frequency that is greater than the second frequency after a defined period of time. For example, a timer can set the defined period of time. It is to be appreciated that the controller can also increase the third frequency to a fourth frequency, etc. until the frequency of the clock before the voltage droop is reached.

In a non-limiting example, a frequency of a clock provided to the microprocessor <NUM> before a voltage droop event (e.g., a normal frequency of the clock) can be equal to S. In response to a determination that voltage provided to the microprocessor <NUM> is below a defined voltage threshold, the controller <NUM> can reduce the frequency of the clock to a clock frequency equal to S/<NUM>. However, it is to be appreciated that a frequency of the clock (e.g., a speed of the clock) can be reduced to a different value. Then, in response to another determination that the voltage has increased to be equal to or above the defined voltage threshold, the controller <NUM> can incrementally increase the clock frequency until the clock frequency is equal to S again. For example, the controller <NUM> can initially increase the clock frequency to <NUM>/<NUM>. Then, the controller <NUM> can increase the clock frequency to <NUM>/<NUM>, then to <NUM>/<NUM>, and finally to S. However, it is to be appreciated that a frequency of the clock (e.g., a speed of the clock) can be incrementally increase by a different amount. In one example, a frequency of the clock (e.g., a speed of the clock) can be incrementally increased by an equal amount. In another example, a frequency of the clock (e.g., a speed of the clock) can be incrementally increased by an unequal amount.

Accordingly, the system <NUM> can provide improved tolerance to voltage noise (e.g., voltage supply noise) associated with a microprocessor (e.g., the microprocessor <NUM>). Also, with the system <NUM>, a voltage margin (e.g., a frequency/voltage guard band) required to avoid microprocessor failure (e.g., failure of the microprocessor <NUM>, a setup time violation associated with the microprocessor <NUM>, an electrical circuit fault associated with the microprocessor <NUM>, etc.) can be improved. Moreover, with the system <NUM>, operating voltage of a microprocessor (e.g., the microprocessor <NUM>) can be lowered (e.g., to save energy) and/or operating frequency of a microprocessor (e.g., the microprocessor <NUM>) can be increased (e.g., to improve performance of the microprocessor).

Referring now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. System <NUM> includes the microprocessor <NUM>, the clock buffer <NUM> and the controller <NUM>. The controller <NUM> includes voltage detector <NUM>. In another implementation, the voltage detector <NUM> can be separate from the controller <NUM> and/or in communication with the controller <NUM>.

The voltage detector <NUM> can be a voltage detector circuit. In one example, the voltage detector <NUM> can be a hardware voltage detector circuit (e.g., an analog voltage detector circuit). In another example, the voltage detector <NUM> can include software functionality for detecting voltage. In yet another example, the voltage detector <NUM> can be a combination of hardware voltage detector circuitry and software functionality for detecting voltage. In an implementation, the voltage detector <NUM> can be associated with a set of voltage detector circuits (e.g., a set of analog voltage detector circuits). For example, the voltage detector <NUM> can be associated with a first voltage detector circuit (e.g., a first droop detector circuit) and a second voltage detector circuit (e.g., a second droop detector circuit). The first voltage detector circuit can be connected to a communication line associated with the voltage received by the microprocessor <NUM>. Furthermore, the first voltage detector circuit can measure noise associated with the voltage received by the microprocessor <NUM>. The second voltage detector circuit can receive a reference voltage that is different than the voltage received by the microprocessor <NUM>. Furthermore, the second voltage detector circuit can provide an indication of a voltage droop (e.g., an absolute voltage droop) associated with the voltage received by the microprocessor <NUM>.

The voltage detector <NUM> can monitor (e.g., continuously monitor) the voltage associated with (e.g., provided to) the microprocessor <NUM>. In one example, the voltage detector <NUM> can monitor a communication line associated with the voltage received by the microprocessor <NUM>. Therefore, the controller <NUM> can reduce a frequency of the clock (e.g., a speed of the clock) provided to the microprocessor <NUM> in response to a determination that the voltage monitored by the voltage detector <NUM> is below a defined threshold. Furthermore, the controller <NUM> can incrementally increasing the frequency of the clock (e.g., the speed of the clock) provided to the microprocessor <NUM> in response to another determination that the voltage monitored by the voltage detector <NUM> is equal to or above the defined threshold after being below the defined threshold.

In an aspect, in response to the other determination that the voltage monitored by the voltage detector <NUM> is equal to or above the defined threshold after being below the defined threshold, the controller <NUM> can incrementally increasing the frequency of the clock (e.g., the speed of the clock) provided to the microprocessor <NUM> until the frequency reaches a previously set frequency of the clock (e.g., a previously set speed for the clock) before being reduced. In another aspect, in response to the determination that the voltage monitored by the voltage detector <NUM> is below the defined threshold, the controller <NUM> can reduce the frequency of the clock (e.g., the speed of the clock) to a first frequency (e.g., a first speed) that is less than the frequency of the clock (e.g., the speed of the clock). Additionally, in response to the other determination that the voltage monitored by the voltage detector <NUM> is equal to or above the defined threshold after being below the defined threshold, the controller <NUM> can increase the first frequency (e.g., the first speed) of the clock (e.g., the provided to the microprocessor <NUM>) to a second frequency (e.g., a second speed) that is greater than the first frequency (e.g., the first speed). Then, the controller <NUM> can increase the second frequency (e.g., the second speed) of the clock to a third frequency (e.g., a third speed) that is greater than the second frequency (e.g., the second speed).

Referring now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. System <NUM> includes the microprocessor <NUM>, the clock buffer <NUM> and the controller <NUM>. The controller <NUM> includes the voltage detector <NUM> and/or clock logic <NUM>.

The clock logic <NUM> can configure the control signal provided to the clock buffer <NUM> and/or can configure the clock provided by the clock buffer <NUM> based on information associated with the voltage detector <NUM>. For example, the clock logic <NUM> can reduce a frequency of the clock (e.g., a speed of the clock) provided to the microprocessor <NUM>, as more fully disclosed herein, in response to a determination that the voltage monitored by the voltage detector <NUM> is below a defined threshold. Furthermore, the clock logic <NUM> can incrementally increasing the frequency of the clock (e.g., the speed of the clock) provided to the microprocessor <NUM>, as more fully disclosed herein, in response to another determination that the voltage monitored by the voltage detector <NUM> is equal to or above the defined threshold after being below the defined threshold. In an aspect, the clock logic <NUM> can be associated with a state diagram (e.g., as shown in <FIG>). For example, the clock logic <NUM> can incrementally increase the frequency of the clock (e.g., the speed of the clock) provided to the microprocessor <NUM> based on a logic associated with a state diagram.

Referring now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. System <NUM> includes the microprocessor <NUM>, the clock buffer <NUM> and the controller <NUM>. The controller <NUM> includes the voltage detector <NUM>, the clock logic <NUM> and/or a timer <NUM>.

The controller <NUM> (e.g., the clock logic <NUM>) can, additionally or alternatively, incrementally increase the frequency of the clock (e.g., the speed of the clock) provided to the microprocessor <NUM> based on the timer <NUM>. For example, the timer <NUM> can determine a defined period of time in connection with incrementally increasing a frequency of a clock. In one example, in response to the determination that the voltage monitored by the voltage detector <NUM> is below the defined threshold, the controller <NUM> (e.g., the clock logic <NUM>) can reduce the frequency of the clock (e.g., the speed of the clock) provided by the clock buffer <NUM> to a first frequency (e.g., a first speed) that is less than the frequency of the clock (e.g., the speed of the clock). Additionally, in response to the other determination that the voltage monitored by the voltage detector <NUM> is equal to or above the defined threshold after being below the defined threshold, the controller <NUM> (e.g., the clock logic <NUM>) can increase the first frequency (e.g., the first speed) of the clock provided by the clock buffer <NUM> to a second frequency (e.g., a second speed) that is greater than the first frequency (e.g., the first speed). Then, the controller <NUM> (e.g., the clock logic <NUM>) can increase the second frequency (e.g., the second speed) of the clock provided by the clock buffer <NUM> to a third frequency (e.g., a third speed) that is greater than the second frequency (e.g., the second speed). The controller <NUM> (e.g., the clock logic <NUM>) can increase the second frequency to the third frequency after a defined period of time that is defined and/or managed by the timer <NUM>. In certain implementations, the controller <NUM> (e.g., the clock logic <NUM>) can also increase the third frequency to a fourth frequency after another defined period of time that is defined and/or managed by the timer <NUM>. The other defined period of time can be equal to the defined period of time. Alternatively, the other defined period of time can be different than the defined period of time. In one example, the defined period of time can be tuned to match a frequency response of a device (e.g., a chip, a circuit, a package, a die, etc.) associated with the system <NUM>. In another example, the timer <NUM> can be associated with a state diagram (e.g., as shown in <FIG>).

Referring now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. System <NUM> includes the microprocessor <NUM>, the clock buffer <NUM> and the controller <NUM>. The controller <NUM> includes the clock logic <NUM> and/or the timer <NUM>. The voltage detector <NUM> can be coupled to the controller <NUM> and a communication line associated with the voltage (e.g., VOLTAGE) received by the microprocessor <NUM>. In one, the voltage detector <NUM> can be a hardware voltage detector circuit (e.g., an analog voltage detector circuit). In another example, the voltage detector <NUM> can include software functionality for detecting voltage. In yet another example, the voltage detector <NUM> can be a combination of hardware voltage detector circuitry and software functionality for detecting voltage.

Referring now to <FIG>, a block diagram illustrating an example, non-limiting embodiment of a system <NUM> in accordance with various aspects described herein is shown. System <NUM> includes the clock buffer <NUM>, the controller <NUM>, a first voltage detector <NUM> and a second voltage detector <NUM>. In an implementation, the first voltage detector <NUM> and the second voltage detector <NUM> can be associated with and/or included in the voltage detector <NUM>.

The clock buffer <NUM> can include a first clock buffer component <NUM> and a second clock buffer component <NUM>. The first clock buffer component <NUM> can receive a first input clock (e.g., CLK_PLL shown in <FIG>) and a second input clock (e.g., CLK_SCAN shown in <FIG>). The first input clock (e.g., CLK_PLL) can be an input clock received off-chip (e.g., from a device that is not included on a chip associated with the clock buffer <NUM>). The second input clock (e.g., CLK SCAN) can be an input clock received from a phase-locked loop (PLL).

The first voltage detector <NUM> and the second voltage detector <NUM> can be configured to detect voltage anomalies associated with the voltage (e.g., VOLTAGE). For example, the first voltage detector <NUM> and the second voltage detector <NUM> can receive a same voltage supply. In an aspect, the first voltage detector <NUM> and/or the second voltage detector <NUM> can be connected to a communication line associated with the voltage and/or the microprocessor <NUM>. The first voltage detector <NUM> and the second voltage detector <NUM> can be biased so that the first voltage detector <NUM> detects a different voltage event than the second voltage detector <NUM> in response to the voltage (e.g., the same supply voltage). The first voltage detector <NUM> can be configured to detect relative voltage droop associated with the voltage (e.g., VOLTAGE). In one example, the first voltage detector <NUM> can compare the voltage (e.g., VOLTAGE) to a filtered version of the voltage (e.g., a low-pass filtered version of the voltage, etc.). For example, the first voltage detector <NUM> can include a filter (e.g., a low-pass filter) that can generate the filtered version of the voltage. In another example, the first voltage detector <NUM> can be coupled to a filter (e.g., a low-pass filter) that can generate the filtered version of the voltage.

The second voltage detector <NUM> can be configured to observe a different voltage profile (e.g., a different noise profile) than the first voltage detector <NUM>. The second voltage detector <NUM> can be configured to detect an absolute voltage droop associated with the voltage (e.g., VOLTAGE). In one example, the second voltage detector <NUM> can compare the voltage (e.g., VOLTAGE) to a reference voltage (e.g., a reference voltage received from off-die, etc.). For example, the second voltage detector <NUM> can receive the reference voltage. Alternatively, the second voltage detector <NUM> can store a value for the reference voltage.

The controller <NUM> can include droop mitigation logic <NUM>. For example, the droop mitigation logic <NUM> can be associated with and/or can include the clock logic <NUM> and/or the timer <NUM>. The droop mitigation logic <NUM> can detect a voltage droop event via the first voltage detector <NUM> and/or the second voltage detector <NUM>. Additionally, the droop mitigation logic <NUM> can respond to a voltage droop event. For example, based on feedback from the first voltage detector <NUM> and/or the second voltage detector <NUM>, the droop mitigation logic <NUM> can generate a first control signal (e.g., FIRST CONTROL shown in <FIG>) for the first clock buffer component <NUM> and/or a second control signal (e.g., SECOND CONTROL shown in <FIG>) for the second clock buffer component <NUM>. The first control signal can be a control signal associated with configuration of a clock value generated by the clock buffer <NUM>. The second control signal can be a control signal to control multiplexer functionality associated with the second clock buffer component <NUM>.

The first clock buffer component <NUM> can generate a first defined clock (e.g., CLK_SLOW shown in <FIG>) and a second defined clock (e.g., CLK_FAST shown in <FIG>) based on the first input clock (e.g., CLK_PLL), the second input clock (e.g., CLK SCAN) and/or the first control signal (e.g., FIRST CONTROL). The first defined clock (e.g., CLK_SLOW) can be associated with a slower clock frequency than the second defined clock. The second defined clock (e.g., CLK_FAST) can be, for example, a normal clock frequency provided to the microprocessor <NUM>. The second clock buffer component <NUM> can select the first defined clock (e.g., CLK_SLOW) or the second defined clock (e.g., CLK_FAST) based on the second control signal (e.g., SECOND CONTROL). Therefore, either the first defined clock (e.g., CLK_SLOW) or the second defined clock (e.g., CLK_FAST) can be outputted as the clock (e.g., CLOCK) provided to the microprocessor <NUM>. In an aspect, the second input clock (e.g., CLK_SCAN) and/or the second defined clock (e.g., CLK_FAST) can be provided as feedback to the controller <NUM>.

<FIG> illustrates an example, non-limiting embodiment of a state diagram <NUM> in accordance with various aspects described herein is shown. The state diagram <NUM> can facilitate voltage droop mitigation. In an aspect, the state diagram <NUM> can be associated with the controller <NUM>, the clock logic <NUM>, the timer <NUM> and/or the droop mitigation logic <NUM>. The state diagram <NUM> includes an idle state <NUM> (e.g., IDLE shown in <FIG>), a first state <NUM> (e.g., STATE <NUM> shown in <FIG>), a second state <NUM> (e.g., STATE <NUM> shown in <FIG>), a third state <NUM> (e.g., STATE <NUM> shown in <FIG>) and a fourth state <NUM> (e.g., STATE <NUM> shown in <FIG>).

The idle state <NUM> can be associated with a normal voltage level for the voltage provided to the microprocessor <NUM>. For example, the idle state <NUM> can be associated with a voltage level that is at or above a defined threshold (e.g., a voltage level that is not associated with a voltage droop event). In response to an event (e.g., a voltage droop event) associated with the voltage, the state diagram <NUM> can exit the idle state <NUM> and can proceed to the first state <NUM> via path <NUM>. For example, in response to a determination that the voltage is below the defined threshold, the state diagram <NUM> can exit the idle state <NUM> and can proceed to the first state <NUM> via path <NUM>. At the first state <NUM>, a clock associated with the clock buffer <NUM> can be set to a first value (e.g., CLK=VALUE_1 shown in <FIG>). For example, a frequency of the clock associated with the clock buffer <NUM> can be reduced (e.g., to a first frequency, to first defined clock of <FIG>, etc.). In response to a determination that the voltage is no longer associated with the event (e.g., the voltage droop event), the state diagram <NUM> can exit the first state <NUM> and can proceed to the second state <NUM> via path <NUM>. For example, in response to a determination that the voltage is at or above the defined threshold, the state diagram <NUM> can exit the first state <NUM> and can proceed to the second state <NUM> via path <NUM>.

At the second state <NUM>, the first value of the clock associated with the first state <NUM> can be increased to a second value (e.g., CLK=VALUE_2 shown in <FIG>). The second value of the clock can be greater than the first value of the clock, but less than a value of the clock associated with the idle state <NUM>. For example, in the second state <NUM>, a frequency of the clock associated with the first state <NUM> can be increased by a certain amount so that a current value of the frequency of the clock is less than a value of the frequency of the clock when in the idle state <NUM>. The state diagram <NUM> can be in the second state <NUM> for a first defined period of time (e.g., determined by the timer <NUM>). In response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the first defined period of time has been reached, the state diagram <NUM> can exit the second state <NUM> and can proceed to the third state <NUM> via path <NUM>. For example, in response to a determination that the voltage is still at or above the defined threshold and that the first defined period of time has been reached, the state diagram <NUM> can exit the second state <NUM> and can proceed to the third state <NUM> via path <NUM>. Additionally or alternatively, in response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the first defined period of time has not been reached, the state diagram <NUM> can remain to the second state <NUM> via path <NUM>. However, in response to a determination that the voltage is again associated with the event (e.g., the voltage droop event), the state diagram <NUM> can exit the second state <NUM> and can return to the first state <NUM> via path <NUM>. For example, in response to a determination that the voltage is below the defined threshold, the state diagram <NUM> can exit the second state <NUM> and can return to the first state <NUM> via path <NUM>.

At the third state <NUM>, the second value of the clock associated with the second state <NUM> can be increased to a third value (e.g., CLK=VALUE_3 shown in <FIG>). The third value of the clock can be greater than the second value of the clock, but less than a value of the clock associated with the idle state <NUM>. For example, in the third state <NUM>, a frequency of the clock associated with the second state <NUM> can be increased by a certain amount so that a current value of the frequency of the clock is less than a value of the frequency of the clock when in the idle state <NUM>. The state diagram <NUM> can be in the third state <NUM> for a second defined period of time (e.g., determined by the timer <NUM>). In one example, the second defined period of time can be the same as the first defined period of time. In another example, the second defined period of time can be different than the first defined period of time. In response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the second defined period of time has been reached, the state diagram <NUM> can exit the third state <NUM> and can proceed to the fourth state <NUM> via path <NUM>. For example, in response to a determination that the voltage is still at or above the defined threshold and that the second defined period of time has been reached, the state diagram <NUM> can exit the third state <NUM> and can proceed to the fourth state <NUM> via path <NUM>. Additionally or alternatively, in response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the second defined period of time has not been reached, the state diagram <NUM> can remain to the third state <NUM> via path <NUM>. However, in response to a determination that the voltage is again associated with the event (e.g., the voltage droop event), the state diagram <NUM> can exit the third state <NUM> and can return to the first state <NUM> via path <NUM>. For example, in response to a determination that the voltage is below the defined threshold, the state diagram <NUM> can exit the third state <NUM> and can return to the first state <NUM> via path <NUM>.

At the fourth state <NUM>, the third value of the clock associated with the third state <NUM> can be increased to a fourth value (e.g., CLK=VALUE_4 shown in <FIG>). The fourth value of the clock can be greater than the third value of the clock, but less than a value of the clock associated with the idle state <NUM>. For example, in the fourth state <NUM>, a frequency of the clock associated with the third state <NUM> can be increased by a certain amount so that a current value of the frequency of the clock is less than a value of the frequency of the clock when in the idle state <NUM>. The state diagram <NUM> can be in the fourth state <NUM> for a third defined period of time (e.g., determined by the timer <NUM>). In one example, the third defined period of time can be the same as the first defined period of time and/or the second defined period of time. In another example, the third defined period of time can be different than the first defined period of time and/or the second defined period of time. In response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the third defined period of time has been reached, the state diagram <NUM> can exit the fourth state <NUM> and can proceed to the idle state <NUM> via path <NUM>. For example, in response to a determination that the voltage is still at or above the defined threshold and that the third defined period of time has been reached, the state diagram <NUM> can exit the fourth state <NUM> and can proceed to the idle state <NUM> via path <NUM>. Additionally or alternatively, in response to a determination that the voltage is still no longer associated with the event (e.g., the voltage droop event) and that the third defined period of time has not been reached, the state diagram <NUM> can remain to the fourth state <NUM> via path <NUM>. However, in response to a determination that the voltage is again associated with the event (e.g., the voltage droop event), the state diagram <NUM> can exit the fourth state <NUM> and can return to the first state <NUM> via path <NUM>. For example, in response to a determination that the voltage is below the defined threshold, the state diagram <NUM> can exit the fourth state <NUM> and can return to the first state <NUM> via path <NUM>. When the state diagram <NUM> is back at the idle state <NUM>, the fourth value of the clock associated with the fourth state <NUM> can be increased to the original clock value before entering the first state <NUM> (e.g., before the voltage droop event).

In certain implementations, aspects of the systems, apparatuses or processes explained in this disclosure can constitute machine-executable component(s) embodied within machine(s), e.g., embodied in one or more computer readable mediums (or media) associated with one or more machines. Such component(s), when executed by the one or more machines, e.g., computer(s), computing device(s), virtual machine(s), etc. can cause the machine(s) to perform the operations described. For example, a system can include a memory for storing computer executable components and instructions. Furthermore, the system can include a processor to facilitate operation of the instructions (e.g., computer executable components and instructions) by the system.

In view of the example systems described above, methods that may be implemented in accordance with the described subject matter may be better appreciated with reference to the flow charts of <FIG>. While for purposes of simplicity of explanation, the methods are shown and described as a series of blocks, it is to be understood and appreciated that the claimed subject matter is not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement the methods described hereinafter.

Referring to <FIG>, a flow diagram of an example, non-limiting embodiment of a method for mitigating voltage droop associated with a microprocessor is shown. Method <NUM> can begin at block <NUM>, where a voltage droop event associated with a microprocessor is detected. For example, the voltage droop event can be detected when a voltage (e.g., a supply voltage) provided to the microprocessor is below a defined threshold (e.g., a defined voltage level). At block <NUM>, a frequency of a clock provided to the microprocessor is lowered in response to the voltage droop event. For example, the frequency of the clock provided to the microprocessor can be lowered to a defined clock frequency that is lower than the frequency of the clock before the voltage droop event. In another example, the frequency of the clock can be lowered by lowering an input clock. At block <NUM>, the frequency of the clock is incrementally increased to a value of the clock before the voltage droop event in response to a determination that the voltage droop event has ended. For example, the frequency of the clock provided to the microprocessor can be incrementally increased until the frequency of the clock reaches a defined clock frequency that corresponds to the frequency of the clock before the voltage droop event.

Referring to <FIG>, a flow diagram of another example, non-limiting embodiment of a method for mitigating voltage droop associated with a microprocessor is shown. Method <NUM> can begin at block <NUM>, where a voltage provided to a microprocessor is monitored. For example, one or more voltage detection circuits can continuously monitor the voltage provided to the microprocessor and/or a communication line associated with the voltage provided to the microprocessor.

At block <NUM>, a frequency of a clock provided to the microprocessor is reduced in response to a determination that the voltage is below a defined threshold value. For example, the frequency of the clock provided to the microprocessor can be reduced to a defined clock frequency that is lower than the frequency of the clock before the voltage reached the defined threshold value. The one or more voltage detection circuits can determine that the voltage is below the defined threshold value.

At block <NUM>, the frequency of the clock is incrementally increased in response to a determination that the voltage has returned to or is above the defined threshold value. For example, the frequency of the clock provided to the microprocessor can be incrementally increased until the frequency of the clock reaches a defined clock frequency that corresponds to the frequency of the clock before the voltage reached the defined threshold value. The one or more voltage detection circuits can determine that the voltage has returned to or is above the defined threshold value.

In an alternate implementation, at block <NUM>, the frequency of a clock provided to the microprocessor can be reduced in response to a determination that the voltage is above a defined threshold value. Therefore, at block <NUM>, the frequency of the clock can be incrementally increased in response to a determination that the voltage has returned to or is below the defined threshold value.

Referring to <FIG>, a flow diagram of yet another example, non-limiting embodiment of a method for mitigating voltage droop associated with a microprocessor is shown. Method <NUM> can begin at block <NUM>, where a voltage provided to a microprocessor is monitored. For example, one or more voltage detection circuits can continuously monitor the voltage provided to the microprocessor and/or a communication line associated with the voltage provided to the microprocessor.

At block <NUM>, a frequency of a clock provided to the microprocessor is reduced in response to a determination that the voltage is below a defined threshold. For example, the frequency of the clock can be reduced to a first frequency that is less than the frequency of the clock. In an aspect, the frequency of the clock can be divided to reduce the frequency of the clock. The one or more voltage detection circuits can determine that the voltage is below the defined threshold value.

At block <NUM>, the frequency of the clock is incrementally increased until the frequency of the clock equals a defined frequency value in response to another determination that the voltage is equal to or above the defined threshold after being below the defined threshold. For example, the frequency of the clock can be incrementally increased until the frequency reaches a frequency level that corresponds to the frequency of the clock before the voltage reached the defined threshold value. In an aspect, the first frequency of the clock can be increased to a second frequency that is greater than the first frequency that is less than the frequency of the clock before the voltage reached the defined threshold value. Additionally, the second frequency of the clock can be increased to a third frequency that is greater than the second frequency after a defined period of time. If the third frequency does not correspond to the frequency of the clock before the voltage reached the defined threshold value, the third frequency can be increased to fourth frequency that is greater than the third frequency, etc. until the frequency reaches a frequency level that corresponds to the frequency of the clock before the voltage reached the defined threshold value. The one or more voltage detection circuits can determine that the voltage has returned to or is above the defined threshold value.

In an alternate implementation, at block <NUM>, the frequency of the clock provided to the microprocessor can be reduced in response to a determination that the voltage is above a defined threshold. Therefore, at block <NUM>, the frequency of the clock can be incrementally increased until the frequency of the clock equals a defined frequency value in response to another determination that the voltage is equal to or below the defined threshold after being above the defined threshold.

As mentioned, advantageously, the techniques described herein can be applied to any device where it is desirable to mitigate voltage droop and/or voltage noise associated with a microprocessor. It is to be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various non-limiting embodiments, i.e., anywhere that a device may wish to mitigate voltage droop and/or voltage noise associated with a microprocessor. Accordingly, the below general purpose remote computer described below in <FIG> is but one example, and the disclosed subject matter can be implemented with any client having network/bus interoperability and interaction. Thus, the disclosed subject matter can be implemented in an environment of networked hosted services in which very little or minimal client resources are implicated, e.g., a networked environment in which the client device serves merely as an interface to the network/bus, such as an object placed in an appliance.

Although not required, some aspects of the disclosed subject matter can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates in connection with the component(s) of the disclosed subject matter. Software may be described in the general context of computer executable instructions, such as program modules or components, being executed by one or more computer(s), such as projection display devices, viewing devices, or other devices. Those skilled in the art will appreciate that the disclosed subject matter may be practiced with other computer system configurations and protocols.

<FIG> thus illustrates an example of a suitable computing system environment <NUM> in which some aspects of the present invention can be implemented, although as made clear above, the computing system environment <NUM> is only one example of a suitable computing environment for a device and is not intended to suggest any limitation as to the scope of use or functionality of the disclosed subject matter. Neither should the computing environment <NUM> be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment <NUM>.

With reference to <FIG>, an exemplary device for implementing the disclosed subject matter includes a general-purpose computing device in the form of a computer <NUM>. Components of computer <NUM> may include, but are not limited to, a processing unit <NUM>, a system memory <NUM>, and a system bus <NUM> that couples various system components including the system memory to the processing unit <NUM>. The system bus <NUM> may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.

Computer readable media can be any available media that can be accessed by computer <NUM>. By way of example, and not limitation, computer readable media can comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer <NUM>. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.

The system memory <NUM> may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer <NUM>, such as during start-up, may be stored in memory <NUM>. Memory <NUM> typically also contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit <NUM>. By way of example, and not limitation, memory <NUM> may also include an operating system, application programs, other program modules, and program data.

The computer <NUM> may also include other removable/non-removable, volatile/nonvolatile computer storage media. For example, computer <NUM> could include a hard disk drive that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive that reads from or writes to a removable, nonvolatile magnetic disk, and/or an optical disk drive that reads from or writes to a removable, nonvolatile optical disk, such as a CD-ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. A hard disk drive is typically connected to the system bus <NUM> through a non-removable memory interface such as an interface, and a magnetic disk drive or optical disk drive is typically connected to the system bus <NUM> by a removable memory interface, such as an interface.

A user can enter commands and information into the computer <NUM> through input devices such as a keyboard and pointing device, commonly referred to as a mouse, trackball, or touch pad. Other input devices can include a microphone, joystick, game pad, satellite dish, scanner, wireless device keypad, voice commands, or the like. These and other input devices are often connected to the processing unit <NUM> through user input <NUM> and associated interface(s) that are coupled to the system bus <NUM>, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB). A graphics subsystem can also be connected to the system bus <NUM>. A projection unit in a projection display device, or a HUD in a viewing device or other type of display device can also be connected to the system bus <NUM> via an interface, such as output interface <NUM>, which may in turn communicate with video memory. In addition to a monitor, computers can also include other peripheral output devices such as speakers which can be connected through output interface <NUM>.

The computer <NUM> can operate in a networked or distributed environment using logical connections to one or more other remote computer(s), such as remote computer <NUM>, which can in turn have media capabilities different from computer <NUM>. The remote computer <NUM> can be a personal computer, a server, a router, a network PC, a peer device, personal digital assistant (PDA), cell phone, handheld computing device, a projection display device, a viewing device, or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer <NUM>. The logical connections depicted in <FIG> include a network <NUM>, such local area network (LAN) or a wide area network (WAN), but can also include other networks/buses, either wired or wireless. Such networking environments are commonplace in homes, offices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, the computer <NUM> can be connected to the LAN <NUM> through a network interface or adapter. When used in a WAN networking environment, the computer <NUM> can typically include a communications component, such as a modem, or other means for establishing communications over the WAN, such as the Internet. A communications component, such as wireless communications component, a modem and so on, which can be internal or external, can be connected to the system bus <NUM> via the user input interface of input <NUM>, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer <NUM>, or portions thereof, can be stored in a remote memory storage device. It will be appreciated that the network connections shown and described are exemplary and other means of establishing a communications link between the computers can be used.

<FIG> provides a schematic diagram of an exemplary networked or distributed computing environment not covered by the invention. The distributed computing environment comprises computing objects <NUM>, <NUM>, etc. and computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc., which may include programs, methods, data stores, programmable logic, etc., as represented by applications <NUM>, <NUM>, <NUM>, <NUM>, <NUM> and data store(s) <NUM>. It can be appreciated that computing objects <NUM>, <NUM>, etc. and computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. may comprise different devices, including a multimedia display device or similar devices depicted within the illustrations, or other devices such as a mobile phone, personal digital assistant (PDA), audio/video device, MP3 players, personal computer, laptop, etc. It should be further appreciated that data store(s) <NUM> can include memory or other similar data stores as disclosed herein.

Each computing object <NUM>, <NUM>, etc. and computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. can communicate with one or more other computing objects <NUM>, <NUM>, etc. and computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. by way of the communications network <NUM>, either directly or indirectly. Even though illustrated as a single element in <FIG>, communications network <NUM> may comprise other computing objects and computing devices that provide services to the system of <FIG>, and/or may represent multiple interconnected networks, which are not shown. Each computing object <NUM>, <NUM>, etc. or computing object or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. can also contain an application, such as applications <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, that might make use of an API, or other object, software, firmware and/or hardware, suitable for communication with or implementation of the techniques and disclosure described herein.

There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any network infrastructure can be used for exemplary communications as described in various embodiments herein.

Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The "client" is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, i.e., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client process utilizes the requested service, in some cases without having to "know" any working details about the other program or the service itself.

In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of <FIG>, as a non-limiting example, computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. can be thought of as clients and computing objects <NUM>, <NUM>, etc. can be thought of as servers where computing objects <NUM>, <NUM>, etc., acting as servers provide data services, such as receiving data from client computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc., storing of data, processing of data, transmitting data to client computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc., although any computer can be considered a client, a server, or both, depending on the circumstances.

A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. Any software objects utilized pursuant to the techniques described herein can be provided standalone, or distributed across multiple computing devices or objects.

In a network environment in which the communications network <NUM> or bus is the Internet, for example, the computing objects <NUM>, <NUM>, etc. can be Web servers with which other computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects <NUM>, <NUM>, etc. acting as servers may also serve as clients, e.g., computing objects or devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc., as may be characteristic of a distributed computing environment.

Reference throughout this specification to "one embodiment," "an embodiment," "an example," "a disclosed aspect," or "an aspect" means that a particular feature, structure, or characteristic described in connection with the embodiment or aspect is included in at least one embodiment or aspect of the present disclosure. Thus, the appearances of the phrase "in one embodiment," "in one aspect," or "in an embodiment," in various places throughout this specification are not necessarily all referring to the same embodiment.

As utilized herein, terms "component," "system," "engine," "architecture" and the like are intended to refer to a computer or electronic-related entity, either hardware, a combination of hardware and software, software (e.g., in execution), or firmware. For example, a component can be one or more transistors, a memory cell, an arrangement of transistors or memory cells, a gate array, a programmable gate array, an application specific integrated circuit, a controller, a processor, a process running on the processor, an object, executable, program or application accessing or interfacing with semiconductor memory, a computer, or the like, or a suitable combination thereof. The component can include erasable programming (e.g., process instructions at least in part stored in erasable memory) or hard programming (e.g., process instructions burned into non-erasable memory at manufacture).

By way of illustration, both a process executed from memory and the processor can be a component. As another example, an architecture can include an arrangement of electronic hardware (e.g., parallel or serial transistors), processing instructions and a processor, which implement the processing instructions in a manner suitable to the arrangement of electronic hardware. In addition, an architecture can include a single component (e.g., a transistor, a gate array,. ) or an arrangement of components (e.g., a series or parallel arrangement of transistors, a gate array connected with program circuitry, power leads, electrical ground, input signal lines and output signal lines, and so on). A system can include one or more components as well as one or more architectures. One example system can include a switching block architecture comprising crossed input/output lines and pass gate transistors, as well as power source(s), signal generator(s), communication bus(ses), controllers, I/O interface, address registers, and so on. It is to be appreciated that some overlap in definitions is anticipated, and an architecture or a system can be a stand-alone component, or a component of another architecture, system, etc..

What has been described above includes examples of the subject innovation. Accordingly, the disclosed subject matter is intended to embrace all alterations, modifications and variations that fall within the scope of the invention. Furthermore, to the extent that a term "includes", "including", "has" or "having" and variants thereof is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term "comprising" as "comprising" is interpreted when employed as a transitional word in a claim.

Moreover, the word "exemplary" is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless specified otherwise, or clear from context, "X employs A or B" is intended to mean any of the natural inclusive permutations. In addition, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless specified otherwise or clear from context to be directed to a singular form.

Additionally, some portions of the detailed description have been presented in terms of algorithms or process operations on data bits within electronic memory. These process descriptions or representations are mechanisms employed by those cognizant in the art to effectively convey the substance of their work to others equally skilled. A process is here, generally, conceived to be a self-consistent sequence of acts leading to a desired result. The acts are those requiring physical manipulations of physical quantities. Typically, though not necessarily, these quantities take the form of electrical and/or magnetic signals capable of being stored, transferred, combined, compared, and/or otherwise manipulated.

It has proven convenient, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Unless specifically stated otherwise or apparent from the foregoing discussion, it is appreciated that throughout the disclosed subject matter, discussions utilizing terms such as processing, computing, calculating, determining, or displaying, and the like, refer to the action and processes of processing systems, and/or similar consumer or industrial electronic devices or machines, that manipulate or transform data represented as physical (electrical and/or electronic) quantities within the registers or memories of the electronic device(s), into other data similarly represented as physical quantities within the machine and/or computer system memories or registers or other such information storage, transmission and/or display devices.

Claim 1:
A system for controlling frequency of a clock buffer (<NUM>) in association with a voltage droop, comprising:
a microprocessor (<NUM>) that is configured to receive a clock provided by the clock buffer (<NUM>);
a voltage detector (<NUM>) comprising a low-pass filter, the voltage detector (<NUM>) being configured to detect a relative voltage droop associated with a certain amount of voltage supply noise in the system based on a comparison of (a) a voltage associated with the microprocessor (<NUM>) with (b) a low-pass filtered version of the voltage associated with the microprocessor (<NUM>); and
a controller (<NUM>) configured for controlling the frequency of the clock provided by the clock buffer (<NUM>) based on the comparison of (a) the voltage associated with the microprocessor (<NUM>) with (b) the low-pass filtered version of the voltage associated with the microprocessor (<NUM>), the controller (<NUM>) further configured for reducing the frequency of the clock in response to the relative voltage droop being detected as a defined criterion associated with the voltage being satisfied, and incrementally increasing the frequency of the clock in response to the voltage associated with the microprocessor returning to a voltage level that was provided to the microprocessor before the detection of the relative voltage droop as another defined criterion associated with the voltage being satisfied.