タグ

assemblyとatomicに関するyassのブックマーク (2)

  • コンピュータアーキテクチャの話(198) Test and Set命令

    メモリアクセスの排他制御 2つのプロセサが使用するメモリ領域が異なり、別々の仕事を分担する場合は問題ないのであるが、2つのプロセサで緊密に関係のあるデータを扱っている場合には問題が発生しうる。図9.19に示した預金引き出しの例では、残高と引き出し額を比較し、残高が十分にあれば残高から引き出し額を引き、引き出し額をATMから払い出す。 ここで、当初の残高が10万円の口座に対して、プロセサ1が8万円の引出し要求を受け付け、(1)で残高を読み処理を開始するが、それより一瞬遅れて、プロセサ2が同じ口座からの5万円の引出し要求を受け付けて(2)で残高を読むと、両方とも読み込んだ残高は10万円になってしまう。そしてプロセサ1が引出し処理を終わって(3)で残高に2万円と書き込むが、続いてプロセサ2が10万円-5万円=5万円で、(4)で残高に5万円と書き込んでしまう。つまり、10万円の残高の口座から、合計

    コンピュータアーキテクチャの話(198) Test and Set命令
  • Understanding Atomic Operations

    Introduction Atomic operations are the building blocks of synchronization primitives and non-blocking algorithms. They guarantee that, when modifying a memory location, it will happen without any interference from other threads. They are required whenever writing applications for multiple-cores architectures. Consider this function: void NonAtomicAND(tS32* Value, tS32 Op) { *Value &= Op; } Which t

    Understanding Atomic Operations
  • 1