0

私の理解では、アトミック マシン命令は、非アトミック操作より最大 2 桁遅くなる可能性があります。たとえば、与えられた

int x;
x++

std::atomic<int> y;
y++;

私の理解では、x++通常、よりもはるかに高速に実行されy++ます。(インクリメント操作は基礎となるマシン命令にマップすると仮定しています。正確な比較コストはアーキテクチャごとに異なると確信していますが、経験則について話しています。)

一般的な経験則として、アトミック RMW 操作と非インライン関数呼び出しの相対的なコストに関心があります。たとえば、次の非インライン関数が与えられた場合、

void f(){}

y++への非インライン呼び出しを実行するコストと比較して、のコスト (つまり、アトミック インクリメント)について一般的に言えることは何fですか?

私の動機は、「アトミック操作は非アトミック操作よりもはるかにコストがかかる」という一般的な主張を大局的に捉えようとすることです。そのための 1 つの方法は、アトミックな RMW 操作が非インライン関数の呼び出しと戻りに比べてどれだけコストがかかるかを把握することです。

「知る唯一の方法は測定することです」と返信しないでください。特定のアーキテクチャの特定のコンテキストでのアトミック RMW 操作と関数呼び出しについて質問しているわけではありません。私は、「アトミック命令は高価すぎるので決して使用できない」と考えるかもしれないが、作成することについて二度考えない人々のための議論の基礎として使用できる一般的な経験則について尋ねています。関数呼び出し。

4

1 に答える 1