パフォーマンスのために; 最も重要なのは、CPU が待機しているもの (HLT の IRQ、または MWAIT の IRQ またはメモリ書き込み) が発生するたびに、CPU が「待機」状態から抜け出すのにかかる時間です。これはレイテンシーに影響を与えます。例えば、割り込みハンドラーが開始されるまで、またはタスクの切り替えが実際に発生するまでにかかる時間です。CPU が待機状態から復帰するまでにかかる時間は、CPU によって異なります。また、同じ CPU の HLT と MWAIT でわずかに異なる場合もあります。
同じことが電力消費にも当てはまります。待機中に消費される電力は、異なる CPU 間で大きく異なる可能性があります (特に、ハイパースレッディングなどについて考え始める場合)。また、HLT と MWAIT の消費電力も、同じ CPU 上でわずかに異なる場合があります。
使用に関しては、さまざまな状況を対象としています。HLT は IRQ を待機するためのもので、MWAIT はメモリ書き込みが発生するのを待機するためのものです。もちろん、メモリ書き込みが発生するのを待っている場合は、IRQ が待機を中断するかどうかを決定する必要があります (たとえば、メモリ書き込みだけを待ちたい場合は、そうすることができます) CLI
。MWAIT
ただし、マルチタスクシステムの場合、ほとんどの場合、両方とも同じ目的 (CPU がアイドル状態のスケジューラー) でのみ使用されます。MONITOR/MWAIT が導入される前は、スケジューラーは (消費電力を少し削減するために) 作業を待機している間、HLT を使用していました。これは、別の CPU がタスクのブロックを解除した場合、そのタスクをスケジューラーのキューに入れるだけではなく、HLT 状態からノックアウトするために (比較的高価な) 「プロセッサー間割り込み」を HLT された CPU に送信する必要があることを意味します (そうでない場合)。 CPU は、できる/すべき作業がある場合、何もしません)。MWAIT では、この「プロセッサ間割り込み」は (潜在的に) 不要です。スケジューラのキューへの書き込みを監視するように MONITOR を設定できるため、タスクをキューに入れるだけで、待機中の CPU が待機を停止するのに十分です。 .
また、スピンロックや同期などに MONITOR/MWAIT を使用する研究もいくつか行われています (競合するロックが解放されるのを待つなど)。この研究の最終結果は、CPU が「待機」状態から抜け出すのにかかる時間が長すぎ、このような MONITOR/MWAIT を使用するとパフォーマンスが大幅に低下することです (設計上の欠陥がない限り、たとえばスピンロックの使用)。ミューテックスを使用する必要がある場合)。
HLTまたはMWAITを使用する他の理由(スケジューラとロック/同期以外)は考えられません。