
2:534
Volume 2, Part 2: MP Coherence and Synchronization
The release store ensures that the code image updates are made visible to the remote
processors in the proper order (i.e.
new_code
is updated before the branch at address
x
is updated). Using the final three instructions ensures that the remote processors will
see the new code the next time they execute the branch at address
x
.
On the local processor, the branch at address
x
also serves to force the pipeline to be
coherent with the code image update the machine without requiring an interrupt,
rfi
instruction, or
srlz.i
instruction. Table 2-16 enumerates the potential pipeline
behaviors to illustrate this point.
In the first and fourth scenarios, the pipeline fetches and executes either the old branch
and old target instruction or the new branch and new target instruction. Note that if the
pipeline sees the new branch, it must also see the new target instruction by virtue of
the way the code in
is written. Either of these behaviors is consistent.
In the second and third scenarios, the pipeline obtains a mix of the old or new branch
and the old or new target instruction. In these cases, the pipeline must flush because
the predicted target will not agree with the branch instruction.
This behavior is not guaranteed unless the branch at address
x
is IP-relative and taken.
The branch must be IP-relative to ensure that both the instruction and target address
can be atomically updated (this is only possible with an IP-relative branch because in
this type of branch, the target address is part of the instruction).
2.5.3
Programmed I/O
Programmed I/O requires that the CPU copy data from the device controller to main
memory using load instructions to read from the device and store instructions to write
data into cacheable memory (page-in).
To ensure correct operation, Itanium architecture-based software must exercise care in
the presence of Programmed I/O due to two features of the architecture. First, the
Itanium architecture does not require an implementation to maintain coherency
between local instruction and data caches for Itanium architecture-based code. Second,
the Itanium architecture allows aggressive instruction prefetching. Specifically, an
implementation can move any location from a cacheable page into its instruction
cache(s) any time a translation for the location indicates that the page is present (i.e.
the
p
bit of the translation is set).
A system that performs Programmed I/O can use a sequence similar to that shown in
to perform the data movement.
presents a code sequence that
updates a code image on both the local and remote processors.
Table 2-16.
Potential Pipeline Behaviors of the Branch at x from Figure 2-9
Pipeline Operation
Scenario #1
Scenario #2
Scenario #3
Scenario #4
Fetch branch at
x
Old branch
Old branch
New branch
New branch
Predict branch at
x
Old target
New target
Old target
New target
Code at target
Old instruction
“New” instruction
(but could be stale)
Old instruction
New instruction
Retire branch at
x
Old retires
Must flush due to
misprediction
Must flush due
to misprediction
New retires
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...