This invention relates to data processing. In particular it relates to the processing of instructions speculatively in a processor.
In order to improve computational throughput, a processor may have a pipeline and one or more speculation units which feed instructions speculatively to said pipeline for processing therein. One such speculation unit is a branch prediction unit which predicts whether a conditional branch in a program being executed will be taken or not so that instructions in the predicted branch can be prefetched without causing the pipeline to stall. Another type of speculation unit is known as an out-of-order execution unit. The task of the out-of-order execution unit is to reorder the flow of instructions to optimize performance as the instructions are sent down the pipeline and are scheduled for execution. Instructions are reordered to allow them to execute as quickly as possible as each input operand becomes ready. Out-of-order execution allows instructions following delayed instructions to execute as long as these instructions do not depend on the delayed instructions. Some processors have an execution trace building unit (trace cache) wherein already decoded instructions are stored in the form of program ordered sequences of microinstructions called traces. Most instructions in a program are fetched and executed from the trace cache. Only when there is a trace cache miss does the microarchitecture fetch and decode instructions from memory. Usually a trace cache has its own branch predictor that directs where instruction fetching needs to go next in the trace cache. Thus the trace cache branch predictor predicts return addresses speculatively and hence the trace cache can be considered to be another speculation unit.
Processors which execute instructions speculatively generally consume more power than processors which do not. Thus, for example, when running a notebook computer on battery power it may be more important to conserve power than to try to increase computational throughput by speculative execution.
According to one embodiment of the invention, there is provided a method comprising executing a first code in a program in a processor having at least one speculation unit to process instructions speculatively, said first code being to detect whether said processor is running on battery power; executing a second code in said program, said second code being to turn off each said speculation unit if said processor is running on battery power; and executing a remainder of said program after execution of said first and second codes.
According to another embodiment of the invention, there is provided a method comprising monitoring a power consumption of a processor in executing a program while running in a speculative execution mode wherein instructions are speculatively executed; and turning off said speculative execution mode if said power consumption is above a predetermined threshold.
According to another embodiment of the invention, there is a provided a processor comprising a speculative mode in which said processor executes instructions speculatively; a non-speculative mode in which said processor executes instructions non-speculatively; and a speculation control mechanism to selectively cause said processor to operate in said non-speculative mode based on a power consumption criterion.
According to a further embodiment of the invention, there is provided a method comprising detecting if a processor is running on battery power, said processor being able to operate in a speculative mode wherein instructions are speculatively executed, and a non-speculative mode wherein instructions are non-speculatively executed; and selectively causing said processor to operate in said non speculative mode, if said processor is running on battery power.
One advantage of the present invention is that it allows speculative execution in a processor to be turned off in order to conserve power. This is useful in cases where the processor is running on battery power.
Referring to
Out-of-order execution engine 20 is where the instructions are prepared for execution. Out-of-order instruction engine 20 includes out-of-order execution logic 22 which has several buffers (not shown) which are used to smooth and reorder the flow of instructions to optimize performance as the instructions are sent down the pipeline and are scheduled for execution. Instructions are reordered to allow them to execute as rapidly as each input operand becomes ready. Out-of-order execution of instructions in a program allows instructions in the program following delayed instructions to execute as long as the instructions do not depend on the delayed instructions. Out-of-order execution engine 20 further includes a retirement unit 24 which reorders the instructions executed out-of-order, back to the original program order. Retirement unit 24 receives the completion status of the executed instructions from each execution units (see below) and processes the results so that the proper architectural state is retired according to program order. Retirement unit 24 reports branch history information to the branch prediction unit 14 so that the latest known branch history can be used to fine tune branch prediction.
Processor 10 further includes integer and floating point (FP) execution units 26 where the instructions are actually executed. Each execution unit 26 includes register files (not shown) that store integer and floating point data operand values that instructions need to execute. Each execution unit 26 includes several types of integer and floating point execution units 28 that do the actual computations. A Level 1 data cache 30 is used for most load install operations to and from each execution unit 28.
A memory subsystem 32 associated with processor 10 is also shown in
Processor 10 includes a speculation control mechanism 40 which causes processor 10 to operate selectively in a speculative mode and in a non-speculative mode wherein instructions are executed speculatively and non-speculatively respectively. Speculation control mechanism 40 includes a control register 42 having three settable bits each being associated with a specific speculation unit. For example, the first settable bit is associated with branch prediction unit 14, the second settable bit is associated with trace cache 18 and the third settable bit is associated with out-of-order execution engine 20. Each of the settable bits is set by control logic 44 during execution of an application program being run on processor 10, based on a power consumption criterion.
For the purposes of this specification, a machine-readable medium includes any mechanism that provides (i.e. stores and/or transmits) information in a form readable by a machine (e.g. computer) for example, a machine-readable medium includes read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g. carrier waves, infra red signals, digital signals, etc.); etc.
It will be apparent from this description the aspects of the present invention may be embodied, at least partly, in software. In other embodiments, hardware circuitry may be used in combination with software instructions to implement the present invention. Thus, the embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that the various modification and changes can be made to these embodiments without departing from the broader spirit of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than in a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
5719800 | Mittal et al. | Feb 1998 | A |
5850543 | Shiell et al. | Dec 1998 | A |
6167524 | Goodnow et al. | Dec 2000 | A |
6282663 | Khazam | Aug 2001 | B1 |
Number | Date | Country | |
---|---|---|---|
20030182542 A1 | Sep 2003 | US |