Re: [問題] Lock的用法
推
01/01 00:22,
01/01 00:22
推
01/01 00:27,
01/01 00:27
→
01/01 00:28,
01/01 00:28
查了一下「LOCK」的說明,. LOCK並不是一個指令, 它只是指令的
prefix, 必需配合某些特定指令使用. 以達到讓CPU跟BUS/Memory知道,
該指令之執行必需符合「Atomicity」要求 (即atomic instruction).
Atomic instruction在shared memory multi-processor系統中是
process synchronization (如 mutual exclusion)之基礎. 最基本的
atomic instruction是shared memory read/write. 但read/write
並不夠powerful, 用read/write來實作synchronization一方面可能
performance不夠好, 一方面有些好的演算法特性用(如FIFO ordering)
已經證明只用read/write是無法作出來的. ^^^^^^^^^^^^^^^^^^^^^^^^^
這邊講錯了 只用atomic read/write
是可以作出FIFO ordering的mutual
exclusion algorithm:
http://www.viswiki.com/en/Lamport's_bakery_algorithm
為了克服上述問題, 有些更強的指令被提出, 最有名即是許多演算法會
用到的 compare-and-swap. 這個指令可由CMPXCHG 加上 LOCK實作出來.
其它常見的類似指令還有 test-and-set, swap, fetch-and-store.
在x86都有相關指令可配合LOCK作這些指令來.
問題是要達到atomic的功能, 雖然CPU有此指令, BUS(or interconnect)
及memory system等也都必需要能夠配合, 這方面在multi-processor
系統並不容易實作, 實際上好像沒有任何x86 shared-memory multi-
processor system是有support LOCK prefix的.
現在的CPU都是多核心, LOCK prefix是否仍適用在現在的多核處理器
我就不清楚了...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.68.71.218
※ 編輯: ksmrt0123 來自: 219.68.71.218 (01/02 09:54)
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章