Patent Description:
This background information is provided for the purpose of making known information believed by the applicant to be of possible relevance to the invention. No admission is necessarily intended, nor should be construed, that any of the preceding information constitutes prior art against the invention.

<CIT> describes power reduction and voltage adjustment techniques for computing systems and processing devices. In one example, a method includes receiving a voltage characterization service over a communication interface of the computing apparatus as transferred by a deployment platform remote from the computing apparatus. The method includes executing the voltage characterization service for a processing device of the computing apparatus to determine at least one input voltage for the processing device lower than a manufacturer specified operating voltage, the voltage characterization service comprising a functional test that exercises the processing device at iteratively adjusted voltages in context with associated system elements of the computing apparatus. During execution of the voltage characterization service, the method includes monitoring for operational failures of at least the processing device, and responsive to the operational failures, restarting the processing device using a recovery voltage higher than a current value of the iteratively adjusted voltages.

<CIT> describes a method for determining a remaining life of a battery that includes detecting, by a voltage sensor, multiple voltages of the battery. The method further includes detecting, by a temperature sensor, multiple temperatures corresponding to the battery. The method further includes receiving, by a processor, the multiple voltages and the multiple temperatures of the battery. The method further includes determining, by the processor, an amount of float life consumed during a float mode of the battery based on at least one of the multiple temperatures. The method further includes determining, by the processor, an amount of cycle life consumed during a discharge mode of the battery based on at least one of the multiple voltages. The method further includes calculating, by the processor, the remaining life of the battery based on at least one of the amount of float life consumed or the amount of cycle life consumed.

<CIT> defines an integrated circuit includes a self calibration unit configured to iterate a test on a logic circuit in the integrated circuit at respectively lower supply voltage magnitudes until the test fails. A lowest supply voltage magnitude at which the test passes is used to generate a requested supply voltage magnitude for the integrated circuit. An integrated circuit includes a series connection of logic gates physically distributed over an area of the integrated circuit, and a measurement unit configured to launch a logical transition into the series and detect a corresponding transition at the output of the series. The amount of time between the launch and the detection is used to request a supply voltage magnitude for the integrated circuit.

<CIT> defines a circuit control system and method for dynamically adjusting voltage and frequency. The circuit control system includes: a lookup table module configured to store a combined table of voltage-frequency corresponding relation curves of a target circuit under one or more working conditions; a converting module configured to make conversion between a working voltage and a working frequency of the target circuit according to the lookup table module; and a combined adjusting module configured to combinedly adjust the working frequency and the working voltage of the target circuit. With a high degree of automation, the circuit control system herein is safe and reliable for adjusting the working voltage and the working frequency of the target circuit, thereby achieving the effects of adjustment and optimization.

<CIT> defines an integrated circuit includes an energy controller that generates a power supply voltage level for the integrated circuit based on a desired target frequency value for the integrated circuit. The energy controller configures a programmable hardware process sensor based on the power supply voltage level such that the programmable hardware process sensor is capable of mimicking the electrical characteristics of a predetermined critical path associated with the integrated circuit when operating at the power supply voltage level. By monitoring the frequency of the programmable hardware process sensor over a period of time, the energy controller can compare the monitored frequency to an expected value and determine whether the power supply voltage level can be adjusted or whether it should be maintained.

<CIT> described that when a built-in nonvolatile memory in a microcomputer is tested, a control program prestored in a boot ROM is run upon entering a test command from an external communication device; a test program is transferred from the external communication device to a built-in RAM through a communication circuit; a control of a CPU is switched to the built-in RAM after the test program has been transferred and a test is conducted on the nonvolatile memory; and a test result and a fail log are transferred to the external communication device through the communication circuit. Consequently, the built-in nonvolatile memory in the microcomputer can be checked without leaving the test program on the chip.

The described technology provides a method for dynamically adjusting operating voltage of a device, including receiving device characteristics data related to a device, performing a margining test for the device to generate a performance curve characterizing variation of the device's current performance speeds at various operating voltages from expected performance speeds at the various operating voltages, determining an operating voltage for the device based on the device characteristics data and the performance curve, and adjusting the operating of the device based on the determined operating voltage.

Circuitry used in computing systems may be made of a number of transistors connected by substrate level connectors with electrons passing between them. For example, devices may be made of a large number of transistors and configured to operate at high frequencies, typically in the gigahertz range. With the advances in technology, the size of the computing system devices continues to decrease and as the size of the devices decreases, the thickness of the connectors also decrease. For example, thickness of such connectors may be as small as <NUM>-<NUM> nanometers (nm). The degradation of these connectors over time results in more leakage of electrons as well in the degradation of gates. Therefore, as the devices age, higher operating voltages may be necessary to effectively operate the devices.

However, as the operating voltages of the devices are increased, it causes faster degradation of the performance of the circuitry (e.g., transistors). Also, higher operating voltages result in higher consumption of power and generation of higher temperature for the computing device, resulting in higher needs for cooling.

The technology described herein provides a method for dynamically adjusting operating voltage of a device to minimize the impact of such undesirable outcomes. Specifically, the described method dynamically adjusts operating voltage of a device based on device characteristics data related to a device and outcomes of a margining test for the device. The described method generates a performance curve characterizing variation of the device's current performance speeds at various operating voltages from expected performance speeds at the various operating voltages, and determines an operating voltage for the device based on the device characteristics data and the performance curve. Moreover, high utilization of the device components can cause them to age (degrade) more quickly and therefore it can be beneficial to track utilization rates and adjust operating voltages accordingly.

Moreover, as the battery used in the computing device ages, the performance of the battery declines. Such performance decline depends on cell chemistry of the battery and as the battery ages, the output cell voltage that the battery can support declines based on the battery's discharge curve. Therefore, it can also be beneficial to manage operating voltages provided by the battery to the device components in view of life of the device components as well as the life of the battery. Various implementations disclosed herein allows adjusting operating voltages provided by the battery to the device components in view of the battery performance characteristics.

<FIG> illustrates a block diagram <NUM> of a computing system <NUM> wherein the operating voltage of a device is dynamically adjusted as disclosed herein. Specifically, the computing system <NUM> may be a computer 102a, a mobile device 102b, a tablet 102c, a camera 102d, or other device using a secondary battery and having one or more devices <NUM>. The devices <NUM> include devices using transistors or other silicon based components. Example of such devices <NUM> include a central processing unit (CPU) <NUM>, a graphical processing unit (GPU) <NUM>, or other devices <NUM> such as a dual-core device, a multi-core device, and a sensor device. In one implementation, the devices <NUM> also include liquid crystal display (LCD) or other devices that require higher operating voltages as they age.

The devices <NUM> include a wide variety of devices including devices of different capabilities and speeds. The operating voltage of the devices <NUM> are set based on their operating speed and other characteristics. For example, a manufacturer of the CPU <NUM> may provide suggested voltages for the CPU <NUM>. In one implementation, the operating voltage of each of the devices <NUM> is set at different levels. Alternatively, all of the devices <NUM> are to be operated at the same speed.

Computing system <NUM> includes a device operating voltage adjustment module <NUM> that is used to dynamically adjust the operating voltages of the devices <NUM> using device characteristics data from a device characteristics data store <NUM> and a margining test module <NUM>. The device characteristics data store <NUM> may categorize the devices <NUM> based on their characteristics. For example, the manufacturer of the devices <NUM> may perform a series of testing on the bulk of devices to which the devices <NUM> belong to and provide characteristics of the devices <NUM> such as operating speeds at various operating voltages. In one implementation, such device characteristics data may be binning data that is provided in form of a table where each row provides a range of operating voltages and the expected operating speed of the device for that range of operating voltages. Thus, for example, the device characteristics data store <NUM> may provide that the CPU <NUM> being operated between <NUM> to <NUM> volts, its operating speed is <NUM> gigahertz, whereas if it is being operated between <NUM> to <NUM> volts, its operating speed is <NUM> gigahertz, etc..

The margining test module <NUM> performs margining tests on the devices <NUM> to generate a performance curve that characterizes the devices' <NUM> current performance speeds at various operating voltages. A margining test on the CPU <NUM> generates an output that provides a current graph of various operating voltages for the CPU <NUM> and its operating speed. Thus, the output of the margining test module <NUM> may specify that the CPU <NUM> when operated at <NUM> volts is capable of achieving an operating speed of <NUM>, when operated at <NUM> volts is capable of achieving an operating speed of <NUM>, etc. Note that the performance curve generated by the margining test module <NUM> differs from the combinations of operating voltages and performing speeds provided by the device characteristics data store <NUM>.

An implementation of the margining test module <NUM> may be implemented in hardware using one or more circuits that operate the devices <NUM> at different operating voltage levels and store the resulting operating speed and throughput of the devices <NUM> in a memory. In another implementation, the margining test module <NUM> may be implemented in firmware with various registers used to initiate margining tests on the devices <NUM>. Alternatively, the margining test module <NUM> is implemented by various instructions stored in a memory where these instructions are implemented using a computer processor.

In an alternative implementation, the margining test module <NUM> generates a differential performance curve that characterizes variation of the device's current performance speeds at various operating voltages from expected performance speeds at the various operating voltages. Such a differential performance curve may characterize performance degradation of the device at various voltage levels.

An operating voltage determination module <NUM> receives inputs from the device characteristics data store <NUM> and the margining test module <NUM> to determine operating voltage of the devices <NUM>. Based on the performance curve for the CPU <NUM> as provided by the margining test module <NUM> and the device characteristics data for the CPU <NUM> as provided by the device characteristics data store <NUM>, the operating voltage determination module <NUM> may determine that the CPU <NUM> is to be operated at <NUM>.

The operating voltage determination module <NUM> operates the devices <NUM> based on the device characteristics data, such as the binning data provided by the manufacturer, during the initial stage in the life of the devices <NUM> and after a predetermined time period uses the performance curve generated by the margining test module. For example, for the first year of the life of the computing system <NUM>, the operating voltages of the devices <NUM> are selected based on the device characteristics data from the device characteristics data store <NUM> and after a first year, the performance curve generated by the margining test module <NUM> is used to make such selection of operating voltages. In one implementation, such time period during which the initial device characteristics data is used is provided by the user of the computing system <NUM>.

The device operating voltage adjustment module <NUM> also includes various modules <NUM> - <NUM> that trigger the margining test module <NUM> to generate the current performance curve. For example, in one example, a counter <NUM> counts boot and sleep cycles for the devices <NUM> and when the count reaches a threshold, generates a trigger to the margining test module <NUM> to perform a margining test. In one implementation, a user may define the threshold that is used to generate the trigger. In an alternative examples the counter <NUM> may track the usage of the devices <NUM> in an alternative manner, such as usage times of the devices <NUM> or usage clock ticks for the devices <NUM>.

In alternative examples not defined in the claims, various applications running on the computing system <NUM> may be configured to monitor the performance of devices <NUM> and to indicate changes to the performance in comparison to a threshold performance level to an operating system of the computing system <NUM>. For example, a gaming application running on the computing system <NUM> can track the responsiveness of the devices <NUM>, compare the responsiveness to a threshold responsiveness, and alert the operating system when the responsiveness drops below the threshold responsiveness. In response, the operating system may initiate a margining test for the devices <NUM>.

Alternatively, a user or an application <NUM> may generate a trigger to the margining test module <NUM> to perform a margining test. For example, in response to experiencing slower performance of the computing system <NUM>, a user may initiate a command to the margining test module <NUM> to perform a margining test. Alternatively, an application may undertake a performance test of the computing device <NUM>, either periodically or in response to a user request, and in response to the performance test generate the trigger to the margining test module <NUM>. For example, an application resident on the computing system <NUM> may be used to generate such a trigger. In one example not defined in the claims, such an application may reside outside of the computing system <NUM> on a server that keeps track of performance characteristics of the computing system <NUM>.

In accordance with the claims a heuristics analysis module <NUM> may be used to generate the trigger to the margining test module <NUM>. The heuristics analysis module <NUM> keeps track of usage patterns of the devices <NUM> and analyzes such usage patterns to determine when it is necessary to perform margining tests. As an example, the heuristics analysis module <NUM> tracks usage of the GPU <NUM> to determine that it is being used at a rate above a threshold for video gaming applications and as a result in response to such a determination it generates a trigger to the margining test module <NUM> to perform a margining test on the GPU <NUM>. The heuristics analysis module <NUM> tracks an amount of time the devices <NUM> are in different utilization states, such as a high utilization state (e.g., greater than <NUM>% utilization), a medium utilization state (e.g., between <NUM>% and <NUM>% utilization), and a low utilization state (e.g., below <NUM>% utilization). The heuristics analysis module <NUM> may trigger a margining test in accordance with a particular utilization state exceeding a threshold amount of time. Alternatively, or additionally, the heuristics analysis module <NUM> may assign a weight to each utilization state and trigger a margining test when a weighted combination of the utilization states meets a particular criterion. In one example, each of the devices <NUM> may have different threshold utilization triggering a margining test.

In one example not defined in the claims a community learning module <NUM> analyzes device performance data from a large number of devices that are similar to the computing system <NUM> or that use devices similar to the devices <NUM> to generate trigger to the margining test module <NUM>. For example, if analysis of a large number of devices using a dual core device similar to the one in the computing system <NUM> indicates that the performance of such a dual core device has declined below a certain threshold, the community learning module <NUM> may generate a trigger to the margining test module <NUM> to perform a margining test on a dual core device of the devices <NUM>. Furthermore, such community learning module <NUM> may also be used to generate or replenish device characteristics data of the device characteristics data store <NUM>.

In one implementation, the output of the heuristics module <NUM> is also used by the operating voltage determination module <NUM> to determine the operating voltage of the devices <NUM> based on the inputs from the device characteristics data store <NUM> and the margining test module <NUM>. For example, if the heuristics module <NUM> determines that one of the devices <NUM> is used extensively, it may indicate the operating voltage determination module <NUM> to use the current performance curve output from the margining test module <NUM> to set the operating voltage for one or more of the devices <NUM>.

Upon determination of the operating voltages of the devices <NUM>, the operating voltage determination module <NUM> communicates with a battery <NUM> to set the operating voltages of the devices <NUM>.

<FIG> illustrates an implementation of a device <NUM> configured to dynamically adjust operating voltage of a device. Specifically, the device <NUM> may be configured for a device such as a laptop, a mobile device, and a tablet to adjust operating voltage levels of one or more of devices <NUM>. The operating voltage adjustment module <NUM> includes an operating voltage determination module <NUM> to determine operating voltage of one or the devices <NUM> based on outputs from a margining test module (such as the margining test module <NUM> of <FIG>) and a device characteristics data store (such as the device characteristics data store <NUM> of <FIG>). The devices <NUM> may be one of a CPU <NUM>, a GPU <NUM>, or other devices <NUM>.

The output of the operating voltage determination module <NUM> is input to an operating voltage adjustment module <NUM>. The operating voltage adjustment module <NUM> also receives health data from a power supply health monitor <NUM> regarding health of a power supply module <NUM>. For example, such health data may include current discharge rate of a battery of power supply module <NUM> and the age of the battery. In one implementation, the power supply health monitor <NUM> may receive information about health of the battery, its discharge rate, or any potential crash of the battery from a battery charger. For example, the battery charger may indicate that it takes longer to charge the battery, thus flagging some potential change or decline in the chemistry of the battery.

Furthermore, the operating voltage adjustment module <NUM> also receives input from an execution time module <NUM> that provides information about the current time that may be used to determine the age of the battery as well as the time in the lifecycle of the devices <NUM>. In one implementation, the execution time module <NUM> monitors both the actual life of the devices <NUM> since their manufacture and the operational life of the devices <NUM>. For example, the operational life of the devices <NUM> provides the actual number of clocks for which the devices <NUM> have been operational.

The operating voltage adjustment module <NUM> adjusts the operating voltage as input from the operating voltage determination module <NUM> in view of the battery health data and the execution time to adjust the operating voltage of the devices. The output from the operating voltage adjustment module <NUM> is input to the power supply module <NUM>, which supplies power to the devices <NUM>.

<FIG> illustrates example operations <NUM> of the system disclosed herein for dynamically adjusting operating voltage of a device. Specifically, an operation <NUM> receives device characteristics data related to a device. Such device characteristics data includes data regarding suggested operating voltages for the devices for achieving various operating speeds. An operation <NUM> sets initial operating voltage levels of the devices based on the device characteristics data. Thus, if a device needs to achieve operating speed of <NUM> and the device characteristics data suggests the operating voltage required to achieve such speed to be <NUM>. 5v, the operation <NUM> may set the operating voltage of the devices to be at <NUM>.

Subsequently, a determining operation <NUM> determines if a request has been received to perform a margining test on a device. If so, an operation <NUM> performs a margining test to generate a current performance curve of the device providing performing voltages required to achieve required operating speed for the device. Based on the performance curve, an operation <NUM> determines an operating voltage for the device. Subsequently, an operation <NUM> receives battery discharge rate and other battery health data. For example, a power supply unit (PSU) including the battery may provide such battery health data. An operation <NUM> adjusts the operating voltage of the devices in view of the battery health data.

<FIG> illustrates alternative example operations <NUM> of the system disclosed herein for dynamically adjusting operating voltage of a device. Specifically, the operations <NUM> illustrate various operations for triggering a margining test module to initiate a margining test on a device. An operation <NUM> monitors a counter that keeps track of boot and sleep cycles of a device. An operation <NUM> evaluates the output of operation <NUM> to determine if the count value is above a threshold and if so, it generates a trigger signal to the margining test module. If such a trigger is generated, an operation <NUM> initiates a margining test.

In one example, an operation <NUM> monitors user inputs to see if a user has requested a margining test. An operation <NUM> evaluates the user input to generate a trigger to the margining test module. Similarly, an operation module <NUM> monitors inputs form one or more applications to see if such an application has requested a margining test. An operation <NUM> evaluates the input from such an application to generate a trigger to the margining test module. In accordance with the claims, an operation <NUM> analyzes device heuristics including the amount of past usage and the type of past usage. The operation <NUM> may generate an output in response to such an analysis and an operation <NUM> analyzes the output from the operation <NUM> to generate a trigger to the margining test module.

In another example, an operation <NUM> collects and analyzes operational data from a large number of other devices similar to one or more devices of a current device. Such analysis may include average time when the performance of such other devices deteriorates and average useful life expectancy of such devices. The operation <NUM> generates an output that is evaluated by an operation <NUM> to generate a trigger to the margining test module.

In an alternative example, each of the operations <NUM>-<NUM> provides its output to an operating voltage determination module <NUM> that determines the operating voltage of the devices based on the input received from these operations. For example, the operating voltage determination module <NUM> may evaluate a boot and sleep cycle output from the operation <NUM> and adjust the operating voltage of devices based on the value of such boot and sleep cycle counter. Similarly, the operating voltage determination module <NUM> may receive the output from the operation <NUM> and based on the heuristics value received from the operation <NUM> it adjusts the operating voltage of devices.

<FIG> illustrates various curves <NUM> illustrating relations between operating voltages and operating speed of a device, such as one of the devices <NUM> disclosed in <FIG>. Specifically, performance curves <NUM> illustrate two curves illustrating operating speeds f of a device at operating voltage V<NUM>. Here 510a represents initial curve that may be obtained from the device characteristics data store <NUM> illustrated in <FIG>. For example, the manufacturer of the device may provide such information, or it may be based on collection of information from a community of devices. On the other hand, 510b represents current curve generated by the margining test module <NUM> illustrated in <FIG>. As illustrated, the mean operating speed declines from f<NUM>i to f2i. Similarly, performance curves <NUM> illustrate two curves illustrating operating speeds f of a device at operating voltage V<NUM>. Here 520a represents initial curve that may be obtained from the device characteristics data store <NUM> illustrated in <FIG> and 520b represents current curve generated by the margining test module <NUM> illustrated in <FIG>.

The change in the relationships between operating voltage and operating speed at different stages is further illustrated by performance curves <NUM>. Specifically, 530a illustrates such relation between operating voltage and operating speed at initial stage of the device and it may be obtained from the device characteristics data store <NUM> illustrated in <FIG>. On the other hand, curve 530b illustrates the current relation between operating voltage and operating speed of the device and it is generated by the margining test module <NUM> illustrated in <FIG>. As illustrated, for each operating voltage, the mean operating speed obtained by the device in its current stage is lower than at the initial stage of the device.

In one implementation, the curves 530a and 530b may be used to generate a differential curve that represents change in the operating speed at various operating voltage levels. Alternatively, such differential curve may provide additional operating voltage necessary to achieve each of various operating speeds for the device. The performance curves 510a, 520a, and 530a may be used to set the initial operating voltage of devices when they are initially installed in computing devices. The performance curves 510b, 520b, and 530b may be used to set the current operating voltage of devices after margining tests.

<FIG> illustrates an example system <NUM> that may be useful in implementing the system disclosed herein for dynamically adjusting operating voltage of a processor. The example hardware and operating environment of <FIG> for implementing the described technology includes a computing device, such as a general-purpose computing device in the form of a computer <NUM>, a mobile telephone, a personal data assistant (PDA), a tablet, smart watch, gaming remote, or other type of computing device. In the implementation of <FIG>, for example, the computer <NUM> includes a processing unit <NUM>, a system memory <NUM>, and a system bus <NUM> that operatively couples various system components, including the system memory <NUM> to the processing unit <NUM>. There may be only one or there may be more than one processing units <NUM>, such that the processor of a computer <NUM> comprises a single central-processing unit (CPU), or a plurality of processing units, commonly referred to as a parallel processing environment. The computer <NUM> may be a conventional computer, a distributed computer, or any other type of computer; the implementations are not so limited.

In the example implementation of the computing system <NUM>, the computer <NUM> also includes a processor operating voltage adjustment module <NUM>, such as the processor operating voltage adjustment system disclosed herein. The processor operating voltage adjustment module <NUM> may communicate with power sources <NUM> to control the operating voltage provided by the power sources <NUM>.

The system bus <NUM> may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a switched fabric, point-to-point connections, and a local bus using any of a variety of bus architectures. The system memory <NUM> may also be referred to as simply the memory and includes read-only memory (ROM) <NUM> and random-access memory (RAM) <NUM>. A basic input/output system (BIOS) <NUM>, contains the basic routines that help to transfer information between elements within the computer <NUM>, such as during start-up, is stored in ROM <NUM>. The computer <NUM> further includes a hard disk drive <NUM> for reading from and writing to a hard disk, not shown, a magnetic disk drive <NUM> for reading from or writing to a removable magnetic disk <NUM>, and an optical disk drive <NUM> for reading from or writing to a removable optical disk <NUM> such as a CD ROM, DVD, or other optical media.

The computer <NUM> may be used to implement a device operating voltage adjustment system disclosed herein. In one implementation, a frequency unwrapping module, including instructions to unwrap frequencies based on the sampled reflected modulations signals, may be stored in memory of the computer <NUM>, such as the read-only memory (ROM) <NUM> and random-access memory (RAM) <NUM>.

Furthermore, instructions stored on the memory of the computer <NUM> may also be used to implement one or more operations of <FIG> and <FIG>. The memory of the computer <NUM> may also store one or more instructions to implement the device operating voltage adjustment system disclosed herein.

The hard disk drive <NUM>, magnetic disk drive <NUM>, and optical disk drive <NUM> are connected to the system bus <NUM> by a hard disk drive interface <NUM>, a magnetic disk drive interface <NUM>, and an optical disk drive interface <NUM>, respectively. The drives and their associated tangible computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules and other data for the computer <NUM>. It should be appreciated by those skilled in the art that any type of tangible computer-readable media may be used in the example operating environment.

A number of program modules may be stored on the hard disk, magnetic disk <NUM>, optical disk <NUM>, ROM <NUM>, or RAM <NUM>, including an operating system <NUM>, one or more application programs <NUM>, other program modules <NUM>, and program data <NUM>. A user may generate reminders on the personal computer <NUM> through input devices such as a keyboard <NUM> and pointing device <NUM>. Other input devices (not shown) may include a microphone (e.g., for voice input), a camera (e.g., for a natural user interface (NUI)), a joystick, a game pad, a satellite dish, a scanner, or the like. These and other input devices are often connected to the processing unit <NUM> through a serial port interface <NUM> that is coupled to the system bus <NUM>, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). A monitor <NUM> or other type of display device is also connected to the system bus <NUM> via an interface, such as a video adapter <NUM>. In addition to the monitor, computers typically include other peripheral output devices (not shown), such as speakers and printers.

The computer <NUM> may operate in a networked environment using logical connections to one or more remote computers, such as remote computer <NUM>. These logical connections are achieved by a communication device coupled to or a part of the computer <NUM>; the implementations are not limited to a particular type of communications device. The remote computer <NUM> may be another computer, a server, a router, a network PC, a client, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer <NUM>. The logical connections depicted in <FIG> include a local-area network (LAN) <NUM> and a wide-area network (WAN) <NUM>. Such networking environments are commonplace in office networks, enterprise-wide computer networks, intranets and the Internet, which are all types of networks.

When used in a LAN-networking environment, the computer <NUM> is connected to the local area network <NUM> through a network interface or adapter <NUM>, which is one type of communications device. When used in a WAN-networking environment, the computer <NUM> typically includes a modem <NUM>, a network adapter, a type of communications device, or any other type of communications device for establishing communications over the wide area network <NUM>. The modem <NUM>, which may be internal or external, is connected to the system bus <NUM> via the serial port interface <NUM>. In a networked environment, program engines depicted relative to the personal computer <NUM>, or portions thereof, may be stored in the remote memory storage device. It is appreciated that the network connections shown are example and other means of communications devices for establishing a communications link between the computers may be used.

In an example implementation, software or firmware instructions for the device operating voltage adjustment module <NUM> may be stored in system memory <NUM> and/or storage devices <NUM> or <NUM> and processed by the processing unit <NUM>. Instructions and data to implement the device operating voltage adjustment module <NUM> may be stored in system memory <NUM> and/or storage devices <NUM> or <NUM> as persistent data-stores.

In contrast to tangible computer-readable storage media, intangible computer-readable communication signals may embody computer readable instructions, data structures, program modules or other data resident in a modulated data signal, such as a carrier wave or other signal transport mechanism. By way of example, and not limitation, intangible communication signals include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.

Some embodiments of the device operating voltage adjustment system disclosed herein may comprise an article of manufacture. An article of manufacture may comprise a tangible storage medium to store logic. Examples of a storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Examples of the logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. In one embodiment, for example, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and/or operations in accordance with the described embodiments. The executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The executable computer program instructions may be implemented according to a predefined computer language, manner or syntax, for instructing a computer to perform a certain function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.

The device operating voltage adjustment system disclosed herein may include a variety of tangible computer-readable storage media and intangible computer-readable communication signals. Tangible computer-readable storage can be embodied by any available media that can be accessed by the device operating voltage adjustment system disclosed herein and includes both volatile and nonvolatile storage media, removable and non-removable storage media. Tangible computer-readable storage media excludes intangible and transitory communications signals and includes volatile and nonvolatile, removable and non-removable storage media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Tangible computer-readable 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 tangible medium which can be used to store the desired information and which can be accessed by the device operating voltage adjustment system disclosed herein. In contrast to tangible computer-readable storage media, intangible computer-readable communication signals may embody computer readable instructions, data structures, program modules or other data resident in a modulated data signal, such as a carrier wave or other signal transport mechanism. By way of example, and not limitation, intangible communication signals include signals moving through wired media such as a wired network or direct- wired connection, and signals moving through wireless media such as acoustic, RF, infrared and other wireless media.

The device operating voltage adjustment system disclosed herein provides a technical solution to a technical problem of managing battery resources by operating devices at operating voltage levels in view of device characteristics data and output from a margining test module. The solution disclosed herein and recited in the claims solves a technical problem in computing system. Moreover, various implementations disclosed herein and recited in the claims solves the technical problem necessitated by ageing of technical components, such as devices, sensors, LCD, and other silicon-based components used in computing and mobile devices by providing a technical solution using technical components including a margining test module. Furthermore, the device operating voltage adjustment system disclosed herein also adjusts operating voltages of the devices based on changes in battery performance over the life of the battery, including changes in the battery chemistry and its discharge rates. Thus, the device operating voltage adjustment system disclosed herein provides a technical solution of adjusting operating voltages of the devices based on changes in battery performance over the life of the battery to address the technical problem of varying battery discharge rates.

Claim 1:
A system, comprising:
a device characteristics data store (<NUM>) configured to store device characteristics data for a device (<NUM>), wherein the device characteristics data comprises an operating speed for the device and an initial performance curve (530a) characterizing a relationship between operating voltage and operating speed at an initial stage of the device;
an operating voltage determination module (<NUM>) configured to determine an initial operating voltage for the device using the operating speed for the device and the initial performance curve; and
a battery module (<NUM>) configured to change the operating voltage of the device to the initial operating voltage from the operating voltage determination module;
a heuristics analysis module (<NUM>) configured to:
track usage patterns of the device, wherein the heuristics analysis module (<NUM>) is configured to track an amount of time the device is in different utilization states; and
generate a trigger for a margining test by either:
generating the trigger for the margining test in response to a particular utilization state exceeding a threshold amount of time; or
assigning a weight to each utilization state; and
generating the trigger for the margining test in response to the weighted combination of utilization states meeting a particular criterion;
a margining test module (<NUM>) configured to perform the margining test for the device in response to the trigger, wherein the output of the margining test comprises a current performance curve (530b) characterizing the device's current operating speeds at various operating voltages; wherein
the operating voltage determination module (<NUM>) is further configured to determine a revised operating voltage for the device using the operating speed for the device and the current performance curve; and
the battery module (<NUM>) is further configured to change the operating voltage of the device to the revised operating voltage from the operating voltage determination module.