US20070050608A1 - Hardware-generated and historically-based execution optimization - Google Patents
Hardware-generated and historically-based execution optimization Download PDFInfo
- Publication number
- US20070050608A1 US20070050608A1 US11/292,323 US29232305A US2007050608A1 US 20070050608 A1 US20070050608 A1 US 20070050608A1 US 29232305 A US29232305 A US 29232305A US 2007050608 A1 US2007050608 A1 US 2007050608A1
- Authority
- US
- United States
- Prior art keywords
- execution
- instruction
- instruction set
- processor
- optimization
- 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
- 238000005457 optimization Methods 0.000 title abstract description 233
- 238000004891 communication Methods 0.000 abstract description 35
- 238000000034 method Methods 0.000 abstract description 21
- 230000004044 response Effects 0.000 description 45
- 238000003860 storage Methods 0.000 description 30
- 230000003068 static effect Effects 0.000 description 23
- 230000004048 modification Effects 0.000 description 13
- 238000012986 modification Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 244000122871 Caryocar villosum Species 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000004075 alteration Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000003306 harvesting Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000012546 transfer 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
- 238000004364 calculation method Methods 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
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 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
- 238000013479 data entry Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 230000000977 initiatory effect Effects 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
- 239000003607 modifier Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012857 repacking Methods 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Definitions
- the present application is related to, claims the earliest available effective filing date(s) from (e.g., claims earliest available priority dates for other than provisional patent applications; claims benefits under 35 USC ⁇ 119(e) for provisional patent applications), and incorporates by reference in its entirety all subject matter of the following listed application(s) (the “Related Applications”) to the extent such subject matter is not inconsistent herewith; the present application also claims the earliest available effective filing date(s) from, and also incorporates by reference in its entirety all subject matter of any and all parent, grandparent, great-grandparent, etc. applications of the Related Application(s) to the extent such subject matter is not inconsistent herewith.
- Applicant entity 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.” Notwithstanding the foregoing, applicant entity understands that the USPTO's computer programs have certain data entry requirements, and hence applicant entity is designating the present application as a continuation in part of its parent applications, but expressly points out that such designations 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).
- An embodiment provides a device.
- the device includes a processor operable to execute an instruction set, a communications link exposed to an execution-optimization synthesizer and to the processor, and the execution-optimization synthesizer.
- the execution-optimization synthesizer 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, and 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.
- Another embodiment provides a method.
- the method includes collecting 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.
- the method also includes 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.
- a further embodiment provides a device.
- the device includes a first circuit 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 and exposed to a processor having a processor instruction set that includes the instruction set.
- the device also includes a second circuit 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 circuit for creating the execution-optimization information may include the circuit for collecting data corresponding to an execution.
- An embodiment provides a device.
- the device includes a microengine operatively coupled with a processor having an instruction set.
- the microengine includes a microengine operable gather 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.
- 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 a portion of the instruction set by the processor.
- the device may include the processor having an instruction set.
- the device may include a communications link exposed to the microengine.
- the device may include a communications link exposed to the microengine and transparent to software executing on the processor.
- the device may include a communications link operably coupled to the microengine and to the processor.
- Another embodiment provides a method implemented in a hardware device.
- the method includes gathering 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.
- the method also includes creating 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 method may include saving the execution-based optimization profile.
- the method may include saving the execution-based optimization profile in an association with the at least one instruction of the instruction set.
- a further embodiment provides a device.
- the device includes means 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 device also includes means 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.
- An embodiment provides a device.
- the device includes an information store operable to save an execution-optimization information, a first processor, and a hardware circuit.
- the hardware circuit includes a hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information.
- the execution-optimization information being created by a hardware device utilizing data collected from a second processor and 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 first processor and the hardware circuit may be formed on a single chip.
- Another embodiment provides a method.
- the method includes identifying an instruction to be fetched for execution by a first processor, and altering an execution of the instruction to be fetched for execution in response to an execution-optimization information.
- the execution-optimization information 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.
- a further embodiment provides a device.
- the device includes means 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 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 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.
- An embodiment provides a device.
- the device includes a processor operable to execute an instruction set, and an execution-optimization circuit.
- the execution circuit includes an execution circuit for receiving an identification of a first instruction to be fetched from the instruction set for execution by the processor, and for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile.
- the execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set.
- the execution-optimization circuit may include at least one of a microengine, a micro-programmed circuit, and/or a hardwired circuit.
- Another embodiment provides a method transparent to software executing on a processor.
- the method including fetching a second instruction for execution by the processor if indicated by an execution-based optimization profile in response to an identification of a first instruction to be fetched for execution by a processor.
- the execution-based optimization profile previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set.
- the method may include identifying the first instruction to be fetched for execution by the processor.
- a further embodiment provides a device.
- the device includes means for selecting a first instruction to be fetched from an instruction set of a static program for execution by a processor.
- the device also includes means for routing the fetch of the first instruction to a second instruction of the instruction set of a static program if indicated by an execution-based optimization profile.
- the execution-based optimization profile having been derived from data invisible to software and generated during a historical execution of the static program.
- 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 900 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 device in which embodiments may be implemented
- FIG. 24 illustrates an exemplary operational flow in which embodiments may be implemented
- FIG. 25 illustrates an alternative embodiment of the exemplary operational flow of FIG. 24 ;
- FIG. 26 illustrates another alternative embodiment of the exemplary operational flow of FIG. 24 ;
- FIG. 27 illustrates a further alternative embodiment of the exemplary operational flow of FIG. 24 ;
- FIG. 28 illustrates an alternative embodiment of the exemplary operational flow of FIG. 24 , and includes FIGS. 28A and 28B ;
- FIG. 29 illustrates a device in which embodiments may be implemented.
- 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 .
- the operating system 134 offers services to applications programs 135 by way of one or more application programming interfaces (APIs) (not shown). Because the operating system 134 incorporates these services, developers of applications 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.
- 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 of the instruction set may include a functional instruction, a branching instruction, a memory instruction, and/or other instruction that may be executed by a processor.
- an instruction of the instruction set may include a statement or a portion of a statement in a program.
- an instruction group includes 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 of the instruction set may include a decoded instruction, a translated instruction, a portion of a translated instruction, and/or a micro-operation.
- an instruction of the instruction set may include an instruction block, a basic block, a functional block, and/or an instruction module of the instruction set.
- 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 of the instruction set, a translated instruction of the instruction set, a decoded instruction of the instruction set, a micro-operation corresponding to at least a portion of the at least one instruction of the instruction set, data correlating to the execution of the at least one instruction of the instruction set, a movement of data correlating to an execution of the at least one instruction of the instruction set, a result of an execution of the at least one instruction of the instruction set, a branch outcome of an execution of the at least one instruction of the instruction set, an exception correlating to an execution of the at least one instruction of the instruction set, a store-to-load dependency correlating an execution of the at least one instruction of the instruction set, a predicted value correlating to an execution of the at least one instruction of the instruction set, 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 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 250 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 provide 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.
- 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 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 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 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 dynamic 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 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 device 1100 in which embodiments may be implemented.
- the device includes a processor 1110 operable to execute an instruction set, and an execution-optimization circuit 1150 .
- the execution-optimization circuit includes an execution-optimization circuit for receiving an identification of a first instruction to be fetched from the instruction set for execution by the processor.
- the execution-optimization circuit also includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile saved in an information store.
- the information store may include an information store 1140 A close to the processor, such as on the same chip.
- the information store may include an information store 1140 B that is an off-processor-chip resource.
- the execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set.
- the execution-based optimization profile may indicate that the second instruction be fetched in a direct and/or indirect manner.
- the execution-based optimization profile may modify the next instruction address calculation causing the second instruction to be fetched in lieu of the first instruction.
- the execution-based optimization profile may signal and/or point the next instruction address calculation causing the second instruction to be fetched in lieu of the first instruction.
- the execution-based optimization profile may provide information usable in determining whether to fetch the second instruction in lieu of the first instruction.
- the execution-optimization circuit 1150 includes at least one of a microengine, a micro-programmed circuit, and/or a hardwired circuit.
- the execution-optimization circuit includes an execution-optimization portion of a control unit of the processor.
- the processor and the execution-optimization circuit are formed on a chip, illustrated as the chip 1101 .
- the execution-optimization circuit 1150 includes an execution-optimization circuit for receiving an identification of a first instruction to be fetched from the instruction set of a program for execution by the processor.
- the program may be a static program or a dynamic program.
- the execution-optimization circuit includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile associated with the first instruction.
- the execution-optimization circuit includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile associated with another instruction of the instruction set.
- the execution-based optimization profile includes the execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of an instruction set of a static program.
- FIG. 24 illustrates an exemplary operational flow 1200 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 1100 of FIG. 23 .
- the operational flow moves to a substitution operation 1210 .
- the substitution operation fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile.
- the execution-based optimization profile 1230 includes an execution-based optimization profile previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set.
- the flow then proceeds to an end operation.
- the operational flow is transparent to software executing on the processor.
- FIG. 25 illustrates an alternative embodiment of the exemplary operational flow 1200 of FIG. 24 .
- the substitution operation 1210 may include at least one additional operation.
- the at least one additional operation may include an operation 1212 , an operation 1214 , and/or an operation 1216 .
- the operation 1212 fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile.
- the operation 1214 fetches the second instruction from an instruction set of a static program for execution by the processor if indicated by an execution-based optimization profile.
- the operation 1216 fetches the second instruction from an instruction set of the processor for execution by the processor if indicated by an execution-based optimization profile.
- FIG. 26 illustrates another alternative embodiment of the exemplary operational flow 1200 of FIG. 24 .
- the substitution operation 1210 may include at least one additional operation.
- the at least one additional operation may include an operation 1218 , an operation 1222 , and/or an operation 1224 .
- the operation 1218 fetches the second instruction of the instruction set of a static program if indicated by an execution-based optimization profile linked to the first instruction.
- the operation 1222 fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile linked to the first instruction.
- the operation 1224 fetches the second instruction for execution by the processor if indicated by an execution-based optimization profile saved in a cache operably coupled with the processor.
- the execution-based optimization profile 1230 may include at least one additional execution-based optimization profile, such as an execution-based optimization profile 1232 .
- the execution-based optimization profile 1232 includes an execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of the first instruction.
- FIG. 27 illustrates a further alternative embodiment of the exemplary operational flow 1200 of FIG. 24 .
- the operational flow may include at least one additional operation.
- the at least one additional operation may include a fetch next instruction operation 1205 , and/or an operation 1240 .
- the fetch next instruction operation 1205 identifies the first instruction to be fetched for execution by the processor. If fetching a second instruction for execution by the processor is not indicated by the execution-based optimization profile, the operation 1240 fetches the first instruction from the instruction set of a static program for execution by the processor.
- FIG. 28 illustrates an alternative embodiment of the exemplary operational flow 1200 of FIG. 24 , and includes FIGS. 28A and 28B .
- FIG. 28A illustrates an instruction group 1250 , which includes a basic block 100 , a basic block 200 , and a basic block 300 .
- the execution sequence of the instruction group includes a jump from the last instruction of the basic block 100 to the first instruction of the basic block 200 , a jump from the last instruction of the basic block 200 to the first instruction of the basic block 300 , and a jump from the last instruction of the basic block 300 to the first instruction of the basic block 100 until a condition is met.
- FIG. 28B illustrates a modification of the instruction group 1250 in response to a hardware-generated and historically-based execution-optimization strategy.
- the optimization strategy may have been created in response to data collected from a processor indicating that a result produced by execution of the basic block 300 is never read.
- the optimization strategy may include using at least one of the execution-optimization information described in conjunction with FIGS. 2, 4 , 17 , and 18 ; a runtime-based optimization profile described in conjunction with FIG. 8 ; and/or an execution-based optimization profile described in conjunction with FIGS. 9, 23 , and 24 .
- the execution sequence of the instruction group includes a jump from the last instruction of the basic block 100 to the first instruction of the basic block 200 , and jump from the last instruction of the basic block 200 to the first instruction of the basic block 100 until a condition is met.
- the execution of the basic block 300 is omitted or not executed.
- FIG. 29 illustrates a device 1300 in which embodiments may be implemented.
- the device includes means 1310 for selecting a first instruction to be fetched from an instruction set of a static program for execution by a processor.
- the device also includes means 1320 for routing the fetch of the first instruction to a second instruction of the instruction set of a static program if indicated by an execution-based optimization profile.
- the execution-based optimization profile 1330 includes an execution-based optimization profile having been derived from data invisible to software and generated during a historical execution of the static program.
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Embodiments include a device, and a method. In an embodiment, a device includes a processor operable to execute an instruction set, a communications link exposed to an execution-optimization synthesizer and to the processor, and the execution-optimization synthesizer. The execution-optimization optimization synthesizer 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, and 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.
Description
- The present application is related to, claims the earliest available effective filing date(s) from (e.g., claims earliest available priority dates for other than provisional patent applications; claims benefits under 35 USC §119(e) for provisional patent applications), and incorporates by reference in its entirety all subject matter of the following listed application(s) (the “Related Applications”) to the extent such subject matter is not inconsistent herewith; the present application also claims the earliest available effective filing date(s) from, and also incorporates by reference in its entirety all subject matter of any and all parent, grandparent, great-grandparent, etc. applications of the Related Application(s) to the extent such subject matter is not inconsistent herewith.
- 1. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. patent application entitled PROCESSOR RESOURCE MANAGEMENT, naming Bran Ferren; W. Daniel Hillis; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. Ser. No. 11/214,449, filed Aug. 29, 2005.
- 2. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. patent application entitled MULTIPROCESSOR RESOURCE OPTIMIZATION, naming Bran Ferren; W. Daniel Hillis; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. Ser. No. 11/214,458, filed Aug. 29, 2005.
- 3. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. 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. Ser. No. 11/214,459, filed Aug. 29, 2005.
- 4. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. 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. Ser. No. ______, [Attorney Docket No. 0805-027-003B] filed Nov. 30, 2005.
- 5. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. 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. Ser. No. ______, [Attorney Docket No. 0805-027-003C] filed Nov. 30, 2005.
- 6. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of U.S. 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. Ser. No. ______, [Attorney Docket No. 0805-027-003D] filed Nov. 30, 2005.
- 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 or continuation in part. Stephen G. Kunin, Benefit of Prior-Filed Application, USPTO Electronic Official Gazette, Mar. 18, 2003 at http://www.uspto.gov/web/offices/com/sol/og/2003/week11/patbene.htm. The present applicant entity has provided a specific reference to the application(s)from which priority is being claimed as recited by statute. Applicant entity 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.” Notwithstanding the foregoing, applicant entity understands that the USPTO's computer programs have certain data entry requirements, and hence applicant entity is designating the present application as a continuation in part of its parent applications, but expressly points out that such designations 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).
- An embodiment provides a device. The device includes a processor operable to execute an instruction set, a communications link exposed to an execution-optimization synthesizer and to the processor, and the execution-optimization synthesizer. The execution-optimization synthesizer 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, and 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 addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- Another embodiment provides a method. The method includes collecting 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. The method also includes 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 addition to the foregoing, other method embodiments are described in the claims, drawings, and text form a part of the present application.
- A further embodiment provides a device. The device includes a first circuit 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 and exposed to a processor having a processor instruction set that includes the instruction set. The device also includes a second circuit 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 circuit for creating the execution-optimization information may include the circuit for collecting data corresponding to an execution. In addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- An embodiment provides a device. The device includes a microengine operatively coupled with a processor having an instruction set. The microengine includes a microengine operable gather 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. 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 a portion of the instruction set by the processor. The device may include the processor having an instruction set. The device may include a communications link exposed to the microengine. The device may include a communications link exposed to the microengine and transparent to software executing on the processor. The device may include a communications link operably coupled to the microengine and to the processor. In addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- Another embodiment provides a method implemented in a hardware device. The method includes gathering 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. The method also includes creating 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 method may include saving the execution-based optimization profile. The method may include saving the execution-based optimization profile in an association with the at least one instruction of the instruction set. In addition to the foregoing, other method embodiments are described in the claims, drawings, and text form a part of the present application.
- A further embodiment provides a device. The device includes means 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 device also includes means 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 addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- An embodiment provides a device. The device includes an information store operable to save an execution-optimization information, a first processor, and a hardware circuit. The hardware circuit includes a hardware circuit for altering an execution of a program by the first processor in response to the execution-optimization information. The execution-optimization information being created by a hardware device utilizing data collected from a second processor and 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 first processor and the hardware circuit may be formed on a single chip. In addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- Another embodiment provides a method. The method includes identifying an instruction to be fetched for execution by a first processor, and altering an execution of the instruction to be fetched for execution in response to an execution-optimization information. The execution-optimization information 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. In addition to the foregoing, other method embodiments are described in the claims, drawings, and text form a part of the present application.
- A further embodiment provides a device. The device includes means 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 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 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. In addition to the foregoing, other device embodiments are described in the claims, drawings, and text form a part of the present application.
- An embodiment provides a device. The device includes a processor operable to execute an instruction set, and an execution-optimization circuit. The execution circuit includes an execution circuit for receiving an identification of a first instruction to be fetched from the instruction set for execution by the processor, and for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile. The execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set. The execution-optimization circuit may include at least one of a microengine, a micro-programmed circuit, and/or a hardwired circuit. In addition to the foregoing, other method embodiments are described in the claims, drawings, and text form a part of the present application.
- Another embodiment provides a method transparent to software executing on a processor. The method including fetching a second instruction for execution by the processor if indicated by an execution-based optimization profile in response to an identification of a first instruction to be fetched for execution by a processor. The execution-based optimization profile previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set. The method may include identifying the first instruction to be fetched for execution by the processor.
- A further embodiment provides a device. The device includes means for selecting a first instruction to be fetched from an instruction set of a static program for execution by a processor. The device also includes means for routing the fetch of the first instruction to a second instruction of the instruction set of a static program if indicated by an execution-based optimization profile. The execution-based optimization profile having been derived from data invisible to software and generated during a historical execution of the static program.
- The foregoing is a summary and thus by necessity contains simplifications, generalizations and omissions of detail. Consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the devices and/or processes described herein, as defined by the claims, 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 exemplaryoperational flow 900 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 device in which embodiments may be implemented; -
FIG. 24 illustrates an exemplary operational flow in which embodiments may be implemented; -
FIG. 25 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 24 ; -
FIG. 26 illustrates another alternative embodiment of the exemplary operational flow ofFIG. 24 ; -
FIG. 27 illustrates a further alternative embodiment of the exemplary operational flow ofFIG. 24 ; -
FIG. 28 illustrates an alternative embodiment of the exemplary operational flow ofFIG. 24 , and includesFIGS. 28A and 28B ; and -
FIG. 29 illustrates a device in which embodiments may be implemented. - In the following detailed description of exemplary embodiments, reference is made to the accompanying drawings, which form a part hereof. In the several figures, like referenced numerals identify like elements. The detailed description and the drawings illustrate exemplary embodiments. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the claimed subject matter is defined by the appended claims.
-
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 to applications programs 135 by way of one or more application programming interfaces (APIs) (not shown). Because theoperating system 134 incorporates these services, developers of applications 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. - 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 of the instruction set 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 of the instruction set may include a statement or a portion of a statement in a program. In a further embodiment, an instruction group includes 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 of the instruction set 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 of the instruction set may include an instruction block, a basic block, a functional block, and/or an instruction module of the instruction set. - 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 of the instruction set, a translated instruction of the instruction set, a decoded instruction of the instruction set, a micro-operation corresponding to at least a portion of the at least one instruction of the instruction set, data correlating to the execution of the at least one instruction of the instruction set, a movement of data correlating to an execution of the at least one instruction of the instruction set, a result of an execution of the at least one instruction of the instruction set, a branch outcome of an execution of the at least one instruction of the instruction set, an exception correlating to an execution of the at least one instruction of the instruction set, a store-to-load dependency correlating an execution of the at least one instruction of the instruction set, a predicted value correlating to an execution of the at least one instruction of the instruction set, 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 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 250 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 provide 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. For 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 further 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 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 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 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 dynamic 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 anoperation 912. Theoperation 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 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 device 1100 in which embodiments may be implemented. The device includes aprocessor 1110 operable to execute an instruction set, and an execution-optimization circuit 1150. The execution-optimization circuit includes an execution-optimization circuit for receiving an identification of a first instruction to be fetched from the instruction set for execution by the processor. The execution-optimization circuit also includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile saved in an information store. In an embodiment, the information store may include aninformation store 1140A close to the processor, such as on the same chip. In another embodiment, the information store may include aninformation store 1140B that is an off-processor-chip resource. The execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set. The execution-based optimization profile may indicate that the second instruction be fetched in a direct and/or indirect manner. For example, the execution-based optimization profile may modify the next instruction address calculation causing the second instruction to be fetched in lieu of the first instruction. In another example, the execution-based optimization profile may signal and/or point the next instruction address calculation causing the second instruction to be fetched in lieu of the first instruction. In a further example, the execution-based optimization profile may provide information usable in determining whether to fetch the second instruction in lieu of the first instruction. - In an embodiment, the execution-
optimization circuit 1150 includes at least one of a microengine, a micro-programmed circuit, and/or a hardwired circuit. In another embodiment, the execution-optimization circuit includes an execution-optimization portion of a control unit of the processor. In a further embodiment, the processor and the execution-optimization circuit are formed on a chip, illustrated as thechip 1101. - In an embodiment, the execution-
optimization circuit 1150 includes an execution-optimization circuit for receiving an identification of a first instruction to be fetched from the instruction set of a program for execution by the processor. The program may be a static program or a dynamic program. In another embodiment, the execution-optimization circuit includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile associated with the first instruction. In a further embodiment, the execution-optimization circuit includes an execution-optimization circuit for pointing to a second instruction of the instruction set of the processor to be fetched for execution by the processor if indicated by an execution-based optimization profile associated with another instruction of the instruction set. In an embodiment, the execution-based optimization profile includes the execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of an instruction set of a static program. -
FIG. 24 illustrates an exemplaryoperational flow 1200 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 1100 ofFIG. 23 . After a start operation, the operational flow moves to asubstitution operation 1210. In response to an identification of a first instruction to be fetched for execution by a processor, the substitution operation fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile. The execution-basedoptimization profile 1230 includes an execution-based optimization profile previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of at least a portion of the instruction set. The flow then proceeds to an end operation. The operational flow is transparent to software executing on the processor. -
FIG. 25 illustrates an alternative embodiment of the exemplaryoperational flow 1200 ofFIG. 24 . Thesubstitution operation 1210 may include at least one additional operation. The at least one additional operation may include anoperation 1212, anoperation 1214, and/or anoperation 1216. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1212 fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1214 fetches the second instruction from an instruction set of a static program for execution by the processor if indicated by an execution-based optimization profile. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1216 fetches the second instruction from an instruction set of the processor for execution by the processor if indicated by an execution-based optimization profile. -
FIG. 26 illustrates another alternative embodiment of the exemplaryoperational flow 1200 ofFIG. 24 . Thesubstitution operation 1210 may include at least one additional operation. The at least one additional operation may include anoperation 1218, anoperation 1222, and/or anoperation 1224. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1218 fetches the second instruction of the instruction set of a static program if indicated by an execution-based optimization profile linked to the first instruction. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1222 fetches a second instruction for execution by the processor if indicated by an execution-based optimization profile linked to the first instruction. In response to an identification of a first instruction to be fetched from an instruction set of a static program for execution by the processor, theoperation 1224 fetches the second instruction for execution by the processor if indicated by an execution-based optimization profile saved in a cache operably coupled with the processor. The execution-basedoptimization profile 1230 may include at least one additional execution-based optimization profile, such as an execution-based optimization profile 1232. The execution-based optimization profile 1232 includes an execution-based optimization profile being previously derived by a hardware device utilizing data invisible to software and generated during a runtime execution of the first instruction. -
FIG. 27 illustrates a further alternative embodiment of the exemplaryoperational flow 1200 ofFIG. 24 . The operational flow may include at least one additional operation. The at least one additional operation may include a fetchnext instruction operation 1205, and/or anoperation 1240. The fetchnext instruction operation 1205 identifies the first instruction to be fetched for execution by the processor. If fetching a second instruction for execution by the processor is not indicated by the execution-based optimization profile, theoperation 1240 fetches the first instruction from the instruction set of a static program for execution by the processor. -
FIG. 28 illustrates an alternative embodiment of the exemplaryoperational flow 1200 ofFIG. 24 , and includesFIGS. 28A and 28B .FIG. 28A illustrates aninstruction group 1250, which includes abasic block 100, abasic block 200, and abasic block 300. The execution sequence of the instruction group includes a jump from the last instruction of thebasic block 100 to the first instruction of thebasic block 200, a jump from the last instruction of thebasic block 200 to the first instruction of thebasic block 300, and a jump from the last instruction of thebasic block 300 to the first instruction of thebasic block 100 until a condition is met. -
FIG. 28B illustrates a modification of theinstruction group 1250 in response to a hardware-generated and historically-based execution-optimization strategy. For example, the optimization strategy may have been created in response to data collected from a processor indicating that a result produced by execution of thebasic block 300 is never read. In an embodiment, the optimization strategy may include using at least one of the execution-optimization information described in conjunction withFIGS. 2, 4 , 17, and 18; a runtime-based optimization profile described in conjunction withFIG. 8 ; and/or an execution-based optimization profile described in conjunction withFIGS. 9, 23 , and 24. If indicated by the optimization strategy, the execution sequence of the instruction group includes a jump from the last instruction of thebasic block 100 to the first instruction of thebasic block 200, and jump from the last instruction of thebasic block 200 to the first instruction of thebasic block 100 until a condition is met. The execution of thebasic block 300 is omitted or not executed. -
FIG. 29 illustrates adevice 1300 in which embodiments may be implemented. The device includesmeans 1310 for selecting a first instruction to be fetched from an instruction set of a static program for execution by a processor. The device also includesmeans 1320 for routing the fetch of the first instruction to a second instruction of the instruction set of a static program if indicated by an execution-based optimization profile. The execution-basedoptimization profile 1330 includes an execution-based optimization profile having been derived from data invisible to software and generated during a historical execution of the static program. - 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 particular aspects of the present subject matter described herein have been shown and described, it will be apparent to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from this subject matter described herein and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this subject matter described herein. Furthermore, it is to be understood that the invention is defined by the appended claims.
Claims (30)
1. A device comprising:
a processor operable to execute an instruction set;
a communications link exposed to an execution-optimization synthesizer and to the processor; and
the 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; and
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.
2. The device of claim 1 , wherein the instruction set includes an instruction set of a static program.
3. The device of claim 1 , wherein the instruction set includes an instruction set of an instruction set architecture.
4. The device of claim 1 , wherein the communications link includes at least one of a signal-bearing medium, a light propagation medium, an optical fiber, a light guide, a computer readable storage medium, a hardware register, a bus, an interconnection structure, and/or a signal conductor.
5. The device of claim 1 , wherein the communications link exposed to an execution-optimization synthesizer and to the processor includes
a communications link exposed only to an execution-optimization synthesizer and the processor.
6. The device of claim 1 , wherein the communications link exposed to an execution-optimization synthesizer and to the processor includes
a communications link exposed to an execution-optimization synthesizer and the processor, and transparent to software executing on the processor.
7. The device of claim 1 , wherein the communications link exposed to an execution-optimization synthesizer and to the processor includes
a communications link exposed to an execution-optimization synthesizer, to the processor, and to software.
8. The device of claim 1 , wherein the processor and the communications link reside on a single chip.
9. The device of claim 1 , wherein the processor and the execution-optimization synthesizer reside on a single chip.
10. The device of claim 1 , wherein the processor, communications link, and the execution-optimization synthesizer are formed on a single chip.
11. The device of claim 1 , wherein the execution-optimization synthesizer includes a hardware-implemented execution-optimization synthesizer.
12. The device of claim 1 , wherein the execution-optimization synthesizer includes a microengine-implemented execution-optimization synthesizer.
13. The device of claim 1 , wherein the 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 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.
14. The device of claim 1 , wherein the 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 includes
an execution-optimization synthesizer operable to collect data that includes at least one of a translated instruction of the instruction set, a decoded instruction of the instruction set, a micro-operation corresponding to at least a portion of the at least one instruction of the instruction set, data correlating to an execution of the at least one instruction of the instruction set, a movement of data correlating to an execution of the at least one instruction of the instruction set, a result of an execution of the at least one instruction of the instruction set, a branch outcome of an execution of the at least one instruction of the instruction set, an exception correlating to an execution of the at least one instruction of the instruction set, a store-to-load dependency correlating an execution of the at least one instruction of the instruction set, a predicted value correlating to an execution of the at least one instruction of the instruction set, and/or a relationship between at least two instructions of the instruction set.
15. The device of claim 1 , wherein the 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 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.
16. The device of claim 1 , wherein the execution-optimization synthesizer 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.
17. The device of claim 1 , wherein 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.
18. The device of claim 1 , wherein the execution-optimization synthesizer further includes an execution-optimization synthesizer operable to save the optimization information.
19. The device of claim 1 , wherein 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.
20. The device of claim 1 , wherein the device includes a computing device.
21. The device of claim 20 , wherein the computing device includes at least one of desktop computing device, a laptop computing device, a portable computing device, and/or a supercomputing device.
22. A method comprising:
collecting 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;
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.
23. The method of claim 22 , wherein the collecting 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 includes
collecting 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.
24. The method of claim 22 , wherein the collecting 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 includes
collecting 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.
25. The method of claim 22 , wherein the 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 includes
creating 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.
26. The method of claim 22 , wherein the 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 includes
creating a branch predictor modification usable in another execution of the at least one instruction of an instruction set.
27. The method of claim 22 , wherein the 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 includes
creating a data format modification usable in another execution of the at least one instruction of an instruction set.
28. The method of claim 22 , wherein the 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 includes
creating a data layout optimization usable in another execution of the at least one instruction of an instruction set.
29. A device comprising:
a first circuit 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 and exposed to a processor having a processor instruction set that includes the instruction set; and
a second circuit 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.
30. The device of claim 29 , wherein the circuit for creating the execution-optimization information includes the circuit for collecting data corresponding to an execution.
Priority Applications (18)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/292,207 US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
US11/291,503 US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/292,323 US20070050608A1 (en) | 2005-08-29 | 2005-11-30 | Hardware-generated and historically-based execution optimization |
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/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,131 US8375247B2 (en) | 2005-08-29 | 2006-02-28 | Handling processor computational errors |
US11/364,573 US7607042B2 (en) | 2005-08-29 | 2006-02-28 | Adjusting a processor operating parameter based on a performance criterion |
US11/364,130 US7493516B2 (en) | 2005-08-29 | 2006-02-28 | Hardware-error tolerant computing |
US11/384,236 US7653834B2 (en) | 2005-08-29 | 2006-03-17 | Power sparing synchronous apparatus |
US11/384,237 US7512842B2 (en) | 2005-08-29 | 2006-03-17 | Multi-voltage synchronous systems |
US11/392,992 US7739524B2 (en) | 2005-08-29 | 2006-03-28 | Power consumption management |
US12/319,696 US8255745B2 (en) | 2005-08-29 | 2009-01-08 | Hardware-error tolerant computing |
US12/321,027 US8516300B2 (en) | 2005-08-29 | 2009-01-13 | Multi-votage synchronous systems |
US12/657,285 US8423824B2 (en) | 2005-08-29 | 2010-01-14 | Power sparing synchronous apparatus |
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 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/214,458 US7774558B2 (en) | 2005-08-29 | 2005-08-29 | Multiprocessor resource optimization |
US11/214,449 US7539852B2 (en) | 2005-08-29 | 2005-08-29 | Processor resource management |
US11/214,459 US7877584B2 (en) | 2005-08-29 | 2005-08-29 | Predictive processor resource management |
US11/292,323 US20070050608A1 (en) | 2005-08-29 | 2005-11-30 | Hardware-generated and historically-based execution optimization |
US11/292,207 US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
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/291,503 US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
Related Parent Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/214,459 Continuation-In-Part US7877584B2 (en) | 2005-08-29 | 2005-08-29 | Predictive processor resource management |
US11/214,449 Continuation-In-Part US7539852B2 (en) | 2005-08-29 | 2005-08-29 | Processor resource management |
US11/214,458 Continuation-In-Part US7774558B2 (en) | 2005-08-29 | 2005-08-29 | Multiprocessor resource optimization |
US11/292,207 Continuation-In-Part US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
US11/292,296 Continuation-In-Part US8402257B2 (en) | 2005-08-29 | 2005-11-30 | Alteration of execution of a program in response to an execution-optimization information |
US11/291,503 Continuation-In-Part US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/324,174 Continuation-In-Part US20070050605A1 (en) | 2005-08-29 | 2005-12-30 | Freeze-dried ghost pages |
Related Child Applications (12)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/214,459 Continuation-In-Part US7877584B2 (en) | 2005-08-29 | 2005-08-29 | Predictive processor resource management |
US11/292,207 Continuation-In-Part US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
US11/292,296 Continuation-In-Part US8402257B2 (en) | 2005-08-29 | 2005-11-30 | Alteration of execution of a program in response to an execution-optimization information |
US11/291,503 Continuation-In-Part US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/324,174 Continuation-In-Part US20070050605A1 (en) | 2005-08-29 | 2005-12-30 | Freeze-dried ghost pages |
US11/343,745 Continuation-In-Part US8209524B2 (en) | 2005-08-29 | 2006-01-31 | Cross-architecture optimization |
US11/364,573 Continuation-In-Part US7607042B2 (en) | 2005-08-29 | 2006-02-28 | Adjusting a processor operating parameter based on a performance criterion |
US11/364,130 Continuation-In-Part US7493516B2 (en) | 2005-08-29 | 2006-02-28 | Hardware-error tolerant computing |
US11/364,131 Continuation-In-Part US8375247B2 (en) | 2005-08-29 | 2006-02-28 | Handling processor computational errors |
US11/384,236 Continuation-In-Part US7653834B2 (en) | 2005-08-29 | 2006-03-17 | Power sparing synchronous apparatus |
US11/384,237 Continuation-In-Part US7512842B2 (en) | 2005-08-29 | 2006-03-17 | Multi-voltage synchronous systems |
US11/392,992 Continuation-In-Part US7739524B2 (en) | 2005-08-29 | 2006-03-28 | Power consumption management |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070050608A1 true US20070050608A1 (en) | 2007-03-01 |
Family
ID=37805737
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/291,503 Abandoned US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/292,296 Expired - Fee Related US8402257B2 (en) | 2005-08-29 | 2005-11-30 | Alteration of execution of a program in response to an execution-optimization information |
US11/292,323 Abandoned US20070050608A1 (en) | 2005-08-29 | 2005-11-30 | Hardware-generated and historically-based execution optimization |
US11/292,207 Abandoned US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/291,503 Abandoned US20070050604A1 (en) | 2005-08-29 | 2005-11-30 | Fetch rerouting in response to an execution-based optimization profile |
US11/292,296 Expired - Fee Related US8402257B2 (en) | 2005-08-29 | 2005-11-30 | Alteration of execution of a program in response to an execution-optimization information |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/292,207 Abandoned US20070050606A1 (en) | 2005-08-29 | 2005-11-30 | Runtime-based optimization profile |
Country Status (1)
Country | Link |
---|---|
US (4) | US20070050604A1 (en) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050604A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Fetch rerouting in response to an execution-based optimization profile |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US20070050660A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Handling processor computational errors |
US20070050672A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power consumption management |
US20070050555A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050556A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050776A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Predictive processor resource management |
US20070050582A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multi-voltage synchronous systems |
US20070050558A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Multiprocessor resource optimization |
US20070050609A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc | Cross-architecture execution optimization |
US20070055848A1 (en) * | 2005-08-29 | 2007-03-08 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20070067611A1 (en) * | 2005-08-29 | 2007-03-22 | Bran Ferren | Processor resource management |
US20080270653A1 (en) * | 2007-04-26 | 2008-10-30 | Balle Susanne M | Intelligent resource management in multiprocessor computer systems |
US20090132853A1 (en) * | 2005-08-29 | 2009-05-21 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Hardware-error tolerant computing |
US20090150713A1 (en) * | 2005-08-29 | 2009-06-11 | William Henry Mangione-Smith | Multi-voltage synchronous systems |
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8151251B2 (en) * | 2007-05-31 | 2012-04-03 | Wipro Limited | e-Profiler: dynamic profiling and auditing framework |
US8473924B1 (en) * | 2008-12-19 | 2013-06-25 | Symantec Corporation | Enabling efficient use of an endpoint |
US9230069B2 (en) * | 2013-04-16 | 2016-01-05 | International Business Machines Corporation | Execution-based license discovery and optimization |
US9348596B2 (en) * | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9372695B2 (en) | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
KR102223277B1 (en) * | 2014-01-06 | 2021-03-05 | 엘지전자 주식회사 | Mobile terminal and control method for the mobile terminal |
US10580006B2 (en) | 2015-07-13 | 2020-03-03 | Mastercard International Incorporated | System and method of managing data injection into an executing data processing system |
US9443192B1 (en) | 2015-08-30 | 2016-09-13 | Jasmin Cosic | Universal artificial intelligence engine for autonomous computing devices and software applications |
US9582762B1 (en) | 2016-02-05 | 2017-02-28 | Jasmin Cosic | Devices, systems, and methods for learning and using artificially intelligent interactive memories |
US9864933B1 (en) | 2016-08-23 | 2018-01-09 | Jasmin Cosic | Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
US10452974B1 (en) | 2016-11-02 | 2019-10-22 | Jasmin Cosic | Artificially intelligent systems, devices, and methods for learning and/or using a device's circumstances for autonomous device operation |
US10607134B1 (en) | 2016-12-19 | 2020-03-31 | Jasmin Cosic | Artificially intelligent systems, devices, and methods for learning and/or using an avatar's circumstances for autonomous avatar operation |
US10102449B1 (en) | 2017-11-21 | 2018-10-16 | Jasmin Cosic | Devices, systems, and methods for use in automation |
US10474934B1 (en) | 2017-11-26 | 2019-11-12 | Jasmin Cosic | Machine learning for computing enabled systems and/or devices |
US10402731B1 (en) | 2017-12-15 | 2019-09-03 | Jasmin Cosic | Machine learning for computer generated objects and/or applications |
Citations (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4654819A (en) * | 1982-12-09 | 1987-03-31 | Sequoia Systems, Inc. | Memory back-up system |
US4672537A (en) * | 1976-09-07 | 1987-06-09 | Tandem Computers Incorporated | Data error detection and device controller failure detection in an input/output system |
US4751639A (en) * | 1985-06-24 | 1988-06-14 | Ncr Corporation | Virtual command rollback in a fault tolerant data processing system |
US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
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 |
US4891787A (en) * | 1986-12-17 | 1990-01-02 | Massachusetts Institute Of Technology | Parallel processing system with processor array having SIMD/MIMD instruction processing |
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 |
US5475856A (en) * | 1991-11-27 | 1995-12-12 | International Business Machines Corporation | Dynamic multi-mode parallel processing array |
US5526313A (en) * | 1988-06-17 | 1996-06-11 | Hitachi Ltd. | Large scale integrated circuit with sense amplifier circuits for low voltage operation |
US5535405A (en) * | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
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 |
US5764953A (en) * | 1994-03-31 | 1998-06-09 | Minnesota Mining And Manufacturing Company | Computer implemented system for integrating active and simulated decisionmaking processes |
US5768551A (en) * | 1995-09-29 | 1998-06-16 | Emc Corporation | Inter connected loop channel for reducing electrical signal jitter |
US5774736A (en) * | 1995-12-15 | 1998-06-30 | Wright; Robert S. | Redundant CPU power system |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
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 |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US6098030A (en) * | 1996-12-10 | 2000-08-01 | Advanced Micro Devices, Inc. | Method and apparatus for tracking power of an integrated circuit |
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 |
US6205537B1 (en) * | 1998-07-16 | 2001-03-20 | University Of Rochester | Mechanism for dynamically adapting the complexity of a microprocessor |
US6216236B1 (en) * | 1991-01-25 | 2001-04-10 | Tokyo, Japan | Processing unit for a computer and a computer system incorporating such a processing unit |
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 |
US20010011346A1 (en) * | 2000-02-02 | 2001-08-02 | Koichi Yoshimi | Branch prediction method, arithmetic and logic unit, and information processing apparatus |
US20010020267A1 (en) * | 2000-03-02 | 2001-09-06 | Kabushiki Kaisha Toshiba | Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor |
US20010021974A1 (en) * | 2000-02-01 | 2001-09-13 | Samsung Electronics Co., Ltd. | Branch predictor suitable for multi-processing microprocessor |
US20010032309A1 (en) * | 1999-03-18 | 2001-10-18 | Henry G. Glenn | Static branch prediction mechanism for conditional branch instructions |
US6324643B1 (en) * | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US20010047467A1 (en) * | 1998-09-08 | 2001-11-29 | Tse-Yu Yeh | Method and apparatus for branch prediction using first and second level branch prediction tables |
US6374349B2 (en) * | 1998-03-19 | 2002-04-16 | Mcfarling Scott | Branch predictor with serially connected predictor stages for improving branch prediction accuracy |
US20020087828A1 (en) * | 2000-12-28 | 2002-07-04 | International Business Machines Corporation | Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors |
US20020095666A1 (en) * | 2000-10-04 | 2002-07-18 | International Business Machines Corporation | Program optimization method, and compiler using the same |
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
US20020124196A1 (en) * | 2001-01-05 | 2002-09-05 | Morrow Lewis A. | Computer system having low energy consumption |
US20020144247A1 (en) * | 2001-03-30 | 2002-10-03 | Sun Microsystems, Inc. | Method and apparatus for simultaneous optimization of code targeting multiple machines |
US20030005419A1 (en) * | 1999-10-12 | 2003-01-02 | John Samuel Pieper | Insertion of prefetch instructions into computer program code |
US20030074649A1 (en) * | 2001-10-15 | 2003-04-17 | Poulsen David K. | Method and apparatus for an atomic operation in a parallel computing environment |
US6571373B1 (en) * | 2000-01-31 | 2003-05-27 | International Business Machines Corporation | Simulator-independent system-on-chip verification methodology |
US20030101443A1 (en) * | 2001-11-28 | 2003-05-29 | Sun Microsystems, Inc. | Technique for associating execution characteristics with instructions or operations of program code |
US20030135771A1 (en) * | 2001-03-16 | 2003-07-17 | Cupps Bryan T. | Novel personal electronics device with a dual core processor |
US6625750B1 (en) * | 1999-11-16 | 2003-09-23 | Emc Corporation | Hardware and software failover services for a file server |
US20030200539A1 (en) * | 2002-04-12 | 2003-10-23 | Chen Fu | Function unit based finite state automata data structure, transitions and methods for making the same |
US20040003309A1 (en) * | 2002-06-26 | 2004-01-01 | Cai Zhong-Ning | Techniques for utilization of asymmetric secondary processing resources |
US20040073899A1 (en) * | 2000-11-17 | 2004-04-15 | Wayne Luk | Instruction processor systems and methods |
US20040093591A1 (en) * | 2002-11-12 | 2004-05-13 | Spiros Kalogeropulos | Method and apparatus prefetching indexed array references |
US20040103410A1 (en) * | 2000-03-30 | 2004-05-27 | Junji Sakai | Program conversion apparatus and method as well as recording medium |
US6763452B1 (en) * | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US6766419B1 (en) * | 2000-03-31 | 2004-07-20 | Intel Corporation | Optimization of cache evictions through software hints |
US20040153749A1 (en) * | 2002-12-02 | 2004-08-05 | Schwarm Stephen C. | Redundant multi-processor and logical processor configuration for a file server |
US20040174944A1 (en) * | 1999-09-27 | 2004-09-09 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantatins | System and method of digital system performance enhancement |
US20040225871A1 (en) * | 1999-10-01 | 2004-11-11 | Naohiko Irie | Branch control memory |
US20050066153A1 (en) * | 1998-10-12 | 2005-03-24 | Harshvardhan Sharangpani | Method for processing branch operations |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US20050132238A1 (en) * | 2003-12-16 | 2005-06-16 | Murthi Nanja | 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 |
US20050155026A1 (en) * | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US6924790B1 (en) * | 1995-10-16 | 2005-08-02 | Nec Corporation | Mode switching for pen-based computer systems |
US6954845B2 (en) * | 2003-07-29 | 2005-10-11 | Stretch, Inc. | Reconfigurable instruction set computing |
US6954923B1 (en) * | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US20050246613A1 (en) * | 2003-03-20 | 2005-11-03 | Arm Limited | Error recovery within processing stages of an integrated circuit |
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 |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US20060206882A1 (en) * | 2004-06-08 | 2006-09-14 | Daniel Illowsky | Method and system for linear tasking among a plurality of processing units |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US20070050581A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power sparing synchronous apparatus |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US20070050776A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Predictive processor resource management |
US20070050661A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Adjusting a processor operating parameter based on a performance criterion |
US20070050555A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050606A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Runtime-based optimization profile |
US20070050557A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050672A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power consumption management |
US20070050609A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc | Cross-architecture execution optimization |
US20070050556A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070055848A1 (en) * | 2005-08-29 | 2007-03-08 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20070067611A1 (en) * | 2005-08-29 | 2007-03-22 | Bran Ferren | Processor resource management |
US20070074173A1 (en) * | 2005-08-29 | 2007-03-29 | Bran Ferren | Cross-architecture optimization |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US4817154A (en) * | 1986-12-09 | 1989-03-28 | Ncr Corporation | Method and apparatus for encoding and decoding speech signal primary information |
US5020038A (en) * | 1990-01-03 | 1991-05-28 | Motorola, Inc. | Antimetastable state circuit |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
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 |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
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 |
US6519654B1 (en) * | 1999-07-07 | 2003-02-11 | Sharp Laboratories Of America, Incorporation | Method of designing an interface for a real-time messaging system |
US6363523B1 (en) | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
US6772356B1 (en) * | 2000-04-05 | 2004-08-03 | Advanced Micro Devices, Inc. | System for specifying core voltage for a microprocessor by selectively outputting one of a first, fixed and a second, variable voltage control settings from the microprocessor |
WO2001095161A2 (en) | 2000-06-02 | 2001-12-13 | Virtio Corporation | Method and system for virtual prototyping |
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 |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7254810B2 (en) | 2002-04-18 | 2007-08-07 | International Business Machines Corporation | Apparatus and method for using database knowledge to optimize a computer program |
US7886164B1 (en) * | 2002-11-14 | 2011-02-08 | Nvidia Corporation | Processor temperature adjustment system and method |
US7260742B2 (en) * | 2003-01-28 | 2007-08-21 | Czajkowski David R | SEU and SEFI fault tolerant computer |
US8185812B2 (en) * | 2003-03-20 | 2012-05-22 | Arm Limited | Single event upset error detection within an integrated circuit |
US20050027820A1 (en) * | 2003-06-02 | 2005-02-03 | O'laughlen Eric | Page views proxy servers |
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 |
US7263579B2 (en) * | 2004-03-24 | 2007-08-28 | Intel Corporation | Integrated circuit capable of pre-fetching data |
JP2005301476A (en) * | 2004-04-08 | 2005-10-27 | Hitachi Ltd | Power supply control system and storage device |
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 |
US20060026543A1 (en) * | 2004-07-29 | 2006-02-02 | Texas Instruments Incorporated | Accurate timing analysis of integrated circuits when combinatorial logic offers a load |
US7415644B2 (en) * | 2004-10-22 | 2008-08-19 | International Business Machines Corporation | Self-repairing of microprocessor array structures |
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 |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
DE102005049232A1 (en) * | 2005-10-14 | 2007-04-26 | Infineon Technologies Ag | Integrated circuit and method for operating an integrated circuit |
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 |
JP5173216B2 (en) * | 2006-04-18 | 2013-04-03 | パナソニック株式会社 | Semiconductor integrated circuit system, semiconductor integrated circuit, operating system, and control method of semiconductor integrated circuit |
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 |
US8578193B2 (en) * | 2007-11-28 | 2013-11-05 | International Business Machines Corporation | Apparatus, method and program product for adaptive real-time power and perfomance optimization of multi-core processors |
-
2005
- 2005-11-30 US US11/291,503 patent/US20070050604A1/en not_active Abandoned
- 2005-11-30 US US11/292,296 patent/US8402257B2/en not_active Expired - Fee Related
- 2005-11-30 US US11/292,323 patent/US20070050608A1/en not_active Abandoned
- 2005-11-30 US US11/292,207 patent/US20070050606A1/en not_active Abandoned
Patent Citations (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4672537A (en) * | 1976-09-07 | 1987-06-09 | Tandem Computers Incorporated | Data error detection and device controller failure detection in an input/output system |
US4807116A (en) * | 1976-09-07 | 1989-02-21 | Tandem Computers Incorporated | Interprocessor communication |
US4817091A (en) * | 1976-09-07 | 1989-03-28 | Tandem Computers Incorporated | Fault-tolerant multiprocessor system |
US4654819A (en) * | 1982-12-09 | 1987-03-31 | Sequoia Systems, Inc. | Memory back-up 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 |
US4751639A (en) * | 1985-06-24 | 1988-06-14 | Ncr Corporation | Virtual command rollback in a fault tolerant data processing system |
US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
US4800489A (en) * | 1986-01-15 | 1989-01-24 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
US4891787A (en) * | 1986-12-17 | 1990-01-02 | Massachusetts Institute Of Technology | Parallel processing system with processor array having SIMD/MIMD instruction processing |
US5526313A (en) * | 1988-06-17 | 1996-06-11 | Hitachi Ltd. | Large scale integrated circuit with sense amplifier circuits 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 |
US6216236B1 (en) * | 1991-01-25 | 2001-04-10 | Tokyo, Japan | Processing unit for a computer and a computer system incorporating such a processing unit |
US5475856A (en) * | 1991-11-27 | 1995-12-12 | International Business Machines Corporation | Dynamic multi-mode parallel processing array |
US5535405A (en) * | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
US5764953A (en) * | 1994-03-31 | 1998-06-09 | Minnesota Mining And Manufacturing Company | Computer implemented system for integrating active and simulated decisionmaking 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 |
US6924790B1 (en) * | 1995-10-16 | 2005-08-02 | Nec Corporation | Mode switching for pen-based computer systems |
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 |
US6098030A (en) * | 1996-12-10 | 2000-08-01 | 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 |
US20010047467A1 (en) * | 1998-09-08 | 2001-11-29 | Tse-Yu Yeh | Method and apparatus for branch prediction using first and second level branch prediction tables |
US20050066153A1 (en) * | 1998-10-12 | 2005-03-24 | Harshvardhan Sharangpani | Method for processing branch operations |
US6954923B1 (en) * | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US6763452B1 (en) * | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US20010032309A1 (en) * | 1999-03-18 | 2001-10-18 | Henry G. Glenn | 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 |
US20040174944A1 (en) * | 1999-09-27 | 2004-09-09 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantatins | System and method of digital system performance enhancement |
US20040225871A1 (en) * | 1999-10-01 | 2004-11-11 | Naohiko Irie | Branch control memory |
US6324643B1 (en) * | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US20030005419A1 (en) * | 1999-10-12 | 2003-01-02 | John Samuel Pieper | Insertion of prefetch instructions into computer program code |
US6625750B1 (en) * | 1999-11-16 | 2003-09-23 | Emc Corporation | Hardware and software failover services for a file server |
US6571373B1 (en) * | 2000-01-31 | 2003-05-27 | International Business Machines Corporation | Simulator-independent system-on-chip verification methodology |
US20010021974A1 (en) * | 2000-02-01 | 2001-09-13 | Samsung Electronics Co., Ltd. | Branch predictor suitable for multi-processing microprocessor |
US20010011346A1 (en) * | 2000-02-02 | 2001-08-02 | Koichi Yoshimi | Branch prediction method, arithmetic and logic unit, and information processing apparatus |
US20010020267A1 (en) * | 2000-03-02 | 2001-09-06 | Kabushiki Kaisha Toshiba | Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor |
US20040103410A1 (en) * | 2000-03-30 | 2004-05-27 | Junji Sakai | Program conversion apparatus and method as well as recording medium |
US6766419B1 (en) * | 2000-03-31 | 2004-07-20 | Intel Corporation | Optimization of cache evictions through software hints |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US20020095666A1 (en) * | 2000-10-04 | 2002-07-18 | International Business Machines Corporation | Program optimization method, and compiler using the same |
US20040073899A1 (en) * | 2000-11-17 | 2004-04-15 | Wayne Luk | Instruction processor systems and methods |
US20020087828A1 (en) * | 2000-12-28 | 2002-07-04 | International Business Machines Corporation | Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors |
US20020124196A1 (en) * | 2001-01-05 | 2002-09-05 | Morrow Lewis A. | Computer system having low energy consumption |
US20030135771A1 (en) * | 2001-03-16 | 2003-07-17 | Cupps Bryan T. | Novel personal electronics device with a dual core processor |
US20020144247A1 (en) * | 2001-03-30 | 2002-10-03 | Sun Microsystems, Inc. | Method and apparatus for simultaneous optimization of code targeting multiple machines |
US20030074649A1 (en) * | 2001-10-15 | 2003-04-17 | Poulsen David K. | Method and apparatus for an atomic operation in a parallel computing environment |
US20030101443A1 (en) * | 2001-11-28 | 2003-05-29 | Sun Microsystems, Inc. | Technique for associating execution characteristics with instructions or operations of program code |
US20030200539A1 (en) * | 2002-04-12 | 2003-10-23 | Chen Fu | Function unit based finite state automata data structure, transitions and methods for making the same |
US20040003309A1 (en) * | 2002-06-26 | 2004-01-01 | Cai Zhong-Ning | 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 |
US20040153749A1 (en) * | 2002-12-02 | 2004-08-05 | Schwarm Stephen C. | Redundant multi-processor and logical processor configuration for a file server |
US20050246613A1 (en) * | 2003-03-20 | 2005-11-03 | Arm Limited | Error recovery within processing stages of 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 |
US6954845B2 (en) * | 2003-07-29 | 2005-10-11 | Stretch, Inc. | Reconfigurable instruction set computing |
US20050132238A1 (en) * | 2003-12-16 | 2005-06-16 | Murthi Nanja | 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 |
US20050155026A1 (en) * | 2004-01-14 | 2005-07-14 | 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 |
US20060206882A1 (en) * | 2004-06-08 | 2006-09-14 | Daniel Illowsky | Method and system for linear tasking among a plurality of processing units |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US20070050581A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power sparing synchronous apparatus |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US20070050776A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Predictive processor resource management |
US20070050661A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Adjusting a processor operating parameter based on a performance criterion |
US20070050660A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Handling processor computational errors |
US20070050659A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Hardware-error tolerant computing |
US20070050555A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050606A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Runtime-based optimization profile |
US20070050604A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Fetch rerouting in response to an execution-based optimization profile |
US20070050557A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050582A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multi-voltage synchronous systems |
US20070050607A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Alteration of execution of a program in response to an execution-optimization information |
US20070050672A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power consumption management |
US20070050775A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20070050609A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc | Cross-architecture execution optimization |
US20070050556A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070055848A1 (en) * | 2005-08-29 | 2007-03-08 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20070067611A1 (en) * | 2005-08-29 | 2007-03-22 | Bran Ferren | Processor resource management |
US20070074173A1 (en) * | 2005-08-29 | 2007-03-29 | Bran Ferren | Cross-architecture optimization |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7607042B2 (en) | 2005-08-29 | 2009-10-20 | Searete, Llc | Adjusting a processor operating parameter based on a performance criterion |
US20070067611A1 (en) * | 2005-08-29 | 2007-03-22 | Bran Ferren | Processor resource management |
US20070050660A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Handling processor computational errors |
US20070050672A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Power consumption management |
US20070050607A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Alteration of execution of a program in response to an execution-optimization information |
US20070050555A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050556A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multiprocessor resource optimization |
US20070050776A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Predictive processor resource management |
US20070050582A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Multi-voltage synchronous systems |
US20070050661A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Adjusting a processor operating parameter based on a performance criterion |
US20070050775A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20070050558A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Multiprocessor resource optimization |
US20070050609A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc | Cross-architecture execution optimization |
US20070055848A1 (en) * | 2005-08-29 | 2007-03-08 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Processor resource management |
US20090150713A1 (en) * | 2005-08-29 | 2009-06-11 | William Henry Mangione-Smith | Multi-voltage synchronous systems |
US9274582B2 (en) | 2005-08-29 | 2016-03-01 | Invention Science Fund I, Llc | Power consumption management |
US7512842B2 (en) | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
US20090132853A1 (en) * | 2005-08-29 | 2009-05-21 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Hardware-error tolerant computing |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US7539852B2 (en) | 2005-08-29 | 2009-05-26 | Searete, Llc | Processor resource management |
US7739524B2 (en) | 2005-08-29 | 2010-06-15 | The Invention Science Fund I, Inc | Power consumption management |
US7627739B2 (en) | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US7647487B2 (en) | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US7653834B2 (en) | 2005-08-29 | 2010-01-26 | Searete, Llc | Power sparing synchronous apparatus |
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 |
US20070050604A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Fetch rerouting in response to an execution-based optimization profile |
US7774558B2 (en) | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource 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 |
US20100318818A1 (en) * | 2005-08-29 | 2010-12-16 | William Henry Mangione-Smith | Power consumption management |
US7877584B2 (en) | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US8051255B2 (en) | 2005-08-29 | 2011-11-01 | The Invention Science Fund I, Llc | Multiprocessor resource 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 |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US8214191B2 (en) | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US8255745B2 (en) | 2005-08-29 | 2012-08-28 | The Invention Science Fund I, Llc | Hardware-error tolerant computing |
US8375247B2 (en) | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
US8402257B2 (en) | 2005-08-29 | 2013-03-19 | The Invention Science Fund I, PLLC | Alteration of execution of a program in response to an execution-optimization information |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US20080270653A1 (en) * | 2007-04-26 | 2008-10-30 | Balle Susanne M | Intelligent resource management in multiprocessor computer systems |
Also Published As
Publication number | Publication date |
---|---|
US8402257B2 (en) | 2013-03-19 |
US20070050606A1 (en) | 2007-03-01 |
US20070050604A1 (en) | 2007-03-01 |
US20070050607A1 (en) | 2007-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8402257B2 (en) | Alteration of execution of a program in response to an execution-optimization information | |
US8214191B2 (en) | Cross-architecture execution optimization | |
US8209524B2 (en) | Cross-architecture optimization | |
US20070050605A1 (en) | Freeze-dried ghost pages | |
US7607042B2 (en) | Adjusting a processor operating parameter based on a performance criterion | |
US8255745B2 (en) | Hardware-error tolerant computing | |
US7512842B2 (en) | Multi-voltage synchronous systems | |
US10101978B2 (en) | Statically speculative compilation and execution | |
US7739524B2 (en) | Power consumption management | |
US20110202747A1 (en) | Instruction length based cracking for instruction of variable length storage operands | |
US8667258B2 (en) | High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction | |
US7069545B2 (en) | Quantization and compression for computation reuse | |
US20200257535A1 (en) | Splitting load hit store table for out-of-order processor | |
JP5136405B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
Stark et al. | Reducing the performance impact of instruction cache misses by writing instructions into the reservation stations out-of-order | |
US20060048106A1 (en) | Link-time profile-based method for reducing run-time image of executables | |
US8423824B2 (en) | Power sparing synchronous apparatus | |
US8516300B2 (en) | Multi-votage synchronous systems | |
Kim et al. | Implementing optimizations at decode time | |
Sazeides | Modeling value speculation | |
US8166252B2 (en) | Processor and prefetch support program | |
WO2007089535A2 (en) | Cross-architecture optimization | |
WO2007089546A2 (en) | Adjusting a processor operating parameter based on a performance criterion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SEARETE LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FERREN, BRAN;HILLIS, W. DANIEL;MANGIONE-SMITH, WILLIAM HENRY;AND OTHERS;REEL/FRAME:017505/0140;SIGNING DATES FROM 20051214 TO 20060105 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |