14.06.2015 Views

Power ISA™ Version 2.03 - Power.org

Power ISA™ Version 2.03 - Power.org

Power ISA™ Version 2.03 - Power.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Version</strong> <strong>2.03</strong><br />

4.3 Instruction Fetch<br />

The effective address for an instruction fetch is processed<br />

under control of MSR IS . The Address Translation<br />

mechanism is described beginning in<br />

Section 4.7.2.<br />

4.3.1 Implicit Branch<br />

Explicitly altering certain MSR bits (using mtmsr), or<br />

explicitly altering TLB entries, certain System Registers<br />

and possibly other implementation-dependent registers,<br />

may have the side effect of changing the<br />

addresses, effective or real, from which the current<br />

instruction stream is being fetched. This side effect is<br />

called an implicit branch. For example, an mtmsr<br />

instruction that changes the value of MSR CM may<br />

change the real address from which the current instruction<br />

stream is being fetched. The MSR bits and System<br />

Registers (excluding implementation-dependent registers)<br />

for which alteration can cause an implicit branch<br />

are indicated as such in Chapter 10. “Synchronization<br />

Requirements for Context Alterations” on page 603.<br />

Implicit branches are not supported by the <strong>Power</strong> ISA.<br />

If an implicit branch occurs, the results are boundedly<br />

undefined.<br />

4.3.2 Address Wrapping Combined<br />

with Changing MSR Bit CM<br />

If the current instruction is at effective address 2 32 -4<br />

and is an mtmsr instruction that changes the contents<br />

of MSR CM , the effective address of the next sequential<br />

instruction is undefined.<br />

Programming Note<br />

In the case described in the preceding paragraph, if<br />

an interrupt occurs before the next sequential<br />

instruction is executed, the contents of SRR0,<br />

CSRR0, or MCSRR0, as appropriate to the interrupt,<br />

are undefined.<br />

4.4 Data Access<br />

The effective address for a data access is processed<br />

under control of MSR DS . The Address Translation<br />

mechanism is described beginning in Section 4.7.2.<br />

Storage control attributes may also affect instruction<br />

fetch.<br />

4.5 Performing Operations<br />

Out-of-Order<br />

An operation is said to be performed “in-order” if, at the<br />

time that it is performed, it is known to be required by<br />

the sequential execution model. An operation is said to<br />

be performed “out-of-order” if, at the time that it is performed,<br />

it is not known to be required by the sequential<br />

execution model.<br />

Operations are performed out-of-order by the processor<br />

on the expectation that the results will be needed by<br />

an instruction that will be required by the sequential<br />

execution model. Whether the results are really needed<br />

is contingent on everything that might divert the control<br />

flow away from the instruction, such as Branch, Trap,<br />

System Call, and Return From Interrupt instructions,<br />

and interrupts, and on everything that might change the<br />

context in which the instruction is executed.<br />

Typically, the processor performs operations out-oforder<br />

when it has resources that would otherwise be<br />

idle, so the operation incurs little or no cost. If subsequent<br />

events such as branches or interrupts indicate<br />

that the operation would not have been performed in<br />

the sequential execution model, the processor abandons<br />

any results of the operation (except as described<br />

below).<br />

In the remainder of this section, including its subsections,<br />

“Load instruction” includes the Cache Management<br />

and other instructions that are stated in the<br />

instruction descriptions to be “treated as a Load”, and<br />

similarly for “Store instruction”.<br />

A data access that is performed out-of-order may correspond<br />

to an arbitrary Load or Store instruction (e.g., a<br />

Load or Store instruction that is not in the instruction<br />

stream being executed). Similarly, an instruction fetch<br />

that is performed out-of-order may be for an arbitrary<br />

instruction (e.g., the aligned word at an arbitrary location<br />

in instruction storage).<br />

Most operations can be performed out-of-order, as long<br />

as the machine appears to follow the sequential execution<br />

model. Certain out-of-order operations are<br />

restricted, as follows.<br />

Stores<br />

Stores are not performed out-of-order (even if the<br />

Store instructions that caused them were executed<br />

out-of-order).<br />

Accessing Guarded Storage<br />

The restrictions for this case are given in Section<br />

4.8.1.1.<br />

The only permitted side effects of performing an operation<br />

out-of-order are the following.<br />

<br />

<br />

A Machine Check that could be caused by in-order<br />

execution may occur out-of-order.<br />

Non-Guarded storage locations that could be<br />

fetched into a cache by in-order fetching or execution<br />

of an arbitrary instruction may be fetched outof-order<br />

into that cache.<br />

520<br />

<strong>Power</strong> ISA -- Book III-E

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!