1:178
Volume 1, Part 2: Predication, Control Flow, and Instruction Stream
This scenario can be hinted to the processor by executing an advanced load (
ld.a
or
ld.sa
) to the address that this software thread is waiting on, and then by executing a
hint @pause
instruction (in a subsequent instruction group). This encourages the
processor to devote more resources to other threads, yet if an entry is invalidated from
this thread's ALAT, normal processor resource allocation is resumed for this thread.
Resource allocation within the processor eventually reverts to a fair allocation, so
there's no need for software to hint that it is no longer in a wait loop. Conversely, while
software is in such a wait loop, it would be best to re-execute the
hint @pause
as part
of that loop, to continue to assert the hint for as long as that thread is waiting.
Note that if there is some high likelihood that the ALAT may contain a large number of
valid entries upon entering into a wait loop, there may be some advantage to removing
these (e.g., with an
invala
instruction) prior to executing the advanced load to the
address to be waited on. This may reduce the restoration of resource allocation to this
thread in cases where ALAT entries get invalidated other than the one for the address
being waited on, hence providing more processor resources to other threads.
4.5.2
Idle Loops
Another situation where a software thread expects not to need significant processor
resources for the next little while is when the software thread is executing an OS-kernel
idle loop. It can provide this information to the processor also by executing a
hint
@pause
instruction. This encourages the processor to allocate more processor resources
to other threads of execution for the next while.
Resource allocation within the processor eventually reverts to a fair allocation, so
there's no need for software to hint that it is no longer in an idle loop. Conversely, while
software is in such an idle loop, it would be best to re-execute the
hint @pause
as part
of that loop, to continue to assert the hint for as long as that thread is idle.
Note that if there is some high likelihood that the ALAT may contain a large number of
valid entries upon entering into an idle loop, there may be some advantage to removing
these (e.g., with an
invala
instruction) prior to entering the idle loop. This may reduce
the restoration of resource allocation to this thread in cases where these ALAT entries
get invalidated, hence providing more processor resources to other threads.
4.5.3
Critical Sections
The opposite case exists if software expects that, given extra resources for the next
period of time, overall system performance and throughput would be optimized. For
example, this software thread may be about to acquire a highly contested spinlock and
enter a critical section of code, and expeditious progress through that critical section
and the resultant speedy release of the spinlock may disproportionately benefit overall
system performance and throughput.
This scenario can be hinted to the processor by executing a
hint @priority
instruction.
This encourages the processor to devote more processor resources to this thread (at
the expense of other threads) for some period of time.
Содержание 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 ...