US20100122109A1 - Mips recovery technique - Google Patents

Mips recovery technique Download PDF

Info

Publication number
US20100122109A1
US20100122109A1 US12/689,892 US68989210A US2010122109A1 US 20100122109 A1 US20100122109 A1 US 20100122109A1 US 68989210 A US68989210 A US 68989210A US 2010122109 A1 US2010122109 A1 US 2010122109A1
Authority
US
United States
Prior art keywords
processor
clock rate
processor clock
circuit
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/689,892
Inventor
Darwin Rambo
Philip Houghton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Darwin Rambo
Philip Houghton
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Darwin Rambo, Philip Houghton filed Critical Darwin Rambo
Priority to US12/689,892 priority Critical patent/US20100122109A1/en
Publication of US20100122109A1 publication Critical patent/US20100122109A1/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: BROADCOM CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROADCOM CORPORATION
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Definitions

  • ICs integrated circuits
  • the manufacturer normally sets a nominal processor clock rate based upon a statistical analysis of device behavior under different temperature conditions.
  • the screening results in different batches of devices that run at different nominal processor clock rates.
  • the selected nominal processor clock rate of each batch is picked so that the IC devices in the batch are operational over the worst case combinations of temperature, supply voltage, and process variation. Prescreening may also be employed prior to or as a part of mass production, by sorting each part of the fly.
  • processor IC In most cases, designs in which a processor IC is used operate the device far from the temperature and voltage extremes for which the part is rated. A vast majority of the processor ICs in use are capable of operating at processor clock rates far in excess of what is normally used, when operated in typical system environments (e.g., within temperature controlled business and residential premises). Processor clock rates for processor ICs may, in some instances, be raised 20% without experiencing processor operational problems. This is due to the fact that the designers of the equipment using the processor ICs limited their designs to the maximum processor clock rates published for the part by the IC manufacturer.
  • a circuit, method, and system for self-calibrating an optimum processor clock rate substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
  • FIG. 1 illustrates an exemplary computer processor circuit that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • FIG. 2 illustrates another exemplary computer processor circuit that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • FIG. 3 illustrates an exemplary non-volatile memory that may correspond to, for example, the non-volatile memories of FIGS. 1 and 2 , used to store variables and device information, in accordance with a representative embodiment of the present invention.
  • FIG. 4A shows a flowchart of an exemplary first portion of a method of self-calibrating a processor such as, for example, the processors of FIGS. 1 and 2 to an optimum processor clock rate following power-up of the processor and prior to normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • FIG. 4B shows a flowchart of an exemplary second portion of a method that is performed by a processor such as, for example, the processors of FIGS. 1 and 2 upon detection of a processor clock rate-related error, while the processor is performing the method of FIG. 4A , in accordance with a representative embodiment of the present invention.
  • a processor such as, for example, the processors of FIGS. 1 and 2 upon detection of a processor clock rate-related error, while the processor is performing the method of FIG. 4A , in accordance with a representative embodiment of the present invention.
  • FIG. 5 shows a flowchart of an exemplary method of self-calibrating a processor clock rate of a processor such as, for example, the processors of FIGS. 1 and 2 , during normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • aspects of the present invention relate to optimizing digital processor circuit performance. More specifically, aspects of the present invention relate to a circuit, method, and system enabling automatic optimization of processor clock rates in digital processor circuits, providing greater processor throughput with minimal additional circuit complexity or cost.
  • a representative embodiment of the present invention may execute a self-calibration in which the processor circuit performs a series of sanity checks, each at a higher processor clock rate. The behavior during this activity may be used to determine a processor clock rate at which reliable operation of the processor circuit can be expected, and which is higher than the nominal processor clock rate set by the manufacturer. This higher processor clock rate permits the processor circuit to perform more useful work, or operation at a higher level of accuracy or fidelity at little or no additional cost.
  • microprocessors and microprocessor cores are used herein to represent, respectively, microprocessor and digital signal processor circuitry that is embedded within an integrated circuit containing significant additional functional elements that may interface with or be under control of the microprocessor or digital signal processor core.
  • FIG. 1 illustrates an exemplary computer processor circuit 100 that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • the computer processor circuit 100 of FIG. 1 comprises a processor 110 communicatively coupled to a non-volatile (NV) memory 140 , a temperature sensor 150 , and other peripheral/memory/etc 160 .
  • the processor 110 receives information from a real-time clock 130 to enable processor 110 to measure intervals of time.
  • the processor 110 operates according to a processor clock 125 provided by a programmable clock source 120 .
  • the computer processor circuit 100 may be employed in a wide variety of devices having need for processing capability, as many of the elements of computer processor circuit 100 are present in existing electronic devices.
  • the processor 110 may comprise, for example, any of a number of different commercial microprocessors from manufacturers such as Intel Corporation, IBM Corporation, FreeScale Semiconductor, and Texas Instruments.
  • a representative embodiment of the present invention may also be employed with other forms of digital circuitry that operates according to a clock, including digital signal processors, field programmable logic arrays (FPGAs), application specific integrated circuits (ASICs), to name only a few examples.
  • FPGAs field programmable logic arrays
  • ASICs application specific integrated circuits
  • the programmable clock source 120 comprises a clock generator circuit having clock output(s) compatible with the processor 110 .
  • a programmable clock source such as, for example, the programmable clock source 120 may be capable of providing clock signals at rates that expand beyond the highest processor clock rates for which the processor 110 is specified.
  • the programmable clock source 120 may generate clock signal(s) at rates that exceed the maximum manufacturer-specified processor clock rates by, for example, anywhere from 10 to 40%.
  • the Applicant has performed testing that indicates that when operating under typical conditions of temperature and supply voltage, some processors are capable of operating at approximately 20% above their nominal or rated processor clock rates.
  • the programmable clock source 120 of FIG. 1 receives control signals 127 that indicate the desired processor clock rate to be transmitted to the processor 110 as variable rate processor clock signal(s) 125 .
  • the variable rate processor clock signal(s) 125 may comprise a number of signals/phases having known timing relationships that are generated in response to the control signals 127 .
  • the control signals 127 may be conveyed from the processor 110 to the programmable clock source 120 in either a serial or parallel form.
  • real-time clock such as the real-time clock 130 operates independently from the programmable clock source 120 , to provide accurate measurement of intervals of time during which the operational behavior of the processor 110 is tested or monitored.
  • the real-time clock 130 may, in some representative embodiments, be located within the processor 110 itself.
  • the real-time clock 130 may, for example, comprise a register having a value readable by the processor 110 , or a signal detectable by the processor 110 , in which the occurrence of the signal represents the passage of a pre-defined unit of time that is accessed and/or recorded by the processor 110 .
  • a non-volatile memory such as the NV memory 140 may be located within the processor 110 , or may be a separate non-volatile memory device interfaced via a communication interface 145 to the processor 110 using any suitable microprocessor bus arrangement or a serial device interface standard such as, for example, the I 2 C or SPI bus interfaces, to name only two.
  • the non-volatile memory 140 may comprise memory devices employing any of a number of memory technologies including, for example, NAND or NOR flash memory, electrically-erasable and programmable read-only memory (EEPROM), static or dynamic memory with battery or capacitive backup, to name only a few.
  • a temperature sensor such as the temperature sensor 150 may comprise a thermal diode such as, for example, those found in many computer and graphics processing devices such as, for example, the Pentium family of processors by Intel Corporation and the PowerPC family by IBM Corporation.
  • the temperature sensor 150 may also comprise other temperature sensing technologies including, for example, resistive temperature sensing devices (RTDs), thermocouples, a diode-connected transistor, and integrated circuit temperature sensors such as, for example, a commercially available temperature sensing device like a National semiconductor LM63 temperature sensor, that is in the same thermal environment as the processor 110 . It is preferable that the temperature sensor 150 track the temperature of the processor 110 as accurately as possible.
  • the processor 110 of FIG. 1 may be in communication with additional memory, peripherals, and other devices, illustrated as other peripherals/memory/etc 160 , that are interfaced to the processor 110 via communication interface 165 .
  • These devices may include, for example, read-only and read-write memory, hard disk devices, removable memory devices, video interface devices, audio interface devices, and network interfaces for a variety of wired and wireless communication networks.
  • the details of such additional system elements are not particularly pertinent to a discussion of the present invention, and will not be discussed further herein.
  • a processor such as, for example, the processor 110 of FIG. 1 may self-calibrate a processor clock rate of a processor clock signal such as processor clock signals 125 to a maximum appropriate or “good” processor clock rate at which the processor 110 operates reliably in the current operating environment (i.e., operating temperature, supply voltage, etc.)
  • This self-calibration may be performed by the processor 110 during a separate time interval following power-up and before normal operation for its intended use begins, and/or it may be performed during normal operation for its intended use.
  • the processor 110 may perform what is referred to herein as a “self-calibration activity”, by first establishing a nominal processor clock rate within the range of processor clock rates specified for the processor 110 by the manufacturer, and then performing a series of tests at progressively higher processor clock rates until the processor 110 exhibits one or more processor clock rate-related errors in operation.
  • a processor clock rate-related error may comprise a processor circuit malfunction that occurs during a recognized period of processor operation outside of manufacturer-specified processor clock rate limits. Examples of possible processor circuit malfunctions include unexpected trap conditions (e.g., bus errors, address alignment errors, divide by zero, etc.), asserts, data failures, and hardware or software watchdog timeouts.
  • Detection of such errors and return to sane processor circuit operation may be managed using appropriate fault recovery techniques for each type of error, which may include fault analysis and logging, and most likely a graceful recovery (e.g., task re-creation), or in more sever situations (e.g., watchdog timeout), a processor restart or reboot.
  • a representative embodiment of the present invention may determine a suitable maximum appropriate or “good” processor clock rate that may, in fact, exceed the highest processor clock rate specified by the manufacturer of the processor 110 .
  • a processor in accordance with the present invention may calculate a maximum reliable or “good” processor clock rate using device characteristic information for the processor 110 and operating environment (e.g., temperature) information.
  • device characteristic information may comprise temperature-related operating characteristics for the processor 110 that were observed during testing of the design and fabrication processes used in manufacturing for the processor 110 .
  • This device characteristic information may be stored in a non-volatile memory such as, for example, the NV memory 140 of FIG. 1 .
  • the operating environment (e.g., temperature) information for the processor 110 during a period of self-calibration may be determined using a temperature sensor such as, for example, the temperature sensor 150 shown in FIG. 1 .
  • a temperature sensor such as, for example, the temperature sensor 150 shown in FIG. 1 .
  • Such temperature information may be compared with information gathered during fabrication process and device characterization activities by the manufacturer.
  • FIG. 2 illustrates another exemplary computer processor circuit 200 that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • the circuit 200 of FIG. 2 is similar in many respects to that shown in FIG. 1 , with the exception that FIG. 2 shows a fixed frequency external clock source 220 in place of the programmable clock source 120 of FIG. 1 , and shows the presence of a phase locked loop (PLL) 217 representing circuitry suitable for synthesizing a variable rate clock signal 225 from the fixed external clock source 223 , under control of the processor core 215 via control signals 227 .
  • the control signals 227 may be conveyed from the processor core 215 to the PLL 217 in either a serial or parallel form.
  • variable rate clock signal 225 may comprise a number of signals/phases having known timing relationships that are generated in response to the control signals 227 and external clock signal 223 .
  • the PLL 217 is intended to represent one example of an approach to producing a programmable clock source from a fixed external clock source, and is not the only suitable approach. Other techniques may also be used and are contemplated.
  • FIG. 3 illustrates an exemplary NV memory 340 that may correspond to, for example, the NV memories 140 , 240 of FIGS. 1 and 2 , used to store variables and device information, in accordance with a representative embodiment of the present invention.
  • the NV memory 340 may comprise temperature information 343 , processor clock rate information 342 , and device characteristics information 347 .
  • the temperature information 343 and processor clock rate information 342 may be stored during a processor clock rate self-calibration activity, or during normal operation.
  • a processor clock rate self-calibration activity may comprise a period of time when a processor such as, for example, the processors 110 , 210 of FIGS. 1 and 2 perform algorithms to determine a maximum reliable or “good” processor clock rate.
  • a self-calibration activity may also be performed during normal operation of a processor device for its intended use. This may occur when the processor clock rate of a processor circuit such as, for example, the processor circuit 100 , 200 of FIGS. 1 and 2 is adjusted upon detection of a long error-free period of operation or when a processor clock rate-related error is detected. Exemplary processor clock rate self-calibration activities in accordance with representative embodiments of the present invention are described below in greater detail, with respect to FIGS. 4A , 4 B and 5 .
  • device characteristics information such as the device characteristics information 347 may, for example, comprise a table or histogram of processor clock rates and corresponding processor operating temperatures observed during prescreening or known from testing of the design and the fabrication processes. Table 1, below, shows a graphical representation of one possible form of such a table.
  • the application error handler may update the failure histogram and down-speed of its own accord. In this case, the application would update the actual elapsed time, and not just the predicted time in NV memory data.
  • a representative embodiment of the present invention may employ integrity checks on non-volatile memory used to stored device characteristics and self-calibration information such as, for example, the NV memory 140 , 240 , 340 of FIGS. 1 , 2 and 3 .
  • This may be done to detect corruption due to operational problems (e.g., system crash, power failure) that may occur while updating the non-volatile memory.
  • a cyclic redundancy check (CRC) or checksum may be computed for the non-volatile memory following each update of stored information. The CRC or checksum may later be re-computed and compared to the stored value prior to each access and use, to insure that stored information is valid.
  • CRC cyclic redundancy check
  • a representative embodiment of the present invention may employ individual CRC or checksum values that may be computed and written for separate portions of non-volatile memory (e.g., a row of Table 1). In this manner, only the portion of the non-volatile memory for which a CRC or checksum is found invalid may be discarded when an error is found, avoiding the loss of the entire contents of the region of non-volatile memory used for self-calibration.
  • FIG. 4A shows a flowchart 400 of an exemplary first portion of a method of self-calibrating a processor such as, for example, the processors 110 , 210 of FIGS. 1 and 2 to an optimum processor clock rate following power-up of the processor and prior to normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • a processor such as the processors 110 , 120 of FIGS. 1 and 2 may be operated at a series of processor clock rates starting, for example, at the nominal processor clock rate specified by the manufacturer of the processor.
  • the method of FIG. 4A may begin when the device in which the processor is installed starts up, following application of power (block 410 ). The method of FIG. 4A may also commence following each reset and/or reboot of the processors 110 , 120 .
  • the processors 110 , 210 may begin by setting a flag in non-volatile memory such as, for example, NV memories 140 , 240 , showing that a processor clock rate self-calibration activity is in progress (block 412 ).
  • the method may then set the value of a processor clock rate index variable “n” to 1, to indicate that the nominal clock rate for the processor is currently being tested (block 414 ), and may store the value of n in non-volatile memory (block 416 ).
  • FIG. 4A then begins measurement of the elapsed time during which the processor operates error-free at a processor clock rate of f n , using a real time clock such as, for example, the real-time clocks 130 , 230 .
  • a real time clock such as, for example, the real-time clocks 130 , 230 .
  • the real-time clocks 130 , 230 run independently of the processor clock (block 418 ).
  • the method of FIG. 4A sets the processor clock rate of the programmable clock source (e.g., 120 of FIG. 1 ) or phase locked loop (e.g., PLL 217 of FIG. 2 ) to the clock rate indicated by the processor clock rate index variable, n (block 420 ).
  • the processor clock rate of the programmable clock source e.g., 120 of FIG. 1
  • phase locked loop e.g., PLL 217 of FIG. 2
  • the processor (e.g., 110 , 210 ) then commences a calibration interval (block 422 ) during which the processor executes test code at a processor clock rate of f n (block 424 ). Operation of the processor at a processor clock rate of f n continues until it is determined that the calibration interval has expired (block 426 ), or a processor error is detected (block 428 ). If it is determined that the calibration interval has expired (block 426 ), the processor increments the processor clock rate index variable n, to advance processor operation to the next higher processor clock rate (block 432 ). The processor clock rate index variable n is then examined to determine whether testing of a full range of clock rates to be tested has been completed (block 434 ).
  • the method of FIG. 4A loops back and saves the value of the processor clock rate index in non-volatile memory (block 416 ), and continues processor clock rate calibration as described above. If, however, the full range of processor clock rates has been tested (block 434 ), the method of FIG. 4A may determine a “good” or maximum reliable processor clock rate and representative index, using the temperature and processor error-free operating time information for each tested f n , and processor device characteristics, stored in non-volatile memory (block 436 ). The method may then save the “good” processor clock rate index in non-volatile memory (block 438 ), and set the processor clock rate of the programmable clock source (e.g., 120 of FIG.
  • the programmable clock source e.g. 120 of FIG.
  • phase locked loop e.g., PLL 217 of FIG. 2
  • the flag indicating that calibration is active may then be cleared to indicate that calibration is complete (block 442 ), and the processor may commence normal operation for its intended use, at the “good” processor clock rate of f n (block 444 ).
  • FIG. 4B is to set the processor clock rate of the processor undergoing processor clock rate calibration, to the nominal processor clock rate f 1 , that is specified by the manufacturer for proper processor operation at all rated temperatures and supply voltages (block 452 ).
  • the method of FIG. 4B may then save the measured processor error-free operating time while operating at processor clock rate f n , in a non-volatile memory such as, for example, the NV memories 140 , 240 of FIGS. 1 and 2 (block 454 ).
  • the processor may also save the current temperature in non-volatile memory (block 456 ). Having stored the operating conditions when the processor error occurred, the method of FIG. 4B then returns to the method portion shown in FIG. 4A (block 432 ), and proceeds to test processor operation at the new, higher processor clock rate f n , as previously described.
  • a representative embodiment of the present invention may begin processor clock rate calibration following power-up/reset/reboot of a processor performing self-calibration, but before normal operation of the processor for its intended use begins.
  • FIG. 5 shows a flowchart 500 of an exemplary method of self-calibrating a processor clock rate of a processor such as, for example, the processors 110 , 120 of FIGS. 1 and 2 , during normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • the method shown in FIG. 5 may be used in addition to the method shown in FIGS. 4A and 4B .
  • the method of FIG. 5 begins following power-up and/or reset/reboot of a processor such as, for example, the processors 110 , 210 shown in FIGS. 1 and 2 .
  • the method of FIG. 5 may establish an initial processor clock rate f n for normal operation of the processor for its intended use (block 512 ).
  • An index representing the initial processor clock rate may be retrieved from non-volatile memory such as, for example, the NV memory 140 , 240 of FIGS. 1 and 2 , having been determined during an earlier calibration process such as that described above with respect to FIGS. 4A and 4B .
  • the method of FIG. 5 then begins measurement of a time interval of processor error-free operation at a processor clock rate of f n (block 514 ), and commences performance of normal processor operations for its intended use (block 516 ). If it is determined that a processor error has occurred (block 518 ), the method of FIG. 5 may set the processor clock rate to the nominal processor clock rate f 1 specified by the manufacturer for proper processor operation at all rated temperatures and supply voltages (block 520 ).
  • a processor error may be defined as a processor circuit malfunction that occurs when operating at a processor clock rate in excess of the nominal processor clock rate f 1 .
  • the method of FIG. 5 may save the measured processor error-free operating interval at f n in non-volatile memory (block 522 ).
  • a representative embodiment of the present invention may also save the current operating temperature in non-volatile memory, as well (block 524 ).
  • the method may then determine a “good” processor clock rate and index, using temperature and processor error-free operating interval information and processor device characteristics, stored in the non-volatile memory (block 526 ).
  • the newly determined “good” processor clock rate index may then be saved in non-volatile memory (block 528 ), and the processor clock rate may be set to the “good” processor clock rate (block 530 ).
  • the method of FIG. 5 may then return the processor to normal operation for its intended use (block 516 ).
  • an electronic device comprising a processor circuit operating at a processor clock rate determined by a programmable clock source under control of the processor circuit.
  • the device may also comprise a non-volatile memory communicatively coupled to the processor circuit.
  • the device may comprise a real time clock circuit for determining elapsed time, and the real time clock circuit may be communicatively coupled to the processor circuit.
  • the processor circuit may automatically determine a maximum reliable processor clock rate by adjusting the processor clock rate in response to detection of processor circuit operational errors.
  • a representative embodiment of the present invention may comprise a temperature sensing circuit communicatively coupled to the processor circuit.
  • the maximum reliable clock rate may be stored in the non-volatile memory, and the non-volatile memory may comprise temperature related operating characteristics of the processor circuit.
  • the automatic determination of processor clock rate may be performed subsequent to power-up of the central processor circuit, and prior to commencing operation of the central processing circuit in its primary function. In other representative embodiments of the present invention, the automatic determination of processor clock rate may be performed during operation of the computer processing circuit for its intended use.
  • the programmable clock source may be disposed on the same integrated circuit as the processor circuit.
  • the processor circuit may comprise a microprocessor core, and the processor circuit may comprise a digital signal processor core.
  • Such a method may comprise detecting an operational error of the electronic device, and measuring a time interval of error free operation of the electronic device.
  • the method may comprise determining a new processor clock rate based upon the measured time interval of error free operation and the current processor clock rate, and setting the current processor clock rate to the new processor clock rate.
  • the determining may comprise selecting a new processor clock rate relatively lower than the current processor clock rate, if the determined time interval is less than a first threshold, and selecting a new processor clock rate relatively higher that the current processor clock rate, if the determined time interval is greater that a second threshold.
  • the first and second thresholds may be different.
  • the method may also comprise establishing a current processor clock rate at an initial processor clock rate.
  • the establishing may comprise retrieving a processor clock rate from non-volatile memory.
  • the establishing may also comprise setting the current processor clock rate to a nominal processor clock rate, if the retrieved processor clock rate is not valid, and setting the current processor clock rate to the retrieved processor clock rate, if the retrieved processor clock rate is valid.
  • the new processor clock rate may be determined using temperature related operating characteristics of the data processing device that are stored in non-volatile memory.
  • Setting the current processor clock rate may comprise storing the current processor clock rate in non-volatile memory, and setting the current processor clock rate to the new processor clock rate.
  • the electronic device may comprise a microprocessor core, and the electronic device may comprise a digital signal processor core.
  • a machine-readable storage having stored thereon a computer program having a plurality of code sections for performing a self-calibrating method of optimizing a processor clock rate of an electronic device.
  • the code sections may be executable by a machine for causing the machine to perform the operations comprising detecting an operational error of the electronic device, and measuring a time interval of error free operation of the electronic device.
  • the operations may also comprise determining a new processor clock rate based upon the measured time interval of error free operation and the current processor clock rate, and setting the current processor clock rate to the new processor clock rate.
  • the determining may comprise selecting a new processor clock rate relatively lower than the current processor clock rate, if the determined time interval is less than a first threshold, and selecting a new processor clock rate relatively higher that the current processor clock rate, if the determined time interval is greater that a second threshold.
  • the first and second thresholds may be different.
  • the code sections executable by a machine may further cause the machine to perform the operations comprising establishing a current processor clock rate at an initial processor clock rate.
  • the establishing may comprise retrieving a processor clock rate from non-volatile memory.
  • the establishing may also comprise setting the current processor clock rate to a nominal processor clock rate, if the retrieved processor clock rate is not valid, and setting the current processor clock rate to the retrieved processor clock rate, if the retrieved processor clock rate is valid.
  • the new processor clock rate may be determined using temperature related operating characteristics of the data processing device that are stored in non-volatile memory.
  • setting the current processor clock rate may comprise storing the current processor clock rate in non-volatile memory, and setting the current processor clock rate to the new processor clock rate.
  • the electronic device may comprise a microprocessor core, and the electronic device may comprise a digital signal processor core.
  • the present invention may be realized in hardware, software, or a combination of hardware and software.
  • the present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited.
  • a typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
  • the present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods.
  • Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.

Abstract

Self-calibration of devices such as computer and graphics processors permits adjustment of processor clock rates, and access to normally unused processor capacity. Processor clock rates specified by device manufacturers are normally selected to insure operation across the entire manufacturer-specified range of operating temperatures and supply voltages. By limiting processor clock rates to nominal values, even when operating well within manufacturer-specified temperature and/or supply voltage limits, designers sacrifice processor capacity. By determining the upper limits of processor clock rates at which reliable operation can be realized, and adjusting processor clock rates to match those speeds, a representative embodiment of the present invention permits device users to gain additional, previously inaccessible processing capacity.

Description

    RELATED APPLICATIONS
  • [Not Applicable]
  • FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
  • [Not Applicable]
  • MICROFICHE/COPYRIGHT REFERENCE
  • [Not Applicable]
  • BACKGROUND OF THE INVENTION
  • During fabrication, present day processor integrated circuits (ICs) such as, for example, microprocessors, digital signal processors, graphics processors, and the like, are typically screened and classified into batches. The manufacturer normally sets a nominal processor clock rate based upon a statistical analysis of device behavior under different temperature conditions. The screening results in different batches of devices that run at different nominal processor clock rates. The selected nominal processor clock rate of each batch is picked so that the IC devices in the batch are operational over the worst case combinations of temperature, supply voltage, and process variation. Prescreening may also be employed prior to or as a part of mass production, by sorting each part of the fly.
  • In most cases, designs in which a processor IC is used operate the device far from the temperature and voltage extremes for which the part is rated. A vast majority of the processor ICs in use are capable of operating at processor clock rates far in excess of what is normally used, when operated in typical system environments (e.g., within temperature controlled business and residential premises). Processor clock rates for processor ICs may, in some instances, be raised 20% without experiencing processor operational problems. This is due to the fact that the designers of the equipment using the processor ICs limited their designs to the maximum processor clock rates published for the part by the IC manufacturer.
  • Operating at higher than manufacturer-specified clock rates, also known as “over-clocking” is common among some user groups, such as users of high-end personal computer game systems. Processor clock rates to be used in “over-clocking” are normally determined using imprecise trial and error methods that fail to fully and reliably realize the extent of the processor computing resource available.
  • Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
  • BRIEF SUMMARY OF THE INVENTION
  • A circuit, method, and system for self-calibrating an optimum processor clock rate, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
  • These and other advantages, aspects, and novel features of the present invention, as well as details of illustrated embodiments, thereof, will be more fully understood from the following description and drawings.
  • BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS
  • FIG. 1 illustrates an exemplary computer processor circuit that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • FIG. 2 illustrates another exemplary computer processor circuit that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention.
  • FIG. 3 illustrates an exemplary non-volatile memory that may correspond to, for example, the non-volatile memories of FIGS. 1 and 2, used to store variables and device information, in accordance with a representative embodiment of the present invention.
  • FIG. 4A shows a flowchart of an exemplary first portion of a method of self-calibrating a processor such as, for example, the processors of FIGS. 1 and 2 to an optimum processor clock rate following power-up of the processor and prior to normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • FIG. 4B shows a flowchart of an exemplary second portion of a method that is performed by a processor such as, for example, the processors of FIGS. 1 and 2 upon detection of a processor clock rate-related error, while the processor is performing the method of FIG. 4A, in accordance with a representative embodiment of the present invention.
  • FIG. 5 shows a flowchart of an exemplary method of self-calibrating a processor clock rate of a processor such as, for example, the processors of FIGS. 1 and 2, during normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Aspects of the present invention relate to optimizing digital processor circuit performance. More specifically, aspects of the present invention relate to a circuit, method, and system enabling automatic optimization of processor clock rates in digital processor circuits, providing greater processor throughput with minimal additional circuit complexity or cost. A representative embodiment of the present invention may execute a self-calibration in which the processor circuit performs a series of sanity checks, each at a higher processor clock rate. The behavior during this activity may be used to determine a processor clock rate at which reliable operation of the processor circuit can be expected, and which is higher than the nominal processor clock rate set by the manufacturer. This higher processor clock rate permits the processor circuit to perform more useful work, or operation at a higher level of accuracy or fidelity at little or no additional cost. Although the following discussion describes representative embodiments of the present invention in terms of computer processor units and processor integrated circuits, this is by way of example and does not represent specific limitations of the present invention. The techniques disclosed have application in a wide variety of electronic equipment comprising, for example, microprocessors and microprocessor cores, microcontrollers, digital signal processors and digital signal processor cores (DSPs), graphics processors, application specific integrated circuits (ASICs), field programmable logic circuits (FPGAs), to name only a few. The terms microprocessor core and digital signal processor core are used herein to represent, respectively, microprocessor and digital signal processor circuitry that is embedded within an integrated circuit containing significant additional functional elements that may interface with or be under control of the microprocessor or digital signal processor core.
  • FIG. 1 illustrates an exemplary computer processor circuit 100 that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention. The computer processor circuit 100 of FIG. 1 comprises a processor 110 communicatively coupled to a non-volatile (NV) memory 140, a temperature sensor 150, and other peripheral/memory/etc 160. In addition, the processor 110 receives information from a real-time clock 130 to enable processor 110 to measure intervals of time. The processor 110 operates according to a processor clock 125 provided by a programmable clock source 120. The computer processor circuit 100 may be employed in a wide variety of devices having need for processing capability, as many of the elements of computer processor circuit 100 are present in existing electronic devices.
  • The processor 110 may comprise, for example, any of a number of different commercial microprocessors from manufacturers such as Intel Corporation, IBM Corporation, FreeScale Semiconductor, and Texas Instruments. A representative embodiment of the present invention may also be employed with other forms of digital circuitry that operates according to a clock, including digital signal processors, field programmable logic arrays (FPGAs), application specific integrated circuits (ASICs), to name only a few examples.
  • The programmable clock source 120 comprises a clock generator circuit having clock output(s) compatible with the processor 110. In a representative embodiment of the present invention, a programmable clock source such as, for example, the programmable clock source 120 may be capable of providing clock signals at rates that expand beyond the highest processor clock rates for which the processor 110 is specified. For example, the programmable clock source 120 may generate clock signal(s) at rates that exceed the maximum manufacturer-specified processor clock rates by, for example, anywhere from 10 to 40%. The Applicant has performed testing that indicates that when operating under typical conditions of temperature and supply voltage, some processors are capable of operating at approximately 20% above their nominal or rated processor clock rates. This additional unrealized processor throughput enables a representative embodiment of the present invention to set processor clock rates above the maximum manufacturer-specified clock rates when a processor self-calibration activity to be described in detail below, so indicates. The programmable clock source 120 of FIG. 1 receives control signals 127 that indicate the desired processor clock rate to be transmitted to the processor 110 as variable rate processor clock signal(s) 125. Although shown as a single signal, the variable rate processor clock signal(s) 125 may comprise a number of signals/phases having known timing relationships that are generated in response to the control signals 127. The control signals 127 may be conveyed from the processor 110 to the programmable clock source 120 in either a serial or parallel form.
  • In a representative embodiment of the present invention, as real-time clock such as the real-time clock 130 operates independently from the programmable clock source 120, to provide accurate measurement of intervals of time during which the operational behavior of the processor 110 is tested or monitored. Although shown external to the processor 110, the real-time clock 130 may, in some representative embodiments, be located within the processor 110 itself. The real-time clock 130 may, for example, comprise a register having a value readable by the processor 110, or a signal detectable by the processor 110, in which the occurrence of the signal represents the passage of a pre-defined unit of time that is accessed and/or recorded by the processor 110.
  • In a representative embodiment of the present invention, a non-volatile memory such as the NV memory 140 may be located within the processor 110, or may be a separate non-volatile memory device interfaced via a communication interface 145 to the processor 110 using any suitable microprocessor bus arrangement or a serial device interface standard such as, for example, the I2C or SPI bus interfaces, to name only two. The non-volatile memory 140 may comprise memory devices employing any of a number of memory technologies including, for example, NAND or NOR flash memory, electrically-erasable and programmable read-only memory (EEPROM), static or dynamic memory with battery or capacitive backup, to name only a few.
  • In a representative embodiment of the present invention, a temperature sensor such as the temperature sensor 150 may comprise a thermal diode such as, for example, those found in many computer and graphics processing devices such as, for example, the Pentium family of processors by Intel Corporation and the PowerPC family by IBM Corporation. The temperature sensor 150 may also comprise other temperature sensing technologies including, for example, resistive temperature sensing devices (RTDs), thermocouples, a diode-connected transistor, and integrated circuit temperature sensors such as, for example, a commercially available temperature sensing device like a National semiconductor LM63 temperature sensor, that is in the same thermal environment as the processor 110. It is preferable that the temperature sensor 150 track the temperature of the processor 110 as accurately as possible.
  • In addition to those elements described above, the processor 110 of FIG. 1 may be in communication with additional memory, peripherals, and other devices, illustrated as other peripherals/memory/etc 160, that are interfaced to the processor 110 via communication interface 165. These devices may include, for example, read-only and read-write memory, hard disk devices, removable memory devices, video interface devices, audio interface devices, and network interfaces for a variety of wired and wireless communication networks. The details of such additional system elements are not particularly pertinent to a discussion of the present invention, and will not be discussed further herein.
  • In a representative embodiment of the present invention, a processor such as, for example, the processor 110 of FIG. 1 may self-calibrate a processor clock rate of a processor clock signal such as processor clock signals 125 to a maximum appropriate or “good” processor clock rate at which the processor 110 operates reliably in the current operating environment (i.e., operating temperature, supply voltage, etc.) This self-calibration may be performed by the processor 110 during a separate time interval following power-up and before normal operation for its intended use begins, and/or it may be performed during normal operation for its intended use. The processor 110 may perform what is referred to herein as a “self-calibration activity”, by first establishing a nominal processor clock rate within the range of processor clock rates specified for the processor 110 by the manufacturer, and then performing a series of tests at progressively higher processor clock rates until the processor 110 exhibits one or more processor clock rate-related errors in operation. In a representative embodiment of the present invention, a processor clock rate-related error may comprise a processor circuit malfunction that occurs during a recognized period of processor operation outside of manufacturer-specified processor clock rate limits. Examples of possible processor circuit malfunctions include unexpected trap conditions (e.g., bus errors, address alignment errors, divide by zero, etc.), asserts, data failures, and hardware or software watchdog timeouts. Detection of such errors and return to sane processor circuit operation may be managed using appropriate fault recovery techniques for each type of error, which may include fault analysis and logging, and most likely a graceful recovery (e.g., task re-creation), or in more sever situations (e.g., watchdog timeout), a processor restart or reboot. By measuring the length of error-free operation or elapsed time between such errors, at each of a number of tested processor clock rates, a representative embodiment of the present invention may determine a suitable maximum appropriate or “good” processor clock rate that may, in fact, exceed the highest processor clock rate specified by the manufacturer of the processor 110.
  • During a self-calibration activity, a processor in accordance with the present invention may calculate a maximum reliable or “good” processor clock rate using device characteristic information for the processor 110 and operating environment (e.g., temperature) information. Such device characteristic information may comprise temperature-related operating characteristics for the processor 110 that were observed during testing of the design and fabrication processes used in manufacturing for the processor 110. This device characteristic information may be stored in a non-volatile memory such as, for example, the NV memory 140 of FIG. 1.
  • In addition, the operating environment (e.g., temperature) information for the processor 110 during a period of self-calibration may be determined using a temperature sensor such as, for example, the temperature sensor 150 shown in FIG. 1. Such temperature information may be compared with information gathered during fabrication process and device characterization activities by the manufacturer.
  • FIG. 2 illustrates another exemplary computer processor circuit 200 that supports processor clock rate optimization, in accordance with a representative embodiment of the present invention. The circuit 200 of FIG. 2 is similar in many respects to that shown in FIG. 1, with the exception that FIG. 2 shows a fixed frequency external clock source 220 in place of the programmable clock source 120 of FIG. 1, and shows the presence of a phase locked loop (PLL) 217 representing circuitry suitable for synthesizing a variable rate clock signal 225 from the fixed external clock source 223, under control of the processor core 215 via control signals 227. In a representative embodiment of the present invention, the control signals 227 may be conveyed from the processor core 215 to the PLL 217 in either a serial or parallel form. Although shown as one signal, the variable rate clock signal 225 may comprise a number of signals/phases having known timing relationships that are generated in response to the control signals 227 and external clock signal 223. The PLL 217 is intended to represent one example of an approach to producing a programmable clock source from a fixed external clock source, and is not the only suitable approach. Other techniques may also be used and are contemplated.
  • FIG. 3 illustrates an exemplary NV memory 340 that may correspond to, for example, the NV memories 140, 240 of FIGS. 1 and 2, used to store variables and device information, in accordance with a representative embodiment of the present invention. As shown in the example of FIG. 3, the NV memory 340 may comprise temperature information 343, processor clock rate information 342, and device characteristics information 347. The temperature information 343 and processor clock rate information 342 may be stored during a processor clock rate self-calibration activity, or during normal operation. A processor clock rate self-calibration activity may comprise a period of time when a processor such as, for example, the processors 110, 210 of FIGS. 1 and 2 perform algorithms to determine a maximum reliable or “good” processor clock rate. A self-calibration activity may also be performed during normal operation of a processor device for its intended use. This may occur when the processor clock rate of a processor circuit such as, for example, the processor circuit 100, 200 of FIGS. 1 and 2 is adjusted upon detection of a long error-free period of operation or when a processor clock rate-related error is detected. Exemplary processor clock rate self-calibration activities in accordance with representative embodiments of the present invention are described below in greater detail, with respect to FIGS. 4A, 4B and 5.
  • In a representative embodiment of the present invention, device characteristics information such as the device characteristics information 347 may, for example, comprise a table or histogram of processor clock rates and corresponding processor operating temperatures observed during prescreening or known from testing of the design and the fabrication processes. Table 1, below, shows a graphical representation of one possible form of such a table.
  • TABLE 1
    PROCESSOR ELAPSED TIME UNTIL OPERATING
    CLOCK RATE ERROR (sec.) TEMPERATURE
    f1 0.001 T1
    f2 0.080 T2
    f2 0.103 T3
    fx 0.248 T4

    Based on the example data above, the decision can then be taken as to which frequency to run at given manufacturer and customer expectations of field performance.
  • Note that after the initial self-calibration phase, it is possible to have similar error recovery software running in the application. Should unexpected failures occur that exceed a particular threshold or set of thresholds, then the application error handler may update the failure histogram and down-speed of its own accord. In this case, the application would update the actual elapsed time, and not just the predicted time in NV memory data.
  • It should also be noted that a representative embodiment of the present invention may employ integrity checks on non-volatile memory used to stored device characteristics and self-calibration information such as, for example, the NV memory 140, 240, 340 of FIGS. 1, 2 and 3. This may be done to detect corruption due to operational problems (e.g., system crash, power failure) that may occur while updating the non-volatile memory. For example, a cyclic redundancy check (CRC) or checksum may be computed for the non-volatile memory following each update of stored information. The CRC or checksum may later be re-computed and compared to the stored value prior to each access and use, to insure that stored information is valid. If the CRC is found to be incorrect, the information stored in the non-volatile memory may be considered to be bad and untrustworthy. In such a case, a self-calibration activity may be performed, beginning at the nominal processor clock rate. A representative embodiment of the present invention may employ individual CRC or checksum values that may be computed and written for separate portions of non-volatile memory (e.g., a row of Table 1). In this manner, only the portion of the non-volatile memory for which a CRC or checksum is found invalid may be discarded when an error is found, avoiding the loss of the entire contents of the region of non-volatile memory used for self-calibration.
  • FIG. 4A shows a flowchart 400 of an exemplary first portion of a method of self-calibrating a processor such as, for example, the processors 110, 210 of FIGS. 1 and 2 to an optimum processor clock rate following power-up of the processor and prior to normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention. The following discussion makes reference to the elements of FIGS. 1, 2 and 3, in order to clarify operation of the method for the reader. In a first portion of the method, shown in FIG. 4A, a processor such as the processors 110, 120 of FIGS. 1 and 2 may be operated at a series of processor clock rates starting, for example, at the nominal processor clock rate specified by the manufacturer of the processor. The method of FIG. 4A may begin when the device in which the processor is installed starts up, following application of power (block 410). The method of FIG. 4A may also commence following each reset and/or reboot of the processors 110, 120. The processors 110, 210 may begin by setting a flag in non-volatile memory such as, for example, NV memories 140, 240, showing that a processor clock rate self-calibration activity is in progress (block 412). The method may then set the value of a processor clock rate index variable “n” to 1, to indicate that the nominal clock rate for the processor is currently being tested (block 414), and may store the value of n in non-volatile memory (block 416). The method of FIG. 4A then begins measurement of the elapsed time during which the processor operates error-free at a processor clock rate of fn, using a real time clock such as, for example, the real- time clocks 130, 230. In a representative embodiment of the present invention, the real- time clocks 130, 230 run independently of the processor clock (block 418). Next, the method of FIG. 4A sets the processor clock rate of the programmable clock source (e.g., 120 of FIG. 1) or phase locked loop (e.g., PLL 217 of FIG. 2) to the clock rate indicated by the processor clock rate index variable, n (block 420). The processor (e.g., 110, 210) then commences a calibration interval (block 422) during which the processor executes test code at a processor clock rate of fn (block 424). Operation of the processor at a processor clock rate of fn continues until it is determined that the calibration interval has expired (block 426), or a processor error is detected (block 428). If it is determined that the calibration interval has expired (block 426), the processor increments the processor clock rate index variable n, to advance processor operation to the next higher processor clock rate (block 432). The processor clock rate index variable n is then examined to determine whether testing of a full range of clock rates to be tested has been completed (block 434). If the full range of processor clock rates has not yet been tested, the method of FIG. 4A loops back and saves the value of the processor clock rate index in non-volatile memory (block 416), and continues processor clock rate calibration as described above. If, however, the full range of processor clock rates has been tested (block 434), the method of FIG. 4A may determine a “good” or maximum reliable processor clock rate and representative index, using the temperature and processor error-free operating time information for each tested fn, and processor device characteristics, stored in non-volatile memory (block 436). The method may then save the “good” processor clock rate index in non-volatile memory (block 438), and set the processor clock rate of the programmable clock source (e.g., 120 of FIG. 1) or phase locked loop (e.g., PLL 217 of FIG. 2) to the “good” processor clock rate (block 440). The flag indicating that calibration is active may then be cleared to indicate that calibration is complete (block 442), and the processor may commence normal operation for its intended use, at the “good” processor clock rate of fn (block 444).
  • If, however, it is determined that the calibration interval has not expired (block 426), a check is made to determine whether a processor error has occurred (block 428). It should be noted that, although this is shown in the illustration of FIG. 4A as a decision, this change in program flow may, in fact, result from a trap or interrupt, in various representative embodiments of the present invention. If a processor error has not occurred, the method of FIG. 4A loops back, and continues execution of the test code (block 424). If, however, a processor error has occurred (block 428), the method performs the actions shown in the portion of the method shown in FIG. 4B (block 450). The first action of the portion of the method shown in FIG. 4B is to set the processor clock rate of the processor undergoing processor clock rate calibration, to the nominal processor clock rate f1, that is specified by the manufacturer for proper processor operation at all rated temperatures and supply voltages (block 452). The method of FIG. 4B may then save the measured processor error-free operating time while operating at processor clock rate fn, in a non-volatile memory such as, for example, the NV memories 140, 240 of FIGS. 1 and 2 (block 454). The processor may also save the current temperature in non-volatile memory (block 456). Having stored the operating conditions when the processor error occurred, the method of FIG. 4B then returns to the method portion shown in FIG. 4A (block 432), and proceeds to test processor operation at the new, higher processor clock rate fn, as previously described.
  • As illustrated in FIGS. 4A and 4B and described above, a representative embodiment of the present invention may begin processor clock rate calibration following power-up/reset/reboot of a processor performing self-calibration, but before normal operation of the processor for its intended use begins.
  • FIG. 5 shows a flowchart 500 of an exemplary method of self-calibrating a processor clock rate of a processor such as, for example, the processors 110, 120 of FIGS. 1 and 2, during normal operation of the processor for its intended use, in accordance with a representative embodiment of the present invention. The method shown in FIG. 5 may be used in addition to the method shown in FIGS. 4A and 4B. The method of FIG. 5 begins following power-up and/or reset/reboot of a processor such as, for example, the processors 110, 210 shown in FIGS. 1 and 2. As a first action, the method of FIG. 5 may establish an initial processor clock rate fn for normal operation of the processor for its intended use (block 512). An index representing the initial processor clock rate may be retrieved from non-volatile memory such as, for example, the NV memory 140, 240 of FIGS. 1 and 2, having been determined during an earlier calibration process such as that described above with respect to FIGS. 4A and 4B. The method of FIG. 5 then begins measurement of a time interval of processor error-free operation at a processor clock rate of fn (block 514), and commences performance of normal processor operations for its intended use (block 516). If it is determined that a processor error has occurred (block 518), the method of FIG. 5 may set the processor clock rate to the nominal processor clock rate f1 specified by the manufacturer for proper processor operation at all rated temperatures and supply voltages (block 520). In a representative embodiment of the present invention, a processor error may be defined as a processor circuit malfunction that occurs when operating at a processor clock rate in excess of the nominal processor clock rate f1. Next, the method of FIG. 5 may save the measured processor error-free operating interval at fn in non-volatile memory (block 522). A representative embodiment of the present invention may also save the current operating temperature in non-volatile memory, as well (block 524). The method may then determine a “good” processor clock rate and index, using temperature and processor error-free operating interval information and processor device characteristics, stored in the non-volatile memory (block 526). The newly determined “good” processor clock rate index may then be saved in non-volatile memory (block 528), and the processor clock rate may be set to the “good” processor clock rate (block 530). The method of FIG. 5 may then return the processor to normal operation for its intended use (block 516).
  • Aspects of the present invention may be observed in an electronic device comprising a processor circuit operating at a processor clock rate determined by a programmable clock source under control of the processor circuit. The device may also comprise a non-volatile memory communicatively coupled to the processor circuit. In addition, the device may comprise a real time clock circuit for determining elapsed time, and the real time clock circuit may be communicatively coupled to the processor circuit. The processor circuit may automatically determine a maximum reliable processor clock rate by adjusting the processor clock rate in response to detection of processor circuit operational errors. A representative embodiment of the present invention may comprise a temperature sensing circuit communicatively coupled to the processor circuit. The maximum reliable clock rate may be stored in the non-volatile memory, and the non-volatile memory may comprise temperature related operating characteristics of the processor circuit. In some representative embodiments of the present invention, the automatic determination of processor clock rate may be performed subsequent to power-up of the central processor circuit, and prior to commencing operation of the central processing circuit in its primary function. In other representative embodiments of the present invention, the automatic determination of processor clock rate may be performed during operation of the computer processing circuit for its intended use. The programmable clock source may be disposed on the same integrated circuit as the processor circuit. The processor circuit may comprise a microprocessor core, and the processor circuit may comprise a digital signal processor core.
  • Additional aspects of the present invention may be seen in a self-calibrating method of optimizing a processor clock rate of an electronic device. Such a method may comprise detecting an operational error of the electronic device, and measuring a time interval of error free operation of the electronic device. The method may comprise determining a new processor clock rate based upon the measured time interval of error free operation and the current processor clock rate, and setting the current processor clock rate to the new processor clock rate. The determining may comprise selecting a new processor clock rate relatively lower than the current processor clock rate, if the determined time interval is less than a first threshold, and selecting a new processor clock rate relatively higher that the current processor clock rate, if the determined time interval is greater that a second threshold. The first and second thresholds may be different.
  • In a representative embodiment of the present invention, the method may also comprise establishing a current processor clock rate at an initial processor clock rate. The establishing may comprise retrieving a processor clock rate from non-volatile memory. The establishing may also comprise setting the current processor clock rate to a nominal processor clock rate, if the retrieved processor clock rate is not valid, and setting the current processor clock rate to the retrieved processor clock rate, if the retrieved processor clock rate is valid. The new processor clock rate may be determined using temperature related operating characteristics of the data processing device that are stored in non-volatile memory. Setting the current processor clock rate may comprise storing the current processor clock rate in non-volatile memory, and setting the current processor clock rate to the new processor clock rate. The electronic device may comprise a microprocessor core, and the electronic device may comprise a digital signal processor core.
  • Yet other aspects of the present invention may be found in a machine-readable storage having stored thereon a computer program having a plurality of code sections for performing a self-calibrating method of optimizing a processor clock rate of an electronic device. The code sections may be executable by a machine for causing the machine to perform the operations comprising detecting an operational error of the electronic device, and measuring a time interval of error free operation of the electronic device. The operations may also comprise determining a new processor clock rate based upon the measured time interval of error free operation and the current processor clock rate, and setting the current processor clock rate to the new processor clock rate. The determining may comprise selecting a new processor clock rate relatively lower than the current processor clock rate, if the determined time interval is less than a first threshold, and selecting a new processor clock rate relatively higher that the current processor clock rate, if the determined time interval is greater that a second threshold. In a representative embodiment of the present invention, the first and second thresholds may be different.
  • In various representative embodiments of the present invention, the code sections executable by a machine may further cause the machine to perform the operations comprising establishing a current processor clock rate at an initial processor clock rate. The establishing may comprise retrieving a processor clock rate from non-volatile memory. The establishing may also comprise setting the current processor clock rate to a nominal processor clock rate, if the retrieved processor clock rate is not valid, and setting the current processor clock rate to the retrieved processor clock rate, if the retrieved processor clock rate is valid. The new processor clock rate may be determined using temperature related operating characteristics of the data processing device that are stored in non-volatile memory. In a representative embodiment of the present invention, setting the current processor clock rate may comprise storing the current processor clock rate in non-volatile memory, and setting the current processor clock rate to the new processor clock rate. The electronic device may comprise a microprocessor core, and the electronic device may comprise a digital signal processor core.
  • Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
  • The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
  • While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.

Claims (16)

1-30. (canceled)
31. An electronic device comprising:
a processor circuit operating at a processor clock rate determined by a programmable clock source under control of the processor circuit, the processor circuit communicatively coupled to a non-volatile memory and to a real time clock circuit for determining elapsed time,
wherein the processor circuit is arranged to:
set an initial processor clock rate upon power-up of the processor circuit, using contents of the non-volatile memory;
detect processor circuit operational errors during operation of the electronic device for its intended use; and
automatically adjust the processor clock rate during operation of the electronic device for its intended use, according to a measurement of a time interval free of processor circuit operational errors.
32. The device of claim 31 further comprising:
a temperature sensing circuit communicatively coupled to the processor circuit.
33. The device of claim 31 wherein setting the initial processor clock rate comprises testing a range of clock rates to determine a maximum reliable processor clock rate.
34. The device of claim 33 wherein the maximum reliable processor clock rate is stored in the non-volatile memory.
35. The device of claim 31 wherein setting the initial processor clock rate comprises retrieving a processor clock rate from the non-volatile memory.
36. The device of claim 35 wherein the initial processor clock rate is set to a nominal clock rate, if the retrieved processor clock rate is invalid.
37. The device of claim 31 wherein the non-volatile memory comprises temperature related operating characteristics of the processor circuit.
38. The device of claim 37 wherein the temperature related operating characteristics of the processor circuit are determined during manufacture of the processor circuit.
39. The device of claim 31 wherein adjusting the processor clock rate comprises increasing the processor clock rate, if the measurement of the time interval free of processor circuit operational errors is above a first threshold, and decreasing the processor clock rate, if the measurement of the time interval free of processor circuit operational errors is below a second threshold.
40. The device of claim 31 wherein the adjusted processor clock rate is stored in the non-volatile memory.
41. The device of claim 31 wherein the programmable clock source is disposed on the same integrated circuit as the processor circuit.
42. The device of claim 31 wherein the non-volatile memory is disposed on the same integrated circuit as the processor circuit.
43. The device of claim 31 wherein the programmable clock source and the non-volatile memory are disposed on the same integrate circuit as the processor circuit.
44. The device of claim 31 wherein the processor circuit comprises a microprocessor core.
45. The device of claim 31 wherein the processor circuit comprises a digital signal processor core.
US12/689,892 2006-02-07 2010-01-19 Mips recovery technique Abandoned US20100122109A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/689,892 US20100122109A1 (en) 2006-02-07 2010-01-19 Mips recovery technique

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/348,689 US7650527B2 (en) 2006-02-07 2006-02-07 MIPS recovery technique
US12/689,892 US20100122109A1 (en) 2006-02-07 2010-01-19 Mips recovery technique

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/348,689 Continuation US7650527B2 (en) 2006-02-07 2006-02-07 MIPS recovery technique

Publications (1)

Publication Number Publication Date
US20100122109A1 true US20100122109A1 (en) 2010-05-13

Family

ID=38335384

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/348,689 Expired - Fee Related US7650527B2 (en) 2006-02-07 2006-02-07 MIPS recovery technique
US12/689,892 Abandoned US20100122109A1 (en) 2006-02-07 2010-01-19 Mips recovery technique

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/348,689 Expired - Fee Related US7650527B2 (en) 2006-02-07 2006-02-07 MIPS recovery technique

Country Status (1)

Country Link
US (2) US7650527B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140176581A1 (en) * 2012-12-21 2014-06-26 Jeremy J. Shrall Controlling configurable peak performance limits of a processor
US9152518B2 (en) 2012-01-19 2015-10-06 International Business Machines Corporation In situ processor re-characterization

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577859B2 (en) * 2004-02-20 2009-08-18 International Business Machines Corporation System and method of controlling power consumption in an electronic system by applying a uniquely determined minimum operating voltage to an integrated circuit rather than a predetermined nominal voltage selected for a family of integrated circuits
US7685441B2 (en) * 2006-05-12 2010-03-23 Intel Corporation Power control unit with digitally supplied system parameters
US20090204856A1 (en) * 2008-02-08 2009-08-13 Sinclair Colin A Self-service terminal
US8909962B2 (en) * 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9563250B2 (en) * 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
US9128705B2 (en) * 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8429441B2 (en) 2010-04-19 2013-04-23 International Business Machines Corporation Operating processor below maximum turbo mode frequency by sending higher than actual current amount signal to monitor
US9128720B2 (en) * 2011-07-14 2015-09-08 Qualcomm Incorporated Methods and apparatus for voltage scaling
US9494996B2 (en) * 2013-03-15 2016-11-15 Intel Corporation Processor having frequency of operation information for guaranteed operation under high temperature events
US10558699B2 (en) 2017-01-06 2020-02-11 Oracle International Corporation Cloud migration of file system data hierarchies

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382366B1 (en) * 2003-10-21 2008-06-03 Nvidia Corporation Method, apparatus, system, and graphical user interface for selecting overclocking parameters of a graphics system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4408291A (en) * 1979-06-15 1983-10-04 M. Wile & Company, Inc. Point-of-manufacture data acquisition system
US5839096A (en) * 1997-03-10 1998-11-17 Hittite Microwave Corporation Self-implementing diagnostic system
US5978929A (en) * 1997-03-20 1999-11-02 International Business Machines Corporation Computer unit responsive to difference between external clock period and circuit characteristic period
US6172611B1 (en) * 1998-10-19 2001-01-09 Telcom Semiconductor, Inc. Independent hardware thermal sensing and monitoring
US6535986B1 (en) * 2000-03-14 2003-03-18 International Business Machines Corporation Optimizing performance of a clocked system by adjusting clock control settings and clock frequency
US6587800B1 (en) * 2000-06-30 2003-07-01 Intel Corporation Reference timer for frequency measurement in a microprocessor
JP3633497B2 (en) * 2001-03-22 2005-03-30 三菱電機株式会社 Receiver for performing frequency error estimation and method for estimating frequency error
US6857066B2 (en) * 2001-11-16 2005-02-15 Intel Corporation Apparatus and method to identify the maximum operating frequency of a processor
US7085993B2 (en) * 2002-07-29 2006-08-01 International Business Machine Corporation System and method for correcting timing signals in integrated circuits
GB2395625B (en) * 2002-11-20 2005-01-12 Toshiba Res Europ Ltd Reduced power consumption signal processing methods and apparatus
TWI240206B (en) * 2003-10-31 2005-09-21 Via Tech Inc Power management for processor and optimization method for bus
US7062628B2 (en) * 2004-09-28 2006-06-13 Hitachi, Ltd. Method and apparatus for storage pooling and provisioning for journal based storage and recovery
US7685333B2 (en) * 2005-03-22 2010-03-23 Sigmatel, Inc Method and system for communicating with memory devices utilizing selected timing parameters from a timing table
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7469366B1 (en) * 2005-12-13 2008-12-23 Nvidia Corporation Measurement of health statistics for a high-speed interface
US8423832B2 (en) * 2006-11-07 2013-04-16 Hewlett-Packard Development Company, L.P. System and method for preventing processor errors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382366B1 (en) * 2003-10-21 2008-06-03 Nvidia Corporation Method, apparatus, system, and graphical user interface for selecting overclocking parameters of a graphics system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152518B2 (en) 2012-01-19 2015-10-06 International Business Machines Corporation In situ processor re-characterization
US9176837B2 (en) 2012-01-19 2015-11-03 International Business Machines Corporation In situ processor re-characterization
US20140176581A1 (en) * 2012-12-21 2014-06-26 Jeremy J. Shrall Controlling configurable peak performance limits of a processor
US9075556B2 (en) * 2012-12-21 2015-07-07 Intel Corporation Controlling configurable peak performance limits of a processor
US9086834B2 (en) * 2012-12-21 2015-07-21 Intel Corporation Controlling configurable peak performance limits of a processor
US9671854B2 (en) 2012-12-21 2017-06-06 Intel Corporation Controlling configurable peak performance limits of a processor

Also Published As

Publication number Publication date
US7650527B2 (en) 2010-01-19
US20070186128A1 (en) 2007-08-09

Similar Documents

Publication Publication Date Title
US7650527B2 (en) MIPS recovery technique
US9407262B2 (en) Dynamic voltage and frequency management
US6882963B1 (en) Computer system monitoring
US7400996B2 (en) Use of I2C-based potentiometers to enable voltage rail variation under BMC control
US20090150721A1 (en) Utilizing A Potentially Unreliable Memory Module For Memory Mirroring In A Computing System
US7437258B2 (en) Use of I2C programmable clock generator to enable frequency variation under BMC control
US9117011B2 (en) Characterization and functional test in a processor or system utilizing critical path monitor to dynamically manage operational timing margin
US8276018B2 (en) Non-volatile memory based reliability and availability mechanisms for a computing device
US10789148B2 (en) Electronic device and method for event logging
CN111459557B (en) Method and system for shortening starting time of server
US11520658B2 (en) Non-volatile memory on chip
US20050240830A1 (en) Multiprocessor system, processor device
US11462294B2 (en) Mission mode Vmin prediction and calibration
JP2001014113A (en) Disk device fault detection system
US8120379B2 (en) Operating characteristic measurement device and methods thereof
JP2000276366A (en) Data processor and its data processing method
JP3421511B2 (en) Clock delay control device
CN112099980A (en) Server and control method of error event record loading function
CN111666185A (en) Method for generating BIOS change record
US20170176527A1 (en) Early detection of reliability degradation through analysis of multiple physically unclonable function circuit codes
WO2007026405A1 (en) Information processor for measuring operating time
JP2001339291A (en) Data count processing apparatus

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

AS Assignment

Owner name: BROADCOM CORPORATION, CALIFORNIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001

Effective date: 20170119