4

マシン ワード サイズ (またはそれ以下) の書き込みはシリアル化されますか? レジスタの内容を RAM にコピーするために必要なネイティブ オペコードは 1 つだけです。

4

6 に答える 6

6

RAM へのデータの書き込みはアトミックです。2 つの CPU が同時に同じ場所に書き込もうとすると、メモリ コントローラが書き込みの順序を決定します。1 つの CPU がメモリに書き込みを行っている間、もう 1 つの CPU は、最初の書き込みが完了するまで、必要な数のサイクルの間ストールします。その後、その値を上書きします。これは、競合状態と呼ばれるものです。

ネイティブ ワード サイズより小さい書き込みはアトミックではありません。その場合、CPU は古いメモリ値をレジスタに読み取り、新しいバイトをレジスタに書き込み、その新しい値をメモリに書き戻す必要があります。

これに依存するコードを持つべきではありません。複数の CPU が同じメモリ位置に同時に書き込もうとしている場合は、何か問題があります。

もう 1 つの重要な考慮事項は、キャッシュの一貫性の問題です。各 CPU には独自のキャッシュがあります。CPU がキャッシュにデータを書き込む場合、他の CPU がそのデータ値を読み取る場合は、そのデータ値の変更を認識する必要があります。

于 2009-02-05T18:07:12.270 に答える
2

低レベルでこれを行うことを妨げるものは何もありません。ただし、RAM 書き込みはアトミックであるため、メモリ コントローラーはコアから 2 つの一見シミュレートされた書き込みを順次実行します。

于 2009-02-05T17:33:18.780 に答える
0

そのネイティブオペコードは、RAMに直接書き込むよりもCPU上のキャッシュに書き込む可能性が高いのではないでしょうか。

于 2009-02-05T17:39:08.393 に答える
0

彼らは試すことができますが、ハードウェアが最終的な決定要因となります。

于 2009-02-05T17:59:32.410 に答える
0

2 つの CPU が同時にコマンドを発行する場合がありますが、RAM コントローラーは受信した各コマンドを個別に処理する必要はありませんか? したがって、CPU にとっては同時かもしれませんが、RAM コントローラーは、誰のコマンドが最初に処理されるかを決定します。

于 2009-02-05T17:32:37.457 に答える
0

異なる値が書き込まれた場合、結果の RAM コンテンツが指定されないため、それらはすべきではありません。

于 2009-02-05T17:34:34.050 に答える