US20160085285A1 - Power consumption management - Google Patents
Power consumption management Download PDFInfo
- Publication number
- US20160085285A1 US20160085285A1 US14/920,662 US201514920662A US2016085285A1 US 20160085285 A1 US20160085285 A1 US 20160085285A1 US 201514920662 A US201514920662 A US 201514920662A US 2016085285 A1 US2016085285 A1 US 2016085285A1
- Authority
- US
- United States
- Prior art keywords
- subcircuit
- execution
- circuit
- instruction
- power
- 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
Links
- 230000001360 synchronised effect Effects 0.000 claims abstract description 63
- 238000000034 method Methods 0.000 claims abstract description 14
- 230000004044 response Effects 0.000 claims description 106
- 238000012360 testing method Methods 0.000 claims description 34
- 230000009471 action Effects 0.000 claims description 4
- 238000005457 optimization Methods 0.000 description 156
- 238000012544 monitoring process Methods 0.000 description 42
- 238000011084 recovery Methods 0.000 description 41
- 238000003860 storage Methods 0.000 description 31
- 238000004891 communication Methods 0.000 description 29
- 230000008901 benefit Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 15
- 244000122871 Caryocar villosum Species 0.000 description 11
- 230000007423 decrease Effects 0.000 description 10
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 239000002245 particle Substances 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000005096 rolling process Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000003306 harvesting Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000003213 activating effect Effects 0.000 description 4
- 230000004075 alteration Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000003466 anti-cipated effect Effects 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 2
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241000920340 Pion Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013398 bayesian method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present application is related to and/or claims the benefit of the earliest available effective filing date(s) from the following listed application(s) (the “Priority Applications”), if any, listed below (e.g., claims earliest available priority dates for other than provisional patent applications or claims benefits under 35 USC ⁇ 119(e) for provisional patent applications, for any and all parent, grandparent, great-grandparent, etc. applications of the Priority Application(s)).
- the present application is related to the “Related Applications,” if any, listed below.
- An embodiment provides a system.
- the system includes a power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit.
- the system also includes a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the system may include the circuit.
- the circuit, the power module, and the scheduler module may be formed on a single chip.
- the system includes a circuit including a first subcircuit and a second subcircuit.
- the system includes a monitor circuit for determining respective indicia of power consumption by the first subcircuit and by the second subcircuit to execute a test operation.
- the system also includes a manager circuit for scheduling an execution task to a subcircuit selected from the first subcircuit and the second subcircuit.
- the subcircuit is selected based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the system may include a computing device having the circuit that includes a first subcircuit and a second subcircuit.
- the system may include a power supply configured to electrically couple with a portable power source and operable to provide power to the circuit.
- a further embodiment provides a method.
- the method includes determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the method also includes directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit.
- the selection includes a selection based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit.
- An embodiment provides a device.
- the device includes means for determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the device also includes means for directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit.
- FIG. 1 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 2 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 3 partially illustrates an association between optimization information and a program and/or data
- FIG. 4 illustrates an exemplary operational flow in which embodiments may be implemented
- FIG. 5 illustrates an alternative embodiment of the exemplary operational flow of FIG. 4 ;
- FIG. 6 illustrates another alternative embodiment of the exemplary operational flow of FIG. 4 ;
- FIG. 7 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 8 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 9 illustrates an exemplary operational flow implemented in a hardware device and in which embodiments may be implemented.
- FIG. 10 illustrates an alternative embodiment of the exemplary operational flow of FIG. 9 ;
- FIG. 11 illustrates another alternative embodiment of the exemplary operational flow of FIG. 9 ;
- FIG. 12 illustrates a further alternative embodiment of the exemplary operational flow of FIGS. 9 and 11 ;
- FIG. 13 illustrates an alternative embodiment of the exemplary operational flow of FIGS. 9 and 11 ;
- FIG. 14 illustrates another alternative embodiment of the exemplary operational flow of FIGS. 9 and 11 ;
- FIG. 15 illustrates another alternative embodiment of the exemplary operational flow of FIG. 9 ;
- FIG. 16 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 17 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 18 illustrates an exemplary operational flow that may implement embodiments
- FIG. 19 illustrates an alternative embodiment of the exemplary operational flow of FIG. 18 ;
- FIG. 20 illustrates an alternative embodiment of the exemplary operational flow of FIG. 18 ;
- FIG. 21 illustrates an alternative embodiment of the exemplary operational flow of FIG. 18 ;
- FIG. 22 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 23 illustrates a partial view of an exemplary computing environment that includes a computer processor-error controller in which embodiments may be implemented;
- FIG. 24 illustrates a partial view of an exemplary computerized device 1200 in which embodiments may be implemented
- FIG. 25 illustrates an exemplary operational flow that may implement embodiments
- FIG. 26 illustrates another embodiment of the exemplary operational flow of FIG. 25 ;
- FIG. 27 illustrates another embodiment of the exemplary operational flow of FIG. 25 ;
- FIG. 28 illustrates another embodiment of the exemplary operational flow of FIG. 25 ;
- FIG. 29 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 30 illustrates a partial view of a controller apparatus in which embodiments may be implemented
- FIG. 31 includes a graphical illustration of an anticipated performance of a processor in which embodiments may be implemented
- FIG. 32 illustrates a partial view of a computerized apparatus in which embodiments may be implemented
- FIG. 33 illustrates an exemplary operational flow that may implement embodiments
- FIG. 34 illustrates an alternative embodiment of the exemplary operational flow of FIG. 33 ;
- FIG. 35 illustrates an alternative embodiment of the exemplary operational flow of FIG. 33 ;
- FIG. 36 illustrates a partial view of a computerized apparatus in which embodiments may be implemented
- FIG. 37 illustrates a partial view of a computing system in which embodiments may be implemented
- FIG. 38 illustrates an exemplary operational flow implemented in a computerized system
- FIG. 39 illustrates an alternative embodiment of the exemplary operational flow of FIG. 38 ;
- FIG. 40 illustrates another alternative embodiment of the exemplary operational flow of FIG. 38 ;
- FIG. 41 illustrates another alternative embodiment of the exemplary operational flow of FIG. 38 ;
- FIG. 42 illustrates another alternative embodiment of the exemplary operational flow of FIG. 38 ;
- FIG. 43 illustrates an exemplary device in which embodiments may be implemented
- FIG. 44 illustrates an exemplary system that includes synchronous circuit having at least two subcircuit blocks in which embodiments may be implemented
- FIG. 45 illustrates an exemplary system that includes a portion of a synchronous circuit having at least two circuit blocks in which embodiments may be implemented;
- FIG. 46 illustrates an exemplary system that includes a synchronous multicore circuit having at least two subcircuit blocks in which embodiments may be implemented;
- FIG. 47 illustrates an exemplary operational flow
- FIG. 48 illustrates an alternative embodiment of the exemplary operational flow of FIG. 47 ;
- FIG. 49 illustrates another alternative embodiment of the exemplary operational flow of FIG. 47 ;
- FIG. 50 illustrates a further alternative embodiment of the exemplary operational flow of FIG. 47 ;
- FIG. 51 illustrates a partial view of an exemplary device in which embodiments may be implemented
- FIG. 52 illustrates a partial view of an exemplary environment in which embodiments may be implemented
- FIG. 53 illustrates an exemplary system in which embodiments may be implemented
- FIG. 54 illustrates an exemplary operational flow
- FIG. 55 illustrates an alternative embodiment of the exemplary operational flow of FIG. 54 ;
- FIG. 56 illustrates an alternative embodiment of the exemplary operational flow of FIG. 54 ;
- FIG. 57 illustrates an alternative embodiment of the exemplary operational flow of FIG. 54 ;
- FIG. 58 illustrates an alternative embodiment of the exemplary operational flow of FIG. 54 ;
- FIG. 59 illustrates an exemplary apparatus in which embodiments may be implemented
- FIG. 60 illustrates an exemplary system in which embodiments may be implemented
- FIG. 61 illustrates an exemplary system in which embodiments may be implemented
- FIG. 62 illustrates an exemplary operational flow
- FIG. 63 illustrates an alternative embodiment of the exemplary operational flow of FIG. 62 ;
- FIG. 64 illustrates another alternative embodiment of the exemplary operational flow of FIG. 62 .
- FIG. 65 illustrates an exemplary embodiment of a device.
- FIG. 1 illustrates an exemplary general-purpose computing system in which embodiments may be implemented, shown as a computing system environment 100 .
- Components of the computing system environment 100 may include, but are not limited to, a computing device 110 having a processing unit 120 , a system memory 130 , and a system bus 121 that couples various system components including the system memory to the processing unit 120 .
- the system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, also known as Mezzanine bus.
- ISA Industry Standard Architecture
- MCA Micro Channel Architecture
- EISA Enhanced ISA
- VESA Video Electronics Standards Association
- PCI Peripheral Component Interconnect
- Computer-readable media may include any media that can be accessed by the computing device 110 and include both volatile and nonvolatile media, removable and non-removable media.
- Computer-readable media may include computer storage media and communications media.
- Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
- Computer storage media include, but are not limited to, random-access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, or other memory technology, CD-ROM, digital versatile disks (DVD), or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computing device 110 .
- Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communications media include wired media such as a wired network and a direct-wired connection and wireless media such as acoustic, RF, optical, and infrared media. Combinations of any of the above should also be included within the scope of computer-readable media.
- the system memory 130 includes computer storage media in the form of volatile and nonvolatile memory such as ROM 131 and RAM 132 .
- a basic input/output system (BIOS) 133 containing the basic routines that help to transfer information between elements within the computing device 110 , such as during start-up, is typically stored in ROM 131 .
- RAM 132 typically contains data and program modules that are immediately accessible to or presently being operated on by processing unit 120 .
- FIG. 1 illustrates an operating system 134 , application programs 135 , other program modules 136 , and program data 137 . Often, the operating system 134 offers services to applications programs 135 by way of one or more application programming interfaces (APIs) (not shown).
- APIs application programming interfaces
- an information store may include a computer storage media.
- the computing device 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media products.
- FIG. 1 illustrates a non-removable non-volatile memory interface (hard disk interface) 140 that reads from and writes to non-removable, non-volatile magnetic media, a magnetic disk drive 151 that reads from and writes to a removable, non-volatile magnetic disk 152 , and an optical disk drive 155 that reads from and writes to a removable, non-volatile optical disk 156 such as a CD ROM.
- hard disk interface hard disk interface
- removable/nonremovable, volatile/non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tape, solid state RAM, and solid state ROM.
- the hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface, such as the interface 140
- magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable non-volatile memory interface, such as interface 150 .
- the drives and their associated computer storage media discussed above and illustrated in FIG. 1 provide storage of computer-readable instructions, data structures, program modules, and other data for the computing device 110 .
- hard disk drive 141 is illustrated as storing an operating system 144 , application programs 145 , other program modules 146 , and program data 147 .
- these components can either be the same as or different from the operating system 134 , application programs 135 , other program modules 136 , and program data 137 .
- the operating system 144 , application programs 145 , other program modules 146 , and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies.
- a user may enter commands and information into the computing device 110 through input devices such as a microphone 163 , keyboard 162 , and pointing device 161 , commonly referred to as a mouse, trackball, or touch pad.
- Other input devices may include a joystick, game pad, satellite dish, and scanner.
- These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
- a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190 .
- computers may also include other peripheral output devices such as speakers 197 and printer 196 , which may be connected through an output peripheral interface 195 .
- the computing system environment 100 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180 .
- the remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computing device 110 , although only a memory storage device 181 has been illustrated in FIG. 1 .
- the logical connections depicted in FIG. 1 include a local area network (LAN) 171 and a wide area network (WAN) 173 , but may also include other networks such as a personal area network (PAN) (not shown).
- LAN local area network
- WAN wide area network
- PAN personal area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the computing system environment 100 When used in a LAN networking environment, the computing system environment 100 is connected to the LAN 171 through a network interface or adapter 170 .
- the computing device 110 When used in a WAN networking environment, the computing device 110 typically includes a modem 172 or other means for establishing communications over the WAN 173 , such as the Internet.
- the modem 172 which may be internal or external, may be connected to the system bus 121 via the user input interface 160 , or via another appropriate mechanism.
- program modules depicted relative to the computing device 110 may be stored in a remote memory storage device.
- FIG. 1 illustrates remote application programs 185 as residing on computer storage medium 181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- FIG. 1 is intended to provide a brief, general description of an illustrative and/or suitable exemplary environment in which embodiments may be implemented.
- An exemplary system may include the computing system environment 100 of FIG. 1 .
- FIG. 1 is an example of a suitable environment and is not intended to suggest any limitation as to the structure, scope of use, or functionality of an embodiment.
- a particular environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in an exemplary operating environment. For example, in certain instances, one or more elements of an environment may be deemed not necessary and omitted. In other instances, one or more other elements may be deemed necessary and added.
- Embodiments may be implemented with numerous other general-purpose or special-purpose computing devices and computing system environments or configurations.
- Examples of well-known computing systems, environments, and configurations that may be suitable for use with an embodiment include, but are not limited to, personal computers, handheld or laptop devices, personal digital assistants, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network, minicomputers, server computers, game server computers, web server computers, mainframe computers, and distributed computing environments that include any of the above systems or devices.
- Embodiments may be described in a general context of computer-executable instructions, such as program modules, being executed by a computer.
- program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types.
- An embodiment may also be practiced in a distributed computing environment where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media including memory storage devices.
- FIG. 2 illustrates a partial view of an exemplary device 200 in which embodiments may be implemented.
- the device includes a processor 210 , an execution-optimization synthesizer 250 , and a communications link 240 exposed to the execution-optimization synthesizer and to the processor.
- the processor may include any processing unit, and may be described as a central processing unit that controls operation of a computer, such as for example, the processing unit 120 described in conjunction with FIG. 1 .
- the device may also include a hardware resource 220 interconnected with the processor.
- the hardware resource may be any hardware resource associated and/or interconnected with the processor.
- the hardware resource may include one or more caches, illustrated as a cache A ( 222 ), a cache B ( 224 ), and through a cache N ( 226 ). Also, the hardware resource may include a branch predictor (not shown). In another embodiment, the hardware resource 220 may include any other resource associated with the processor, illustrated as other on-chip resource 228 . In a further embodiment, the hardware resource includes an off-chip resource, illustrated as an off-chip resource 229 .
- the cache A ( 222 ) may be an on-chip L1 cache and the off-chip resource 229 may be an off-chip cache, such as an off-chip L2 cache.
- the processor 210 includes a processor operable to execute an instruction set.
- the instruction set may include a collection of instructions that the processor can execute.
- the instruction set may include an instruction set architecture of the processor.
- the instruction set may include a group of machine instructions and/or computer instructions that the processor can execute.
- the instruction set may be interpreted by the processor.
- the instruction set may include a high-level language, an assembly language, and/or a machine code that the processor can execute, with or without a compiling and/or a translation.
- an instruction may include a functional instruction, a branching instruction, a memory instruction, and/or other instruction that may be executed by a processor.
- an instruction may include a statement or a portion of a statement in a program.
- an instruction may include at least two statements from a program.
- a program may include any type of a program, from several lines of instructions, to an application, and to an operating system.
- an instruction may include a decoded instruction, a translated instruction, a portion of a translated instruction, and/or a micro-operation.
- an instruction may include an instruction block, a basic block, a functional block, and/or an instruction module.
- the execution-optimization synthesizer 250 includes an execution-optimization synthesizer operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set.
- the data may include certain data items, such as datum, byte, bit, and/or a block that are associated together.
- the execution-optimization synthesizer is also operable to generate an execution-optimization information utilizing the collected data from the communications link and corresponding to the execution of at least one instruction of the instruction set.
- the communications link 240 may include at least one of a signal-bearing medium, digital-signal-bearing medium, a light propagation medium, a light propagation medium, an optical fiber, a light guide, a computer readable storage medium, a hardware register, a bus, a memory local to the processor, an interconnection structure, and/or a digital-signal conductor.
- a computer readable storage medium may include a memory and/or a memory system directly accessible by the processor and the execution-optimization synthesizer.
- a digital-signal conductor may include any digital signal conducting structure configured to at least transfer digital signals from the processor to the execution-optimization synthesizer.
- the communications link includes a signal-bearing medium exposed only to an execution-optimization synthesizer and the processor. In a further embodiment, the communications link includes a signal-bearing medium exposed to an execution-optimization synthesizer and the processor, and transparent to software executing on the processor. In another embodiment, the communications link includes a signal-bearing medium exposed to an execution-optimization synthesizer, to the processor, and to software.
- the processor 210 and the communications link 240 reside on a single chip, illustrated as a single chip 201 .
- the processor and the execution-optimization synthesizer 250 reside on a single chip, also illustrated as the single chip 201 .
- the processor, communications link, and the execution-optimization synthesizer are formed on a single chip, illustrated as the single chip 201 .
- the execution-optimization synthesizer 250 includes a hardware implemented execution-optimization synthesizer. In another embodiment, the execution-optimization synthesizer includes a microengine implemented execution-optimization synthesizer.
- the execution-optimization synthesizer 250 operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to collect dynamic data from the communications link that corresponds to a runtime execution of at least one instruction of the instruction set.
- the data collected by the execution-optimization synthesizer includes at least one of an interpreted instruction, a translated instruction, a decoded instruction, a micro-operation corresponding to at least a portion of an instruction, data correlating to the execution of the at least one instruction, a movement of data correlating to an execution of the at least one instruction of the instruction set, a result of an execution of an instruction, a branch outcome of an execution of an instruction, an exception correlating to an execution of an instruction, a store-to-load dependency correlating an execution of an instruction, a predicted value correlating to an execution of an instruction, and/or a relationship between at least two instructions of the instruction set.
- the execution-optimization synthesizer 250 operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to collect at least one of data transparent to a user, data visible to a user, data transparent to software executing on the processor, data visible to software executing on the processor, and/or data exposed for user manipulation.
- the execution-optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data includes an execution-optimization synthesizer operable to generate an optimization information that is at least one of responsive to the collected data, derived from the collected data, associated with the collected data, and/or using the collected data.
- the execution-optimization synthesizer operable to generate an execution-optimization information corresponding to the execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to generate at least one of an execution-environment optimization information, a processor-environment optimization information, a data-environment optimization information, and/or a metadata reporting an execution environment.
- an execution-environment optimization information may include an indication that an identified micro-op is used frequently and may be advantageously saved in a memory close to the processor 210 .
- Another execution-environment optimization may include one or more versions of the at least one instruction of the instruction set that provides some expected benefit over the original at least one instruction of the instruction set.
- a memory management system serving the processor may cause one of the versions to be executed transparently instead of the original at least one instruction of the instruction set, such as through a translation lookaside buffer.
- metadata reporting an execution environment may include tracking information with respect to data objects.
- certain access predictors may work well with certain data objects, or some objects do not appear to be co-resident in the cache, or may be highly co-resident, or certain pointers in object-orientated systems typically point to specific object types, or specific value predictors have worked well with some data in the past.
- the execution-optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data may include an execution-optimization synthesizer operable to generate an execution-optimization information optimizing data handling, which may be by a data class.
- a data class may include certain data items (datum, byte, bit, a block, a page) that are used once and never again.
- a data class may include certain data items are used constantly but never written and/or infrequently written.
- certain data items may be constantly read and written to, or other data items may be often being written but never read.
- the execution-optimization synthesizer operable to generate an execution-optimization information may predict how a data class will likely be used in the future and/or saves the data items in a manner and/or a location that substantially optimizes utilization of the data items by an instruction group and/or storage of the data items by the computing device. Any suitable type of predictive algorithm providing meaningful results may be used, including a predictive algorithm based on a Bayesian method, and/or a learning algorithm.
- the prediction may be written to a ghost page associated with a piece of data. A prediction may be straight forward if it is known that the data piece will never be written or read. Each data item will expose what its peculiar flavor is. This may be implemented down to the size of a single cache line, or even below the cache line.
- the execution-optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data may include an execution-optimization synthesizer operable to generate an execution-optimization information providing a storage mobility for data items that are associated together in a substantial disequilibrium based upon a shared fate, a shared nature, an entanglement to a page and/or line of similarly handled data.
- the data item may include one or more extra bits (tag) on end of a data item that may indicate its size, nature (written but never read, read but never written, read once in the life of the program, used by at least two threads).
- an indicator may say which code relates with to the data item. This may be used for doing storage assignment.
- the data item includes a semaphore that is used across multiple threads, that should be known and the data item managed accordingly.
- Most data is associated with a particular body of code and assigned to a storage unit together. By watching that, these assignments can be done together between the I-cache and the D-cache.
- the execution-optimization synthesizer 250 further includes an execution-optimization synthesizer operable to save the optimization information.
- the optimization information may be saved close to the processor 210 , for example in an on-chip resource such as the cache A ( 222 ), or in the off-chip resource 229 , such as a system memory or storage medium.
- the execution-optimization synthesizer further includes an execution-optimization synthesizer operable to save the optimization information in an association with the at least one instruction of the instruction set.
- the device 200 includes a computing device, such as for example, the computing device 110 of the computing system environment 100 of FIG. 1 .
- the computing device includes at least one of desktop computing device, a laptop-computing device, a portable computing device, and/or a supercomputing device.
- FIG. 3 partially illustrates an association between optimization information and a program and/or data.
- An instruction set architecture is illustrated as an instruction set architecture 265
- related compiled programs are illustrated as an operating system 272 and an application program 276 .
- the application program 276 may be a compiled application program or a compliable application program.
- Also illustrated is a data set 274 .
- the execution-optimization information generated by the execution-optimization synthesizer 250 may be associated with the at least one instruction of the instruction set of a program, an application, and/or a module that includes the at least one instruction.
- the execution-optimization information generated by the execution-optimization synthesizer may be associated with data received for processing by the execution, data produced by the execution, the at least one instruction of the instruction set that processed the data, and/or other related matter.
- FIG. 3 illustrates certain embodiments of an association of the execution-optimization information with the at least one instruction of the instruction set.
- the ghost pages 282 that include the execution-optimization information pertaining to the operating system 272 may be virtually and/or physically associated in an information storage with the operating system.
- the information storage may include a non-volatile memory structure.
- the ghost pages may be saved in the same file as the operating system.
- the ghost pages may remain in the information storage, or may be, such as for example, also loaded into system memory, or loaded into an inboard memory.
- an execution-optimization information 284 pertaining to a data set 274 is associated in a information storage with the data set.
- an execution-optimization profile 286 is associated in an information storage with an application 276 .
- a ghost page of the ghost pages 282 containing the execution-optimization information may be associated with a selected page of a program or data whose content corresponds to the generation of the execution-optimization information, such as for example, a selected page containing the instruction of the operating system 272 , a selected page containing the data of the data set 274 , and/or a selected page containing the application program 276 .
- data in a ghost page of the ghost pages 282 may indicate that a branch instruction on an identified line of an associated selected page of an application should not be taken.
- a file containing the execution-optimization information 284 may be associated with a file containing the data set.
- the illustrated embodiments of the ghost page 282 , the execution-optimization information 284 , and the execution-optimization profile 286 respectively associated with the operating system 272 , the data 274 , and the application 276 are intended only to be illustrative and are not limiting. In another embodiment for example, the ghost pages 282 may be associated with the application 276 , or the data set 274 .
- FIG. 4 illustrates an exemplary operational flow 300 in which embodiments may be implemented.
- the operational flow may be implemented in the computing system environment 100 of FIG. 1 and/or the device 200 of FIG. 2 .
- the operational flow moves to an accumulation operation 310 .
- the accumulation operation collects data corresponding to an execution of at least one instruction of an instruction set from a processor executing the at least one instruction of an instruction set.
- An enhancement operation 330 creates an execution-optimization information utilizing the collected data corresponding to the execution of at least one instruction of the instruction set and which is usable in another execution of the at least one instruction of an instruction set.
- the operational flow then moves to an end operation.
- FIG. 5 illustrates an alternative embodiment of the exemplary operational flow 300 of FIG. 4 .
- the accumulation operation 310 may include at least one additional operation.
- the at least one additional operation may include an operation 312 and/or an operation 314 .
- the operation 312 collects data corresponding to an execution of at least one instruction of an instruction set from a processor actually executing the at least one instruction of an instruction set.
- the operation 314 collects data corresponding to a runtime execution of at least one instruction of an instruction set from a processor executing the at least one instruction of an instruction set.
- FIG. 6 illustrates another alternative embodiment of the exemplary operational flow 300 of FIG. 4 .
- the enhancement operation 330 may include at least one additional operation.
- the at least one additional operation may include an operation 332 , an operation 334 , an operation 336 , and/or an operation 338 .
- the operation 332 creates a modification of the at least one instruction of the instruction set usable in another execution of the at least one instruction of an instruction set.
- the creating a modification of the at least one instruction may include creating one or more versions of the instruction where each version may provide some expected benefit over the original version, or saving a decoded version of a frequently fetched at least one instruction to save a future decoding of the frequently fetched instruction.
- the operation 334 creates a branch predictor modification usable in another execution of the at least one instruction of an instruction set.
- the operation 336 creates a data format modification usable in another execution of the at least one instruction of an instruction set.
- the operation 338 creates a data layout optimization usable in another execution of the at least one instruction of an instruction set.
- a data layout optimization may include a repacking of data, a compaction of data, and/or a saving of data that may be useful in execution the at least one instruction.
- FIG. 7 illustrates a partial view of an exemplary device 400 in which embodiments may be implemented.
- the device includes a first circuit 410 for collecting data corresponding to a runtime execution of at least one instruction of an instruction set from a communications link that is transparent to software executing on the processor and exposed to a processor having a processor instruction set that includes the instruction set.
- the device also includes a second circuit 420 for creating an execution-optimization information utilizing the collected data corresponding to the execution of at least one instruction of the instruction set and which is usable in another execution of the at least one instruction of an instruction set.
- the second circuit for creating the execution-optimization information includes the first circuit for collecting data corresponding to an execution.
- FIG. 8 illustrates a partial view of an exemplary device 500 in which embodiments may be implemented.
- the device includes a microengine 550 operatively coupled with a processor 510 having an instruction set.
- the processor may include any processor, such as for example, the processing unit 120 described in conjunction with FIG. 1 .
- the processor may be described as a central processing unit that controls operation of a computer.
- the device may include an internal bus 530 providing a parallel data transfer path between the processor and the hardware resource 220 .
- the microengine 550 includes a microengine operable to gather data in a manner transparent to software executing on the processor 510 and corresponding to a runtime execution of at least a portion of the instruction set by the processor.
- the microengine is also operable to create a runtime-based optimization profile utilizing the gathered dynamic data and which is useable in a subsequent execution of the at least of a portion of the instruction set by the processor.
- the microengine 550 may include a microengine operable to gather at least one of dynamic data and/or static data in a manner transparent to software executing on the processor and corresponding to a runtime execution of at least a portion of the instruction set by the processor 510 .
- the device 500 may further include the processor 510 having an instruction set.
- the processor and the microengine 550 are formed on a chip, illustrated as a single chip 501 .
- the device may further include a communications link 540 exposed to the microengine.
- the device may include the communications link exposed to the microengine and transparent to software executing on the processor.
- the device may include the communications link operably coupled to the microengine and to the processor.
- the communications link may include an interconnection structure.
- FIG. 9 illustrates an exemplary operational flow 600 implemented in a hardware device and in which embodiments may be implemented.
- the operational flow may be implemented in the computing system environment 100 of FIG. 1 , and/or the device 500 of FIG. 8 .
- the operational flow moves to a harvesting operation 610 .
- the harvesting operation gathers data corresponding to an execution of at least one instruction of an instruction set by a processor and in a manner transparent to software executing on the processor.
- An improvement operation 630 creates an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one instruction of the instruction set by the processor.
- the execution-based optimization profile may enhance a future execution of the at least one instruction by increasing an efficiency of the execution, reducing cache misses, reducing exceptions, reducing storage used, and/or reducing energy consumed. The operational flow then proceeds to an end operation.
- FIG. 10 illustrates an alternative embodiment of the exemplary operational flow 600 of FIG. 9 .
- the harvesting operation 610 may include at least one additional operation.
- the at least one additional operation may include an operation 612 , an operation 614 , and/or an operation 616 .
- the operation 612 gathers at least one of dynamic data and/or static data in a manner transparent to software executing on the processor and corresponding to an execution of at least one instruction of an instruction set by a processor.
- the operation 614 gathers data in a manner transparent to software executing on the processor and corresponding to a normal execution of at least one instruction of an instruction set by a processor.
- the operation 616 gathers data in a manner transparent to software executing on the processor and corresponding to a runtime execution of at least one instruction of an instruction set by a processor.
- the improvement operation 630 may include at least one additional operation, such as an operation 632 .
- the operation 632 creates an execution-based optimization profile utilizing the gathered data and which is operable to modify a subsequent execution of the at least one instruction of the instruction set by the processor.
- FIG. 11 illustrates another alternative embodiment of the exemplary operational flow 600 of FIG. 9 .
- the operational flow may include at least one additional operation.
- the at least one additional operation may include a modification operation 640 .
- the modification operation changes an execution of the at least one instruction of the instruction set in response to the execution-based optimization profile.
- the modification operation 640 may include at least one additional operation.
- the at least one additional operation may include an operation 642 , an operation 644 , and/or an operation 646 .
- the operation 642 changes a movement of data with respect to the processor in response to the execution-based optimization profile.
- changing a movement of data may include changing a movement of data toward and/or away from the processor.
- Changing a movement of data toward the processor may include a prefetch of data.
- frequently read data may be stored in a memory close to the processor and infrequently read data may be stored in a memory far from the processor.
- frequently written or rewritten data may be stored in a memory close to the processor and infrequently read data may be stored in a memory far from the processor.
- the operation 644 changes a format of data processable by the processor in response to the execution-based optimization profile. For example, the operation 644 may save data translated from one format to another, such as from big-endian to little-endian, or floating-point formats.
- the operation 646 changes a movement of the at least one instruction of the instruction set toward a processor for execution in response to the execution-based optimization profile.
- FIG. 12 illustrates a further alternative embodiment of the exemplary operational flow 600 of FIGS. 9 and 11 .
- the modification operation 640 may include at least one additional operation.
- the at least one additional operation may include an operation 648 , and/or an operation 652 .
- the operation 648 substitutes at least one other instruction of the instruction set for execution by the processor in place of the at least one instruction of the instruction set in response to the execution-based optimization profile.
- the operation 652 substitutes at least one other instruction of the instruction set for the at least one instruction of the instruction set in a static program in response to the execution-based optimization profile.
- FIG. 13 illustrates an alternative embodiment of the exemplary operational flow 600 of FIGS. 9 and 11 .
- the modification operation 640 may include at least one additional operation.
- the at least one additional operation may include an operation 654 .
- the operation 654 executes at least one other instruction of the instruction set in response to the execution-based optimization profile.
- the operation 654 may include at least one additional operation, such as an operation 656 .
- the operation 656 executes at least one other instruction of the instruction set in response to the execution-based optimization profile and omits an execution of the at least one instruction.
- FIG. 14 illustrates another alternative embodiment of the exemplary operational flow 600 of FIGS. 9 and 11 .
- the modification operation 640 may include at least one additional operation.
- the at least one additional operation may include an operation 658 , and/or an operation 662 .
- the operation 658 omits an execution of at least one other instruction of the instruction set in response to the execution-based optimization profile.
- the operation 662 omits an execution of the at least one instruction of the instruction set in response to the execution-based optimization profile.
- FIG. 15 illustrates another alternative embodiment of the exemplary operational flow 600 of FIG. 9 .
- the operational flow may include at least one additional operation, such as the operation 670 .
- the operation 670 saves the execution-based optimization profile.
- the operation 670 may include at least one additional operation, such as the operation 672 .
- the operation 672 saves the execution-based optimization profile in an association with the at least one instruction of the instruction set.
- the operation 672 may include at least one additional operation, such as the operation 674 .
- the operation 674 saves the execution-based optimization profile in an associative cache with the at least one instruction of the instruction set.
- FIG. 16 illustrates a partial view of an exemplary device 700 in which embodiments may be implemented.
- the device includes means 710 for gathering data in a manner transparent to software executing on the processor and corresponding to an execution of at least one machine instruction of an instruction set by the processor.
- the device includes 710 means 720 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor.
- the means 710 includes hardware-implemented means 712 for gathering data in a manner transparent to software executing on a processor and corresponding to an execution of at least one machine instruction of an instruction set by the processor.
- the means 720 may include at least one additional means.
- the at least one additional means may include 720 hardware-implemented means 722 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor.
- the at least one additional means may include software-implemented means 724 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor.
- FIG. 17 illustrates a partial view of an exemplary device 800 in which embodiments may be implemented.
- the device includes an information store 840 operable to save an execution-optimization information 842 , a first processor 810 , and a hardware circuit 850 .
- the hardware circuit includes a circuit for altering an execution of a program by the first processor in response to the execution-optimization information.
- the execution-optimization information includes execution-optimization information created by a hardware device utilizing data collected from a second processor (not shown). The collected data corresponding to a previous runtime execution by the second processor of at least a portion of the program that was transparent to any software executing on the second processor.
- the execution-optimization information 842 may include the execution-optimization information generated by the execution-optimization synthesizer 250 of FIG. 2 .
- the execution-optimization information may include at least one of the ghost pages 272 , the execution-optimization information 274 , and/or the execution-optimization profile 276 described in conjunction with FIGS. 2 and 3 .
- the first processor 810 includes a first processor operable to execute an instruction set and operably coupled to the information store 840 .
- the hardware circuit for altering an execution of a program includes a hardware circuit for altering an execution of a program and operably coupled to the information store.
- the hardware circuit includes a hardware circuit operably coupled to the processor.
- the hardware circuit 850 includes a hardware circuit for copying the execution-optimization information from the information store to a memory operably coupled to the first processor.
- the memory operably coupled to the first processor may include the hardware resource 220 , such as the on-chip cache B 224 , or the off-chip resource 229 , such as an off-chip cache or an outboard memory or an outboard storage.
- the hardware circuit 850 for altering an execution of a program by the first processor 810 in response to the execution-optimization information includes a hardware circuit for causing an alteration of an execution of at least one instruction of an instruction set of a static program by the first processor in response to the execution-optimization information.
- the altering an execution of a program by the first processor in response to the execution-optimization information includes altering an execution of at least one instruction of an instruction set of a dynamic program by the first processor in response to the execution-optimization information.
- the altering an execution of a program by the first processor in response to the execution-optimization information includes altering a context of an execution of a program by the first processor in response to the execution-optimization information.
- the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering an execution of at least one instruction of an instruction set of a program by the first processor in response to the execution-optimization information.
- the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering a movement of data with respect to the first processor in response to the execution-optimization information.
- the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering a movement of at least one instruction of the program toward the first processor in response to the execution-optimization information.
- the altering an execution of a program by the first processor in response to the execution-optimization information may include directly altering an execution of a program by the first processor in response to the execution-optimization information.
- the altering an execution of a program by the first processor in response to the execution-optimization information may include causing an alteration of an execution of a program by the first processor in response to the execution-optimization information.
- the altering an execution of a program by the first processor in response to the execution-optimization information may include initiating an alteration of an execution of a program by the first processor in response to the execution-optimization information.
- the execution-optimization information includes execution-optimization information created by a hardware device (not shown) utilizing data collected from a second processor (not shown) that is at least substantially a same processor as the first processor 810 .
- the execution-optimization information used to alter a current execution of a program by the first processor 810 may have been created during a prior execution of the program by the first processor.
- the execution-optimization information includes an execution-optimization information created by a hardware device utilizing data collected from a second processor that is at least a substantially different processor from the first processor.
- the execution-optimization information used to alter a current execution of a program by the first processor may have been created during a prior execution of the program by a completely different second processor, which may be a processor running in a completely different computing device.
- the information store includes at least a portion of a cache. In another embodiment, the information store includes at least one of an I-cache or a D-cache. In a further embodiment, the information store includes at least one of a volatile memory or a non-volatile memory. In a further embodiment, the information store includes a computer readable medium. In another embodiment, the information store may include a non-volatile outboard storage, such as magnetic disk storage.
- first processor 810 and the hardware circuit 850 are formed on a single chip, illustrated as a single chip 801 .
- the first processor 810 and the information store 840 are formed on a single chip, illustrated as a single chip 801 .
- FIG. 18 illustrates an exemplary operational flow 900 that may implement embodiments.
- the operational flow may be implemented in the computing system environment 100 of FIG. 1 , and/or the device 800 of FIG. 17 .
- the operational flow moves to an instruction determination operation 910 .
- the instruction determination operation identifies an instruction to be fetched for execution by a first processor.
- An optimization operation 920 alters an execution of the instruction to be fetched for execution in response to an execution-optimization information.
- the execution-optimization information 930 was previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor.
- the flow then moves to an end operation.
- FIG. 19 illustrates an alternative embodiment of the exemplary operational flow 900 of FIG. 18 .
- the instruction determination operation 910 may include at least one additional operation, such as an operation 912 .
- the operation 912 identifies an instruction to be fetched from an instruction set of a static program for execution by a first processor.
- the optimization operation 920 may include at least one additional operation, illustrated as the operation 922 .
- the operation 922 alters an execution of the instruction to be fetched from an instruction set of a static program for execution in response to an execution-optimization information.
- FIG. 20 illustrates an alternative embodiment of the exemplary operational flow 900 of FIG. 18 .
- the execution-optimization information 930 may include at least one additional embodiment.
- the at least one additional embodiment may include an execution-optimization information 932 and/or an execution-optimization information 934 .
- the execution-optimization information 932 includes execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor, the second processor being at least a substantially same processor as the first processor.
- the execution-optimization information 934 may include an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor, the second processor being at least a substantially different processor from the first processor.
- the second processor may be a processor of a multiprocessor computing device that includes the first processor.
- the second processor may be a processor of a second computing device that is a separate and a distinct computing device from a first computing device that includes the first processor.
- FIG. 21 illustrates an alternative embodiment of the exemplary operational flow 900 of FIG. 18 .
- the execution-optimization information 930 may include at least one additional embodiment.
- the at least one additional embodiment may include an execution-optimization information 936 , an execution-optimization information 938 , and/or an execution-optimization information 942 .
- the execution-optimization information 936 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a state of the second processor during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor.
- the execution-optimization information 938 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to an instruction state during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor.
- the execution-optimization information 942 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a data relationship during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor.
- FIG. 22 illustrates a partial view of an exemplary device 1000 in which embodiments may be implemented.
- the device includes means 1010 for identifying an instruction to be fetched from an instruction set of a program for execution by a first processor.
- the device also includes means 1020 for altering an execution of the instruction from the instruction set of a program in response to an execution-optimization information.
- the execution-optimization information 1030 having been generated by a hardware device utilizing data generated by a second processor, and which data corresponds to a previous real execution the instruction to be fetched from the instruction set of a program that was transparent to software executing on the second processor.
- FIG. 23 illustrates a partial view of an exemplary computing environment 1100 that includes a computer processor-error controller 1120 in which embodiments may be implemented.
- the computer processor-error controller includes a monitoring circuit 1130 and an error recovery circuit 1140 .
- the monitoring circuit is operable to detect a computational error corresponding to an execution of a second instruction by a processor 1110 operable to execute a sequence of program instructions 1160 .
- the sequence of program instructions includes a first instruction that is fetched before the second instruction.
- the error recovery circuit is operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- a computational error includes an error introduced during computation.
- a computational error includes a setup/hold violation, also known as a setup and hold time requirement violation for a transistor.
- a transistor of the processor 1110 has input requirements.
- a setup and hold time defines a window of time during which the input of the transistor must be valid and stable in order to assure valid data at the output of the transistor.
- Setup is a time that the input must be valid before the transistor samples.
- Hold time is a time the input must be maintained valid while the transistor samples.
- a setup and hold violation may include valid values, but the values occur outside the window of time.
- a setup and hold violation may include an invalid value that occurs within the window of time.
- a computational error includes at least one of a computational error corresponding to a processor clock speed, a processor voltage, a processor temperature, a noise spike, a charged particle, a soft error, an unreliable processor hardware, an incorrectly executed instruction, and/or an electromigration induced error.
- Program instructions are generally fetched in a sequence or order for execution by the processor 1110 .
- a first instruction of the sequence of program instructions 1160 may execute, but a second instruction of the sequence may not execute because of a processor computational error.
- the monitoring circuit 1130 is operable to detect a computational error corresponding to an execution of the second instruction. Rather than losing the entire execution of the sequence of program instructions because of the computational error, the error recovery circuit is operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. Execution of the sequence of program instructions then restarts from the first instruction. Means for designating the first instruction are described below.
- the monitoring circuit 1130 further includes a monitoring circuit implemented in hardware and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. Any technique known by those skilled in the art may be used to implement the monitoring circuit in hardware.
- the monitoring circuit further includes a monitoring circuit implemented in a dynamic implementation verification architecture (DIVA) and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. Examples of a DIVA architecture approach can be found in T.
- DIVA dynamic implementation verification architecture
- the monitoring circuit may includes a hardware implemented monitoring circuit employing a TEATime execution checker algorithm architecture and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction.
- the TEATime execution checker algorithm architecture may also be known as a Timing Error Avoidance system. Examples of a TEATime execution checker algorithm approach can be found in United States patent application entitled SYSTEM AND METHOD OF DIGITAL SYSTEM PERFORMANCE ENHANCEMENT, naming Augustus K. Uht as inventor and published as US 2004/0174944 A1; G. Uht and R. Vaccaro, Adaptive Computing ( .
- Timing Error Avoidance printed on Feb. 6, 2006, and located at http://www.lems.brown.edu/ ⁇ iris/BARC2005/Webpage/BARCpresentations/uht.pdf;
- A. Uht and R. Vaccaro, TEAPC Adaptive Computing and Underclocking in a Real PC , printed on Feb. 6, 2006, and located at http://www.ele.uri.edu/ ⁇ uht/papers/MuRI-TR-20041027.pdf;
- A. Uht, TEAtime Timing Error Avoidance for Performance Enhancement and Environment Adaptation , printed on Feb.
- the monitoring circuit may be implemented in a RAZOR architectural approach.
- RAZOR architectural approach An example of a RAZOR architecture approach can be found in D. Ernst et al., Razor: A Low - Power Pipeline Based on Circuit - Level Timing Speculation , printed on Jul. 7, 2006, and located at http://www.gigascale.org/pubs/426/razor.submit.authors.pdf, which is incorporated herein by reference.
- the monitoring circuit 1130 further includes a hardware implemented monitoring circuit employing another processor (not shown) operable to execute the second instruction substantially in parallel with the processor 1110 .
- the monitoring circuit also is operable to detect a computational error corresponding to an execution of a second instruction by the processor by correlating an output of the processor with the output of the another processor.
- the monitoring circuit further includes a hardware implemented monitoring circuit operable to detect a computational error corresponding to a setup/hold violation occurring in a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction.
- error recovery circuit 1140 includes an error recovery circuit operable to restore an execution of the sequence of program instructions to a logical state associated with the first instruction in response to the detected computational error.
- the error recovery circuit includes an error recovery circuit implemented in at least one of hardware, software, firmware, and/or a microengine, and operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- the error recovery circuit includes an error recovery circuit implemented in software associated with at least one of an operating system or a program executable by the processor and operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- the error recovery circuit detects a computational error and hands off recovery from the error to an operating system that includes the error recovery circuit.
- the error recovery circuit includes an error recovery circuit operable to designate the first instruction as a checkpoint and to restore an execution of the sequence of program instructions to the checkpoint in response to the detected computational error.
- the error recovery circuit includes an error recovery circuit operable to designate the first instruction as an instruction separated from the second instruction by a predetermined number of instructions and to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- a predetermined number of instructions may include a 5K instruction, a 10K instruction, a 25K instruction, or a 50K instruction spacing.
- the error recovery circuit 1140 includes an error recovery circuit operable to select the first instruction corresponding to a checkpoint protocol [periodically taken, equidistant, predetermined number of instructions] and to rollback an execution of the sequence of program instructions to the selected checkpoint in response to the detected computational error.
- the exemplary computing environment 1100 includes the controller 1120 , the processor 1110 , and an information store 1150 .
- the controller and the processor are formed on a single chip 1101 .
- FIG. 24 illustrates a partial view of an exemplary computerized device 1200 in which embodiments may be implemented.
- the computerized device includes a processor 1210 and a controller 1220 .
- the processor is operable to execute a sequence of program instructions 1250 having a fetch order that includes a first instruction that is fetched before a second instruction.
- the controller includes a hardware-implemented execution verification circuit 1230 and an error recovery circuit 1240 .
- the hardware-implemented execution verification circuit is configured for detecting a computational error corresponding to an execution of the second instruction by the processor.
- the error recovery circuit is configured for rolling back an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- the controller further includes a controller that includes an error recovery circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving a rollback of an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- the controller further includes a controller that includes an error recovery circuit implemented in at least one of hardware, software, firmware, and/or microengine for rolling back an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- the processor and the controller are formed on a same chip, illustrated as a chip 1201 .
- the computerized device 1200 further includes the processor 1210 , the controller 1220 , and an information store 1250 .
- FIG. 25 illustrates an exemplary operational flow 1300 that may implement embodiments.
- the operational flow moves to a detecting operation 1310 .
- the detecting operation senses a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- a computational error includes any failure of a processor to perform its intended function.
- a computational error includes an incorrectly executed instruction.
- a computational error includes a computational error occurring in a processor execution path.
- a computational error occurring in the processor execution path may include a error corresponding to a setup/hold violation, a timing error because a clock is running too fast, a voltage error because a processor voltage is too low, a noise spike, a soft error such as a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, and/or a charged particle.
- a charged particle may include a cosmic ray, an alpha particle, a thermal neutron, a neutron, proton, pion, and/or muon.
- a recovery operation 1330 restores an execution of the instruction sequence to a logical state associated with the first instruction in response to the sensed computational error. The operational flow then moves to an end operation.
- the operational flow 1300 may be implemented in the computing system environment 1100 and the computer processor-error controller 1120 of FIG. 23 , and/or in the exemplary computing device 1200 of FIG. 24 .
- FIG. 26 illustrates another embodiment of the exemplary operational flow 1300 of FIG. 25 .
- the detecting operation 1310 may include at least one additional operation.
- the at least one additional operation may include an operation 1312 and/or an operation 1314 .
- the operation 1312 senses a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- the operation 1314 senses an execution path synchronization error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- FIG. 27 illustrates another embodiment of the exemplary operational flow 1300 of FIG. 25 .
- the detecting operation 1310 may include at least one additional operation.
- the at least one additional operation may include an operation 1316 , an operation 1318 , and/or an operation 1319 .
- the operation 1316 senses an error correlating to a voltage applied to a processor and that corresponds to an execution of a second instruction by the processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- the voltage applied to the processor may include a processor core voltage, a processor associated cache voltage, and/or a buffer voltage.
- the operation 1318 senses an error correlating to a processor temperature and corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- the operation 1319 senses at least one of a computational error corresponding to a processor clock speed, a processor voltage, a noise spike, a cosmic particle, a soft error, an unreliable hardware, an incorrectly executed instruction, and/or an electromigration induced error that corresponds to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- FIG. 28 illustrates another embodiment of the exemplary operational flow 1300 of FIG. 25 .
- the recovery operation 1330 may include at least one additional operation.
- the at least one additional operation may include an operation 1332 , and/or an operation 1334 .
- the operation 1332 rolls back an execution of the instruction sequence to a checkpoint corresponding to a logical state associated with the execution of the first instruction in response to the sensed computational error.
- the operation 1334 restores an execution of the instruction sequence to a logical state associated with the first instruction determined by a checkpoint protocol and in response to the sensed computational error.
- FIG. 29 illustrates a partial view of an exemplary device 1400 in which embodiments may be implemented.
- the device includes means 1410 for sensing a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction.
- the device also includes means 1420 for restoring an execution of the instruction sequence to the first instruction in response to the sensed computational error.
- FIG. 30 illustrates a partial view of a controller apparatus 1500 in which embodiments may be implemented.
- the controller apparatus includes a monitoring circuit 1520 , a recovery circuit 1530 , and a control circuit 1540 .
- the monitoring circuit includes a monitoring circuit for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions 1560 by a processor subsystem 1510 having an adjustable operating parameter.
- An adjustable operating parameter may include any adjustable operating parameter of the processor subsystem. Examples include an adjustable clock signal, illustrated as CLK 1514 , and/or an adjustable voltage, illustrated as a voltage Vcc 1516 applied to the processor core 1512 .
- the recovery circuit includes a recovery circuit for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error.
- the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion.
- the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error.
- the monitoring circuit 1520 includes a hardware-implemented monitoring circuit for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions 1560 by a processor subsystem 1510 having an adjustable operating parameter.
- the monitoring circuit includes a monitoring circuit implemented in at least one of hardware, software, firmware, and/or a microengine for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the monitoring circuit includes a monitoring circuit implemented in dynamic implementation verification architecture (DIVA) and for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the monitoring circuit includes a monitoring circuit employing a TEATime execution checker algorithm and for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the recovery circuit 1530 includes a recovery circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for rolling back an execution of the sequence of instructions 1560 to a checkpoint in response to the detected computational error.
- the recovery circuit includes a recovery circuit implemented in software associated with at least one of an operating system or a program executable by the processor subsystem 1510 and for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error.
- the recovery circuit includes a recovery circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving a re-execution of the instruction by the processor subsystem by rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error.
- control circuit 1540 includes a control circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for adjusting the adjustable operating parameter in response to a performance criterion.
- FIG. 31 includes a graphical illustration of an anticipated performance 1570 of a processor in which embodiments may be implemented.
- the graphical illustration includes a state where a processor voltage Vcc essentially equals a constant N.
- the horizontal axis represents an adjustable operating parameter, illustrated as an increasing processor clock rate, and the vertical axis illustrates an increasing time.
- the horizontal axis also illustrates respectfully a manufacturer's specified nominal zero error point MNZEP, an actual nominal zero error point ANZEP, and an optimized error-tolerant operating point OETOP for the processor.
- a variation of FIG. 31 may include a similar graphical illustration of an anticipated processor performance where the horizontal axis illustrates a reciprocal of a processor voltage, such as Vcc. In such embodiment, the clock rate remains constant.
- the manufacturer's nominal zero error point MNZEP reflects a common practice of manufacturers in specifying processor ratings and operating parameters to generally assume a worst-case operating situation, and to set the operating clock rate or frequency at the manufacturer's nominal zero error point MNZEP.
- the manufacturer's nominal zero error point MNZEP may be a point selected to produce a tolerated operating error rate that is very small, for example an operating error rate that is in a range of 10-9 per hour. In other instances, the manufacturer's nominal zero error point MNZEP reflects a manufacturer's practice of labeling a higher speed processor chip as a lower speed processor chip.
- an individual processor can be operated at a higher clock rate than the manufacturer's nominal zero error point MNZEP without exceeding a manufacturer's tolerated operating error rate. Without an ability to recover from timing errors resulting from a clock rate higher than the actual nominal zero error point ANZEP, a computational system is subject to an increased possibility of system failure and data loss/corruption due to the timing errors as clock rate further increases.
- An error rate line ER illustrates an error rate per instruction or per instruction sequence for a processor.
- An execution rate line ET illustrates an execution time per instruction or per instruction sequence for the processor.
- a time for error-corrected execution line TECE illustrates a time for a time for error-corrected execution of an instruction or instruction sequence, and reflects a measure of useful work performed by the processor.
- a time for an error-corrected execution at a particular clock rate in excess of the ANZEP includes a sum of the execution rate line ET and a time to correct erroneous executions because the ANZEP is exceeded.
- the time for error-corrected execution line TECE illustrates this sum and includes an optimal error-tolerant operating portion OETOP, identified as a “0° slope” location.
- running a processor having a computational fault recovery means at the OETOP results in a minimum time for an error-corrected execution of an instruction or instruction sequence.
- the time for error-corrected execution line TECE illustrates a performance criterion.
- the time for error-corrected execution line TECE represents a performance criterion corresponding to an incidence of a detected computational error, illustrated as a selected point (not shown) on the error rate line ER.
- the control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error.
- the performance criterion includes a performance criterion embodied in the time for error-corrected execution line TECE of FIG. 31 .
- the adjusting the adjustable operating parameter in response to a performance criterion may include adjusting a clock rate to achieve a performance criterion of a minimum TECE.
- the performance criterion includes a performance criterion corresponding to an incidence of the detected computational error.
- the adjusting may include adjusting a clock rate to achieve a performance criterion of a target error rate along the ER line, thus achieving a performance criterion of no more than the target error rate.
- control circuit 1540 includes a control circuit implemented in software associated with at least one of an operating system and/or a program executable by the processor subsystem and for adjusting the adjustable operating parameter in response to a performance criterion.
- control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of a detected processor subsystem computational error.
- control circuit includes a control circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving an adjustment of the adjustable operating parameter in response to a performance criterion.
- the control circuit includes a control circuit for adjusting a voltage of the processor subsystem in response to a performance criterion.
- control circuit 1540 includes a control circuit for adjusting a processor subsystem in response to a performance criterion corresponding to an incidence of the detected computational error.
- control circuit includes a control circuit for adjusting a frequency of a timing signal employed by the processor subsystem in response to a performance criterion.
- control circuit includes a control circuit for adjusting a processor subsystem clock in response to a performance criterion corresponding to an incidence of the detected computational error.
- control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to at least one of a single incidence of the detected computational error, an incidence frequency of the detected computational error, an incidence occurrence rate of the detected computational error, an incidence tempo of the detected computational error, an incidence pattern of the detected computational error, or an incidence prevalence of the detected computational error.
- the incidence frequency of the detected computational error may include an incidence frequency over a time of the detected computational error.
- the incidence rate of the detected computational error may include an incidence rate of the detected computational error per execution of an instruction or an instruction sequence.
- the incidence prevalence of the detected computational error may include an incidence distribution of the detected computational error, such as more than X instances occurring within Y instructions of a sequence of Z instructions.
- control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based on a performance criterion substantially minimizing a time required to complete successfully an execution of the sequence of instructions 1560 .
- control circuit includes a control circuit for adjusting the adjustable operating parameter in a substantial conformity with a performance criterion corresponding to
- 0 ⁇ ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ adjustable ⁇ ⁇ operation ⁇ ⁇ parameter .
- FIG. 31 illustrates an embodiment of the above performance criterion at the where the adjustable operating parameter is clock rate at a location where the slope of the line OETOP is zero, i.e., “0° slope line.”
- the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to a substantial minimization of time to complete an execution of the sequence of instructions.
- control circuit 1540 includes a control circuit for adjusting a frequency of the processor subsystem clock signal 1514 based upon a performance criterion corresponding to a substantial minimization of time to complete an execution of the sequence of instructions 1560 .
- control circuit includes a control circuit for adjusting a processor subsystem clock signal frequency in substantial conformity with a performance criterion corresponding to
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ subsystem ⁇ ⁇ clock ⁇ ⁇ frequency .
- control circuit includes a control circuit for adjusting a processor subsystem voltage Vcc 1516 in response to a performance criterion corresponding to a substantial minimization of time to execute the sequence of instructions 1560 .
- control circuit includes a control circuit for adjusting a processor subsystem voltage in substantial conformity with a performance criterion corresponding to
- the performance criterion involving an adjustable processor subsystem voltage may be graphically illustrated in a manner at least substantially similar to the graphical illustration of the performance criterion involving an adjustable clock rate of FIG. 31 .
- control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based upon a performance criterion substantially minimizing an expected time to successfully complete an execution of the sequence of instructions 1560 while at least one other adjustable operating parameter remains substantially constant.
- control circuit includes a control circuit for adjusting the adjustable operating parameter based upon a dynamically-derived performance criterion and an incidence of the detected computational error.
- the control circuit may include an operability to vary a clock rate of a processor subsystem in an environment, dynamically determine corresponding times required for an error-corrected execution of an instruction sequence, and select a clock signal 1514 rate for a subsequent execution according to a performance criterion.
- the performance criterion may include selection of a clock signal rate corresponding to the optimized error-tolerant operating portion OETOP for the processor.
- the performance criterion may include selection of a clock signal rate based upon another portion of the TECE line representing a time for an error-corrected execution of the instruction sequence, such as a 10% lesser clock rate than the optimized error-tolerant operating portion OETOP.
- the dynamically-derived performance criterion includes a dynamically-derived performance criterion having an objective to substantially minimize an expected time to successfully complete an execution of the sequence of instructions.
- control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based upon a performance map and an empirically-based incidence of the detected computational error.
- control circuit includes a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion corresponding to an incidence of the detected computational error.
- control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion embodied in a lookup table and an incidence of the detected computational error.
- the performance criterion embodied in the lookup table includes a performance criterion embodied in a lookup table having an objective to substantially minimize an expected time to execute the sequence of instructions.
- FIG. 32 illustrates a partial view of a computerized apparatus 1600 in which embodiments may be implemented.
- the computerized apparatus includes a processor subsystem 1610 , a sensing module 1620 , a recovery module 1630 , and a control module 1640 .
- the processor subsystem has an adjustable operating parameter and operable to execute a sequence of instructions.
- the sensing module is operable to detect an operating-parameter-induced error in an execution of an instruction of the sequence of instructions 1660 .
- the recovery module is operable to rollback an execution of the sequence of instructions to a checkpoint in response to the detected operating-parameter-induced error.
- the control module is operable to adjust the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected operating-parameter-induced error.
- the sensing module 1620 includes a sensing module operable to detect a computational error in an execution of an instruction of the sequence of instructions 1660 .
- the sensing module includes a sensing module operable to detect an execution path synchronization error in an execution of an instruction of the sequence of instructions.
- the sensing module includes a sensing module operable to detect a clock-induced error in an execution of an instruction of the sequence of instructions.
- the sensing module includes a sensing module operable to detect a processor voltage-induced error in an execution of an instruction of the sequence of instructions.
- the sensing module includes a sensing module implemented in hardware and operable to detect an operating-parameter-induced error in an execution of an instruction of the sequence of instructions.
- the recovery module 1630 includes a recovery module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to rollback an execution of the sequence of instructions to a checkpoint in response to the detected operating-parameter-induced error.
- the processor subsystem 1610 and at least one of the sensing module 1620 , the recovery module 1630 , and/or the control module 1640 are formed on a same chip 1601 .
- control module 1640 includes a control module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to adjust the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected operating-parameter-induced error.
- control module includes a control module operable to adjust the adjustable operating parameter in response to an error-tolerant performance criterion corresponding to an incidence of the detected operating-parameter-induced error.
- FIG. 33 illustrates an exemplary operational flow 1700 that may implement embodiments.
- the operational flow moves to a monitoring operation 1710 .
- the monitoring operation detects a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor having an adjustable operating parameter.
- a restore operation 17201710 rolls back an execution of the sequence of instructions to a checkpoint in response to the detected computational error.
- a tuning operation 1730 1720 changes the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error.
- the flow then proceeds to an end operation.
- FIG. 34 illustrates an alternative embodiment of the exemplary operational flow 1700 of FIG. 33 .
- the tuning operation 1730 may include at least one additional operation, such as the operation 1732 .
- the operation 1732 determines that changing the adjustable processor operating parameter is at least substantially likely to decrease an expected time to successfully complete an execution of the sequence of instructions, and appropriately changing the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error.
- FIG. 35 illustrates an alternative embodiment of the exemplary operational flow 1700 of FIG. 33 .
- the tuning operation 1730 may include at least one additional operation.
- the at least one additional operation may include an operation 1734 , an operation 1736 , and/or an operation 1738 .
- the operation 1734 changes the adjustable processor operating parameter in response to a performance criterion substantially minimizing a time to complete an execution of the sequence of instructions.
- the operation 1736 changes a voltage supplied to the processor in response to a performance criterion corresponding to an incidence of the detected computational error.
- the operation 1738 changes the adjustable processor operating parameter in response to an error-tolerant performance criterion corresponding to an incidence of the detected computational error.
- FIG. 36 illustrates a partial view of a computerized apparatus 1800 in which embodiments may be implemented.
- the computerized apparatus includes means 1810 for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor having an adjustable operating parameter
- the computerized apparatus also includes means 1820 for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error.
- the computerized apparatus further includes means 1830 for changing the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error.
- FIG. 37 illustrates a partial view of a computing system 1900 in which embodiments may be implemented.
- the computing system includes a processor subsystem 1910 , an information store 1950 , and a controller module 1920 .
- the processor subsystem includes an adjustable operating parameter, illustrated as an adjustable clock signal (CLK) 1914 , and/or an adjustable processor voltage (Vcc) 1916 .
- the information store is operable to save a sequence of instructions 1950 .
- the controller module includes a monitor circuit 1930 , and a control circuit 1940 .
- the monitor circuit includes a monitor circuit for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- the control circuit includes a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion.
- the controller module 1920 including a monitor circuit 1930 further includes a controller module including a monitor circuit for detecting an incidence of a computational error corresponding to an execution of an instruction of the sequence of instructions 1960 by the processor subsystem.
- the controller module including a monitor further includes a controller module including a monitor circuit for detecting an incidence of an execution path synchronization error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- the controller module including a monitor circuit includes a controller module including a hardware-implemented monitor circuit for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- the controller module 1920 including a monitor circuit 1930 further includes a controller module including a monitor circuit implemented in at least one of hardware, software, firmware, and/or a microengine for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- the controller module including a monitor circuit further includes a controller module including a monitor circuit implemented in dynamic implementation verification architecture (DIVA) and for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- DIVA dynamic implementation verification architecture
- the controller module including a monitor circuit further includes a controller module including a monitor circuit employing a TEATime execution checker algorithm and for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem.
- the controller module 1920 including a control circuit 1940 further includes a control circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion.
- the controller module including a control circuit further includes a control circuit implemented in software associated with at least one of an operating system and/or a program executable by the processor subsystem and for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion.
- the controller module including a control circuit further includes a controller module including a control circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving an adjustment of the adjustable operating parameter based upon an error-tolerant performance criterion.
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting a voltage of the processor subsystem based upon an error-tolerant performance criterion.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a frequency of a timing signal employed by the processor subsystem based upon an error-tolerant performance criterion.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock based upon an error-tolerant performance criterion.
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter to at least substantially minimize a time required to successfully complete an execution of the sequence of instructions.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter in substantial conformity with an error-tolerant performance criterion that corresponds to
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ adjustable ⁇ ⁇ operating ⁇ ⁇ parameter .
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter to substantially minimize a time to complete an execution of the sequence of instructions.
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting a processor clock frequency to substantially minimize a time to complete an execution of the sequence of instructions.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- the controller module including a control circuit includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
- ⁇ 0.05 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
- ⁇ 0.10 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
- ⁇ 0.20 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting a processor voltage to substantially minimize a time to complete an execution of the sequence of instructions.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency to substantially minimize an expected time to successfully complete an execution of the sequence of instructions while at least one other adjustable operating parameter remains substantially constant.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant and dynamically-derived performance criterion. For example, the control circuit may dynamically derive data representative of the time for error-corrected execution line TECE of FIG. 31 .
- the time for error-corrected execution line TECE represents a time for an error-corrected execution of an instruction or instruction sequence as at least one adjustable operating parameter of CLK signal 1914 and/or processor voltage Vcc 1916 is varied for the processor subsystem 1910 .
- the dynamically-derived performance criterion may be derived once for a processor and be available for a future use.
- the dynamically-derived performance criterion may be derived periodically for a processor and be available for a future use.
- the dynamically-derived performance criterion may be derived from a processor of a processor class and be available for a future use by other instances of processors of the processor class.
- the controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant dynamically-derived performance criterion further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant dynamically-derived performance criterion having an objective to substantially minimize an expected time to successfully complete an execution of the sequence of instruction.
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an empirically-based error-tolerant performance map.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon a performance criterion embodied in a lookup table.
- the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon a performance criterion embodied in a lookup table and having an objective of substantially minimizing a time to complete an execution of the sequence of instruction.
- the controller module 1920 including a control circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion corresponding to an incidence of the detected operating-parameter-caused error.
- the controller module further includes an error recovery circuit operable to restore an execution of the sequence of program instructions to a checkpoint based upon the detected operating-parameter-caused error.
- FIG. 38 illustrates an exemplary operational flow 2000 implemented in a computerized system. After a start operation, the operational flow moves to a sensing operation 2010 .
- the sensing operation detects an incidence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter.
- a tuning operation 2030 changes 20 the adjustable processor operating parameter based upon an error-tolerant performance criterion.
- the operational flow then moves to an end operation.
- FIG. 39 illustrates an alternative embodiment of the exemplary operational flow 2000 of FIG. 38 .
- the sensing operation 2010 may include at least one additional operation.
- the additional operation may include an operation 2012 , and operation 2014 , and/or an operation 2016 .
- the operation 2012 detects an incidence of a processor setup/hold violation corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the operation 2014 detects an incidence of an execution path synchronization error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the operation 2016 detects an incidence of at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, or an incidence prevalence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter.
- FIG. 40 illustrates another alternative embodiment of the exemplary operational flow 2000 of FIG. 38 .
- the tuning operation 2030 may include at least one additional operation.
- the additional operation may include an operation 2032 , and operation 2034 , and/or an operation 2035 .
- the operation 2032 changes the adjustable processor operating parameter based upon an error-tolerant performance criterion to substantially minimize a time required to successfully complete an execution of the sequence of instructions.
- the operation 2034 changes at least one of a voltage of the processor subsystem and/or a processor clock frequency based upon an error-tolerant performance criterion to substantially minimize a time required to successfully complete an execution of the sequence of instructions.
- the operation 2035 changes the adjustable processor operating parameter based upon an error-tolerant and dynamically-derived performance criterion having an objective to substantially minimize a time to execute the sequence of instruction by the processor subsystem.
- FIG. 41 illustrates another alternative embodiment of the exemplary operational flow 2000 of FIG. 38 .
- the tuning operation 2030 may include at least one additional operation.
- the additional operation may include an operation 2036 , an operation 2038 , and/or an operation 2042 .
- the operation 2036 changes a processor clock frequency in substantial conformity with
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ clock ⁇ ⁇ frequency .
- the operation 2038 changes a processor voltage in substantial conformity with
- 0 ⁇ ⁇ ⁇ time ⁇ ⁇ to ⁇ ⁇ complete ⁇ ⁇ an ⁇ ⁇ execution of ⁇ ⁇ the ⁇ ⁇ sequence ⁇ ⁇ of ⁇ ⁇ instructions ⁇ ⁇ ⁇ processor ⁇ ⁇ voltage .
- the operation 2042 determines that changing the adjustable processor operating parameter is at least substantially likely to decrease a time to complete an execution of the sequence of instructions by the processor and changes the adjustable processor operating parameter based upon an error-tolerant performance criterion.
- FIG. 42 illustrates another alternative embodiment of the exemplary operational flow 2000 of FIG. 38 .
- the operational flow may include at least one additional operation.
- the additional operation may include an operation 2050 .
- the operation 2050 restores an execution of the sequence of program instructions to a checkpoint based upon the detected processor-operating-parameter-caused error.
- FIG. 43 illustrates an exemplary embodiment of a device 2100 in which embodiments may be implemented.
- the device includes means 2110 for detecting an incidence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter.
- the device also includes means 2120 for changing the adjustable processor operating parameter based upon an error-tolerant performance criterion.
- the device further includes means 2130 for restoring an execution of the sequence of program instructions to a checkpoint based upon the detected processor-operating-parameter-caused error.
- FIGS. 44, 45, and 46 include circuit block diagrams illustrating exemplary environments that include synchronous circuits in which embodiments may be implemented.
- FIG. 44 illustrates an exemplary system 2200 that includes synchronous circuit having at least two subcircuit blocks in which embodiments may be implemented, such as a Pentium® P-4 processor.
- FIG. 45 illustrates an exemplary system 2300 that includes a portion of a synchronous circuit having at least two circuit blocks in which embodiments may be implemented, such as a portion of the Pentium® P-4 processor illustrated in FIG. 44 .
- FIG. 46 illustrates an exemplary system 2400 that includes a synchronous multicore circuit having at least two subcircuit blocks in which embodiments may be implemented.
- An embodiment includes a system.
- the system may include at least a part of the system 2200 of FIG. 44 , the system 2300 of FIG. 45 , and/or the system 2400 of FIG. 46 .
- the system includes a synchronous circuit including a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage.
- the system also includes an error detector operable to detect an incidence of a computational error occurring in the first subcircuit.
- the system further includes a controller operable to change the first power plane voltage based upon the detected incidence of a computational error.
- the first subcircuit may include any circuit block of the circuit blocks illustrated in system 2200 of FIG. 44 .
- the second subcircuit may include any other circuit of the circuit blocks illustrated in FIG. 44 .
- the system 2300 of FIG. 45 illustrates six subcircuit blocks in which embodiments may be implemented.
- the six subcircuits include: an integer register file 2310 ; an ALU 1 2320 ; an ALU 2 2324 ; a load AGU 2329 ; an L1 cache 2330 ; and an L2 cache 2336 .
- the six subcircuit blocks are linked together as appropriate by communications links, illustrated by a communication link 2364 .
- the illustrated embodiment also includes a power plane having a power plane voltage that powers a subcircuit block.
- a power plane 2312 powers the integer register file 2310 ; a power plane 2322 powers the ALU 1 2320 ; a power plane 2326 powers the ALU 2 2324 ; a power plane 2329 powers the load AGU 2328 ; a power plane 2332 powers the L1 cache 2330 ; and power plane 2338 powers the L2 cache 2336 .
- one power plane may provide power to two or more subcircuit blocks.
- a power supply 2370 provides voltages to the power planes via couplers (not illustrated) as appropriate.
- the system 2300 further includes an error detector 2340 operable to detect an incidence of a computational error occurring in the first subcircuit.
- the first subcircuit may include any one or more of the six subcircuit blocks: i.e., the integer register file 2310 ; the ALU 1 2320 ; the ALU 2 2324 ; the load AGU 2328 ; the L1 cache 2330 ; and the L2 cache 2336 .
- the second subcircuit may include any subcircuit block not included in the first subcircuit.
- the system also includes an error detector 2340 .
- FIG. 45 illustrates an embodiment where a single error detector is coupled to at least two subcircuit blocks via a coupler 2362 .
- the error detector 2340 may be implemented in any manner and/or technique known to those skilled in the art.
- the error detector may be implemented in the DIVA technology.
- the error detector may be implemented in the TEATime execution checker algorithm architecture.
- the error detector may be implemented in the RAZOR architectural approach.
- the error detector may be implemented employing another synchronous circuit (not shown) operable to execute at least one instruction substantially in parallel with the first subcircuit.
- the system 2300 operates with the power planes receiving a selected voltage or respectively receiving selected voltages from the power supply 2370 .
- an initial operation of the system 2300 may include the power planes each receiving a same voltage, for example 1.40 volts. If the error detector 2340 detects an incidence of a computational error occurring in the ALU 2 2324 , the controller 2350 causes an increase in the voltage received by the power plane 2326 for the ALU 2 , for example increasing it to 1.45 volts. In another embodiment, the voltage received by the other power planes remains the same at 1.40 volts. This operational configuration results in less overall power consumption by the system because only the voltage to the power plane 2326 serving ALU 2 is increased to address a computational error while the other power plane voltages remain unchanged.
- FIG. 46 illustrates the exemplary system 2400 that includes a synchronous multicore circuit having at least two subcircuit blocks each respectively associated with a power plane.
- the at least two subcircuit blocks and respectively associated power planes are illustrated as five subcircuit blocks.
- the five subcircuit blocks include a Core- 1 2410 that receives power from a power plane 2412 ; a Core- 2 2420 that receives power from a power plane 2422 ; an L1 cache 2426 that receives power from a power plane 2428 ; and a L2 cache 2430 that receives power from a power plane 2432 .
- the system also includes an error detector 2440 operable to detect an incidence of a computational error occurring in the first subcircuit.
- the system further includes a controller 2450 operable to change the first power plane voltage based upon the detected incidence of a computational error.
- the system may also include a power supply 2470 .
- the system 2400 operates with the power planes receiving a selected voltage or respectively receiving selected voltages from the power supply 2470 .
- an initial operation of the system 2400 may include the power planes each receiving a same voltage, for example 1.10 volts.
- the controller 2450 causes an increase in the voltage received by the power plane 2422 providing power to the Core- 2 .
- the voltage of the power plane 2422 may be increased to 1.20 volts.
- the voltage received by the other power planes, including the power plane 2412 providing power to the Core- 1 2410 remains at 1.10 volts.
- FIG. 45 illustrates an embodiment where the synchronous circuit of the system 2300 includes a synchronous uniprocessor on a chip 2301 .
- the uniprocessor includes a first subsystem powered by a first power plane having a first power plane voltage.
- the first subsystem may include at least one of the six subcircuit blocks; the integer register file 2310 , the ALU 1 2320 , the ALU 2 2324 , the load AGU 2328 , the L1 cache 2330 , and the L2 cache 2336 .
- the second subsystem powered by a second power plane having a second power plane voltage may include any subcircuit block not included as the first subcircuit.
- the synchronous circuit includes a synchronous uniprocessor including a first arithmetic logic unit 2320 powered by a first power plane 2322 having a first power plane voltage and a second arithmetic logic unit 2324 powered by a second power plane 2326 having a second power plane voltage.
- the synchronous circuit includes a synchronous uniprocessor including an arithmetic logic unit powered by a first power plane having a first power plane voltage, such as the ALU 1 2320 and/or the ALU 2 2324 .
- the synchronous uniprocessor also includes an on-chip cache powered by a second power plane having a second power plane voltage, such as the L1 cache 2330 powered by a power plane 2332 and/or the L2 cache 2336 powered by a power plane 2338 .
- the error detector 2340 includes a hardware-implemented error detector operable to detect an incidence of a computational error occurring in the first subcircuit.
- the error detector includes one error detector coupled 2362 with both the first subcircuit and the second subcircuit, and operable to detect an incidence of a computational error occurring in the first subcircuit.
- the one error detector includes one error detector coupled with both the first subcircuit and the second subcircuit, and operable to detect an incidence of a computational error occurring in the first subcircuit and/or the second subcircuit.
- the error detector includes a first error detector (not shown) coupled with the first subcircuit and a second error detector (not shown) coupled with the second subcircuit.
- the first error detector and the second error detector are respectfully operable to detect an incidence of a computational error occurring in the first subcircuit and the second subcircuit.
- the error detector includes an error detector coupled with the controller 2350 and operable to detect an incidence of a computational error occurring in the first subcircuit.
- the error detector 2340 includes an error detector operable to detect a computational error corresponding to a setup/hold violation.
- the error detector includes an error detector operable to detect at least one incidence of a computational error corresponding to a setup/hold violation, a processor clock speed, a processor voltage, a noise spike, a charged particle, a soft error, a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, on-chip cache error, an oxide breakdown, an induced error, and/or an electromigration induced error.
- the error detector includes an error detector operable to detect at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, and/or an incidence prevalence of a computational error.
- the controller 2350 operable to change the first power plane voltage based upon the detected incidence of a computational error includes a controller operable to change a first power plane voltage based upon the detected incidence of a computational error without substantially changing the second power plane voltage.
- the controller includes a controller implemented in at least one of hardware, software, firmware, and/or a microengine, and operable to change the first power plane voltage based upon the detected incidence of a computational error.
- the controller includes a controller implemented in software associated with at least one of an operating system and/or a program executable by the synchronous circuit and operable to change the first power plane voltage based upon the detected incidence of a computational error.
- the controller includes a controller operable to increase the first power plane voltage based upon the detected incidence of a computational error. In a further embodiment, the controller includes a controller operable to decrease the first power plane voltage based upon the detected incidence of a computational error.
- the synchronous circuit, the error detector, and the controller are formed on a single chip.
- the synchronous circuit, the error detector 2340 , and the controller 2350 are formed on a single chip 2301 as illustrated in conjunction with FIG. 45 .
- the synchronous circuit 2402 , the error detector 2440 , and the controller 2450 are formed on a single chip 2404 , as illustrated in conjunction with FIG. 46 .
- the system further comprises a recovery module (not shown) operable to cause a correction of the computational error.
- the system further comprises a power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the system may include the system 2300 that includes the power supply 2370 , and the controller 2350 of FIG. 45 .
- the system may include the system 2400 that includes the power supply 2470 , and the controller 2450 of FIG. 46 .
- the power supply includes a power supply operable to provide in response to the controller a selected voltage to the first power plane and another selected voltage to the second power plane.
- the power supply includes an on-circuit chip power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes an off-circuit chip power supply electrically coupled with the circuit and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes at least one of a DC/DC regulated, a controllable, and/or programmable power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the system further includes a power supply configured to electrically engage a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- FIG. 46 illustrates an embodiment where the synchronous circuit of the system 2400 includes a synchronous processor including a first processor core 2410 powered by a first power plane 2412 having a first power plane voltage and a second processor core 2420 powered by a second power plane 2422 having a second power plane voltage.
- FIG. 47 illustrates an exemplary operational flow 2500 .
- the flow includes a monitoring operation 2510 .
- the monitoring operation detects a computational error occurring in a first subcircuit of a synchronous circuit.
- the synchronous circuit includes the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage.
- a tuning operation 2520 increases the first power plane voltage based upon the detected computational error.
- the operational flow then proceeds to an end operation.
- FIG. 48 illustrates an alternative embodiment of the exemplary operational flow 2500 of FIG. 47 .
- the monitoring operation 2510 may include at least one additional operation.
- the at least one additional operation may include an operation 2512 , and/or an operation 2514 .
- the operation 2512 detects a computational error occurring in a first processor core of a synchronous processor that includes the first processor core powered by a first power plane at a first power plane voltage and a second processor core powered by a second power plane at a second power plane voltage.
- the operation 2514 detects a computational error occurring in a first subcircuit of a synchronous uniprocessor that includes the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage.
- FIG. 49 illustrates another alternative embodiment of the exemplary operational flow 2500 of FIG. 47 .
- the tuning operation 2520 may include at least one additional operation, such as an operation 2522 .
- the operation 2522 increases the first power plane voltage based upon the detected computational error while maintaining the second power plane voltage at least substantially constant.
- FIG. 50 illustrates a further alternative embodiment of the exemplary operational flow 2500 of FIG. 47 .
- the exemplary operational flow may include at least one additional operation, such as an operation 2530 .
- the operation 2530 operates the first subcircuit at a first power plane voltage.
- the operation 2530 may include at least one additional operation.
- the at least one additional operation may include an operation 2532 and/or an operation 2534 .
- the operation 2532 operates the first subcircuit at an initial first power plane voltage.
- the operation 2534 decreases the first power plane voltage.
- FIG. 51 illustrates a partial view of an exemplary device 2550 in which embodiments may be implemented.
- the device includes means 2560 for detecting a computational error occurring in a first subcircuit of a synchronous circuit.
- the synchronous including the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage.
- the device also includes means 2570 for increasing the first power plane voltage based upon the detected computational error.
- the device 2550 also includes means 2580 for operating the first subcircuit at an initial first power plane voltage. In another embodiment, the device also includes means 2590 for decreasing the first power plane voltage.
- FIG. 52 illustrates a partial view of an exemplary environment in which embodiments may be implemented.
- FIG. 52 and the following discussion are intended to provide a brief, general description of the environment.
- FIG. 52 illustrates an exemplary thin computing device 2600 that interfaces with an electronic device (not shown) that includes one or more functional elements.
- the electronic device may include any item having electrical and/or electronic components playing a role in a functionality of the item, such as a portable electronic device, a limited resource computing device, a digital camera, a cell phone, a printer, a refrigerator, a car, and an airplane.
- the thin computing device 2600 includes a synchronous processing unit 2621 , a system memory 2622 , and a system bus 2623 that couples various system components including the system memory 2622 to the synchronous processing unit 2621 .
- the system bus 2623 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- the system memory includes read-only memory (ROM) 2624 and random access memory (RAM) 2625 .
- ROM read-only memory
- RAM random access memory
- a basic input/output system (BIOS) 2626 containing the basic routines that help to transfer information between sub-components within the thin computing device 2600 , such as during start-up, is stored in the ROM 2624 .
- a number of program modules may be stored in the ROM 2624 and/or RAM 2625 , including an operating system 2628 , one or more application programs 2629 , other program modules 2630 and program data 2631 .
- a user may enter commands and information into the computing device 2600 through input devices, such as a number of switches and buttons, illustrated as hardware buttons 2644 , connected to the electronic device via a suitable interface 2645 .
- Input devices may further include a touch-sensitive display screen 2632 with suitable input detection circuitry 2633 .
- the output circuitry of the touch-sensitive display 2632 is connected to the system bus 2623 via a video driver 2637 .
- Other input devices may include a microphone 2634 connected through a suitable audio interface 2635 , and a physical hardware keyboard (not shown).
- the computing device 2600 may include other peripheral output devices, such as at least one speaker 2638 .
- Other external input or output devices 2639 may be connected to the processing unit 2621 through a USB port 2640 and USB port interface 2641 , to the system bus 2623 .
- the other external input and output devices 2639 may be connected by other interfaces, such as a parallel port, game port or other port.
- the computing device 2600 may further include or be capable of connecting to a flash card memory (not shown) through an appropriate connection port (not shown).
- the computing device 2600 may further include or be capable of connecting with a network through a network port 2642 and network interface 2643 , and/or connecting through wireless port 2646 and corresponding wireless interface 2647 .
- these connections may facilitate communication with other peripheral devices, including other computers, printers, and so on (not shown). It will be appreciated that the various components and connections shown are exemplary and other components and means of establishing communications links may be used.
- the computing device 2600 may be primarily designed to include a user interface having a character, key-based, user input, or user data input via the touch sensitive display 2632 using a stylus (not shown).
- the user interface is not limited to an actual touch-sensitive panel arranged for directly receiving input, but may alternatively or in addition respond to another input device, such as the microphone 2634 .
- spoken words may be received at the microphone 2634 and recognized.
- the computing device 2600 may be designed to include a user interface having a physical keyboard (not shown).
- the thin computing device 2600 functional elements may be typically application specific and related to a function of the electronic device.
- the device functional elements are driven by a device functional element(s) interface 2650 , which coupled with the system bus 2623 .
- a functional element may typically perform a single well-defined task with little or no user configuration or setup, such as a refrigerator keeping food cold, a cell phone connecting with an appropriate tower and transceiving voice or data information, and/or a camera capturing and saving an image.
- FIG. 53 illustrates an exemplary system 2700 in which embodiments may be implemented.
- the system includes an apparatus 2705 .
- the apparatus includes a synchronous circuit 2702 .
- the synchronous circuit includes a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage.
- the first subcircuit includes at least one of a Core- 1 2710 having a power plane 2712 ; a L1 cache (C1) having a power plane 2718 ; a Core- 2 2720 having a power plane 2722 ; a L1 cache (C2) and/or an L2 cache 2430 having a power plane 2432 .
- the second subcircuit may include at least one subcircuit not selected as the first subcircuit.
- the thin computing device 2600 described in conjunction with FIG. 52 may include the synchronous circuit.
- the apparatus 2705 also includes an error detector 2740 operable to detect an incidence of a computational error occurring in the first subcircuit.
- the apparatus further includes a controller 2750 operable to change the first power plane voltage based upon the detected incidence of a computational error.
- the apparatus also includes a power supply 2770 .
- the power supply is configured to electrically couple with a portable power source 2772 and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the apparatus 2705 powered by the power supply may include the thin computing device of FIG. 52 that interfaces with an electronic device.
- the configuration of the power supply to accept the portable power source imparts mobility and/or portability to the thin computing device and thus the electronic device.
- the electronic device may include a handheld device, a wireless device, a camera, a laptop computer, a game console, a cell phone, a pager, a PDA, a global positioning unit, a satellite, media player, an electronic scanner, an electronic book reader, and/or a browsing device.
- the synchronous circuit further includes a synchronous processor including a first processor core powered by a first power plane having a first power plane voltage and a second processor core powered by a second power plane having a second power plane voltage.
- the synchronous circuit further includes a synchronous uniprocessor including a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage.
- the error detector includes a hardware-implemented error detector operable to detect an incidence of a computational error occurring in the first subcircuit.
- the power supply includes a power supply configured to electrically couple with a replaceable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes a power supply configured to electrically couple with a selectively replaceable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes a power supply configured to electrically couple with a rechargeable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes a power supply configured to electrically couple with at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes a power supply electrically coupled with at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- the power supply includes a power supply configured to electrically couple with a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller and another selected voltage to the second power plane.
- the power supply includes at least one of a DC/DC regulated, a controllable, and/or programmable power supply configured to electrically couple with a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- FIG. 54 illustrates an exemplary operational flow 2800 .
- the operational flow includes a conservation operation 2810 .
- the conservation operation decreases a voltage received at a first power plane from a power supply that includes a portable energy source.
- the first power plane is a component of a synchronous circuit that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage.
- a monitoring operation 2820 detects an incidence of a computational error occurring in the first subcircuit.
- An adjustment operation 2830 increases the voltage received at the first power plane from the power supply that includes a portable energy source in response to the detected computational error.
- An initial voltage is supplied to the first power plane of the synchronous circuit from the power supply that includes an energy source.
- a voltage of 1.60 volts may be initially supplied to the power plane 2722 associated with the Core- 2 2720 described in conjunction with FIG. 53 .
- the energy source may include a replaceable battery and/or rechargeable battery.
- the conservation operation 2810 decreases the voltage received at the first power plane in an increment of 0.10 volts to 1.50 volts. Decreasing the voltage received at the first power plane reduces electrical power supplied by the power supply, and correspondingly, reduces power drawn from an energy source coupled to the power supply.
- the monitoring operation monitors operations related to the Core- 2 , and detects an incidence of a computational error occurring in the Core- 2 .
- the incidence may include an incidence rate of computational errors exceeding a predetermined number of computational errors per 1010 clock cycles, such as 10 computational errors per 1010 clock cycles.
- the adjustment operation 2830 increases the voltage received at the first power plane in response to the detected computational error. The voltage received may be increased to the previous 1.60 volts from the 1.50 volts, or increased to another value.
- the conservation operation 2810 decreases the 1.60 voltage received at the first power plane in increments of 0.05 volts until a selected incidence of a computational error is detected occurring in the Core- 2 by the monitoring operation 2820 .
- the predetermined incidence of computational errors is detected at a first power plane voltage of 1.45 volts.
- the adjustment operation 2830 increases the first power plane voltage. For example, the adjustment operation may increase the first power plane voltage to 1.50, and the monitoring operation continues detection for the selected incidence of computational errors.
- the adjustment operation may increase the first power plane voltage to 1.55.
- the conservation operation again decreases the first power plane voltage and the operational flow 2800 repeated.
- FIG. 55 illustrates an alternative embodiment of the exemplary operational flow 2800 of FIG. 54 .
- the conservation operation 2810 may include at least one additional operation.
- the at least one additional operation may include an operation 2812 and/or an operation 2814 .
- the operation 2812 decreases a voltage received at a first power plane from a power supply that includes a portable energy source.
- the first power plane being a component of a synchronous processor that includes a first processor core powered by the first power plane and a second processor core powered by a second power plane having a second power plane voltage.
- the operation 2814 decreases a voltage received at a first power plane from a power supply that includes a portable energy source.
- the first power plane being a component of a synchronous uniprocessor that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage.
- FIG. 56 illustrates an alternative embodiment of the exemplary operational flow 2800 of FIG. 54 .
- the monitoring operation 2820 may include at least one additional operation.
- the at least one additional operation may include an operation 2822 and/or an operation 2824 .
- the operation 2822 detects an incidence of a computational error occurring in the first subcircuit with a hardware-implemented detector.
- the operation 2824 detects at least one incidence of a computational error corresponding to a setup/hold violation, a processor clock speed, a processor voltage, a noise spike, a charged particle, a soft error, a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, on-chip cache error, an oxide breakdown, an induced error, and/or an electromigration induced error occurring in the first subcircuit.
- FIG. 57 illustrates an alternative embodiment of the exemplary operational flow 2800 of FIG. 54 .
- the monitoring operation 2820 may include at least one additional operation, such as the operation 2826 .
- the operation 2826 detects at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, and/or an incidence prevalence of a computational error occurring in the first subcircuit.
- FIG. 58 illustrates an alternative embodiment of the exemplary operational flow 2800 of FIG. 54 .
- the adjustment operation 2830 may include at least one additional operation.
- the at least one additional operation may include an operation 2832 , an operation 2834 , and/or an operation 2836 .
- the operation 2832 in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source to a level that at least substantially minimizes the detected incidence of the computational error.
- the operation 2834 in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source without substantially changing the second power plane voltage.
- the operation 2836 in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source, the portable energy source including at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable portable electrical energy source.
- a portable energy source including at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable portable electrical energy source.
- FIG. 59 illustrates an exemplary apparatus 2900 in which embodiments may be implemented.
- the apparatus includes means 2910 for decreasing a voltage received at a first power plane from a power supply that includes a portable energy source.
- the first power plane is a component of a synchronous circuit that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage.
- the apparatus also includes means 2920 for detecting an incidence of a computational error occurring in the first subcircuit.
- the apparatus further includes means 2930 for increasing in response to the detected computational error the voltage received at the first power plane from the power supply that includes a portable energy source.
- FIG. 60 illustrates an exemplary system 3000 in which embodiments may be implemented.
- the system includes a power module 3040 and a scheduler module 3050 .
- the power module is operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit 3002 .
- the first subcircuit may be any subcircuit of the circuit, and the second subcircuit may be any other subcircuit of the circuit not included within the first subcircuit.
- FIG. 60 illustrates an embodiment where the first subcircuit may include at least one of a Core- 1 3010 , an L1 cache 3014 , a Core- 2 3020 , an L1 cache 3024 , and/or an L2 cache 3030 .
- the second subcircuit may include any of the above subcircuits that are not included as the first circuit.
- the first subcircuit may include the Core- 1 3010
- the second subcircuit may include the Core- 2 3020
- the first subcircuit may include the Core- 2 3020 and the second subcircuit may include the L2 Cache 3030 .
- the first subcircuit may include the L1 Cache 3014 and the second subcircuit may include L1 Cache 3024 , one of the cache's being selectively couplable with a core.
- the system is scalable and may include more than two subcircuits.
- the circuit may include a synchronous circuit having a first subcircuit and a second subcircuit.
- the circuit may include an asynchronous circuit having a first subcircuit and a second subcircuit (not shown).
- the power module 3040 may determine a respective indicia of power consumption once upon an initial startup of a computing system that includes the system 3000 , on each startup, periodically, and/or according to a selected schedule. Periodically may include once a month, once each six months, once each year, or the like. Periodically may include once each N number of processor hours. The period may be adjusted in response to environmental factors, such as for example, aging.
- the scheduler module 3050 is operable to direct an execution task to a subcircuit selected from the first subcircuit and the second subcircuit.
- the subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the selected subcircuit is the subcircuit having a lowest indicia of power consumption.
- the selected subcircuit is the subcircuit having a lowest indicia of power consumption unless the other subcircuit provides a higher execution performance that offsets a power saving provided by the subcircuit having a lowest indicia of power consumption.
- an execution task may include an instruction, an instruction block, a thread, a data movement, a translation, an operation, a program, and/or an application.
- the power module 3040 includes a power module operable to determine respective indicia of power consumed in executing a test instruction group by a first subcircuit and by a second subcircuit of a circuit.
- the test instruction group may include any instruction group designed for an assessment of the first subcircuit and the second subcircuit in conjunction with respectively determining an indicia of power consumption.
- the test instruction group may be embodied in a firmware, a software, and/or a hardware.
- the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of a program by a first subcircuit and by a second subcircuit of a circuit.
- the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of an application by a first subcircuit and by a second subcircuit of a circuit.
- the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of an instruction group by a first subcircuit and by a second subcircuit of a circuit.
- the power module 3040 includes a hardware-implemented power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit.
- the power module includes a power module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit.
- the power module 3040 includes a power module operable to respectively determine a power consumption to execute a test operation by a first subcircuit and by a second subcircuit of a circuit.
- the power module includes a power module operable to respectively determine an indicia of temperature resulting from an execution of a test operation by a first subcircuit and by a second subcircuit of a circuit.
- an indicia of temperature resulting from an execution may include a temperature change between a pre-execution ambient state to a post execution state.
- an indicia of temperature resulting from an execution may include an indicia of fan speed to maintain a respective selected temperature in the first subcircuit and/or the second subcircuit.
- the power module includes a power module operable to respectively determine an indicia of a current flow required for an execution of a test operation by a first subcircuit and by a second subcircuit of a circuit.
- the power module may determine a respective indicia of power consumption respectively occurring in the first circuit and the second circuit by monitoring a factor related to power consumption, such as by a current flowing through a monitoring circuit (not shown) coupled in parallel and/or in series to a power plane supplying power to at least one of the first circuit and the second circuit.
- the scheduler module 3050 includes a scheduler module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected based upon a determined lower indicia of power consumption for the selected subcircuit than the non-selected subcircuit.
- the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected based upon a determined higher indicia of power consumption for the selected subcircuit than the non-selected subcircuit.
- the scheduler module 3050 includes a scheduler module operable to direct an operation to a subcircuit selected in response to a criterion that includes a determined lower indicia of power consumption for the selected subcircuit than for the non-selected subcircuit.
- the scheduler module includes a scheduler module operable to direct an execution of at least one instruction to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the scheduler module includes a scheduler module operable to direct an execution of at least one instruction of a program to a subcircuit selected from the first subcircuit and the second subcircuit.
- the scheduler module includes a scheduler module operable to direct an execution of at least one instruction of an application to a subcircuit selected from the first subcircuit and the second subcircuit.
- the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the scheduler module 3050 includes a scheduler module operable to direct an execution of at least one instruction of an instruction group to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit.
- an operation includes at least one of a specific action to be performed, an action to be performed on an entity, performance of a useful act, and/or performance of an act with respect to an entity the result of which is specified by a rule.
- the scheduler includes a scheduler module operable to preferentially direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit.
- a preferential direction of an operation may include directing an operation to the subcircuit having the lowest determined indicia of power consumption only if that subcircuit can timely provide the results of the operation available, otherwise not directing the operation.
- the power module 3040 and the scheduler module 3050 are formed on a single chip 3004 .
- the circuit 3002 , the power module 3040 , and the scheduler module 3050 are formed on the single chip 3004 .
- an embodiment of the system 3000 includes individual power planes supplying power to a plurality of subcircuits of the circuit 3002 .
- a power plane 3012 supplies the Core- 1 3010
- a power plane 3022 supplies the Core- 2 3020
- a power plane 3018 supplies the L1 cache 3014
- a power plane 3026 supplies the L1 cache 3024
- a power plane 3032 supplies the L2 cache 3030 .
- the power planes may be useful in determining an indicia of power consumption by its supporting subcircuit.
- the system respectively executes the test operation using at least two similar subcircuits, for example the Core- 1 3010 and the Core- 2 3020 .
- the test operation may include sufficient instructions may be executed to provide an indicia of power consumption to a selected significance. Typically, the same test operation is respectively executed in each core.
- the power module 3040 determines an indicia of power consumption by monitoring an aspect of current flow to each associated power plane ( 3012 , 3022 ) during respective executions of the test operation by the Core- 1 3010 and the Core- 2 3020 . In instances, one subcircuit may consume less power and correspondingly be more efficient than another subcircuit due to a variety of reasons, which may include inherent variations in the manufacturing process used to make the circuit chip 3004 .
- the scheduler module 3050 then directs an operation to a subcircuit having a lowest indicia of power consumption selected from the first subcircuit and the second subcircuit, for example from the Core- 1 3010 and the Core- 2 3020 .
- the subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit by the power module 3040 .
- the selected subcircuit is the subcircuit having an indicia corresponding to consuming the lowest power, thus resulting in a lower overall power consumption by the circuit 3002 in performing an operation.
- the scheduler monitor allows operations to be assigned to the non-selected subcircuit.
- FIG. 61 illustrates an exemplary system 3100 in which embodiments may be implemented.
- the system includes a circuit 3102 including a first subcircuit and a second subcircuit.
- the first subcircuit may be any subcircuit of the circuit
- the second subcircuit may be any other subcircuit of the circuit not included within the first subcircuit.
- FIG. 61 illustrates an embodiment where the first subcircuit may include at least one of a Core- 1 3110 , an L1 cache 3114 , a Core- 2 3120 , an L1 cache 3124 , and/or an L2 cache 3130 .
- the second subcircuit may include any of the above subcircuits that are not included as the first circuit.
- the first subcircuit may include the Core- 1 3110
- the second subcircuit may include the Core- 2 3120
- the first subcircuit may include the Core- 2 3120 and the second subcircuit may include the L2 Cache 3130 .
- the first subcircuit may include the integer register file 2310 and the second subcircuit may include the ALU 1 2320 of FIG. 45 .
- the system is scalable and may include more than two subcircuits.
- the circuit may include a synchronous circuit (not shown).
- the circuit may include an asynchronous circuit (not shown).
- the system 3100 also includes a monitor circuit 3140 and a manager circuit 3150 .
- the monitor circuit includes a circuit for determining respective indicia of power consumption by the first subcircuit and by the second subcircuit to execute a test operation.
- the manager circuit includes a circuit for scheduling an execution task to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
- the circuit 3102 further includes a processor including the first processor core 3110 and the second processor core 3120 .
- the circuit includes a uniprocessor including a first subsystem and a second subsystem.
- the circuit further includes a circuit formed on one chip 3104 and including a first subcircuit and a second subcircuit.
- the circuit 3102 includes a circuit including a first subcircuit formed on a first chip (not shown) and a second subcircuit formed on a second chip (not shown).
- the system 3100 further includes a computing device 3105 having the circuit that includes a first subcircuit and a second subcircuit. This embodiment may also include a power supply 3170 configured to electrically couple with a portable power source 3172 and operable to provide power to the circuit.
- FIG. 62 illustrates an exemplary operational flow 3200 .
- the operational flow includes a measuring operation 3210 .
- the measuring operation determines an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the determining an indicia of energy expended may include comparing without quantifying the respective indicia of energy expended by the first subcircuit and by the second subcircuit.
- the determining an indicia of energy expended may include quantifying the respective indicia of energy expended by the first subcircuit and by the second subcircuit.
- a control operation 3230 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The selection is based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit.
- the operational flow includes an end operation.
- an embodiment of the operational flow 3200 may be implemented in any circuit having at least two subcircuits, where an indicia of energy expended by the subcircuits in performing an execution may be determined.
- the circuit may include a synchronous circuit and/or an asynchronous circuit.
- the operational flow may be implemented in a single core or unicore processor, such as the processor subsystem 1510 described in conjunction with FIG. 30 , the single core subsystem 1610 described in conjunction with FIG. 32 , the single core subsystem 1910 described in conjunction with FIG. 37 , and the single core subsystems 2200 and 2300 described in conjunction with FIGS. 44 and 45 respectively.
- a unicore processor is Intel's Pentium M® processor.
- the operational flow may be implemented in a multi-subcircuit circuit, such as the synchronous circuit 2402 described in conjunction with FIG. 46 , the synchronous circuit 2702 described in conjunction with FIG. 53 , the circuit 3002 described in conjunction with FIG. 60 , and/or the circuit 3102 described in conjunction with FIG. 61 .
- a multi-subcircuit circuit is Intel's Pentium 4® processor.
- FIG. 63 illustrates an alternative embodiment of the exemplary operational flow 3200 of FIG. 62 .
- the measuring operation 3210 may include at least one additional operation.
- the at least one additional operation may include an operation 3212 , an operation 3214 , an operation 3216 , and/or an operation 3218 .
- the operation 3212 determines an energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the operation 3214 determines a current consumed by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the operation 3216 determines a temperature of a first subcircuit and of a second subcircuit of a synchronous circuit during respective executions of at least one instruction.
- the operation 3218 determines an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of a test instruction group.
- FIG. 64 illustrates another alternative embodiment of the exemplary operational flow 3200 of FIG. 62 .
- the control operation 3230 may include at least one additional operation.
- the at least one additional operation may include an operation 3232 , an operation 3234 , and/or an operation 3236 .
- the operation 3232 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon a determined lower indicia of energy expended by the selected subcircuit than for the non-selected subcircuit.
- the operation 3234 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon a determined lower power consumption by the selected subcircuit than for the non-selected subcircuit.
- the operation 3236 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon an availability of the selected subcircuit and the determined indicia of energy expended by the selected subcircuit.
- FIG. 65 illustrates an exemplary embodiment of a device 3300 .
- the device includes means 3310 for determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a circuit during respective executions of at least one instruction.
- the device also includes means 3320 for directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit.
- an implementer may opt for a mainly hardware and/or firmware vehicle; alternatively, if flexibility is paramount, the implementer may opt for a mainly software implementation; or, yet again alternatively, the implementer may opt for some combination of hardware, software, and/or firmware.
- any vehicle to be utilized is a choice dependent upon the context in which the vehicle will be deployed and the specific concerns (e.g., speed, flexibility, or predictability) of the implementer, any of which may vary.
- Those skilled in the art will recognize that optical aspects of implementations will typically employ optically-oriented hardware, software, and or firmware.
- a signal-bearing media include, but are not limited to, the following: recordable type media such as floppy disks, hard disk drives, CD ROMs, digital tape, and computer memory; and transmission type media such as digital and analog communication links using TDM or IP based communication links (e.g., packet links).
- any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components.
- any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality.
- operably couplable any two components capable of being so associated can also be viewed as being “operably couplable” to each other to achieve the desired functionality.
- operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
- Remote Monitoring And Control Of Power-Distribution Networks (AREA)
Abstract
Embodiments include a system, an apparatus, a device, and a method. A system includes a power module operable to determine respective indicia of power consumed in executing at least one instruction by a first subcircuit and by a second subcircuit of a synchronous circuit. The system also includes a scheduler module operable to direct an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection is responsive to the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
Description
- The present application is related to and/or claims the benefit of the earliest available effective filing date(s) from the following listed application(s) (the “Priority Applications”), if any, listed below (e.g., claims earliest available priority dates for other than provisional patent applications or claims benefits under 35 USC §119(e) for provisional patent applications, for any and all parent, grandparent, great-grandparent, etc. applications of the Priority Application(s)). In addition, the present application is related to the “Related Applications,” if any, listed below.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled PREDICTIVE PROCESSOR RESOURCE MANAGEMENT, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/214,459, filed Aug. 29, 2005, now issued as U.S. Pat. No. 7,877,584 on 25 Jan. 2011, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled RUNTIME-BASED OPTIMIZATION PROFILE, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/292,207, filed Nov. 30, 2005, which is currently co-pending, or is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled ALTERATION OF EXECUTION OF A PROGRAM IN RESPONSE TO AN EXECUTION-OPTIMIZATION INFORMATION, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/292,296, filed Nov. 30, 2005, now issued as U.S. Pat. No. 8,402,257 on 19 Mar. 2013, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled FETCH REROUTING IN RESPONSE TO AN EXECUTION-BASED OPTIMIZATION PROFILE, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/291,503, filed Nov. 30, 2005, which is currently co-pending, or is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled HARDWARE-GENERATED AND HISTORICALLY-BASED EXECUTION OPTIMIZATION, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/292,323, filed Nov. 30, 2005, which is currently co-pending, or is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled FREEZE-DRIED GHOST PAGES, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/324,174, filed Dec. 30, 2005, which is currently co-pending, or is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled CROSS-ARCHITECTURE EXECUTION OPTIMIZATION, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/343,927, filed Jan. 31, 2006, now issued as U.S. Pat. No. 8,214,191 on 3 Jul. 2012, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled CROSS-ARCHITECTURE OPTIMIZATION, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/343,745, filed Jan. 31, 2006, now issued as U.S. Pat. No. 8,209,524 on 26 Jun. 2012, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled HANDLING PROCESSOR COMPUTATIONAL ERRORS, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/364,131, filed Feb. 28, 2006, now issued as U.S. Pat. No. 8,375,247 on 12 Feb. 2013, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled ADJUSTING A PROCESSOR OPERATING PARAMETER BASED ON A PERFORMANCE CRITERION, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/364,573, filed Feb. 28, 2006, now issued as U.S. Pat. No. 7,607,042 on 20 Oct. 2009, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled HARDWARE-ERROR TOLERANT COMPUTING, naming Bran Ferren; W. Daniel Hillis; William Henry Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. application Ser. No. 11/364,130, filed Feb. 28, 2006, now issued as U.S. Pat. No. 7,493,516 on 17 Feb. 2009, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled MULTI-VOLTAGE SYNCHRONOUS SYSTEMS, naming William Henry Mangione-Smith as inventor, U.S. application Ser. No. 11/384,237, filed Mar. 17, 2006, now issued as U.S. Pat. No. 7,512,842 on 31 Mar. 2009, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States patent application entitled POWER SPARING SYNCHRONOUS APPARATUS, naming William Henry Mangione-Smith as inventor, U.S. application Ser. No. 11/384,236, filed Mar. 17, 2006, now issued as U.S. Pat. No. 7,653,834 on 26 Jan. 2010, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuing application of U.S. patent application Ser. No. 11/392,992 entitled POWER CONSUMPTION MANAGEMENT naming William Henry Mangione-Smith as inventor, filed on 28 Mar. 2006, now issued as U.S. Pat. No. 7,739,524 on 15 Jun. 2010, which is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuing application of U.S. patent application Ser. No. 12/802,923 entitled POWER CONSUMPTION MANAGEMENT naming William Henry Mangione-Smith as inventor, filed on 15 Jun. 2010, which is currently co-pending, or is an application of which a currently co-pending application is entitled to the benefit of the filing date, which application is incorporated herein by reference.
- None.
- The United States Patent Office (USPTO) has published a notice to the effect that the USPTO's computer programs require that patent applicants reference both a serial number and indicate whether an application is a continuation, continuation-in-part, or divisional of a parent application. Stephen G. Kunin, Benefit of Prior-Filed Application, USPTO Official Gazette Mar. 18, 2003. The USPTO further has provided forms for the Application Data Sheet which allow automatic loading of bibliographic data but which require identification of each application as a continuation, continuation-in-part, or divisional of a parent application. The present Applicant Entity (hereinafter “Applicant”) has provided above a specific reference to the application(s) from which priority is being claimed as recited by statute. Applicant understands that the statute is unambiguous in its specific reference language and does not require either a serial number or any characterization, such as “continuation” or “continuation-in-part,” for claiming priority to U.S. patent applications. Notwithstanding the foregoing, Applicant understands that the USPTO's computer programs have certain data entry requirements, and hence Applicant has provided designation(s) of a relationship between the present application and its parent application(s) as set forth above and in any ADS filed in this application, but expressly points out that such designation(s) are not to be construed in any way as any type of commentary and/or admission as to whether or not the present application contains any new matter in addition to the matter of its parent application(s).
- If the listings of applications provided above are inconsistent with the listings provided via an ADS, it is the intent of the Applicant to claim priority to each application that appears in the Priority Applications section of the ADS and to each application that appears in the Priority Applications section of this application.
- All subject matter of the Priority Applications and the Related Applications and of any and all parent, grandparent, great-grandparent, etc. applications of the Priority Applications and the Related Applications, including any priority claims, is incorporated herein by reference to the extent such subject matter is not inconsistent herewith.
- An embodiment provides a system. The system includes a power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit. The system also includes a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. The system may include the circuit. The circuit, the power module, and the scheduler module may be formed on a single chip. In addition to the foregoing, other system embodiments are described in the claims, drawings, and text that form a part of the present application.
- Another embodiment provides a system. The system includes a circuit including a first subcircuit and a second subcircuit. The system includes a monitor circuit for determining respective indicia of power consumption by the first subcircuit and by the second subcircuit to execute a test operation. The system also includes a manager circuit for scheduling an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit is selected based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. The system may include a computing device having the circuit that includes a first subcircuit and a second subcircuit. The system may include a power supply configured to electrically couple with a portable power source and operable to provide power to the circuit. In addition to the foregoing, other system embodiments are described in the claims, drawings, and text that form a part of the present application.
- A further embodiment provides a method. The method includes determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction. The method also includes directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The selection includes a selection based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit. In addition to the foregoing, other method embodiments are described in the claims, drawings, and text that form a part of the present application.
- An embodiment provides a device. The device includes means for determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction. The device also includes means for directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit. In addition to the foregoing, other device embodiments are described in the claims, drawings, and text that form a part of the present application.
- The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the drawings and the following detailed description.
-
FIG. 1 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 2 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 3 partially illustrates an association between optimization information and a program and/or data; -
FIG. 4 illustrates an exemplary operational flow in which embodiments may be implemented; -
FIG. 5 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 4 ; -
FIG. 6 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 4 ; -
FIG. 7 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 8 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 9 illustrates an exemplary operational flow implemented in a hardware device and in which embodiments may be implemented; -
FIG. 10 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 9 ; -
FIG. 11 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 9 ; -
FIG. 12 illustrates a further alternative embodiment of the exemplary operational flow ofFIGS. 9 and 11 ; -
FIG. 13 illustrates an alternative embodiment of the exemplary operational flow ofFIGS. 9 and 11 ; -
FIG. 14 illustrates another alternative embodiment of the exemplary operational flow ofFIGS. 9 and 11 ; -
FIG. 15 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 9 ; -
FIG. 16 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 17 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 18 illustrates an exemplary operational flow that may implement embodiments; -
FIG. 19 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 18 ; -
FIG. 20 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 18 ; -
FIG. 21 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 18 ; -
FIG. 22 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 23 illustrates a partial view of an exemplary computing environment that includes a computer processor-error controller in which embodiments may be implemented; -
FIG. 24 illustrates a partial view of an exemplarycomputerized device 1200 in which embodiments may be implemented; -
FIG. 25 illustrates an exemplary operational flow that may implement embodiments; -
FIG. 26 illustrates another embodiment of the exemplary operational flow ofFIG. 25 ; -
FIG. 27 illustrates another embodiment of the exemplary operational flow ofFIG. 25 ; -
FIG. 28 illustrates another embodiment of the exemplary operational flow ofFIG. 25 ; -
FIG. 29 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 30 illustrates a partial view of a controller apparatus in which embodiments may be implemented; -
FIG. 31 includes a graphical illustration of an anticipated performance of a processor in which embodiments may be implemented; -
FIG. 32 illustrates a partial view of a computerized apparatus in which embodiments may be implemented; -
FIG. 33 illustrates an exemplary operational flow that may implement embodiments; -
FIG. 34 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 33 ; -
FIG. 35 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 33 ; -
FIG. 36 illustrates a partial view of a computerized apparatus in which embodiments may be implemented; -
FIG. 37 illustrates a partial view of a computing system in which embodiments may be implemented; -
FIG. 38 illustrates an exemplary operational flow implemented in a computerized system; -
FIG. 39 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 38 ; -
FIG. 40 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 38 ; -
FIG. 41 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 38 ; -
FIG. 42 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 38 ; -
FIG. 43 illustrates an exemplary device in which embodiments may be implemented; -
FIG. 44 illustrates an exemplary system that includes synchronous circuit having at least two subcircuit blocks in which embodiments may be implemented; -
FIG. 45 illustrates an exemplary system that includes a portion of a synchronous circuit having at least two circuit blocks in which embodiments may be implemented; -
FIG. 46 illustrates an exemplary system that includes a synchronous multicore circuit having at least two subcircuit blocks in which embodiments may be implemented; -
FIG. 47 illustrates an exemplary operational flow; -
FIG. 48 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 47 ; -
FIG. 49 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 47 ; -
FIG. 50 illustrates a further alternative embodiment of the exemplary operational flow ofFIG. 47 ; -
FIG. 51 illustrates a partial view of an exemplary device in which embodiments may be implemented; -
FIG. 52 illustrates a partial view of an exemplary environment in which embodiments may be implemented; -
FIG. 53 illustrates an exemplary system in which embodiments may be implemented; -
FIG. 54 illustrates an exemplary operational flow; -
FIG. 55 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 54 ; -
FIG. 56 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 54 ; -
FIG. 57 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 54 ; -
FIG. 58 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 54 ; -
FIG. 59 illustrates an exemplary apparatus in which embodiments may be implemented; -
FIG. 60 illustrates an exemplary system in which embodiments may be implemented; -
FIG. 61 illustrates an exemplary system in which embodiments may be implemented; -
FIG. 62 illustrates an exemplary operational flow; -
FIG. 63 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 62 ; -
FIG. 64 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 62 ; and -
FIG. 65 illustrates an exemplary embodiment of a device. - In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrated embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here.
-
FIG. 1 illustrates an exemplary general-purpose computing system in which embodiments may be implemented, shown as acomputing system environment 100. Components of thecomputing system environment 100 may include, but are not limited to, acomputing device 110 having aprocessing unit 120, asystem memory 130, and asystem bus 121 that couples various system components including the system memory to theprocessing unit 120. Thesystem bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, also known as Mezzanine bus. - The
computing system environment 100 typically includes a variety of computer-readable media products. Computer-readable media may include any media that can be accessed by thecomputing device 110 and include both volatile and nonvolatile media, removable and non-removable media. By way of example, and not of limitation, computer-readable media may include computer storage media and communications media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, random-access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, or other memory technology, CD-ROM, digital versatile disks (DVD), or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by thecomputing device 110. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communications media include wired media such as a wired network and a direct-wired connection and wireless media such as acoustic, RF, optical, and infrared media. Combinations of any of the above should also be included within the scope of computer-readable media. - The
system memory 130 includes computer storage media in the form of volatile and nonvolatile memory such asROM 131 andRAM 132. A basic input/output system (BIOS) 133, containing the basic routines that help to transfer information between elements within thecomputing device 110, such as during start-up, is typically stored inROM 131.RAM 132 typically contains data and program modules that are immediately accessible to or presently being operated on by processingunit 120. By way of example, and not limitation,FIG. 1 illustrates anoperating system 134,application programs 135,other program modules 136, andprogram data 137. Often, theoperating system 134 offers services toapplications programs 135 by way of one or more application programming interfaces (APIs) (not shown). Because theoperating system 134 incorporates these services, developers ofapplications programs 135 need not redevelop code to use the services. Examples of APIs provided by operating systems such as Microsoft's “WINDOWS” are well known in the art. In an embodiment, an information store may include a computer storage media. - The
computing device 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media products. By way of example only,FIG. 1 illustrates a non-removable non-volatile memory interface (hard disk interface) 140 that reads from and writes to non-removable, non-volatile magnetic media, amagnetic disk drive 151 that reads from and writes to a removable, non-volatilemagnetic disk 152, and anoptical disk drive 155 that reads from and writes to a removable, non-volatileoptical disk 156 such as a CD ROM. Other removable/nonremovable, volatile/non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tape, solid state RAM, and solid state ROM. Thehard disk drive 141 is typically connected to thesystem bus 121 through a non-removable memory interface, such as theinterface 140, andmagnetic disk drive 151 andoptical disk drive 155 are typically connected to thesystem bus 121 by a removable non-volatile memory interface, such asinterface 150. - The drives and their associated computer storage media discussed above and illustrated in
FIG. 1 provide storage of computer-readable instructions, data structures, program modules, and other data for thecomputing device 110. InFIG. 1 , for example,hard disk drive 141, is illustrated as storing anoperating system 144,application programs 145,other program modules 146, andprogram data 147. Note that these components can either be the same as or different from theoperating system 134,application programs 135,other program modules 136, andprogram data 137. Theoperating system 144,application programs 145,other program modules 146, andprogram data 147 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into thecomputing device 110 through input devices such as amicrophone 163,keyboard 162, andpointing device 161, commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, and scanner. These and other input devices are often connected to theprocessing unit 120 through auser input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB). Amonitor 191 or other type of display device is also connected to thesystem bus 121 via an interface, such as avideo interface 190. In addition to the monitor, computers may also include other peripheral output devices such asspeakers 197 andprinter 196, which may be connected through an outputperipheral interface 195. - The
computing system environment 100 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer 180. Theremote computer 180 may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to thecomputing device 110, although only amemory storage device 181 has been illustrated inFIG. 1 . The logical connections depicted inFIG. 1 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other networks such as a personal area network (PAN) (not shown). Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. - When used in a LAN networking environment, the
computing system environment 100 is connected to theLAN 171 through a network interface oradapter 170. When used in a WAN networking environment, thecomputing device 110 typically includes amodem 172 or other means for establishing communications over theWAN 173, such as the Internet. Themodem 172, which may be internal or external, may be connected to thesystem bus 121 via theuser input interface 160, or via another appropriate mechanism. In a networked environment, program modules depicted relative to thecomputing device 110, or portions thereof, may be stored in a remote memory storage device. By way of example, and not limitation,FIG. 1 illustratesremote application programs 185 as residing oncomputer storage medium 181. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. -
FIG. 1 is intended to provide a brief, general description of an illustrative and/or suitable exemplary environment in which embodiments may be implemented. An exemplary system may include thecomputing system environment 100 ofFIG. 1 .FIG. 1 is an example of a suitable environment and is not intended to suggest any limitation as to the structure, scope of use, or functionality of an embodiment. A particular environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in an exemplary operating environment. For example, in certain instances, one or more elements of an environment may be deemed not necessary and omitted. In other instances, one or more other elements may be deemed necessary and added. - In the description that follows, certain embodiments may be described with reference to acts and symbolic representations of operations that are performed by one or more computing devices, such as the
computing device 110 ofFIG. 1 . As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of the computer of electrical signals representing data in a structured form. This manipulation transforms the data or maintains them at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the computer in a manner well understood by those skilled in the art. The data structures in which data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while an embodiment is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that the acts and operations described hereinafter may also be implemented in hardware. - Embodiments may be implemented with numerous other general-purpose or special-purpose computing devices and computing system environments or configurations. Examples of well-known computing systems, environments, and configurations that may be suitable for use with an embodiment include, but are not limited to, personal computers, handheld or laptop devices, personal digital assistants, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network, minicomputers, server computers, game server computers, web server computers, mainframe computers, and distributed computing environments that include any of the above systems or devices.
- Embodiments may be described in a general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. An embodiment may also be practiced in a distributed computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
-
FIG. 2 illustrates a partial view of anexemplary device 200 in which embodiments may be implemented. The device includes aprocessor 210, an execution-optimization synthesizer 250, and a communications link 240 exposed to the execution-optimization synthesizer and to the processor. The processor may include any processing unit, and may be described as a central processing unit that controls operation of a computer, such as for example, theprocessing unit 120 described in conjunction withFIG. 1 . The device may also include ahardware resource 220 interconnected with the processor. The hardware resource may be any hardware resource associated and/or interconnected with the processor. In an embodiment, the hardware resource may include one or more caches, illustrated as a cache A (222), a cache B (224), and through a cache N (226). Also, the hardware resource may include a branch predictor (not shown). In another embodiment, thehardware resource 220 may include any other resource associated with the processor, illustrated as other on-chip resource 228. In a further embodiment, the hardware resource includes an off-chip resource, illustrated as an off-chip resource 229. For example, the cache A (222) may be an on-chip L1 cache and the off-chip resource 229 may be an off-chip cache, such as an off-chip L2 cache. - The
processor 210 includes a processor operable to execute an instruction set. In an embodiment, the instruction set may include a collection of instructions that the processor can execute. In a further embodiment, the instruction set may include an instruction set architecture of the processor. In another embodiment, the instruction set may include a group of machine instructions and/or computer instructions that the processor can execute. In another embodiment, the instruction set may be interpreted by the processor. In further embodiment, the instruction set may include a high-level language, an assembly language, and/or a machine code that the processor can execute, with or without a compiling and/or a translation. - In an embodiment, an instruction may include a functional instruction, a branching instruction, a memory instruction, and/or other instruction that may be executed by a processor. In another embodiment, an instruction may include a statement or a portion of a statement in a program. In a further embodiment, an instruction may include at least two statements from a program. A program may include any type of a program, from several lines of instructions, to an application, and to an operating system. In an embodiment, an instruction may include a decoded instruction, a translated instruction, a portion of a translated instruction, and/or a micro-operation. In a further embodiment, an instruction may include an instruction block, a basic block, a functional block, and/or an instruction module.
- The execution-
optimization synthesizer 250 includes an execution-optimization synthesizer operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set. In an embodiment, the data may include certain data items, such as datum, byte, bit, and/or a block that are associated together. The execution-optimization synthesizer is also operable to generate an execution-optimization information utilizing the collected data from the communications link and corresponding to the execution of at least one instruction of the instruction set. - In an embodiment, the communications link 240 may include at least one of a signal-bearing medium, digital-signal-bearing medium, a light propagation medium, a light propagation medium, an optical fiber, a light guide, a computer readable storage medium, a hardware register, a bus, a memory local to the processor, an interconnection structure, and/or a digital-signal conductor. For example, a computer readable storage medium may include a memory and/or a memory system directly accessible by the processor and the execution-optimization synthesizer. By way of further example, a digital-signal conductor may include any digital signal conducting structure configured to at least transfer digital signals from the processor to the execution-optimization synthesizer. In another embodiment, the communications link includes a signal-bearing medium exposed only to an execution-optimization synthesizer and the processor. In a further embodiment, the communications link includes a signal-bearing medium exposed to an execution-optimization synthesizer and the processor, and transparent to software executing on the processor. In another embodiment, the communications link includes a signal-bearing medium exposed to an execution-optimization synthesizer, to the processor, and to software.
- In an embodiment, the
processor 210 and the communications link 240 reside on a single chip, illustrated as asingle chip 201. In another embodiment, the processor and the execution-optimization synthesizer 250 reside on a single chip, also illustrated as thesingle chip 201. In a further embodiment, the processor, communications link, and the execution-optimization synthesizer are formed on a single chip, illustrated as thesingle chip 201. - In an embodiment, the execution-
optimization synthesizer 250 includes a hardware implemented execution-optimization synthesizer. In another embodiment, the execution-optimization synthesizer includes a microengine implemented execution-optimization synthesizer. - In a further embodiment, the execution-
optimization synthesizer 250 operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to collect dynamic data from the communications link that corresponds to a runtime execution of at least one instruction of the instruction set. In an embodiment, the data collected by the execution-optimization synthesizer includes at least one of an interpreted instruction, a translated instruction, a decoded instruction, a micro-operation corresponding to at least a portion of an instruction, data correlating to the execution of the at least one instruction, a movement of data correlating to an execution of the at least one instruction of the instruction set, a result of an execution of an instruction, a branch outcome of an execution of an instruction, an exception correlating to an execution of an instruction, a store-to-load dependency correlating an execution of an instruction, a predicted value correlating to an execution of an instruction, and/or a relationship between at least two instructions of the instruction set. - In an embodiment, the execution-
optimization synthesizer 250 operable to collect data from the communications link that corresponds to an execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to collect at least one of data transparent to a user, data visible to a user, data transparent to software executing on the processor, data visible to software executing on the processor, and/or data exposed for user manipulation. - In another embodiment, the execution-
optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data includes an execution-optimization synthesizer operable to generate an optimization information that is at least one of responsive to the collected data, derived from the collected data, associated with the collected data, and/or using the collected data. In a further embodiment, the execution-optimization synthesizer operable to generate an execution-optimization information corresponding to the execution of at least one instruction of the instruction set includes an execution-optimization synthesizer operable to generate at least one of an execution-environment optimization information, a processor-environment optimization information, a data-environment optimization information, and/or a metadata reporting an execution environment. For example, an execution-environment optimization information may include an indication that an identified micro-op is used frequently and may be advantageously saved in a memory close to theprocessor 210. Another execution-environment optimization may include one or more versions of the at least one instruction of the instruction set that provides some expected benefit over the original at least one instruction of the instruction set. A memory management system serving the processor may cause one of the versions to be executed transparently instead of the original at least one instruction of the instruction set, such as through a translation lookaside buffer. By way of further example, metadata reporting an execution environment may include tracking information with respect to data objects. For example, certain access predictors may work well with certain data objects, or some objects do not appear to be co-resident in the cache, or may be highly co-resident, or certain pointers in object-orientated systems typically point to specific object types, or specific value predictors have worked well with some data in the past. - In other embodiments, the execution-
optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data may include an execution-optimization synthesizer operable to generate an execution-optimization information optimizing data handling, which may be by a data class. In some instances, a data class may include certain data items (datum, byte, bit, a block, a page) that are used once and never again. In other instances, a data class may include certain data items are used constantly but never written and/or infrequently written. In further data classes, certain data items may be constantly read and written to, or other data items may be often being written but never read. The execution-optimization synthesizer operable to generate an execution-optimization information may predict how a data class will likely be used in the future and/or saves the data items in a manner and/or a location that substantially optimizes utilization of the data items by an instruction group and/or storage of the data items by the computing device. Any suitable type of predictive algorithm providing meaningful results may be used, including a predictive algorithm based on a Bayesian method, and/or a learning algorithm. The prediction may be written to a ghost page associated with a piece of data. A prediction may be straight forward if it is known that the data piece will never be written or read. Each data item will expose what its peculiar flavor is. This may be implemented down to the size of a single cache line, or even below the cache line. - In further embodiments, the execution-
optimization synthesizer 250 operable to generate an execution-optimization information utilizing the collected data may include an execution-optimization synthesizer operable to generate an execution-optimization information providing a storage mobility for data items that are associated together in a substantial disequilibrium based upon a shared fate, a shared nature, an entanglement to a page and/or line of similarly handled data. The data item may include one or more extra bits (tag) on end of a data item that may indicate its size, nature (written but never read, read but never written, read once in the life of the program, used by at least two threads). In a further embodiment, an indicator may say which code relates with to the data item. This may be used for doing storage assignment. For example, if the data item includes a semaphore that is used across multiple threads, that should be known and the data item managed accordingly. Most data is associated with a particular body of code and assigned to a storage unit together. By watching that, these assignments can be done together between the I-cache and the D-cache. - In an embodiment, the execution-
optimization synthesizer 250 further includes an execution-optimization synthesizer operable to save the optimization information. The optimization information may be saved close to theprocessor 210, for example in an on-chip resource such as the cache A (222), or in the off-chip resource 229, such as a system memory or storage medium. In another embodiment, the execution-optimization synthesizer further includes an execution-optimization synthesizer operable to save the optimization information in an association with the at least one instruction of the instruction set. - In an embodiment, the
device 200 includes a computing device, such as for example, thecomputing device 110 of thecomputing system environment 100 ofFIG. 1 . In a further embodiment, the computing device includes at least one of desktop computing device, a laptop-computing device, a portable computing device, and/or a supercomputing device. -
FIG. 3 partially illustrates an association between optimization information and a program and/or data. An instruction set architecture is illustrated as aninstruction set architecture 265, and related compiled programs are illustrated as anoperating system 272 and anapplication program 276. Theapplication program 276 may be a compiled application program or a compliable application program. Also illustrated is adata set 274. - The execution-optimization information generated by the execution-
optimization synthesizer 250 may be associated with the at least one instruction of the instruction set of a program, an application, and/or a module that includes the at least one instruction. In the case of data, the execution-optimization information generated by the execution-optimization synthesizer may be associated with data received for processing by the execution, data produced by the execution, the at least one instruction of the instruction set that processed the data, and/or other related matter.FIG. 3 illustrates certain embodiments of an association of the execution-optimization information with the at least one instruction of the instruction set. The ghost pages 282 that include the execution-optimization information pertaining to theoperating system 272 may be virtually and/or physically associated in an information storage with the operating system. The information storage may include a non-volatile memory structure. For example, the ghost pages may be saved in the same file as the operating system. When the operating system is loaded into system memory, the ghost pages may remain in the information storage, or may be, such as for example, also loaded into system memory, or loaded into an inboard memory. In another embodiment, an execution-optimization information 284 pertaining to adata set 274 is associated in a information storage with the data set. In a further embodiment, an execution-optimization profile 286 is associated in an information storage with anapplication 276. - In an embodiment, a ghost page of the ghost pages 282 containing the execution-optimization information may be associated with a selected page of a program or data whose content corresponds to the generation of the execution-optimization information, such as for example, a selected page containing the instruction of the
operating system 272, a selected page containing the data of thedata set 274, and/or a selected page containing theapplication program 276. By way of further example, data in a ghost page of the ghost pages 282 may indicate that a branch instruction on an identified line of an associated selected page of an application should not be taken. In another embodiment, a file containing the execution-optimization information 284 may be associated with a file containing the data set. - The illustrated embodiments of the
ghost page 282, the execution-optimization information 284, and the execution-optimization profile 286 respectively associated with theoperating system 272, thedata 274, and theapplication 276 are intended only to be illustrative and are not limiting. In another embodiment for example, the ghost pages 282 may be associated with theapplication 276, or thedata set 274. -
FIG. 4 illustrates an exemplaryoperational flow 300 in which embodiments may be implemented. In an embodiment, the operational flow may be implemented in thecomputing system environment 100 ofFIG. 1 and/or thedevice 200 ofFIG. 2 . After a start operation, the operational flow moves to anaccumulation operation 310. The accumulation operation collects data corresponding to an execution of at least one instruction of an instruction set from a processor executing the at least one instruction of an instruction set. Anenhancement operation 330 creates an execution-optimization information utilizing the collected data corresponding to the execution of at least one instruction of the instruction set and which is usable in another execution of the at least one instruction of an instruction set. The operational flow then moves to an end operation. -
FIG. 5 illustrates an alternative embodiment of the exemplaryoperational flow 300 ofFIG. 4 . Theaccumulation operation 310 may include at least one additional operation. The at least one additional operation may include anoperation 312 and/or anoperation 314. Theoperation 312 collects data corresponding to an execution of at least one instruction of an instruction set from a processor actually executing the at least one instruction of an instruction set. Theoperation 314 collects data corresponding to a runtime execution of at least one instruction of an instruction set from a processor executing the at least one instruction of an instruction set. -
FIG. 6 illustrates another alternative embodiment of the exemplaryoperational flow 300 ofFIG. 4 . Theenhancement operation 330 may include at least one additional operation. The at least one additional operation may include anoperation 332, anoperation 334, anoperation 336, and/or anoperation 338. Theoperation 332 creates a modification of the at least one instruction of the instruction set usable in another execution of the at least one instruction of an instruction set. For example, the creating a modification of the at least one instruction may include creating one or more versions of the instruction where each version may provide some expected benefit over the original version, or saving a decoded version of a frequently fetched at least one instruction to save a future decoding of the frequently fetched instruction. Theoperation 334 creates a branch predictor modification usable in another execution of the at least one instruction of an instruction set. Theoperation 336 creates a data format modification usable in another execution of the at least one instruction of an instruction set. Theoperation 338 creates a data layout optimization usable in another execution of the at least one instruction of an instruction set. For example, in an embodiment, a data layout optimization may include a repacking of data, a compaction of data, and/or a saving of data that may be useful in execution the at least one instruction. -
FIG. 7 illustrates a partial view of anexemplary device 400 in which embodiments may be implemented. The device includes afirst circuit 410 for collecting data corresponding to a runtime execution of at least one instruction of an instruction set from a communications link that is transparent to software executing on the processor and exposed to a processor having a processor instruction set that includes the instruction set. The device also includes a second circuit 420 for creating an execution-optimization information utilizing the collected data corresponding to the execution of at least one instruction of the instruction set and which is usable in another execution of the at least one instruction of an instruction set. In an embodiment, the second circuit for creating the execution-optimization information includes the first circuit for collecting data corresponding to an execution. -
FIG. 8 illustrates a partial view of anexemplary device 500 in which embodiments may be implemented. The device includes amicroengine 550 operatively coupled with aprocessor 510 having an instruction set. The processor may include any processor, such as for example, theprocessing unit 120 described in conjunction withFIG. 1 . The processor may be described as a central processing unit that controls operation of a computer. In an embodiment, the device may include an internal bus 530 providing a parallel data transfer path between the processor and thehardware resource 220. - The
microengine 550 includes a microengine operable to gather data in a manner transparent to software executing on theprocessor 510 and corresponding to a runtime execution of at least a portion of the instruction set by the processor. The microengine is also operable to create a runtime-based optimization profile utilizing the gathered dynamic data and which is useable in a subsequent execution of the at least of a portion of the instruction set by the processor. - In an embodiment, the
microengine 550 may include a microengine operable to gather at least one of dynamic data and/or static data in a manner transparent to software executing on the processor and corresponding to a runtime execution of at least a portion of the instruction set by theprocessor 510. - In another embodiment, the
device 500 may further include theprocessor 510 having an instruction set. In a further embodiment, the processor and themicroengine 550 are formed on a chip, illustrated as asingle chip 501. In an embodiment, the device may further include a communications link 540 exposed to the microengine. In another embodiment, the device may include the communications link exposed to the microengine and transparent to software executing on the processor. In a further embodiment, the device may include the communications link operably coupled to the microengine and to the processor. In another embodiment, the communications link may include an interconnection structure. -
FIG. 9 illustrates an exemplaryoperational flow 600 implemented in a hardware device and in which embodiments may be implemented. In an embodiment, the operational flow may be implemented in thecomputing system environment 100 ofFIG. 1 , and/or thedevice 500 ofFIG. 8 . After a start operation, the operational flow moves to aharvesting operation 610. The harvesting operation gathers data corresponding to an execution of at least one instruction of an instruction set by a processor and in a manner transparent to software executing on the processor. Animprovement operation 630 creates an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one instruction of the instruction set by the processor. In an embodiment, the execution-based optimization profile may enhance a future execution of the at least one instruction by increasing an efficiency of the execution, reducing cache misses, reducing exceptions, reducing storage used, and/or reducing energy consumed. The operational flow then proceeds to an end operation. -
FIG. 10 illustrates an alternative embodiment of the exemplaryoperational flow 600 ofFIG. 9 . Theharvesting operation 610 may include at least one additional operation. The at least one additional operation may include anoperation 612, anoperation 614, and/or anoperation 616. Theoperation 612 gathers at least one of dynamic data and/or static data in a manner transparent to software executing on the processor and corresponding to an execution of at least one instruction of an instruction set by a processor. Theoperation 614 gathers data in a manner transparent to software executing on the processor and corresponding to a normal execution of at least one instruction of an instruction set by a processor. Theoperation 616 gathers data in a manner transparent to software executing on the processor and corresponding to a runtime execution of at least one instruction of an instruction set by a processor. Theimprovement operation 630 may include at least one additional operation, such as anoperation 632. Theoperation 632 creates an execution-based optimization profile utilizing the gathered data and which is operable to modify a subsequent execution of the at least one instruction of the instruction set by the processor. -
FIG. 11 illustrates another alternative embodiment of the exemplaryoperational flow 600 ofFIG. 9 . The operational flow may include at least one additional operation. The at least one additional operation may include amodification operation 640. The modification operation changes an execution of the at least one instruction of the instruction set in response to the execution-based optimization profile. - The
modification operation 640 may include at least one additional operation. The at least one additional operation may include anoperation 642, anoperation 644, and/or anoperation 646. Theoperation 642 changes a movement of data with respect to the processor in response to the execution-based optimization profile. For example, changing a movement of data may include changing a movement of data toward and/or away from the processor. Changing a movement of data toward the processor may include a prefetch of data. By way of further example, frequently read data may be stored in a memory close to the processor and infrequently read data may be stored in a memory far from the processor. By way of example, frequently written or rewritten data may be stored in a memory close to the processor and infrequently read data may be stored in a memory far from the processor. Theoperation 644 changes a format of data processable by the processor in response to the execution-based optimization profile. For example, theoperation 644 may save data translated from one format to another, such as from big-endian to little-endian, or floating-point formats. Theoperation 646 changes a movement of the at least one instruction of the instruction set toward a processor for execution in response to the execution-based optimization profile. -
FIG. 12 illustrates a further alternative embodiment of the exemplaryoperational flow 600 ofFIGS. 9 and 11 . Themodification operation 640 may include at least one additional operation. The at least one additional operation may include anoperation 648, and/or anoperation 652. Theoperation 648 substitutes at least one other instruction of the instruction set for execution by the processor in place of the at least one instruction of the instruction set in response to the execution-based optimization profile. Theoperation 652 substitutes at least one other instruction of the instruction set for the at least one instruction of the instruction set in a static program in response to the execution-based optimization profile. -
FIG. 13 illustrates an alternative embodiment of the exemplaryoperational flow 600 ofFIGS. 9 and 11 . Themodification operation 640 may include at least one additional operation. The at least one additional operation may include anoperation 654. Theoperation 654 executes at least one other instruction of the instruction set in response to the execution-based optimization profile. Theoperation 654 may include at least one additional operation, such as an operation 656. The operation 656 executes at least one other instruction of the instruction set in response to the execution-based optimization profile and omits an execution of the at least one instruction. -
FIG. 14 illustrates another alternative embodiment of the exemplaryoperational flow 600 ofFIGS. 9 and 11 . Themodification operation 640 may include at least one additional operation. The at least one additional operation may include anoperation 658, and/or anoperation 662. Theoperation 658 omits an execution of at least one other instruction of the instruction set in response to the execution-based optimization profile. Theoperation 662 omits an execution of the at least one instruction of the instruction set in response to the execution-based optimization profile. -
FIG. 15 illustrates another alternative embodiment of the exemplaryoperational flow 600 ofFIG. 9 . The operational flow may include at least one additional operation, such as theoperation 670. Theoperation 670 saves the execution-based optimization profile. Theoperation 670 may include at least one additional operation, such as theoperation 672. Theoperation 672 saves the execution-based optimization profile in an association with the at least one instruction of the instruction set. Theoperation 672 may include at least one additional operation, such as theoperation 674. Theoperation 674 saves the execution-based optimization profile in an associative cache with the at least one instruction of the instruction set. -
FIG. 16 illustrates a partial view of anexemplary device 700 in which embodiments may be implemented. The device includes means 710 for gathering data in a manner transparent to software executing on the processor and corresponding to an execution of at least one machine instruction of an instruction set by the processor. The device includes 710 means 720 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor. - In an alternative embodiment the
means 710 includes hardware-implemented means 712 for gathering data in a manner transparent to software executing on a processor and corresponding to an execution of at least one machine instruction of an instruction set by the processor. In another alternative embodiment, the means 720 may include at least one additional means. The at least one additional means may include 720 hardware-implemented means 722 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor. The at least one additional means may include software-implemented means 724 for creating an execution-based optimization profile utilizing the gathered data and which is useable in a subsequent execution of the at least one machine instruction of the instruction set by the processor. -
FIG. 17 illustrates a partial view of anexemplary device 800 in which embodiments may be implemented. The device includes aninformation store 840 operable to save an execution-optimization information 842, afirst processor 810, and ahardware circuit 850. The hardware circuit includes a circuit for altering an execution of a program by the first processor in response to the execution-optimization information. The execution-optimization information includes execution-optimization information created by a hardware device utilizing data collected from a second processor (not shown). The collected data corresponding to a previous runtime execution by the second processor of at least a portion of the program that was transparent to any software executing on the second processor. - In an embodiment, the execution-
optimization information 842 may include the execution-optimization information generated by the execution-optimization synthesizer 250 ofFIG. 2 . In another embodiment, the execution-optimization information may include at least one of the ghost pages 272, the execution-optimization information 274, and/or the execution-optimization profile 276 described in conjunction withFIGS. 2 and 3 . In an alternative embodiment, thefirst processor 810 includes a first processor operable to execute an instruction set and operably coupled to theinformation store 840. In another embodiment, the hardware circuit for altering an execution of a program includes a hardware circuit for altering an execution of a program and operably coupled to the information store. In a further embodiment, the hardware circuit includes a hardware circuit operably coupled to the processor. - In an embodiment, the
hardware circuit 850 includes a hardware circuit for copying the execution-optimization information from the information store to a memory operably coupled to the first processor. For example, the memory operably coupled to the first processor may include thehardware resource 220, such as the on-chip cache B 224, or the off-chip resource 229, such as an off-chip cache or an outboard memory or an outboard storage. - In a further embodiment, the
hardware circuit 850 for altering an execution of a program by thefirst processor 810 in response to the execution-optimization information includes a hardware circuit for causing an alteration of an execution of at least one instruction of an instruction set of a static program by the first processor in response to the execution-optimization information. In another embodiment, the altering an execution of a program by the first processor in response to the execution-optimization information includes altering an execution of at least one instruction of an instruction set of a dynamic program by the first processor in response to the execution-optimization information. In a further embodiment, the altering an execution of a program by the first processor in response to the execution-optimization information includes altering a context of an execution of a program by the first processor in response to the execution-optimization information. - In an embodiment, the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering an execution of at least one instruction of an instruction set of a program by the first processor in response to the execution-optimization information. In another embodiment, the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering a movement of data with respect to the first processor in response to the execution-optimization information. In a further embodiment, the hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information includes a hardware circuit for altering a movement of at least one instruction of the program toward the first processor in response to the execution-optimization information.
- In some instances, the altering an execution of a program by the first processor in response to the execution-optimization information may include directly altering an execution of a program by the first processor in response to the execution-optimization information. In other instances, the altering an execution of a program by the first processor in response to the execution-optimization information may include causing an alteration of an execution of a program by the first processor in response to the execution-optimization information. In further instances, the altering an execution of a program by the first processor in response to the execution-optimization information may include initiating an alteration of an execution of a program by the first processor in response to the execution-optimization information.
- In an embodiment, the execution-optimization information includes execution-optimization information created by a hardware device (not shown) utilizing data collected from a second processor (not shown) that is at least substantially a same processor as the
first processor 810. For example, the execution-optimization information used to alter a current execution of a program by thefirst processor 810 may have been created during a prior execution of the program by the first processor. In another embodiment, the execution-optimization information includes an execution-optimization information created by a hardware device utilizing data collected from a second processor that is at least a substantially different processor from the first processor. For example, the execution-optimization information used to alter a current execution of a program by the first processor may have been created during a prior execution of the program by a completely different second processor, which may be a processor running in a completely different computing device. - In an embodiment, the information store includes at least a portion of a cache. In another embodiment, the information store includes at least one of an I-cache or a D-cache. In a further embodiment, the information store includes at least one of a volatile memory or a non-volatile memory. In a further embodiment, the information store includes a computer readable medium. In another embodiment, the information store may include a non-volatile outboard storage, such as magnetic disk storage.
- In another embodiment, the
first processor 810 and thehardware circuit 850 are formed on a single chip, illustrated as asingle chip 801. In a further embodiment, thefirst processor 810 and theinformation store 840 are formed on a single chip, illustrated as asingle chip 801. -
FIG. 18 illustrates an exemplaryoperational flow 900 that may implement embodiments. In an embodiment, the operational flow may be implemented in thecomputing system environment 100 ofFIG. 1 , and/or thedevice 800 ofFIG. 17 . After a start operation, the operational flow moves to aninstruction determination operation 910. The instruction determination operation identifies an instruction to be fetched for execution by a first processor. Anoptimization operation 920 alters an execution of the instruction to be fetched for execution in response to an execution-optimization information. The execution-optimization information 930 was previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor. The flow then moves to an end operation. -
FIG. 19 illustrates an alternative embodiment of the exemplaryoperational flow 900 ofFIG. 18 . Theinstruction determination operation 910 may include at least one additional operation, such as an operation 912. The operation 912 identifies an instruction to be fetched from an instruction set of a static program for execution by a first processor. Theoptimization operation 920 may include at least one additional operation, illustrated as theoperation 922. Theoperation 922 alters an execution of the instruction to be fetched from an instruction set of a static program for execution in response to an execution-optimization information. -
FIG. 20 illustrates an alternative embodiment of the exemplaryoperational flow 900 ofFIG. 18 . The execution-optimization information 930 may include at least one additional embodiment. The at least one additional embodiment may include an execution-optimization information 932 and/or an execution-optimization information 934. The execution-optimization information 932 includes execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor, the second processor being at least a substantially same processor as the first processor. The execution-optimization information 934 may include an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor, the second processor being at least a substantially different processor from the first processor. In an embodiment, the second processor may be a processor of a multiprocessor computing device that includes the first processor. In another embodiment, the second processor may be a processor of a second computing device that is a separate and a distinct computing device from a first computing device that includes the first processor. -
FIG. 21 illustrates an alternative embodiment of the exemplaryoperational flow 900 ofFIG. 18 . The execution-optimization information 930 may include at least one additional embodiment. The at least one additional embodiment may include an execution-optimization information 936, an execution-optimization information 938, and/or an execution-optimization information 942. The execution-optimization information 936 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a state of the second processor during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor. The execution-optimization information 938 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to an instruction state during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor. The execution-optimization information 942 includes an execution-optimization information having been previously generated by a hardware device utilizing data corresponding to a data relationship during a real execution of the instruction to be fetched by a second processor that was transparent to software executing on the second processor. -
FIG. 22 illustrates a partial view of anexemplary device 1000 in which embodiments may be implemented. The device includesmeans 1010 for identifying an instruction to be fetched from an instruction set of a program for execution by a first processor. The device also includesmeans 1020 for altering an execution of the instruction from the instruction set of a program in response to an execution-optimization information. The execution-optimization information 1030 having been generated by a hardware device utilizing data generated by a second processor, and which data corresponds to a previous real execution the instruction to be fetched from the instruction set of a program that was transparent to software executing on the second processor. -
FIG. 23 illustrates a partial view of anexemplary computing environment 1100 that includes a computer processor-error controller 1120 in which embodiments may be implemented. The computer processor-error controller includes amonitoring circuit 1130 and anerror recovery circuit 1140. The monitoring circuit is operable to detect a computational error corresponding to an execution of a second instruction by aprocessor 1110 operable to execute a sequence ofprogram instructions 1160. The sequence of program instructions includes a first instruction that is fetched before the second instruction. The error recovery circuit is operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. - In an embodiment, a computational error includes an error introduced during computation. In another embodiment, a computational error includes a setup/hold violation, also known as a setup and hold time requirement violation for a transistor. For example, in an embodiment, a transistor of the
processor 1110 has input requirements. A setup and hold time defines a window of time during which the input of the transistor must be valid and stable in order to assure valid data at the output of the transistor. Setup is a time that the input must be valid before the transistor samples. Hold time is a time the input must be maintained valid while the transistor samples. In a further embodiment, a setup and hold violation may include valid values, but the values occur outside the window of time. In another embodiment, a setup and hold violation may include an invalid value that occurs within the window of time. In a further embodiment, a computational error includes at least one of a computational error corresponding to a processor clock speed, a processor voltage, a processor temperature, a noise spike, a charged particle, a soft error, an unreliable processor hardware, an incorrectly executed instruction, and/or an electromigration induced error. - Program instructions are generally fetched in a sequence or order for execution by the
processor 1110. A first instruction of the sequence ofprogram instructions 1160 may execute, but a second instruction of the sequence may not execute because of a processor computational error. Themonitoring circuit 1130 is operable to detect a computational error corresponding to an execution of the second instruction. Rather than losing the entire execution of the sequence of program instructions because of the computational error, the error recovery circuit is operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. Execution of the sequence of program instructions then restarts from the first instruction. Means for designating the first instruction are described below. - In an embodiment, the
monitoring circuit 1130 further includes a monitoring circuit implemented in hardware and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. Any technique known by those skilled in the art may be used to implement the monitoring circuit in hardware. In another embodiment, the monitoring circuit further includes a monitoring circuit implemented in a dynamic implementation verification architecture (DIVA) and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. Examples of a DIVA architecture approach can be found in T. Austin, DIVA: A Reliable Substrate for Deep Submicron Microarchitecture Design, printed on Feb. 6, 2006, and located at http://www.huron.ucdavis.edu/micro32/presentations/p_austin.pdf; S. Chatterjee, Efficient Checker Processor Design, printed on Feb. 6, 2006, and located at http://www.eecs.umich.edu/˜taustin/papers/MICRO33-divadesign.pdf, each of which is incorporated herein by reference. In a further embodiment, the monitoring circuit may includes a hardware implemented monitoring circuit employing a TEATime execution checker algorithm architecture and operable to detect a computational error corresponding to an execution of a second instruction by a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. The TEATime execution checker algorithm architecture may also be known as a Timing Error Avoidance system. Examples of a TEATime execution checker algorithm approach can be found in United States patent application entitled SYSTEM AND METHOD OF DIGITAL SYSTEM PERFORMANCE ENHANCEMENT, naming Augustus K. Uht as inventor and published as US 2004/0174944 A1; G. Uht and R. Vaccaro, Adaptive Computing ( . . . via Timing Error Avoidance), printed on Feb. 6, 2006, and located at http://www.lems.brown.edu/˜iris/BARC2005/Webpage/BARCpresentations/uht.pdf; A. Uht and R. Vaccaro, TEAPC: Adaptive Computing and Underclocking in a Real PC, printed on Feb. 6, 2006, and located at http://www.ele.uri.edu/˜uht/papers/MuRI-TR-20041027.pdf; A. Uht, TEAtime: Timing Error Avoidance for Performance Enhancement and Environment Adaptation, printed on Feb. 6, 2006, and located at www.ele.uri.edu/˜uht/talks/TEAtimeroadshow2003.Dist.pdf; A, Uht, Uniprocessor Performance Enhancement Through Adaptive Clock Frequency Control, printed on Feb. 6, 2006, and located at http://www.ele.uri.edu/˜uht/papers/SSGRR2003wFnlUht.pdf, each of which is incorporated herein by reference. In another embodiment, the monitoring circuit may be implemented in a RAZOR architectural approach. An example of a RAZOR architecture approach can be found in D. Ernst et al., Razor: A Low-Power Pipeline Based on Circuit-Level Timing Speculation, printed on Jul. 7, 2006, and located at http://www.gigascale.org/pubs/426/razor.submit.authors.pdf, which is incorporated herein by reference. - In an embodiment, the
monitoring circuit 1130 further includes a hardware implemented monitoring circuit employing another processor (not shown) operable to execute the second instruction substantially in parallel with theprocessor 1110. The monitoring circuit also is operable to detect a computational error corresponding to an execution of a second instruction by the processor by correlating an output of the processor with the output of the another processor. In another embodiment, the monitoring circuit further includes a hardware implemented monitoring circuit operable to detect a computational error corresponding to a setup/hold violation occurring in a processor operable to execute a sequence of program instructions that includes a first instruction that is fetched before the second instruction. - In an embodiment,
error recovery circuit 1140 includes an error recovery circuit operable to restore an execution of the sequence of program instructions to a logical state associated with the first instruction in response to the detected computational error. In a further embodiment, the error recovery circuit includes an error recovery circuit implemented in at least one of hardware, software, firmware, and/or a microengine, and operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. In another embodiment, the error recovery circuit includes an error recovery circuit implemented in software associated with at least one of an operating system or a program executable by the processor and operable to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. For example, in an embodiment, the error recovery circuit detects a computational error and hands off recovery from the error to an operating system that includes the error recovery circuit. In a further embodiment, the error recovery circuit includes an error recovery circuit operable to designate the first instruction as a checkpoint and to restore an execution of the sequence of program instructions to the checkpoint in response to the detected computational error. In an embodiment, the error recovery circuit includes an error recovery circuit operable to designate the first instruction as an instruction separated from the second instruction by a predetermined number of instructions and to restore an execution of the sequence of program instructions to the first instruction in response to the detected computational error. For example, a predetermined number of instructions may include a 5K instruction, a 10K instruction, a 25K instruction, or a 50K instruction spacing. - In another embodiment, the
error recovery circuit 1140 includes an error recovery circuit operable to select the first instruction corresponding to a checkpoint protocol [periodically taken, equidistant, predetermined number of instructions] and to rollback an execution of the sequence of program instructions to the selected checkpoint in response to the detected computational error. In a further embodiment, theexemplary computing environment 1100 includes thecontroller 1120, theprocessor 1110, and aninformation store 1150. In another embodiment, the controller and the processor are formed on asingle chip 1101. -
FIG. 24 illustrates a partial view of an exemplarycomputerized device 1200 in which embodiments may be implemented. The computerized device includes aprocessor 1210 and acontroller 1220. The processor is operable to execute a sequence ofprogram instructions 1250 having a fetch order that includes a first instruction that is fetched before a second instruction. The controller includes a hardware-implementedexecution verification circuit 1230 and anerror recovery circuit 1240. The hardware-implemented execution verification circuit is configured for detecting a computational error corresponding to an execution of the second instruction by the processor. The error recovery circuit is configured for rolling back an execution of the sequence of program instructions to the first instruction in response to the detected computational error. - In an embodiment, the controller further includes a controller that includes an error recovery circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving a rollback of an execution of the sequence of program instructions to the first instruction in response to the detected computational error. In another embodiment, the controller further includes a controller that includes an error recovery circuit implemented in at least one of hardware, software, firmware, and/or microengine for rolling back an execution of the sequence of program instructions to the first instruction in response to the detected computational error.
- In an embodiment, the processor and the controller are formed on a same chip, illustrated as a
chip 1201. In another embodiment, thecomputerized device 1200 further includes theprocessor 1210, thecontroller 1220, and aninformation store 1250. -
FIG. 25 illustrates an exemplaryoperational flow 1300 that may implement embodiments. After a start operation, the operational flow moves to a detectingoperation 1310. The detecting operation senses a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. In an embodiment, a computational error includes any failure of a processor to perform its intended function. For example, a computational error includes an incorrectly executed instruction. In another embodiment, a computational error includes a computational error occurring in a processor execution path. A computational error occurring in the processor execution path may include a error corresponding to a setup/hold violation, a timing error because a clock is running too fast, a voltage error because a processor voltage is too low, a noise spike, a soft error such as a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, and/or a charged particle. A charged particle may include a cosmic ray, an alpha particle, a thermal neutron, a neutron, proton, pion, and/or muon. - A
recovery operation 1330 restores an execution of the instruction sequence to a logical state associated with the first instruction in response to the sensed computational error. The operational flow then moves to an end operation. - In an embodiment, the
operational flow 1300 may be implemented in thecomputing system environment 1100 and the computer processor-error controller 1120 ofFIG. 23 , and/or in theexemplary computing device 1200 ofFIG. 24 . -
FIG. 26 illustrates another embodiment of the exemplaryoperational flow 1300 ofFIG. 25 . The detectingoperation 1310 may include at least one additional operation. The at least one additional operation may include anoperation 1312 and/or anoperation 1314. Theoperation 1312 senses a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. Theoperation 1314 senses an execution path synchronization error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. -
FIG. 27 illustrates another embodiment of the exemplaryoperational flow 1300 ofFIG. 25 . The detectingoperation 1310 may include at least one additional operation. The at least one additional operation may include anoperation 1316, anoperation 1318, and/or anoperation 1319. Theoperation 1316 senses an error correlating to a voltage applied to a processor and that corresponds to an execution of a second instruction by the processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. The voltage applied to the processor may include a processor core voltage, a processor associated cache voltage, and/or a buffer voltage. Theoperation 1318 senses an error correlating to a processor temperature and corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. Theoperation 1319 senses at least one of a computational error corresponding to a processor clock speed, a processor voltage, a noise spike, a cosmic particle, a soft error, an unreliable hardware, an incorrectly executed instruction, and/or an electromigration induced error that corresponds to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. -
FIG. 28 illustrates another embodiment of the exemplaryoperational flow 1300 ofFIG. 25 . Therecovery operation 1330 may include at least one additional operation. The at least one additional operation may include anoperation 1332, and/or anoperation 1334. Theoperation 1332 rolls back an execution of the instruction sequence to a checkpoint corresponding to a logical state associated with the execution of the first instruction in response to the sensed computational error. Theoperation 1334 restores an execution of the instruction sequence to a logical state associated with the first instruction determined by a checkpoint protocol and in response to the sensed computational error. -
FIG. 29 illustrates a partial view of anexemplary device 1400 in which embodiments may be implemented. The device includesmeans 1410 for sensing a computational error corresponding to an execution of a second instruction by a processor operable to execute an instruction sequence having a first instruction that is fetched before the second instruction. The device also includesmeans 1420 for restoring an execution of the instruction sequence to the first instruction in response to the sensed computational error. -
FIG. 30 illustrates a partial view of acontroller apparatus 1500 in which embodiments may be implemented. The controller apparatus includes amonitoring circuit 1520, arecovery circuit 1530, and acontrol circuit 1540. The monitoring circuit includes a monitoring circuit for detecting a computational error corresponding to an execution of an instruction of a sequence ofinstructions 1560 by aprocessor subsystem 1510 having an adjustable operating parameter. An adjustable operating parameter may include any adjustable operating parameter of the processor subsystem. Examples include an adjustable clock signal, illustrated asCLK 1514, and/or an adjustable voltage, illustrated as avoltage Vcc 1516 applied to theprocessor core 1512. The recovery circuit includes a recovery circuit for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error. The control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion. In an embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error. - In an embodiment, the
monitoring circuit 1520 includes a hardware-implemented monitoring circuit for detecting a computational error corresponding to an execution of an instruction of a sequence ofinstructions 1560 by aprocessor subsystem 1510 having an adjustable operating parameter. In another embodiment, the monitoring circuit includes a monitoring circuit implemented in at least one of hardware, software, firmware, and/or a microengine for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter. In a further embodiment, the monitoring circuit includes a monitoring circuit implemented in dynamic implementation verification architecture (DIVA) and for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter. In another embodiment, the monitoring circuit includes a monitoring circuit employing a TEATime execution checker algorithm and for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor subsystem having an adjustable operating parameter. - In an embodiment, the
recovery circuit 1530 includes a recovery circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for rolling back an execution of the sequence ofinstructions 1560 to a checkpoint in response to the detected computational error. In a further embodiment, the recovery circuit includes a recovery circuit implemented in software associated with at least one of an operating system or a program executable by theprocessor subsystem 1510 and for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error. In another embodiment, the recovery circuit includes a recovery circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving a re-execution of the instruction by the processor subsystem by rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error. - In an embodiment, the
control circuit 1540 includes a control circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for adjusting the adjustable operating parameter in response to a performance criterion. -
FIG. 31 includes a graphical illustration of ananticipated performance 1570 of a processor in which embodiments may be implemented. The graphical illustration includes a state where a processor voltage Vcc essentially equals a constant N. The horizontal axis represents an adjustable operating parameter, illustrated as an increasing processor clock rate, and the vertical axis illustrates an increasing time. The horizontal axis also illustrates respectfully a manufacturer's specified nominal zero error point MNZEP, an actual nominal zero error point ANZEP, and an optimized error-tolerant operating point OETOP for the processor. In another embodiment, a variation ofFIG. 31 may include a similar graphical illustration of an anticipated processor performance where the horizontal axis illustrates a reciprocal of a processor voltage, such as Vcc. In such embodiment, the clock rate remains constant. - The manufacturer's nominal zero error point MNZEP reflects a common practice of manufacturers in specifying processor ratings and operating parameters to generally assume a worst-case operating situation, and to set the operating clock rate or frequency at the manufacturer's nominal zero error point MNZEP. The manufacturer's nominal zero error point MNZEP may be a point selected to produce a tolerated operating error rate that is very small, for example an operating error rate that is in a range of 10-9 per hour. In other instances, the manufacturer's nominal zero error point MNZEP reflects a manufacturer's practice of labeling a higher speed processor chip as a lower speed processor chip. In situations, an individual processor can be operated at a higher clock rate than the manufacturer's nominal zero error point MNZEP without exceeding a manufacturer's tolerated operating error rate. Without an ability to recover from timing errors resulting from a clock rate higher than the actual nominal zero error point ANZEP, a computational system is subject to an increased possibility of system failure and data loss/corruption due to the timing errors as clock rate further increases.
- An error rate line ER illustrates an error rate per instruction or per instruction sequence for a processor. An execution rate line ET illustrates an execution time per instruction or per instruction sequence for the processor. A time for error-corrected execution line TECE illustrates a time for a time for error-corrected execution of an instruction or instruction sequence, and reflects a measure of useful work performed by the processor. A time for an error-corrected execution at a particular clock rate in excess of the ANZEP includes a sum of the execution rate line ET and a time to correct erroneous executions because the ANZEP is exceeded. The time for error-corrected execution line TECE illustrates this sum and includes an optimal error-tolerant operating portion OETOP, identified as a “0° slope” location. In an embodiment, running a processor having a computational fault recovery means at the OETOP results in a minimum time for an error-corrected execution of an instruction or instruction sequence. In a further embodiment, the time for error-corrected execution line TECE illustrates a performance criterion. In another embodiment, the time for error-corrected execution line TECE represents a performance criterion corresponding to an incidence of a detected computational error, illustrated as a selected point (not shown) on the error rate line ER.
- Returning to
FIG. 30 , in an embodiment, thecontrol circuit 1540 includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error. In another embodiment, the performance criterion includes a performance criterion embodied in the time for error-corrected execution line TECE ofFIG. 31 . For example, the adjusting the adjustable operating parameter in response to a performance criterion may include adjusting a clock rate to achieve a performance criterion of a minimum TECE. In a further embodiment, the performance criterion includes a performance criterion corresponding to an incidence of the detected computational error. For example, the adjusting may include adjusting a clock rate to achieve a performance criterion of a target error rate along the ER line, thus achieving a performance criterion of no more than the target error rate. - In an embodiment, the
control circuit 1540 includes a control circuit implemented in software associated with at least one of an operating system and/or a program executable by the processor subsystem and for adjusting the adjustable operating parameter in response to a performance criterion. In another embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to an incidence of a detected processor subsystem computational error. In a further embodiment, the control circuit includes a control circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving an adjustment of the adjustable operating parameter in response to a performance criterion. In an embodiment, the control circuit includes a control circuit for adjusting a voltage of the processor subsystem in response to a performance criterion. - In an embodiment, the
control circuit 1540 includes a control circuit for adjusting a processor subsystem in response to a performance criterion corresponding to an incidence of the detected computational error. In another embodiment, the control circuit includes a control circuit for adjusting a frequency of a timing signal employed by the processor subsystem in response to a performance criterion. In a further embodiment, the control circuit includes a control circuit for adjusting a processor subsystem clock in response to a performance criterion corresponding to an incidence of the detected computational error. In another embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to at least one of a single incidence of the detected computational error, an incidence frequency of the detected computational error, an incidence occurrence rate of the detected computational error, an incidence tempo of the detected computational error, an incidence pattern of the detected computational error, or an incidence prevalence of the detected computational error. For example, the incidence frequency of the detected computational error may include an incidence frequency over a time of the detected computational error. In another example, the incidence rate of the detected computational error may include an incidence rate of the detected computational error per execution of an instruction or an instruction sequence. In a further example, the incidence prevalence of the detected computational error may include an incidence distribution of the detected computational error, such as more than X instances occurring within Y instructions of a sequence of Z instructions. - In an embodiment, the
control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based on a performance criterion substantially minimizing a time required to complete successfully an execution of the sequence ofinstructions 1560. In another embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in a substantial conformity with a performance criterion corresponding to -
- For example,
FIG. 31 illustrates an embodiment of the above performance criterion at the where the adjustable operating parameter is clock rate at a location where the slope of the line OETOP is zero, i.e., “0° slope line.” In a further embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion corresponding to a substantial minimization of time to complete an execution of the sequence of instructions. - In an embodiment, the
control circuit 1540 includes a control circuit for adjusting a frequency of the processorsubsystem clock signal 1514 based upon a performance criterion corresponding to a substantial minimization of time to complete an execution of the sequence ofinstructions 1560. In another embodiment, the control circuit includes a control circuit for adjusting a processor subsystem clock signal frequency in substantial conformity with a performance criterion corresponding to -
- In a further embodiment, the control circuit includes a control circuit for adjusting a processor
subsystem voltage Vcc 1516 in response to a performance criterion corresponding to a substantial minimization of time to execute the sequence ofinstructions 1560. In another embodiment, the control circuit includes a control circuit for adjusting a processor subsystem voltage in substantial conformity with a performance criterion corresponding to - 0=Δ time to complete an execution of the sequence of instructions
-
- Δ processor subsystem voltage.
- For example, the performance criterion involving an adjustable processor subsystem voltage may be graphically illustrated in a manner at least substantially similar to the graphical illustration of the performance criterion involving an adjustable clock rate of
FIG. 31 . - In an embodiment, the
control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based upon a performance criterion substantially minimizing an expected time to successfully complete an execution of the sequence ofinstructions 1560 while at least one other adjustable operating parameter remains substantially constant. In another embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter based upon a dynamically-derived performance criterion and an incidence of the detected computational error. For example, the control circuit may include an operability to vary a clock rate of a processor subsystem in an environment, dynamically determine corresponding times required for an error-corrected execution of an instruction sequence, and select aclock signal 1514 rate for a subsequent execution according to a performance criterion. For example, the performance criterion may include selection of a clock signal rate corresponding to the optimized error-tolerant operating portion OETOP for the processor. Alternatively, the performance criterion may include selection of a clock signal rate based upon another portion of the TECE line representing a time for an error-corrected execution of the instruction sequence, such as a 10% lesser clock rate than the optimized error-tolerant operating portion OETOP. In a further embodiment, the dynamically-derived performance criterion includes a dynamically-derived performance criterion having an objective to substantially minimize an expected time to successfully complete an execution of the sequence of instructions. - In an embodiment, the
control circuit 1540 includes a control circuit for adjusting the adjustable operating parameter based upon a performance map and an empirically-based incidence of the detected computational error. In another embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion corresponding to an incidence of the detected computational error. In a further embodiment, the control circuit includes a control circuit for adjusting the adjustable operating parameter in response to a performance criterion embodied in a lookup table and an incidence of the detected computational error. In another embodiment, the performance criterion embodied in the lookup table includes a performance criterion embodied in a lookup table having an objective to substantially minimize an expected time to execute the sequence of instructions. -
FIG. 32 illustrates a partial view of acomputerized apparatus 1600 in which embodiments may be implemented. The computerized apparatus includes aprocessor subsystem 1610, asensing module 1620, arecovery module 1630, and acontrol module 1640. The processor subsystem has an adjustable operating parameter and operable to execute a sequence of instructions. The sensing module is operable to detect an operating-parameter-induced error in an execution of an instruction of the sequence ofinstructions 1660. The recovery module is operable to rollback an execution of the sequence of instructions to a checkpoint in response to the detected operating-parameter-induced error. The control module is operable to adjust the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected operating-parameter-induced error. - In an embodiment, the
sensing module 1620 includes a sensing module operable to detect a computational error in an execution of an instruction of the sequence ofinstructions 1660. In another embodiment, the sensing module includes a sensing module operable to detect an execution path synchronization error in an execution of an instruction of the sequence of instructions. In a further embodiment, the sensing module includes a sensing module operable to detect a clock-induced error in an execution of an instruction of the sequence of instructions. In another embodiment, the sensing module includes a sensing module operable to detect a processor voltage-induced error in an execution of an instruction of the sequence of instructions. In a further embodiment, the sensing module includes a sensing module implemented in hardware and operable to detect an operating-parameter-induced error in an execution of an instruction of the sequence of instructions. - In an embodiment, the
recovery module 1630 includes a recovery module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to rollback an execution of the sequence of instructions to a checkpoint in response to the detected operating-parameter-induced error. In another embodiment, theprocessor subsystem 1610 and at least one of thesensing module 1620, therecovery module 1630, and/or thecontrol module 1640 are formed on asame chip 1601. - In an embodiment, the
control module 1640 includes a control module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to adjust the adjustable operating parameter in response to a performance criterion corresponding to an incidence of the detected operating-parameter-induced error. In another embodiment, the control module includes a control module operable to adjust the adjustable operating parameter in response to an error-tolerant performance criterion corresponding to an incidence of the detected operating-parameter-induced error. -
FIG. 33 illustrates an exemplaryoperational flow 1700 that may implement embodiments. After a start operation, the operational flow moves to amonitoring operation 1710. The monitoring operation detects a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor having an adjustable operating parameter. A restore operation 17201710 rolls back an execution of the sequence of instructions to a checkpoint in response to the detected computational error. Atuning operation 1730 1720 changes the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error. The flow then proceeds to an end operation. -
FIG. 34 illustrates an alternative embodiment of the exemplaryoperational flow 1700 ofFIG. 33 . Thetuning operation 1730 may include at least one additional operation, such as the operation 1732. The operation 1732 determines that changing the adjustable processor operating parameter is at least substantially likely to decrease an expected time to successfully complete an execution of the sequence of instructions, and appropriately changing the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error. -
FIG. 35 illustrates an alternative embodiment of the exemplaryoperational flow 1700 ofFIG. 33 . Thetuning operation 1730 may include at least one additional operation. The at least one additional operation may include an operation 1734, anoperation 1736, and/or an operation 1738. The operation 1734 changes the adjustable processor operating parameter in response to a performance criterion substantially minimizing a time to complete an execution of the sequence of instructions. Theoperation 1736 changes a voltage supplied to the processor in response to a performance criterion corresponding to an incidence of the detected computational error. The operation 1738 changes the adjustable processor operating parameter in response to an error-tolerant performance criterion corresponding to an incidence of the detected computational error. -
FIG. 36 illustrates a partial view of acomputerized apparatus 1800 in which embodiments may be implemented. The computerized apparatus includesmeans 1810 for detecting a computational error corresponding to an execution of an instruction of a sequence of instructions by a processor having an adjustable operating parameter The computerized apparatus also includesmeans 1820 for rolling back an execution of the sequence of instructions to a checkpoint in response to the detected computational error. The computerized apparatus further includes means 1830 for changing the adjustable processor operating parameter in response to a performance criterion corresponding to an incidence of the detected computational error. -
FIG. 37 illustrates a partial view of acomputing system 1900 in which embodiments may be implemented. The computing system includes aprocessor subsystem 1910, aninformation store 1950, and acontroller module 1920. The processor subsystem includes an adjustable operating parameter, illustrated as an adjustable clock signal (CLK) 1914, and/or an adjustable processor voltage (Vcc) 1916. The information store is operable to save a sequence ofinstructions 1950. The controller module includes amonitor circuit 1930, and acontrol circuit 1940. The monitor circuit includes a monitor circuit for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. The control circuit includes a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion. - In an embodiment, the
controller module 1920 including amonitor circuit 1930 further includes a controller module including a monitor circuit for detecting an incidence of a computational error corresponding to an execution of an instruction of the sequence ofinstructions 1960 by the processor subsystem. In another embodiment, the controller module including a monitor further includes a controller module including a monitor circuit for detecting an incidence of an execution path synchronization error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. In a further embodiment, the controller module including a monitor circuit includes a controller module including a hardware-implemented monitor circuit for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. - In an embodiment, the
controller module 1920 including amonitor circuit 1930 further includes a controller module including a monitor circuit implemented in at least one of hardware, software, firmware, and/or a microengine for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. In another embodiment, the controller module including a monitor circuit further includes a controller module including a monitor circuit implemented in dynamic implementation verification architecture (DIVA) and for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. In a further embodiment, the controller module including a monitor circuit further includes a controller module including a monitor circuit employing a TEATime execution checker algorithm and for detecting an incidence of an operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by the processor subsystem. - In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a control circuit implemented in at least one of hardware, software, firmware, and/or a microengine and for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion. In another embodiment, the controller module including a control circuit further includes a control circuit implemented in software associated with at least one of an operating system and/or a program executable by the processor subsystem and for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion. - In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for at least one of initiating, activating, causing, facilitating, accomplishing, and/or achieving an adjustment of the adjustable operating parameter based upon an error-tolerant performance criterion.
- In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting a voltage of the processor subsystem based upon an error-tolerant performance criterion. In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a frequency of a timing signal employed by the processor subsystem based upon an error-tolerant performance criterion. In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock based upon an error-tolerant performance criterion. - In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter to at least substantially minimize a time required to successfully complete an execution of the sequence of instructions. In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter in substantial conformity with an error-tolerant performance criterion that corresponds to -
- In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter to substantially minimize a time to complete an execution of the sequence of instructions.
- In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting a processor clock frequency to substantially minimize a time to complete an execution of the sequence of instructions. In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with -
- In a further embodiment, the controller module including a control circuit includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
-
- In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
-
- In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with
-
- In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting a processor voltage to substantially minimize a time to complete an execution of the sequence of instructions. In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency in substantial conformity with -
- In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting a processor clock frequency to substantially minimize an expected time to successfully complete an execution of the sequence of instructions while at least one other adjustable operating parameter remains substantially constant. In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant and dynamically-derived performance criterion. For example, the control circuit may dynamically derive data representative of the time for error-corrected execution line TECE of
FIG. 31 . The time for error-corrected execution line TECE represents a time for an error-corrected execution of an instruction or instruction sequence as at least one adjustable operating parameter ofCLK signal 1914 and/orprocessor voltage Vcc 1916 is varied for theprocessor subsystem 1910. This allows the processor subsystem to be tuned for its unique properties and its environment. In an embodiment, the dynamically-derived performance criterion may be derived once for a processor and be available for a future use. In another embodiment, the dynamically-derived performance criterion may be derived periodically for a processor and be available for a future use. In a further embodiment, the dynamically-derived performance criterion may be derived from a processor of a processor class and be available for a future use by other instances of processors of the processor class. In another embodiment, the controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant dynamically-derived performance criterion further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant dynamically-derived performance criterion having an objective to substantially minimize an expected time to successfully complete an execution of the sequence of instruction. - In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an empirically-based error-tolerant performance map. In another embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon a performance criterion embodied in a lookup table. In a further embodiment, the controller module including a control circuit further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon a performance criterion embodied in a lookup table and having an objective of substantially minimizing a time to complete an execution of the sequence of instruction. - In an embodiment, the
controller module 1920 including acontrol circuit 1940 further includes a controller module including a control circuit for adjusting the adjustable operating parameter based upon an error-tolerant performance criterion corresponding to an incidence of the detected operating-parameter-caused error. In another embodiment, the controller module further includes an error recovery circuit operable to restore an execution of the sequence of program instructions to a checkpoint based upon the detected operating-parameter-caused error. -
FIG. 38 illustrates an exemplaryoperational flow 2000 implemented in a computerized system. After a start operation, the operational flow moves to asensing operation 2010. The sensing operation detects an incidence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter. Atuning operation 2030 changes 20 the adjustable processor operating parameter based upon an error-tolerant performance criterion. The operational flow then moves to an end operation. -
FIG. 39 illustrates an alternative embodiment of the exemplaryoperational flow 2000 ofFIG. 38 . Thesensing operation 2010 may include at least one additional operation. The additional operation may include anoperation 2012, andoperation 2014, and/or anoperation 2016. Theoperation 2012 detects an incidence of a processor setup/hold violation corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter. Theoperation 2014 detects an incidence of an execution path synchronization error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter. Theoperation 2016 detects an incidence of at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, or an incidence prevalence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter. -
FIG. 40 illustrates another alternative embodiment of the exemplaryoperational flow 2000 ofFIG. 38 . Thetuning operation 2030 may include at least one additional operation. The additional operation may include anoperation 2032, andoperation 2034, and/or an operation 2035. Theoperation 2032 changes the adjustable processor operating parameter based upon an error-tolerant performance criterion to substantially minimize a time required to successfully complete an execution of the sequence of instructions. Theoperation 2034 changes at least one of a voltage of the processor subsystem and/or a processor clock frequency based upon an error-tolerant performance criterion to substantially minimize a time required to successfully complete an execution of the sequence of instructions. The operation 2035 changes the adjustable processor operating parameter based upon an error-tolerant and dynamically-derived performance criterion having an objective to substantially minimize a time to execute the sequence of instruction by the processor subsystem. -
FIG. 41 illustrates another alternative embodiment of the exemplaryoperational flow 2000 ofFIG. 38 . Thetuning operation 2030 may include at least one additional operation. The additional operation may include anoperation 2036, anoperation 2038, and/or an operation 2042. Theoperation 2036 changes a processor clock frequency in substantial conformity with -
- The
operation 2038 changes a processor voltage in substantial conformity with -
- The operation 2042 determines that changing the adjustable processor operating parameter is at least substantially likely to decrease a time to complete an execution of the sequence of instructions by the processor and changes the adjustable processor operating parameter based upon an error-tolerant performance criterion.
-
FIG. 42 illustrates another alternative embodiment of the exemplaryoperational flow 2000 ofFIG. 38 . The operational flow may include at least one additional operation. The additional operation may include anoperation 2050. Theoperation 2050 restores an execution of the sequence of program instructions to a checkpoint based upon the detected processor-operating-parameter-caused error. -
FIG. 43 illustrates an exemplary embodiment of adevice 2100 in which embodiments may be implemented. The device includes means 2110 for detecting an incidence of a processor-operating-parameter-caused error corresponding to an execution of an instruction of the sequence of instructions by a processor subsystem having an adjustable operating parameter. The device also includes means 2120 for changing the adjustable processor operating parameter based upon an error-tolerant performance criterion. In another embodiment, the device further includesmeans 2130 for restoring an execution of the sequence of program instructions to a checkpoint based upon the detected processor-operating-parameter-caused error. -
FIGS. 44, 45, and 46 include circuit block diagrams illustrating exemplary environments that include synchronous circuits in which embodiments may be implemented.FIG. 44 illustrates anexemplary system 2200 that includes synchronous circuit having at least two subcircuit blocks in which embodiments may be implemented, such as a Pentium® P-4 processor.FIG. 45 illustrates anexemplary system 2300 that includes a portion of a synchronous circuit having at least two circuit blocks in which embodiments may be implemented, such as a portion of the Pentium® P-4 processor illustrated inFIG. 44 .FIG. 46 illustrates anexemplary system 2400 that includes a synchronous multicore circuit having at least two subcircuit blocks in which embodiments may be implemented. - An embodiment includes a system. The system may include at least a part of the
system 2200 ofFIG. 44 , thesystem 2300 ofFIG. 45 , and/or thesystem 2400 ofFIG. 46 . The system includes a synchronous circuit including a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage. The system also includes an error detector operable to detect an incidence of a computational error occurring in the first subcircuit. The system further includes a controller operable to change the first power plane voltage based upon the detected incidence of a computational error. For example, the first subcircuit may include any circuit block of the circuit blocks illustrated insystem 2200 ofFIG. 44 . The second subcircuit may include any other circuit of the circuit blocks illustrated inFIG. 44 . - By way of further example of the above system, the
system 2300 ofFIG. 45 illustrates six subcircuit blocks in which embodiments may be implemented. The six subcircuits include: aninteger register file 2310; anALU1 2320; anALU2 2324; aload AGU 2329; anL1 cache 2330; and anL2 cache 2336. The six subcircuit blocks are linked together as appropriate by communications links, illustrated by acommunication link 2364. The illustrated embodiment also includes a power plane having a power plane voltage that powers a subcircuit block. Apower plane 2312 powers theinteger register file 2310; apower plane 2322 powers theALU1 2320; apower plane 2326 powers theALU2 2324; apower plane 2329 powers theload AGU 2328; apower plane 2332 powers theL1 cache 2330; andpower plane 2338 powers theL2 cache 2336. In an alternative embodiment, one power plane may provide power to two or more subcircuit blocks. Apower supply 2370 provides voltages to the power planes via couplers (not illustrated) as appropriate. - Continuing with the further example, the
system 2300 further includes anerror detector 2340 operable to detect an incidence of a computational error occurring in the first subcircuit. The first subcircuit may include any one or more of the six subcircuit blocks: i.e., theinteger register file 2310; theALU1 2320; theALU2 2324; theload AGU 2328; theL1 cache 2330; and theL2 cache 2336. The second subcircuit may include any subcircuit block not included in the first subcircuit. The system also includes anerror detector 2340.FIG. 45 illustrates an embodiment where a single error detector is coupled to at least two subcircuit blocks via acoupler 2362. - The
error detector 2340 may be implemented in any manner and/or technique known to those skilled in the art. In an embodiment, the error detector may be implemented in the DIVA technology. In another embodiment, the error detector may be implemented in the TEATime execution checker algorithm architecture. In a further embodiment, the error detector may be implemented in the RAZOR architectural approach. In another embodiment, the error detector may be implemented employing another synchronous circuit (not shown) operable to execute at least one instruction substantially in parallel with the first subcircuit. - In operation of an embodiment, the
system 2300 operates with the power planes receiving a selected voltage or respectively receiving selected voltages from thepower supply 2370. For example, an initial operation of thesystem 2300 may include the power planes each receiving a same voltage, for example 1.40 volts. If theerror detector 2340 detects an incidence of a computational error occurring in theALU2 2324, thecontroller 2350 causes an increase in the voltage received by thepower plane 2326 for the ALU2, for example increasing it to 1.45 volts. In another embodiment, the voltage received by the other power planes remains the same at 1.40 volts. This operational configuration results in less overall power consumption by the system because only the voltage to thepower plane 2326 serving ALU2 is increased to address a computational error while the other power plane voltages remain unchanged. - By way of additional example,
FIG. 46 illustrates theexemplary system 2400 that includes a synchronous multicore circuit having at least two subcircuit blocks each respectively associated with a power plane. The at least two subcircuit blocks and respectively associated power planes are illustrated as five subcircuit blocks. The five subcircuit blocks include a Core-1 2410 that receives power from apower plane 2412; a Core-2 2420 that receives power from apower plane 2422; anL1 cache 2426 that receives power from apower plane 2428; and aL2 cache 2430 that receives power from apower plane 2432. The system also includes anerror detector 2440 operable to detect an incidence of a computational error occurring in the first subcircuit. The system further includes acontroller 2450 operable to change the first power plane voltage based upon the detected incidence of a computational error. The system may also include apower supply 2470. - In operation of an embodiment, the
system 2400 operates with the power planes receiving a selected voltage or respectively receiving selected voltages from thepower supply 2470. For example, an initial operation of thesystem 2400 may include the power planes each receiving a same voltage, for example 1.10 volts. If theerror detector 2440 detects an incidence of a computational error occurring in Core-2 2420, thecontroller 2450 causes an increase in the voltage received by thepower plane 2422 providing power to the Core-2. For example, the voltage of thepower plane 2422 may be increased to 1.20 volts. In another embodiment, the voltage received by the other power planes, including thepower plane 2412 providing power to the Core-1 2410, remains at 1.10 volts. - The following describes alternative embodiments which may be implemented in the
system 2200 described in conjunction withFIG. 44 , thesystem 2300 described in conjunction withFIG. 45 , and/or thesystem 2400 described in conjunction withFIG. 46 . Certain reference numbers of one or more of these figures may be cited in the following description as an aid for complying with requirements of §112. However, inclusion of a particular figure, element, and/or reference number in a description is not intended to suggest any limitation as to the structure, scope of use, or functionality of an embodiment. A particular system should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in an exemplary operating system. For example, in certain instances, one or more elements of an system may be deemed not necessary and omitted. In other instances, one or more other elements may be deemed necessary and added. -
FIG. 45 illustrates an embodiment where the synchronous circuit of thesystem 2300 includes a synchronous uniprocessor on achip 2301. The uniprocessor includes a first subsystem powered by a first power plane having a first power plane voltage. The first subsystem may include at least one of the six subcircuit blocks; theinteger register file 2310, theALU1 2320, theALU2 2324, theload AGU 2328, theL1 cache 2330, and theL2 cache 2336. The second subsystem powered by a second power plane having a second power plane voltage may include any subcircuit block not included as the first subcircuit. - In another embodiment of the
system 2300, the synchronous circuit includes a synchronous uniprocessor including a firstarithmetic logic unit 2320 powered by afirst power plane 2322 having a first power plane voltage and a secondarithmetic logic unit 2324 powered by asecond power plane 2326 having a second power plane voltage. In a further embodiment, the synchronous circuit includes a synchronous uniprocessor including an arithmetic logic unit powered by a first power plane having a first power plane voltage, such as theALU1 2320 and/or theALU2 2324. The synchronous uniprocessor also includes an on-chip cache powered by a second power plane having a second power plane voltage, such as theL1 cache 2330 powered by apower plane 2332 and/or theL2 cache 2336 powered by apower plane 2338. - In an embodiment of the
system 2300, theerror detector 2340 includes a hardware-implemented error detector operable to detect an incidence of a computational error occurring in the first subcircuit. In another embodiment, the error detector includes one error detector coupled 2362 with both the first subcircuit and the second subcircuit, and operable to detect an incidence of a computational error occurring in the first subcircuit. In a further embodiment, the one error detector includes one error detector coupled with both the first subcircuit and the second subcircuit, and operable to detect an incidence of a computational error occurring in the first subcircuit and/or the second subcircuit. In another embodiment, the error detector includes a first error detector (not shown) coupled with the first subcircuit and a second error detector (not shown) coupled with the second subcircuit. The first error detector and the second error detector are respectfully operable to detect an incidence of a computational error occurring in the first subcircuit and the second subcircuit. In a further embodiment, the error detector includes an error detector coupled with thecontroller 2350 and operable to detect an incidence of a computational error occurring in the first subcircuit. - In an embodiment, the
error detector 2340 includes an error detector operable to detect a computational error corresponding to a setup/hold violation. In another embodiment, the error detector includes an error detector operable to detect at least one incidence of a computational error corresponding to a setup/hold violation, a processor clock speed, a processor voltage, a noise spike, a charged particle, a soft error, a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, on-chip cache error, an oxide breakdown, an induced error, and/or an electromigration induced error. In a further embodiment, the error detector includes an error detector operable to detect at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, and/or an incidence prevalence of a computational error. - In an embodiment, the
controller 2350 operable to change the first power plane voltage based upon the detected incidence of a computational error includes a controller operable to change a first power plane voltage based upon the detected incidence of a computational error without substantially changing the second power plane voltage. In another embodiment, the controller includes a controller implemented in at least one of hardware, software, firmware, and/or a microengine, and operable to change the first power plane voltage based upon the detected incidence of a computational error. In a further embodiment, the controller includes a controller implemented in software associated with at least one of an operating system and/or a program executable by the synchronous circuit and operable to change the first power plane voltage based upon the detected incidence of a computational error. In another embodiment, the controller includes a controller operable to increase the first power plane voltage based upon the detected incidence of a computational error. In a further embodiment, the controller includes a controller operable to decrease the first power plane voltage based upon the detected incidence of a computational error. - In an embodiment of the system, the synchronous circuit, the error detector, and the controller are formed on a single chip. For example, the synchronous circuit, the
error detector 2340, and thecontroller 2350 are formed on asingle chip 2301 as illustrated in conjunction withFIG. 45 . By way of further example, the synchronous circuit 2402, theerror detector 2440, and thecontroller 2450 are formed on asingle chip 2404, as illustrated in conjunction withFIG. 46 . In another embodiment, the system further comprises a recovery module (not shown) operable to cause a correction of the computational error. - In a further embodiment, the system further comprises a power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller. For example, the system may include the
system 2300 that includes thepower supply 2370, and thecontroller 2350 ofFIG. 45 . By way of further example, the system may include thesystem 2400 that includes thepower supply 2470, and thecontroller 2450 ofFIG. 46 . In an embodiment, the power supply includes a power supply operable to provide in response to the controller a selected voltage to the first power plane and another selected voltage to the second power plane. In another embodiment, the power supply includes an on-circuit chip power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In a further embodiment, the power supply includes an off-circuit chip power supply electrically coupled with the circuit and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In an embodiment, the power supply includes at least one of a DC/DC regulated, a controllable, and/or programmable power supply operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In a further embodiment, the system further includes a power supply configured to electrically engage a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. - Embodiments described above in conjunction with
FIG. 45 may also be implemented in theexemplary system 2400 ofFIG. 46 . In addition,FIG. 46 illustrates an embodiment where the synchronous circuit of thesystem 2400 includes a synchronous processor including afirst processor core 2410 powered by afirst power plane 2412 having a first power plane voltage and asecond processor core 2420 powered by asecond power plane 2422 having a second power plane voltage. -
FIG. 47 illustrates an exemplaryoperational flow 2500. After a start operation, the flow includes amonitoring operation 2510. The monitoring operation detects a computational error occurring in a first subcircuit of a synchronous circuit. The synchronous circuit includes the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage. Atuning operation 2520 increases the first power plane voltage based upon the detected computational error. The operational flow then proceeds to an end operation. -
FIG. 48 illustrates an alternative embodiment of the exemplaryoperational flow 2500 ofFIG. 47 . Themonitoring operation 2510 may include at least one additional operation. The at least one additional operation may include anoperation 2512, and/or anoperation 2514. Theoperation 2512 detects a computational error occurring in a first processor core of a synchronous processor that includes the first processor core powered by a first power plane at a first power plane voltage and a second processor core powered by a second power plane at a second power plane voltage. Theoperation 2514 detects a computational error occurring in a first subcircuit of a synchronous uniprocessor that includes the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage. -
FIG. 49 illustrates another alternative embodiment of the exemplaryoperational flow 2500 ofFIG. 47 . Thetuning operation 2520 may include at least one additional operation, such as anoperation 2522. Theoperation 2522 increases the first power plane voltage based upon the detected computational error while maintaining the second power plane voltage at least substantially constant. -
FIG. 50 illustrates a further alternative embodiment of the exemplaryoperational flow 2500 ofFIG. 47 . The exemplary operational flow may include at least one additional operation, such as anoperation 2530. Theoperation 2530 operates the first subcircuit at a first power plane voltage. Theoperation 2530 may include at least one additional operation. The at least one additional operation may include anoperation 2532 and/or anoperation 2534. Theoperation 2532 operates the first subcircuit at an initial first power plane voltage. Theoperation 2534 decreases the first power plane voltage. -
FIG. 51 illustrates a partial view of anexemplary device 2550 in which embodiments may be implemented. The device includes means 2560 for detecting a computational error occurring in a first subcircuit of a synchronous circuit. The synchronous including the first subcircuit powered by a first power plane at a first power plane voltage and a second subcircuit powered by a second power plane at a second power plane voltage. The device also includesmeans 2570 for increasing the first power plane voltage based upon the detected computational error. - In an embodiment, the
device 2550 also includesmeans 2580 for operating the first subcircuit at an initial first power plane voltage. In another embodiment, the device also includesmeans 2590 for decreasing the first power plane voltage. -
FIG. 52 illustrates a partial view of an exemplary environment in which embodiments may be implemented.FIG. 52 and the following discussion are intended to provide a brief, general description of the environment.FIG. 52 illustrates an exemplarythin computing device 2600 that interfaces with an electronic device (not shown) that includes one or more functional elements. For example, the electronic device may include any item having electrical and/or electronic components playing a role in a functionality of the item, such as a portable electronic device, a limited resource computing device, a digital camera, a cell phone, a printer, a refrigerator, a car, and an airplane. Thethin computing device 2600 includes asynchronous processing unit 2621, asystem memory 2622, and a system bus 2623 that couples various system components including thesystem memory 2622 to thesynchronous processing unit 2621. The system bus 2623 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM) 2624 and random access memory (RAM) 2625. A basic input/output system (BIOS) 2626, containing the basic routines that help to transfer information between sub-components within thethin computing device 2600, such as during start-up, is stored in theROM 2624. A number of program modules may be stored in theROM 2624 and/orRAM 2625, including anoperating system 2628, one ormore application programs 2629,other program modules 2630 andprogram data 2631. - A user may enter commands and information into the
computing device 2600 through input devices, such as a number of switches and buttons, illustrated ashardware buttons 2644, connected to the electronic device via asuitable interface 2645. Input devices may further include a touch-sensitive display screen 2632 with suitableinput detection circuitry 2633. The output circuitry of the touch-sensitive display 2632 is connected to the system bus 2623 via avideo driver 2637. Other input devices may include amicrophone 2634 connected through asuitable audio interface 2635, and a physical hardware keyboard (not shown). In addition to thedisplay 2632, thecomputing device 2600 may include other peripheral output devices, such as at least onespeaker 2638. - Other external input or
output devices 2639, such as a joystick, game pad, satellite dish, scanner or the like may be connected to theprocessing unit 2621 through aUSB port 2640 and USB port interface 2641, to the system bus 2623. Alternatively, the other external input andoutput devices 2639 may be connected by other interfaces, such as a parallel port, game port or other port. Thecomputing device 2600 may further include or be capable of connecting to a flash card memory (not shown) through an appropriate connection port (not shown). Thecomputing device 2600 may further include or be capable of connecting with a network through anetwork port 2642 andnetwork interface 2643, and/or connecting throughwireless port 2646 andcorresponding wireless interface 2647. In addition, these connections may facilitate communication with other peripheral devices, including other computers, printers, and so on (not shown). It will be appreciated that the various components and connections shown are exemplary and other components and means of establishing communications links may be used. - The
computing device 2600 may be primarily designed to include a user interface having a character, key-based, user input, or user data input via the touchsensitive display 2632 using a stylus (not shown). Moreover, the user interface is not limited to an actual touch-sensitive panel arranged for directly receiving input, but may alternatively or in addition respond to another input device, such as themicrophone 2634. For example, spoken words may be received at themicrophone 2634 and recognized. Alternatively, thecomputing device 2600 may be designed to include a user interface having a physical keyboard (not shown). - The
thin computing device 2600 functional elements (not shown) may be typically application specific and related to a function of the electronic device. The device functional elements are driven by a device functional element(s)interface 2650, which coupled with the system bus 2623. A functional element may typically perform a single well-defined task with little or no user configuration or setup, such as a refrigerator keeping food cold, a cell phone connecting with an appropriate tower and transceiving voice or data information, and/or a camera capturing and saving an image. -
FIG. 53 illustrates anexemplary system 2700 in which embodiments may be implemented. The system includes anapparatus 2705. The apparatus includes a synchronous circuit 2702. The synchronous circuit includes a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage. The first subcircuit includes at least one of a Core-1 2710 having apower plane 2712; a L1 cache (C1) having apower plane 2718; a Core-2 2720 having apower plane 2722; a L1 cache (C2) and/or anL2 cache 2430 having apower plane 2432. The second subcircuit may include at least one subcircuit not selected as the first subcircuit. In an embodiment, thethin computing device 2600 described in conjunction withFIG. 52 may include the synchronous circuit. Theapparatus 2705 also includes anerror detector 2740 operable to detect an incidence of a computational error occurring in the first subcircuit. The apparatus further includes acontroller 2750 operable to change the first power plane voltage based upon the detected incidence of a computational error. - The apparatus also includes a
power supply 2770. The power supply is configured to electrically couple with aportable power source 2772 and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In an embodiment, theapparatus 2705 powered by the power supply may include the thin computing device ofFIG. 52 that interfaces with an electronic device. In an embodiment, the configuration of the power supply to accept the portable power source imparts mobility and/or portability to the thin computing device and thus the electronic device. The electronic device may include a handheld device, a wireless device, a camera, a laptop computer, a game console, a cell phone, a pager, a PDA, a global positioning unit, a satellite, media player, an electronic scanner, an electronic book reader, and/or a browsing device. - In an embodiment, the synchronous circuit further includes a synchronous processor including a first processor core powered by a first power plane having a first power plane voltage and a second processor core powered by a second power plane having a second power plane voltage. In another embodiment, the synchronous circuit further includes a synchronous uniprocessor including a first subcircuit powered by a first power plane having a first power plane voltage and a second subcircuit powered by a second power plane having a second power plane voltage. In an embodiment, the error detector includes a hardware-implemented error detector operable to detect an incidence of a computational error occurring in the first subcircuit.
- In another embodiment, the power supply includes a power supply configured to electrically couple with a replaceable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In a further embodiment, the power supply includes a power supply configured to electrically couple with a selectively replaceable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In an embodiment, the power supply includes a power supply configured to electrically couple with a rechargeable portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In another embodiment, the power supply includes a power supply configured to electrically couple with at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
- In an embodiment, the power supply includes a power supply electrically coupled with at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller. In another embodiment, the power supply includes a power supply configured to electrically couple with a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller and another selected voltage to the second power plane. In a further embodiment, the power supply includes at least one of a DC/DC regulated, a controllable, and/or programmable power supply configured to electrically couple with a portable power source and operable to provide a selected one of at least two voltages to the first power plane in response to the controller.
-
FIG. 54 illustrates an exemplaryoperational flow 2800. After a start operation, the operational flow includes aconservation operation 2810. The conservation operation decreases a voltage received at a first power plane from a power supply that includes a portable energy source. The first power plane is a component of a synchronous circuit that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage. Amonitoring operation 2820 detects an incidence of a computational error occurring in the first subcircuit. Anadjustment operation 2830 increases the voltage received at the first power plane from the power supply that includes a portable energy source in response to the detected computational error. - Operation of an embodiment may be illustrated with reference to the
system 2700 ofFIG. 53 . An initial voltage is supplied to the first power plane of the synchronous circuit from the power supply that includes an energy source. For example, a voltage of 1.60 volts may be initially supplied to thepower plane 2722 associated with the Core-2 2720 described in conjunction withFIG. 53 . The energy source may include a replaceable battery and/or rechargeable battery. Theconservation operation 2810 decreases the voltage received at the first power plane in an increment of 0.10 volts to 1.50 volts. Decreasing the voltage received at the first power plane reduces electrical power supplied by the power supply, and correspondingly, reduces power drawn from an energy source coupled to the power supply. The monitoring operation monitors operations related to the Core-2, and detects an incidence of a computational error occurring in the Core-2. For example, the incidence may include an incidence rate of computational errors exceeding a predetermined number of computational errors per 1010 clock cycles, such as 10 computational errors per 1010 clock cycles. Theadjustment operation 2830 increases the voltage received at the first power plane in response to the detected computational error. The voltage received may be increased to the previous 1.60 volts from the 1.50 volts, or increased to another value. - Operation of another embodiment may be illustrated with reference to the
system 2700. Theconservation operation 2810 decreases the 1.60 voltage received at the first power plane in increments of 0.05 volts until a selected incidence of a computational error is detected occurring in the Core-2 by themonitoring operation 2820. Assuming for illustrative purposes that the predetermined incidence of computational errors is detected at a first power plane voltage of 1.45 volts. In response to the detection of the predetermined incidence of computational errors corresponding to the Core-2, theadjustment operation 2830 increases the first power plane voltage. For example, the adjustment operation may increase the first power plane voltage to 1.50, and the monitoring operation continues detection for the selected incidence of computational errors. If the selected incidence of predetermined computational errors is detected at 1.50 volts, the adjustment operation may increase the first power plane voltage to 1.55. In another alternative embodiment, if the monitoring operation does not detect the selected incidence of computational errors corresponding to Core-2, the conservation operation again decreases the first power plane voltage and theoperational flow 2800 repeated. -
FIG. 55 illustrates an alternative embodiment of the exemplaryoperational flow 2800 ofFIG. 54 . Theconservation operation 2810 may include at least one additional operation. The at least one additional operation may include an operation 2812 and/or anoperation 2814. The operation 2812 decreases a voltage received at a first power plane from a power supply that includes a portable energy source. The first power plane being a component of a synchronous processor that includes a first processor core powered by the first power plane and a second processor core powered by a second power plane having a second power plane voltage. Theoperation 2814 decreases a voltage received at a first power plane from a power supply that includes a portable energy source. The first power plane being a component of a synchronous uniprocessor that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage. -
FIG. 56 illustrates an alternative embodiment of the exemplaryoperational flow 2800 ofFIG. 54 . Themonitoring operation 2820 may include at least one additional operation. The at least one additional operation may include anoperation 2822 and/or anoperation 2824. Theoperation 2822 detects an incidence of a computational error occurring in the first subcircuit with a hardware-implemented detector. Theoperation 2824 detects at least one incidence of a computational error corresponding to a setup/hold violation, a processor clock speed, a processor voltage, a noise spike, a charged particle, a soft error, a single event upset failure, an unreliable processor hardware, an incorrectly executed instruction, on-chip cache error, an oxide breakdown, an induced error, and/or an electromigration induced error occurring in the first subcircuit. -
FIG. 57 illustrates an alternative embodiment of the exemplaryoperational flow 2800 ofFIG. 54 . Themonitoring operation 2820 may include at least one additional operation, such as theoperation 2826. Theoperation 2826 detects at least one of a single incidence, an incidence frequency, an incidence occurrence rate, an incidence tempo, an incidence pattern, and/or an incidence prevalence of a computational error occurring in the first subcircuit. -
FIG. 58 illustrates an alternative embodiment of the exemplaryoperational flow 2800 ofFIG. 54 . Theadjustment operation 2830 may include at least one additional operation. The at least one additional operation may include anoperation 2832, anoperation 2834, and/or anoperation 2836. Theoperation 2832, in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source to a level that at least substantially minimizes the detected incidence of the computational error. Theoperation 2834, in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source without substantially changing the second power plane voltage. Theoperation 2836, in response to the detected computational error, increases the voltage received at the first power plane from the power supply that includes a portable energy source, the portable energy source including at least one of a battery, a rechargeable battery, a replaceable battery, a fuel cell, an energy harvesting system, a capacitor, and/or a selectively removable portable electrical energy source. -
FIG. 59 illustrates anexemplary apparatus 2900 in which embodiments may be implemented. The apparatus includes means 2910 for decreasing a voltage received at a first power plane from a power supply that includes a portable energy source. The first power plane is a component of a synchronous circuit that includes a first subcircuit powered by the first power plane and a second subcircuit powered by a second power plane having a second power plane voltage. The apparatus also includesmeans 2920 for detecting an incidence of a computational error occurring in the first subcircuit. The apparatus further includesmeans 2930 for increasing in response to the detected computational error the voltage received at the first power plane from the power supply that includes a portable energy source. -
FIG. 60 illustrates anexemplary system 3000 in which embodiments may be implemented. The system includes apower module 3040 and ascheduler module 3050. The power module is operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of acircuit 3002. The first subcircuit may be any subcircuit of the circuit, and the second subcircuit may be any other subcircuit of the circuit not included within the first subcircuit.FIG. 60 illustrates an embodiment where the first subcircuit may include at least one of a Core-1 3010, anL1 cache 3014, a Core-2 3020, anL1 cache 3024, and/or anL2 cache 3030. The second subcircuit may include any of the above subcircuits that are not included as the first circuit. For example, in an embodiment, the first subcircuit may include the Core-1 3010, and the second subcircuit may include the Core-2 3020. In another embodiment, the first subcircuit may include the Core-2 3020 and the second subcircuit may include theL2 Cache 3030. In a further embodiment, the first subcircuit may include theL1 Cache 3014 and the second subcircuit may includeL1 Cache 3024, one of the cache's being selectively couplable with a core. In an embodiment, the system is scalable and may include more than two subcircuits. In a further embodiment, the circuit may include a synchronous circuit having a first subcircuit and a second subcircuit. In another embodiment, the circuit may include an asynchronous circuit having a first subcircuit and a second subcircuit (not shown). - The
power module 3040 may determine a respective indicia of power consumption once upon an initial startup of a computing system that includes thesystem 3000, on each startup, periodically, and/or according to a selected schedule. Periodically may include once a month, once each six months, once each year, or the like. Periodically may include once each N number of processor hours. The period may be adjusted in response to environmental factors, such as for example, aging. - The
scheduler module 3050 is operable to direct an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. In an embodiment, the selected subcircuit is the subcircuit having a lowest indicia of power consumption. In another embodiment, the selected subcircuit is the subcircuit having a lowest indicia of power consumption unless the other subcircuit provides a higher execution performance that offsets a power saving provided by the subcircuit having a lowest indicia of power consumption. For example, if the first subcircuit is faster than the second subcircuit by 10%, the first subcircuit is selected unless the second subcircuit has an indicia of power consumption that is at least 10% less than the indicia of power consumption of the first subcircuit. In an embodiment, an execution task may include an instruction, an instruction block, a thread, a data movement, a translation, an operation, a program, and/or an application. - In an embodiment, the
power module 3040 includes a power module operable to determine respective indicia of power consumed in executing a test instruction group by a first subcircuit and by a second subcircuit of a circuit. The test instruction group may include any instruction group designed for an assessment of the first subcircuit and the second subcircuit in conjunction with respectively determining an indicia of power consumption. For example, the test instruction group may be embodied in a firmware, a software, and/or a hardware. In another embodiment, the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of a program by a first subcircuit and by a second subcircuit of a circuit. In a further embodiment, the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of an application by a first subcircuit and by a second subcircuit of a circuit. In another example, the power module includes a power module operable to determine respective indicia of power consumed in executing at least one instruction of an instruction group by a first subcircuit and by a second subcircuit of a circuit. - In an embodiment, the
power module 3040 includes a hardware-implemented power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit. In another embodiment, the power module includes a power module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit. - In an embodiment, the
power module 3040 includes a power module operable to respectively determine a power consumption to execute a test operation by a first subcircuit and by a second subcircuit of a circuit. In another embodiment, the power module includes a power module operable to respectively determine an indicia of temperature resulting from an execution of a test operation by a first subcircuit and by a second subcircuit of a circuit. For example, an indicia of temperature resulting from an execution may include a temperature change between a pre-execution ambient state to a post execution state. By way of further example, an indicia of temperature resulting from an execution may include an indicia of fan speed to maintain a respective selected temperature in the first subcircuit and/or the second subcircuit. In a further embodiment, the power module includes a power module operable to respectively determine an indicia of a current flow required for an execution of a test operation by a first subcircuit and by a second subcircuit of a circuit. For example, the power module may determine a respective indicia of power consumption respectively occurring in the first circuit and the second circuit by monitoring a factor related to power consumption, such as by a current flowing through a monitoring circuit (not shown) coupled in parallel and/or in series to a power plane supplying power to at least one of the first circuit and the second circuit. - In an embodiment, the
scheduler module 3050 includes a scheduler module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. In another embodiment, the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected based upon a determined lower indicia of power consumption for the selected subcircuit than the non-selected subcircuit. In a further embodiment, the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected based upon a determined higher indicia of power consumption for the selected subcircuit than the non-selected subcircuit. - In an embodiment, the
scheduler module 3050 includes a scheduler module operable to direct an operation to a subcircuit selected in response to a criterion that includes a determined lower indicia of power consumption for the selected subcircuit than for the non-selected subcircuit. In another embodiment, the scheduler module includes a scheduler module operable to direct an execution of at least one instruction to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. In a further embodiment, the scheduler module includes a scheduler module operable to direct an execution of at least one instruction of a program to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. In another embodiment, the scheduler module includes a scheduler module operable to direct an execution of at least one instruction of an application to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. - In an embodiment, the
scheduler module 3050 includes a scheduler module operable to direct an execution of at least one instruction of an instruction group to a subcircuit selected from the first subcircuit and the second subcircuit. The subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. In another embodiment, the scheduler module includes a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit. In an embodiment, an operation includes at least one of a specific action to be performed, an action to be performed on an entity, performance of a useful act, and/or performance of an act with respect to an entity the result of which is specified by a rule. In a further embodiment, the scheduler includes a scheduler module operable to preferentially direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit. For example, a preferential direction of an operation may include directing an operation to the subcircuit having the lowest determined indicia of power consumption only if that subcircuit can timely provide the results of the operation available, otherwise not directing the operation. - In an embodiment, the
power module 3040 and thescheduler module 3050 are formed on asingle chip 3004. In another embodiment, thecircuit 3002, thepower module 3040, and thescheduler module 3050 are formed on thesingle chip 3004. - In operation, an embodiment of the
system 3000 includes individual power planes supplying power to a plurality of subcircuits of thecircuit 3002. Apower plane 3012 supplies the Core-1 3010, apower plane 3022 supplies the Core-2 3020, apower plane 3018 supplies theL1 cache 3014, apower plane 3026 supplies theL1 cache 3024, and apower plane 3032 supplies theL2 cache 3030. The power planes may be useful in determining an indicia of power consumption by its supporting subcircuit. The system respectively executes the test operation using at least two similar subcircuits, for example the Core-1 3010 and the Core-2 3020. The test operation may include sufficient instructions may be executed to provide an indicia of power consumption to a selected significance. Typically, the same test operation is respectively executed in each core. Thepower module 3040 determines an indicia of power consumption by monitoring an aspect of current flow to each associated power plane (3012, 3022) during respective executions of the test operation by the Core-1 3010 and the Core-2 3020. In instances, one subcircuit may consume less power and correspondingly be more efficient than another subcircuit due to a variety of reasons, which may include inherent variations in the manufacturing process used to make thecircuit chip 3004. - The
scheduler module 3050 then directs an operation to a subcircuit having a lowest indicia of power consumption selected from the first subcircuit and the second subcircuit, for example from the Core-1 3010 and the Core-2 3020. The subcircuit selection is based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit by thepower module 3040. In an embodiment, the selected subcircuit is the subcircuit having an indicia corresponding to consuming the lowest power, thus resulting in a lower overall power consumption by thecircuit 3002 in performing an operation. In an alternative embodiment, when the selected circuit is at least nearly fully scheduled, the scheduler monitor allows operations to be assigned to the non-selected subcircuit. -
FIG. 61 illustrates anexemplary system 3100 in which embodiments may be implemented. The system includes acircuit 3102 including a first subcircuit and a second subcircuit. The first subcircuit may be any subcircuit of the circuit, and the second subcircuit may be any other subcircuit of the circuit not included within the first subcircuit.FIG. 61 illustrates an embodiment where the first subcircuit may include at least one of a Core-1 3110, anL1 cache 3114, a Core-2 3120, anL1 cache 3124, and/or anL2 cache 3130. The second subcircuit may include any of the above subcircuits that are not included as the first circuit. For example, in an embodiment, the first subcircuit may include the Core-1 3110, and the second subcircuit may include the Core-2 3120. In another embodiment, the first subcircuit may include the Core-2 3120 and the second subcircuit may include theL2 Cache 3130. In a further embodiment, the first subcircuit may include theinteger register file 2310 and the second subcircuit may include theALU1 2320 ofFIG. 45 . In an embodiment, the system is scalable and may include more than two subcircuits. In a further embodiment, the circuit may include a synchronous circuit (not shown). In another embodiment, the circuit may include an asynchronous circuit (not shown). - The
system 3100 also includes amonitor circuit 3140 and amanager circuit 3150. The monitor circuit includes a circuit for determining respective indicia of power consumption by the first subcircuit and by the second subcircuit to execute a test operation. The manager circuit includes a circuit for scheduling an execution task to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit. - In an embodiment, the
circuit 3102 further includes a processor including thefirst processor core 3110 and thesecond processor core 3120. In another embodiment, the circuit includes a uniprocessor including a first subsystem and a second subsystem. - In an embodiment, the circuit further includes a circuit formed on one
chip 3104 and including a first subcircuit and a second subcircuit. In a further embodiment, thecircuit 3102 includes a circuit including a first subcircuit formed on a first chip (not shown) and a second subcircuit formed on a second chip (not shown). In another embodiment, thesystem 3100 further includes acomputing device 3105 having the circuit that includes a first subcircuit and a second subcircuit. This embodiment may also include apower supply 3170 configured to electrically couple with aportable power source 3172 and operable to provide power to the circuit. -
FIG. 62 illustrates an exemplaryoperational flow 3200. After a start operation, the operational flow includes ameasuring operation 3210. The measuring operation determines an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction. The determining an indicia of energy expended may include comparing without quantifying the respective indicia of energy expended by the first subcircuit and by the second subcircuit. Alternatively, the determining an indicia of energy expended may include quantifying the respective indicia of energy expended by the first subcircuit and by the second subcircuit. Acontrol operation 3230 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit. The selection is based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit. The operational flow includes an end operation. - In operation, an embodiment of the
operational flow 3200 may be implemented in any circuit having at least two subcircuits, where an indicia of energy expended by the subcircuits in performing an execution may be determined. The circuit may include a synchronous circuit and/or an asynchronous circuit. For example, the operational flow may be implemented in a single core or unicore processor, such as theprocessor subsystem 1510 described in conjunction withFIG. 30 , thesingle core subsystem 1610 described in conjunction withFIG. 32 , thesingle core subsystem 1910 described in conjunction withFIG. 37 , and thesingle core subsystems FIGS. 44 and 45 respectively. An example of a unicore processor is Intel's Pentium M® processor. By way of further example, the operational flow may be implemented in a multi-subcircuit circuit, such as the synchronous circuit 2402 described in conjunction withFIG. 46 , the synchronous circuit 2702 described in conjunction withFIG. 53 , thecircuit 3002 described in conjunction withFIG. 60 , and/or thecircuit 3102 described in conjunction withFIG. 61 . An example of a multi-subcircuit circuit is Intel's Pentium 4® processor. -
FIG. 63 illustrates an alternative embodiment of the exemplaryoperational flow 3200 ofFIG. 62 . The measuringoperation 3210 may include at least one additional operation. The at least one additional operation may include anoperation 3212, anoperation 3214, anoperation 3216, and/or anoperation 3218. Theoperation 3212 determines an energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction. Theoperation 3214 determines a current consumed by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction. Theoperation 3216 determines a temperature of a first subcircuit and of a second subcircuit of a synchronous circuit during respective executions of at least one instruction. Theoperation 3218 determines an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of a test instruction group. -
FIG. 64 illustrates another alternative embodiment of the exemplaryoperational flow 3200 ofFIG. 62 . Thecontrol operation 3230 may include at least one additional operation. The at least one additional operation may include anoperation 3232, anoperation 3234, and/or anoperation 3236. Theoperation 3232 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon a determined lower indicia of energy expended by the selected subcircuit than for the non-selected subcircuit. Theoperation 3234 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon a determined lower power consumption by the selected subcircuit than for the non-selected subcircuit. Theoperation 3236 directs an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon an availability of the selected subcircuit and the determined indicia of energy expended by the selected subcircuit. -
FIG. 65 illustrates an exemplary embodiment of adevice 3300. The device includesmeans 3310 for determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a circuit during respective executions of at least one instruction. The device also includesmeans 3320 for directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit. - Those having skill in the art will recognize that the state of the art has progressed to the point where there is little distinction left between hardware and software implementations of aspects of systems; the use of hardware or software is generally (but not always, in that in certain contexts the choice between hardware and software can become significant) a design choice representing cost vs. efficiency tradeoffs. Those having skill in the art will appreciate that there are various vehicles by which processes and/or systems and/or other technologies described herein can be effected (e.g., hardware, software, and/or firmware), and that the preferred vehicle will vary with the context in which the processes and/or systems and/or other technologies are deployed. For example, if an implementer determines that speed and accuracy are paramount, the implementer may opt for a mainly hardware and/or firmware vehicle; alternatively, if flexibility is paramount, the implementer may opt for a mainly software implementation; or, yet again alternatively, the implementer may opt for some combination of hardware, software, and/or firmware. Hence, there are several possible vehicles by which the processes and/or devices and/or other technologies described herein may be effected, none of which is inherently superior to the other in that any vehicle to be utilized is a choice dependent upon the context in which the vehicle will be deployed and the specific concerns (e.g., speed, flexibility, or predictability) of the implementer, any of which may vary. Those skilled in the art will recognize that optical aspects of implementations will typically employ optically-oriented hardware, software, and or firmware.
- The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flow diagrams, operation diagrams, flowcharts, illustrations, and/or examples. Insofar as such block diagrams, operation diagrams, flowcharts, illustrations, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, operation diagrams, flowcharts, illustrations, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof.
- In addition, those skilled in the art will appreciate that the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies equally regardless of the particular type of signal-bearing media used to actually carry out the distribution. Examples of a signal-bearing media include, but are not limited to, the following: recordable type media such as floppy disks, hard disk drives, CD ROMs, digital tape, and computer memory; and transmission type media such as digital and analog communication links using TDM or IP based communication links (e.g., packet links).
- It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to inventions containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.).
- The herein described aspects depict different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality. Any two components capable of being so associated can also be viewed as being “operably couplable” to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components.
- While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.
Claims (35)
1. A method comprising:
determining an indicia of energy expended by a first subcircuit and by a second subcircuit of a synchronous circuit during respective executions of at least one instruction; and
directing an execution task to a subcircuit selected from the first subcircuit and the second subcircuit and based upon the determined indicia of energy expended by the first subcircuit and by the second subcircuit.
2-9. (canceled)
10. A system comprising:
a power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit; and
a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
11. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to determine respective indicia of power consumed in executing a task by a first subcircuit and by a second subcircuit of a circuit.
12. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to determine respective indicia of power consumed in executing at least one instruction of a program by a first subcircuit and by a second subcircuit of a circuit.
13. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to determine respective indicia of power consumed in executing at least one instruction of an application by a first subcircuit and by a second subcircuit of a circuit.
14. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to determine respective indicia of power consumed in executing at least one instruction of an instruction group by a first subcircuit and by a second subcircuit of a circuit.
15. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a hardware-implemented power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit.
16. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit.
17. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to respectively determine a power consumption to execute a test operation by a first subcircuit and by a second subcircuit of a circuit.
18. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to respectively determine an indicia of temperature resulting from an executing of a test operation by a first subcircuit and by a second subcircuit of a circuit.
19. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing a test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to respectively determine an indicia of a current flow resulting from an executing of a test operation by a first subcircuit and by a second subcircuit of a circuit.
20. The system of claim 10 , wherein the power module operable to determine respective indicia of power consumed in executing test operation by a first subcircuit and by a second subcircuit of a circuit includes:
a power module operable to respectively determine a respective indicia of power consumed in executing at least one instruction by a first subcircuit and by a second subcircuit of a synchronous circuit.
21. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module implemented in at least one of hardware, software, firmware, and/or a microengine and operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
22. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an operation to a subcircuit selected based upon a determined lower indicia of power consumption for the selected subcircuit than the non-selected subcircuit.
23. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an operation to a subcircuit selected in response to a criterion that includes a determined lower indicia of power consumption for the selected subcircuit than for the non-selected subcircuit.
24. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an execution task to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
25. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an execution of at least one instruction to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
26. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an execution of at least one instruction of a program to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
27. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an execution of at least one instruction of an application to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
28. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an execution of at least one instruction of an instruction group to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
29. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct at least one of a specific action to be performed, an action to be performed on an entity, performance of a useful act, and/or performance of an act with respect to an entity the result of which is specified by a rule, to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
30. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit.
31. The system of claim 10 , wherein the scheduler module operable to direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit, the subcircuit selection based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit includes:
a scheduler module operable to preferentially direct an operation to a subcircuit selected from the first subcircuit and the second subcircuit based upon an availability of the selected subcircuit and the determined indicia of power consumption by the selected subcircuit.
32. The system of claim 10 , wherein the power module and the scheduler module are formed on a single chip.
33. The system of claim 10 , further comprising: the circuit.
34. The system of claim 33 , wherein the circuit, the power module, and the scheduler module are formed on a single chip.
35. A system comprising:
a circuit including a first subcircuit and a second subcircuit;
a monitor circuit for determining respective indicia of power consumption to execute a test operation by the first subcircuit and by the second subcircuit; and
a manager circuit for scheduling an execution task to a subcircuit selected from the first subcircuit and the second subcircuit based upon the determined respective indicia of power consumption by the first subcircuit and by the second subcircuit.
36. The system of claim 35 , wherein the circuit including a first subcircuit and a second subcircuit further includes:
a synchronous circuit including a first subsystem and a second subsystem.
37. The system of claim 35 , wherein the circuit including a first subcircuit and a second subcircuit further includes:
a synchronous processor including a first processor core and a second processor core.
38. The system of claim 35 , wherein the circuit including a first subcircuit and a second subcircuit further includes:
a synchronous uniprocessor including a first subsystem and a second subsystem.
39. The system of claim 35 , wherein the circuit including a first subcircuit and a second subcircuit further includes:
a circuit formed on one chip and including a first subcircuit and a second subcircuit.
40. The system of claim 35 , wherein the circuit including a first subcircuit and a second subcircuit includes:
a circuit including a first subcircuit formed on a first chip and a second subcircuit formed on a second chip.
41. The system of claim 35 , further comprising: a computing device having the circuit that includes a first subcircuit and a second subcircuit.
42. The system of claim 35 , further comprising: a power supply configured to electrically couple with a portable power source and operable to provide power to the circuit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/920,662 US20160085285A1 (en) | 2005-08-29 | 2015-10-22 | Power consumption management |
Applications Claiming Priority (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/214,459 US7877584B2 (en) | 2005-08-29 | 2005-08-29 | Predictive processor resource management |
US11/292,296 US8402257B2 (en) | 2005-08-29 | 2005-11-30 | Alteration of execution of a program in response to an execution-optimization information |
US11/292,323 US20070050608A1 (en) | 2005-08-29 | 2005-11-30 | Hardware-generated and historically-based execution optimization |
US11/291,503 US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/292,207 US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
US11/324,174 US20070050605A1 (en) | 2005-08-29 | 2005-12-30 | Freeze-dried ghost pages |
US11/343,927 US8214191B2 (en) | 2005-08-29 | 2006-01-31 | Cross-architecture execution optimization |
US11/343,745 US8209524B2 (en) | 2005-08-29 | 2006-01-31 | Cross-architecture optimization |
US11/364,573 US7607042B2 (en) | 2005-08-29 | 2006-02-28 | Adjusting a processor operating parameter based on a performance criterion |
US11/364,131 US8375247B2 (en) | 2005-08-29 | 2006-02-28 | Handling processor computational errors |
US11/364,130 US7493516B2 (en) | 2005-08-29 | 2006-02-28 | Hardware-error tolerant computing |
US11/384,237 US7512842B2 (en) | 2005-08-29 | 2006-03-17 | Multi-voltage synchronous systems |
US11/384,236 US7653834B2 (en) | 2005-08-29 | 2006-03-17 | Power sparing synchronous apparatus |
US11/392,992 US7739524B2 (en) | 2005-08-29 | 2006-03-28 | Power consumption management |
US12/802,923 US9274582B2 (en) | 2005-08-29 | 2010-06-15 | Power consumption management |
US14/920,662 US20160085285A1 (en) | 2005-08-29 | 2015-10-22 | Power consumption management |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/802,923 Continuation US9274582B2 (en) | 2005-08-29 | 2010-06-15 | Power consumption management |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160085285A1 true US20160085285A1 (en) | 2016-03-24 |
Family
ID=38327878
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/392,992 Expired - Fee Related US7739524B2 (en) | 2005-08-29 | 2006-03-28 | Power consumption management |
US12/802,923 Expired - Fee Related US9274582B2 (en) | 2005-08-29 | 2010-06-15 | Power consumption management |
US14/920,662 Abandoned US20160085285A1 (en) | 2005-08-29 | 2015-10-22 | Power consumption management |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/392,992 Expired - Fee Related US7739524B2 (en) | 2005-08-29 | 2006-03-28 | Power consumption management |
US12/802,923 Expired - Fee Related US9274582B2 (en) | 2005-08-29 | 2010-06-15 | Power consumption management |
Country Status (2)
Country | Link |
---|---|
US (3) | US7739524B2 (en) |
WO (1) | WO2007089499A2 (en) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11425189B2 (en) * | 2019-02-06 | 2022-08-23 | Magic Leap, Inc. | Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors |
US11445232B2 (en) | 2019-05-01 | 2022-09-13 | Magic Leap, Inc. | Content provisioning system and method |
US11510027B2 (en) | 2018-07-03 | 2022-11-22 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
US11514673B2 (en) | 2019-07-26 | 2022-11-29 | Magic Leap, Inc. | Systems and methods for augmented reality |
US11521296B2 (en) | 2018-11-16 | 2022-12-06 | Magic Leap, Inc. | Image size triggered clarification to maintain image sharpness |
US11567324B2 (en) | 2017-07-26 | 2023-01-31 | Magic Leap, Inc. | Exit pupil expander |
US11579441B2 (en) | 2018-07-02 | 2023-02-14 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US11598651B2 (en) | 2018-07-24 | 2023-03-07 | Magic Leap, Inc. | Temperature dependent calibration of movement detection devices |
US11609645B2 (en) | 2018-08-03 | 2023-03-21 | Magic Leap, Inc. | Unfused pose-based drift correction of a fused pose of a totem in a user interaction system |
US11624929B2 (en) | 2018-07-24 | 2023-04-11 | Magic Leap, Inc. | Viewing device with dust seal integration |
US11630507B2 (en) | 2018-08-02 | 2023-04-18 | Magic Leap, Inc. | Viewing system with interpupillary distance compensation based on head motion |
US11737832B2 (en) | 2019-11-15 | 2023-08-29 | Magic Leap, Inc. | Viewing system for use in a surgical environment |
US11756335B2 (en) | 2015-02-26 | 2023-09-12 | Magic Leap, Inc. | Apparatus for a near-eye display |
US11762623B2 (en) | 2019-03-12 | 2023-09-19 | Magic Leap, Inc. | Registration of local content between first and second augmented reality viewers |
US11762222B2 (en) | 2017-12-20 | 2023-09-19 | Magic Leap, Inc. | Insert for augmented reality viewing device |
US11776509B2 (en) | 2018-03-15 | 2023-10-03 | Magic Leap, Inc. | Image correction due to deformation of components of a viewing device |
US11790554B2 (en) | 2016-12-29 | 2023-10-17 | Magic Leap, Inc. | Systems and methods for augmented reality |
US11856479B2 (en) | 2018-07-03 | 2023-12-26 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality along a route with markers |
US11874468B2 (en) | 2016-12-30 | 2024-01-16 | Magic Leap, Inc. | Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light |
US11885871B2 (en) | 2018-05-31 | 2024-01-30 | Magic Leap, Inc. | Radar head pose localization |
US11953653B2 (en) | 2017-12-10 | 2024-04-09 | Magic Leap, Inc. | Anti-reflective coatings on optical waveguides |
US12016719B2 (en) | 2018-08-22 | 2024-06-25 | Magic Leap, Inc. | Patient viewing system |
US12033081B2 (en) | 2019-11-14 | 2024-07-09 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
US12044851B2 (en) | 2018-12-21 | 2024-07-23 | Magic Leap, Inc. | Air pocket structures for promoting total internal reflection in a waveguide |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7647487B2 (en) * | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US8375247B2 (en) * | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US7725693B2 (en) * | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US20070050608A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US8181004B2 (en) * | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US8516300B2 (en) * | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US7512842B2 (en) * | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
US7774558B2 (en) * | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US20080178489A1 (en) * | 2007-01-15 | 2008-07-31 | Roger Dionne | Shaver saver |
US20110213995A1 (en) * | 2007-08-09 | 2011-09-01 | International Business Machines Corporation | Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage |
US20090044032A1 (en) * | 2007-08-09 | 2009-02-12 | Timothy Chainer | Method, Apparatus and Computer Program Product Providing Instruction Monitoring for Reduction of Energy Usage |
US8108697B2 (en) * | 2008-07-28 | 2012-01-31 | Oracle America, Inc. | Controlling the power utilization of a computer system by adjusting a cooling fan speed |
US9176562B2 (en) | 2009-11-18 | 2015-11-03 | Aktiebolaget Skf | System and method for selecting and executing a task based upon a measured amount of energy |
US8829847B2 (en) | 2011-11-01 | 2014-09-09 | Blackberry Limited | Hybrid battery system for portable electronic devices |
US8509861B2 (en) | 2011-11-01 | 2013-08-13 | Research In Motion Limited | Hybrid battery system for portable electronic devices |
US9015513B2 (en) | 2011-11-03 | 2015-04-21 | Vocollect, Inc. | Receiving application specific individual battery adjusted battery use profile data upon loading of work application for managing remaining power of a mobile device |
US9329918B2 (en) * | 2011-12-28 | 2016-05-03 | Intel Corporation | Resilient register file circuit for dynamic variation tolerance and method of operating the same |
US9720766B2 (en) * | 2012-04-19 | 2017-08-01 | Industry-Academic Cooperation Foundation Chosun University | Self-healing, fault-tolerant FPGA computation and architecture |
US9523969B2 (en) * | 2013-02-20 | 2016-12-20 | General Electric Company | Systems and methods for tracking the quality and efficiency of machine instructions for operating an associated controller |
US10114431B2 (en) | 2013-12-31 | 2018-10-30 | Microsoft Technology Licensing, Llc | Nonhomogeneous server arrangement |
US20150188765A1 (en) * | 2013-12-31 | 2015-07-02 | Microsoft Corporation | Multimode gaming server |
CN104021246B (en) * | 2014-05-28 | 2017-02-15 | 复旦大学 | Self-adaptive length predictor applied to low power consumption fault-tolerant circuit |
US9694281B2 (en) | 2014-06-30 | 2017-07-04 | Microsoft Technology Licensing, Llc | Data center management of multimode servers |
US9811355B2 (en) * | 2014-07-23 | 2017-11-07 | Intel Corporation | Method and apparatus for selecting an interconnect frequency in a computing system |
GB2539037B (en) | 2015-06-05 | 2020-11-04 | Advanced Risc Mach Ltd | Apparatus having processing pipeline with first and second execution circuitry, and method |
US10101049B2 (en) | 2015-11-12 | 2018-10-16 | Oracle International Corporation | Determining parameters of air-cooling mechanisms |
US10379927B2 (en) * | 2016-11-01 | 2019-08-13 | Xilinx, Inc. | Programmable clock monitor |
US11182306B2 (en) | 2016-11-23 | 2021-11-23 | Advanced Micro Devices, Inc. | Dynamic application of software data caching hints based on cache test regions |
US10466937B2 (en) * | 2017-11-28 | 2019-11-05 | BAE Systems Information and Electronic Sustems Integration Inc. | Method of implementing a high reliability flash memory recorder |
US10915402B2 (en) * | 2018-09-12 | 2021-02-09 | Apple Inc. | Software fault monitoring |
Family Cites Families (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4819154A (en) * | 1982-12-09 | 1989-04-04 | Sequoia Systems, Inc. | Memory back up system with one cache memory and two physically separated main memories |
EP0128945B1 (en) * | 1982-12-09 | 1991-01-30 | Sequoia Systems, Inc. | Memory backup system |
US4751639A (en) * | 1985-06-24 | 1988-06-14 | Ncr Corporation | Virtual command rollback in a fault tolerant data processing system |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
US5297097A (en) * | 1988-06-17 | 1994-03-22 | Hitachi Ltd. | Large scale integrated circuit for low voltage operation |
US5084891A (en) * | 1989-09-08 | 1992-01-28 | Bell Communications Research, Inc. | Technique for jointly performing bit synchronization and error detection in a TDM/TDMA system |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
CA2059143C (en) * | 1991-01-25 | 2000-05-16 | Takeshi Miyao | Processing unit for a computer and a computer system incorporating such a processing unit |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
CA2073516A1 (en) | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5535405A (en) * | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
IL112660A (en) * | 1994-03-31 | 1998-01-04 | Minnesota Mining & Mfg | System integrating active and simulated decision- making processes |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US5768551A (en) * | 1995-09-29 | 1998-06-16 | Emc Corporation | Inter connected loop channel for reducing electrical signal jitter |
US6724372B1 (en) * | 1995-10-16 | 2004-04-20 | Nec Corporation | Ink trails on a wireless remote interface tablet and wireless remote ink field object |
US5691870A (en) * | 1995-11-07 | 1997-11-25 | Compaq Computer Corporation | Circuit for monitoring and disabling power supply signals to a microprocessor in a computer system utilizing secondary voltage regulators |
US5774736A (en) * | 1995-12-15 | 1998-06-30 | Wright; Robert S. | Redundant CPU power system |
US6199095B1 (en) * | 1996-01-29 | 2001-03-06 | Compaq Computer Corporation | System and method for achieving object method transparency in a multi-code execution environment |
US6535903B2 (en) * | 1996-01-29 | 2003-03-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for maintaining translated routine stack in a binary translation environment |
US5915232A (en) * | 1996-12-10 | 1999-06-22 | Advanced Micro Devices, Inc. | Method and apparatus for tracking power of an integrated circuit |
US6021489A (en) * | 1997-06-30 | 2000-02-01 | Intel Corporation | Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture |
US6374349B2 (en) * | 1998-03-19 | 2002-04-16 | Mcfarling Scott | Branch predictor with serially connected predictor stages for improving branch prediction accuracy |
US6247118B1 (en) * | 1998-06-05 | 2001-06-12 | Mcdonnell Douglas Corporation | Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry |
US6205537B1 (en) * | 1998-07-16 | 2001-03-20 | University Of Rochester | Mechanism for dynamically adapting the complexity of a microprocessor |
US6553488B2 (en) * | 1998-09-08 | 2003-04-22 | Intel Corporation | Method and apparatus for branch prediction using first and second level branch prediction tables |
US6611910B2 (en) * | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6763452B1 (en) * | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US6954923B1 (en) * | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US6347341B1 (en) * | 1999-02-22 | 2002-02-12 | International Business Machines Corporation | Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device |
US6496056B1 (en) | 1999-03-08 | 2002-12-17 | Agere Systems Inc. | Process-tolerant integrated circuit design |
US6499101B1 (en) * | 1999-03-18 | 2002-12-24 | I.P. First L.L.C. | Static branch prediction mechanism for conditional branch instructions |
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
US6519654B1 (en) * | 1999-07-07 | 2003-02-11 | Sharp Laboratories Of America, Incorporation | Method of designing an interface for a real-time messaging system |
US6985547B2 (en) * | 1999-09-27 | 2006-01-10 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System and method of digital system performance enhancement |
US6324643B1 (en) * | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6675374B2 (en) * | 1999-10-12 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Insertion of prefetch instructions into computer program code |
US6363523B1 (en) * | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
US6625750B1 (en) * | 1999-11-16 | 2003-09-23 | Emc Corporation | Hardware and software failover services for a file server |
KR100395763B1 (en) * | 2000-02-01 | 2003-08-25 | 삼성전자주식회사 | A branch predictor for microprocessor having multiple processes |
US7085920B2 (en) * | 2000-02-02 | 2006-08-01 | Fujitsu Limited | Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction |
JP3502592B2 (en) * | 2000-03-02 | 2004-03-02 | 株式会社東芝 | Branch prediction device |
JP3641997B2 (en) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | Program conversion apparatus and method, and recording medium |
JP3664473B2 (en) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Program optimization method and compiler using the same |
GB0028079D0 (en) * | 2000-11-17 | 2001-01-03 | Imperial College | System and method |
US20020087828A1 (en) * | 2000-12-28 | 2002-07-04 | International Business Machines Corporation | Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors |
US6986066B2 (en) * | 2001-01-05 | 2006-01-10 | International Business Machines Corporation | Computer system having low energy consumption |
US7231531B2 (en) * | 2001-03-16 | 2007-06-12 | Dualcor Technologies, Inc. | Personal electronics device with a dual core processor |
US7140010B2 (en) * | 2001-03-30 | 2006-11-21 | Sun Microsystems, Inc. | Method and apparatus for simultaneous optimization of code targeting multiple machines |
US7072975B2 (en) | 2001-04-24 | 2006-07-04 | Wideray Corporation | Apparatus and method for communicating information to portable computing devices |
US6968476B2 (en) * | 2001-06-27 | 2005-11-22 | International Business Machines Corporation | Checkpointing a superscalar, out-of-order processor for error recovery |
US6792599B2 (en) * | 2001-10-15 | 2004-09-14 | Intel Corporation | Method and apparatus for an atomic operation in a parallel computing environment |
US7039910B2 (en) * | 2001-11-28 | 2006-05-02 | Sun Microsystems, Inc. | Technique for associating execution characteristics with instructions or operations of program code |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7082602B2 (en) * | 2002-04-12 | 2006-07-25 | Intel Corporation | Function unit based finite state automata data structure, transitions and methods for making the same |
US7254810B2 (en) * | 2002-04-18 | 2007-08-07 | International Business Machines Corporation | Apparatus and method for using database knowledge to optimize a computer program |
US7100060B2 (en) * | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
US20040093591A1 (en) * | 2002-11-12 | 2004-05-13 | Spiros Kalogeropulos | Method and apparatus prefetching indexed array references |
US7886164B1 (en) * | 2002-11-14 | 2011-02-08 | Nvidia Corporation | Processor temperature adjustment system and method |
US7028218B2 (en) * | 2002-12-02 | 2006-04-11 | Emc Corporation | Redundant multi-processor and logical processor configuration for a file server |
US7260742B2 (en) * | 2003-01-28 | 2007-08-21 | Czajkowski David R | SEU and SEFI fault tolerant computer |
DE602004001869T2 (en) * | 2003-03-20 | 2007-05-03 | Arm Ltd., Cherry Hinton | ERROR IDENTIFICATION AND TROUBLESHOOTING FOR SYSTEMATIC AND INCIDENT FAULTS WITHIN A PROCESSING LEVEL OF AN INTEGRATED CIRCUIT |
US8185812B2 (en) | 2003-03-20 | 2012-05-22 | Arm Limited | Single event upset error detection within an integrated circuit |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7373642B2 (en) * | 2003-07-29 | 2008-05-13 | Stretch, Inc. | Defining instruction extensions in a standard programming language |
US20050093607A1 (en) * | 2003-11-05 | 2005-05-05 | David Marshall | Data transmission circuit and method |
US20050138478A1 (en) * | 2003-11-14 | 2005-06-23 | Safford Kevin D. | Error detection method and system for processors that employ alternating threads |
US7770034B2 (en) | 2003-12-16 | 2010-08-03 | Intel Corporation | Performance monitoring based dynamic voltage and frequency scaling |
US20050149915A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Methods and apparatus for optimizing a program undergoing dynamic binary translation using profile information |
US7496908B2 (en) * | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US20060020852A1 (en) * | 2004-03-30 | 2006-01-26 | Bernick David L | Method and system of servicing asynchronous interrupts in multiple processors executing a user program |
JP2005301476A (en) * | 2004-04-08 | 2005-10-27 | Hitachi Ltd | Power supply control system and storage device |
US7730482B2 (en) * | 2004-06-08 | 2010-06-01 | Covia Labs, Inc. | Method and system for customized programmatic dynamic creation of interoperability content |
US7376849B2 (en) * | 2004-06-30 | 2008-05-20 | Intel Corporation | Method, apparatus and system of adjusting one or more performance-related parameters of a processor |
US20060119382A1 (en) | 2004-12-07 | 2006-06-08 | Shumarayev Sergey Y | Apparatus and methods for adjusting performance characteristics of programmable logic devices |
US7318127B2 (en) | 2005-02-11 | 2008-01-08 | International Business Machines Corporation | Method, apparatus, and computer program product for sharing data in a cache among threads in an SMT processor |
US7791889B2 (en) * | 2005-02-16 | 2010-09-07 | Hewlett-Packard Development Company, L.P. | Redundant power beneath circuit board |
JP4330547B2 (en) * | 2005-03-17 | 2009-09-16 | 富士通株式会社 | Information processing system control method, information processing system, information processing system control program, and redundant configuration control device |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US7725693B2 (en) * | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US7647487B2 (en) * | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US7512842B2 (en) * | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
US8375247B2 (en) * | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US20070050608A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7774558B2 (en) * | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US8209524B2 (en) * | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US8181004B2 (en) * | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US7526674B2 (en) * | 2005-12-22 | 2009-04-28 | International Business Machines Corporation | Methods and apparatuses for supplying power to processors in multiple processor systems |
US7395466B2 (en) * | 2005-12-30 | 2008-07-01 | Intel Corporation | Method and apparatus to adjust voltage for storage location reliability |
US8020038B2 (en) * | 2006-09-28 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | System and method for adjusting operating points of a processor based on detected processor errors |
-
2006
- 2006-03-28 US US11/392,992 patent/US7739524B2/en not_active Expired - Fee Related
-
2007
- 2007-01-24 WO PCT/US2007/001905 patent/WO2007089499A2/en active Application Filing
-
2010
- 2010-06-15 US US12/802,923 patent/US9274582B2/en not_active Expired - Fee Related
-
2015
- 2015-10-22 US US14/920,662 patent/US20160085285A1/en not_active Abandoned
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11756335B2 (en) | 2015-02-26 | 2023-09-12 | Magic Leap, Inc. | Apparatus for a near-eye display |
US11790554B2 (en) | 2016-12-29 | 2023-10-17 | Magic Leap, Inc. | Systems and methods for augmented reality |
US11874468B2 (en) | 2016-12-30 | 2024-01-16 | Magic Leap, Inc. | Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light |
US11927759B2 (en) | 2017-07-26 | 2024-03-12 | Magic Leap, Inc. | Exit pupil expander |
US11567324B2 (en) | 2017-07-26 | 2023-01-31 | Magic Leap, Inc. | Exit pupil expander |
US11953653B2 (en) | 2017-12-10 | 2024-04-09 | Magic Leap, Inc. | Anti-reflective coatings on optical waveguides |
US11762222B2 (en) | 2017-12-20 | 2023-09-19 | Magic Leap, Inc. | Insert for augmented reality viewing device |
US11908434B2 (en) | 2018-03-15 | 2024-02-20 | Magic Leap, Inc. | Image correction due to deformation of components of a viewing device |
US11776509B2 (en) | 2018-03-15 | 2023-10-03 | Magic Leap, Inc. | Image correction due to deformation of components of a viewing device |
US11885871B2 (en) | 2018-05-31 | 2024-01-30 | Magic Leap, Inc. | Radar head pose localization |
US11579441B2 (en) | 2018-07-02 | 2023-02-14 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US12001013B2 (en) | 2018-07-02 | 2024-06-04 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US11856479B2 (en) | 2018-07-03 | 2023-12-26 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality along a route with markers |
US11510027B2 (en) | 2018-07-03 | 2022-11-22 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
US11624929B2 (en) | 2018-07-24 | 2023-04-11 | Magic Leap, Inc. | Viewing device with dust seal integration |
US11598651B2 (en) | 2018-07-24 | 2023-03-07 | Magic Leap, Inc. | Temperature dependent calibration of movement detection devices |
US11630507B2 (en) | 2018-08-02 | 2023-04-18 | Magic Leap, Inc. | Viewing system with interpupillary distance compensation based on head motion |
US11609645B2 (en) | 2018-08-03 | 2023-03-21 | Magic Leap, Inc. | Unfused pose-based drift correction of a fused pose of a totem in a user interaction system |
US11960661B2 (en) | 2018-08-03 | 2024-04-16 | Magic Leap, Inc. | Unfused pose-based drift correction of a fused pose of a totem in a user interaction system |
US12016719B2 (en) | 2018-08-22 | 2024-06-25 | Magic Leap, Inc. | Patient viewing system |
US11521296B2 (en) | 2018-11-16 | 2022-12-06 | Magic Leap, Inc. | Image size triggered clarification to maintain image sharpness |
US12044851B2 (en) | 2018-12-21 | 2024-07-23 | Magic Leap, Inc. | Air pocket structures for promoting total internal reflection in a waveguide |
US11425189B2 (en) * | 2019-02-06 | 2022-08-23 | Magic Leap, Inc. | Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors |
US11762623B2 (en) | 2019-03-12 | 2023-09-19 | Magic Leap, Inc. | Registration of local content between first and second augmented reality viewers |
US11445232B2 (en) | 2019-05-01 | 2022-09-13 | Magic Leap, Inc. | Content provisioning system and method |
US11514673B2 (en) | 2019-07-26 | 2022-11-29 | Magic Leap, Inc. | Systems and methods for augmented reality |
US12033081B2 (en) | 2019-11-14 | 2024-07-09 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
US11737832B2 (en) | 2019-11-15 | 2023-08-29 | Magic Leap, Inc. | Viewing system for use in a surgical environment |
Also Published As
Publication number | Publication date |
---|---|
US20100318818A1 (en) | 2010-12-16 |
US20070050672A1 (en) | 2007-03-01 |
US9274582B2 (en) | 2016-03-01 |
WO2007089499A2 (en) | 2007-08-09 |
WO2007089499A3 (en) | 2009-03-26 |
US7739524B2 (en) | 2010-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7739524B2 (en) | Power consumption management | |
US7653834B2 (en) | Power sparing synchronous apparatus | |
US7607042B2 (en) | Adjusting a processor operating parameter based on a performance criterion | |
US8255745B2 (en) | Hardware-error tolerant computing | |
JP5647686B2 (en) | Method, computer program, and data processing system for checkpointing in speculative versioning cache (checkpointing in speculative versioning cache) | |
US6857064B2 (en) | Method and apparatus for processing events in a multithreaded processor | |
US8402257B2 (en) | Alteration of execution of a program in response to an execution-optimization information | |
US20080028193A1 (en) | Transitive suppression of instruction replay | |
US8423824B2 (en) | Power sparing synchronous apparatus | |
Barnes et al. | Beating in-order stalls with" flea-flicker" two-pass pipelining | |
US8516300B2 (en) | Multi-votage synchronous systems | |
US20080148026A1 (en) | Checkpoint Efficiency Using a Confidence Indicator | |
KR20230093442A (en) | Prediction of load-based control independent (CI) register data independent (DI) (CIRDI) instructions as control independent (CI) memory data dependent (DD) (CIMDD) instructions for replay upon recovery from speculative prediction failures in the processor | |
Hwang et al. | A predictive dynamic power management technique for embedded mobile devices | |
US20070088965A1 (en) | Processor and methods to reduce power consumption of processor components | |
US5694553A (en) | Method and apparatus for determining the dispatch readiness of buffered load operations in a processor | |
Ceze et al. | CAVA: Hiding L2 misses with checkpoint-assisted value prediction | |
WO2007089546A2 (en) | Adjusting a processor operating parameter based on a performance criterion | |
Raghavan et al. | ROSY: recovering processor and memory systems from hard errors | |
Bell | Latency-and error-tolerant redundant execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SEARETE LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MANGIONE-SMITH, WILLIAM HENRY;REEL/FRAME:039237/0264 Effective date: 20160716 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |