いいかげんな人のためのtransactional memory primer
TRANSCRIPT
はやみず ゆうと
�はやみずゆうと (早水 悠登)
� id:hayamiz, @hayamiz
�修士課程 入院1年目
研究室:情報爆発の爆心地�研究室:情報爆発の爆心地
�就職活動中 だれか雇って!
�卒論:Transactional Memory関係
�現在:データベース関係
Transactional Memory Primer 2
1. Transactional Memory(TM)とは
2. 現状(のような話)
1. Hardware TM
2. Software TM2. Software TM
3. STMメリット、デメリット
4. (時間があったら)おまけ
Transactional Memory Primer 3
�知ってる人はどのくらいいる?
4Transactional Memory Primer
�並列プログラムの同期手法の1つ
�ロック(排他的制御)によっておこる困った問題をいくつか解決してくれる
� Dead lock
� Priority inversion
� …
�××××ロックの代替
5Transactional Memory Primer
�ロックによる並列制御
スレッドA スレッドB
Lock(m)
Transactional Memory Primer 6
Lock(m)
�ロックによる並列制御
スレッドA スレッドB
Start Txn
Transactional Memory Primer 7
Start TxnTMload(x)TMstore(y,x+1)
TMload(y)TMstore(x,y+1)
衝突
Restart Txn
�ロック�排他的
�悲観的… みんなでさわるとマズいよね、、、
� Transactional MemoryTransactional Memory�投機的
�楽観的… マズいことになったらリセットすればいいじゃん
�イメージはつかめましたか?
Transactional Memory Primer 8
�クリティカルセクション→トランザクション
� Lock(mutex) → Start transaction
� Unlock(mutex) → Commit transaction� Unlock(mutex) → Commit transaction
�共有メモリアクセス→ TMのメモリアクセスAPI
Transactional Memory Primer 9
1. Transactional Memory(TM)とは
2. 現状(のような話)
1. Hardware TM
2. Software TM2. Software TM
3. STMメリット、デメリット
Transactional Memory Primer 10
1. Hardware Transactional Memory
2. Software Transactional Memory
Hybrid Transactional Memory� Hybrid Transactional Memory
� 忘れ去られてる感
Transactional Memory Primer 11
�元祖TM (Maurice Herlihy, 1993)
�最近まで:シミュレータの実装のみ
�最近:Sun Rock Processor
とうとう動くハードウェアが登場か?�とうとう動くハードウェアが登場か?
�延期
�延期
Transactional Memory Primer 12
� Sun買収\(^o^)/
Transactional Memory Primer 13
� Sun Rock Processor
�プロトタイプ実装の論文は出ている
�何ができるの?
� K-word Compare&Swapが作れたり� K-word Compare&Swapが作れたり
�効率良く lock-free data structure が実装できたり
�複雑な処理 ×� トランザクションのリスタート:TLB miss, asyncinterrupt, branch misprediction, floating point division, …
Transactional Memory Primer 14
�アカデミックの世界で流行� PPoPP 2007 2本
� PPoPP 2008 9本
� PPoPP 2009 4本
� PPoPP 2010 8本
�ライブラリ、言語も増えつつある� DSTM2(Java), Deuce STM(Java), TinySTM(C/C++), TL2(C), RSTM(C++), Clojure
Transactional Memory Primer 15
�使い物になるの?
�速さが必要なものには使えない
�2~3倍遅くなる
�スクリプト言語の機能としてはアリでは?
�複雑なデータ構造:有効そう
�例:巨大なグラフ、ハッシュテーブル
�→各スレッドは一度にごく一部しか編集しない
�→データの競合がない
�→スケールする
Transactional Memory Primer 16
1. Transactional Memory(TM)とは
2. 現状(のような話)
1. Hardware TM
2. Software TM2. Software TM
3. STMメリット、デメリット
Transactional Memory Primer 17
� Hardware TM … できないことが多すぎるので割愛
Transactional Memory Primer 18
�○ Deadlockが起こらない
�ヤバくなったらリセットすればおk
Transactional Memory Primer 19
�○ Composable
�ロックを使ったプログラム… ロックする順番に気をつける必要
� STM … どんどんトランザクションをネストし� STM … どんどんトランザクションをネストしてもおk
Transactional Memory Primer 20
�○ Composable
Function
Lock(A)
Function
Lock(B)
Transactional Memory Primer 21
Functioncall Lock(B)
Functioncall Lock(A)
祝・デッドロック
�○ Priority inversionがおきない
High
うごけない!!
Transactional Memory Primer 22
Middle
Low
Priority
うごけない!!
�○ Priority inversionがおきない
� Mars Pathfinder
� Priority inversionが
Transactional Memory Primer 23
� Priority inversionが原因で再起動
� Realtime systemでは致命的
�○ Priority inversionがおきない
�トランザクション同時が衝突したとき
�優先度に応じてリスタートするトランザクションを決定ションを決定
�できるらしい
Transactional Memory Primer 24
�×データ競合が頻発する場合くそ遅い
�トランザクションがリスタートしまくる
�カウンタのインクリメント
�線形リストのinsertion, deletion�線形リストのinsertion, deletion
Transactional Memory Primer 25
�×取り消し可能な命令しかトランザクション中に実行できない
�リスタートできないといけない
� I/Oができない!!!� I/Oができない!!!
� I/Oを実行するトランザクションは排他的に、という逃げの手段も
� TMのメリットが損なわれてしまう
Transactional Memory Primer 26
�ほかにもいろいろ、、、
�もう忘れました
Transactional Memory Primer 27
� Hardware TM
�搭載製品が世に出ることはあるのだろうか、、
� Software TM
�いろいろ制限はあるけれど�いろいろ制限はあるけれど
�いろいろメリットもあります
�嬉しいシーンはあるはず
� Clojure!
Transactional Memory Primer 28
�道具としてのsoftware transactional memory
� Atomic blockの一実装
parallelFor(i <- 0..99) {
� Lock Allocation
Transactional Memory Primer 29
parallelFor(i <- 0..99) {
atomic {
y[i] = x[i+1] + x[i];
}
}