重複の可能性:
x86 の一時停止命令
Intel のOptimization Reference Manualには、スピン待機ループについて次のように書かれています。
3.4.1.2 スピン待機ループとアイドル ループ
Pentium 4 プロセッサには、新しい PAUSE 命令が導入されています。この命令は、Intel 64 および IA-32 プロセッサの実装では構造的に NOP です。
Pentium 4 以降のプロセッサでは、この命令は、コード シーケンスがスピン待機ループであることを示すヒントとして機能します。このようなループに PAUSE 命令がない場合、Pentium 4 プロセッサは、ループを終了するときに重大なペナルティを受ける可能性があります。これは、プロセッサがメモリ順序違反の可能性を検出する可能性があるためです。PAUSE 命令を挿入すると、メモリ順序違反の可能性が大幅に減少し、結果としてパフォーマンスが向上します。
強調表示された部分を理解しようとしています。プロセッサがメモリ順序違反の可能性を検出する可能性があります。これが何を意味するのか説明していただけますか?ビジー ループでこのような違反が発生する可能性があるのはどのような状況PAUSE
でしょうか。違反は本物か偽物か、それを回避しないとどうなるか?
問題を示す例は素晴らしいでしょう。