x86 の INC 命令はアトミックではないことを読みました。私の質問は、どうしてですか?x86-64 で 64 ビット整数をインクリメントするとします。INC 命令はメモリ変数とレジスタの両方で機能するため、1 つの命令で実行できます。では、なぜアトミックではないのでしょうか。
質問する
8857 次
3 に答える
21
なぜでしょうか?プロセッサ コアは、メモリの場所に格納されている値を読み取り、その増分を計算してから格納し直す必要があります。読み取りと保存の間には待ち時間があり、その間に別の操作がそのメモリの場所に影響を与える可能性があります。
順不同で実行した場合でも、プロセッサ コアは「スマート」であるため、自身の命令につまずくことはなく、タイム ギャップでこのメモリを変更する責任はありません。ただし、別のコアがその場所を変更する命令を発行したり、DMA 転送がその場所に影響を与えたり、他のハードウェアが何らかの形でそのメモリの場所に触れたりした可能性があります。
于 2012-04-11T16:07:01.500 に答える