2016-04-23 14 views
0

アトミックアクションはインターリーブできないことがわかっているので、スレッド干渉の恐れなしに使用できます。たとえば、32ビットOSでは、「x = 3」は「一般的な」アトミック操作と見なされますが、メモリアクセスは主に1クロック以上かかるので、3サイクルとします。だからここにあるのです。並列バスCPUでのアトミック性

&アドレスバスとスレッドAが "x = 3"を設定しようとしていると仮定すると、スレッドBが2番目のサイクルで同じメモリ位置にアクセスする可能性はありません(書き込み操作の途中のスレッドA)。原子性がどのように保存されるのでしょうか?

私は明確にできました。

おかげ

答えて

1

簡単な割り当てに問題はまったくありません、単一のバストランザクションで実行される書き込みを提供します。メモリ書き込みトランザクションが3サイクルかかる場合であっても、異なるコアからの同時バスアクセスを防止する特定の配置が存在する。

read-modify-write操作では、少なくとも2つのバストランザクションが発生するため、このような操作はコア(スレッド)間の競合状態につながる可能性があるため、問題が発生します。これらのケースは、次回の命令の全期間中にバスロック信号をアサートする特定のオペコード(接頭辞)またはジョブ全体を実行する特別な命令によって解決されます。

+0

こんにちは。私は競争状態のものを知っているが、とにかく感謝する。私は実際に、特に複数のコアの有無にかかわらず同時に動作できる並列バス(単一ではない)を持っているときに、「特定の取り決め」が何であるか疑問に思っていました。 – zgulser

+0

並列バスを持ち、マルチポートRAMと言うと、単一トランザクションの「衝突」を処理するのはRAMの義務です。他のすべての側面は同じままです:バスロック信号/バスマスタアービトレーション/これまでのこと。 – Serge

関連する問題