いいかげんな人のためのtransactional memory primer

29
はやみず ゆうと

Upload: yuto-hayamizu

Post on 12-Jun-2015

4.119 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: いいかげんな人のためのTransactional Memory Primer

はやみず ゆうと

Page 2: いいかげんな人のためのTransactional Memory Primer

�はやみずゆうと (早水 悠登)

� id:hayamiz, @hayamiz

�修士課程 入院1年目

研究室:情報爆発の爆心地�研究室:情報爆発の爆心地

�就職活動中 だれか雇って!

�卒論:Transactional Memory関係

�現在:データベース関係

Transactional Memory Primer 2

Page 3: いいかげんな人のためのTransactional Memory Primer

1. Transactional Memory(TM)とは

2. 現状(のような話)

1. Hardware TM

2. Software TM2. Software TM

3. STMメリット、デメリット

4. (時間があったら)おまけ

Transactional Memory Primer 3

Page 4: いいかげんな人のためのTransactional Memory Primer

�知ってる人はどのくらいいる?

4Transactional Memory Primer

Page 5: いいかげんな人のためのTransactional Memory Primer

�並列プログラムの同期手法の1つ

�ロック(排他的制御)によっておこる困った問題をいくつか解決してくれる

� Dead lock

� Priority inversion

� …

�××××ロックの代替

5Transactional Memory Primer

Page 6: いいかげんな人のためのTransactional Memory Primer

�ロックによる並列制御

スレッドA スレッドB

Lock(m)

Transactional Memory Primer 6

Lock(m)

Page 7: いいかげんな人のためのTransactional Memory Primer

�ロックによる並列制御

スレッドA スレッドB

Start Txn

Transactional Memory Primer 7

Start TxnTMload(x)TMstore(y,x+1)

TMload(y)TMstore(x,y+1)

衝突

Restart Txn

Page 8: いいかげんな人のためのTransactional Memory Primer

�ロック�排他的

�悲観的… みんなでさわるとマズいよね、、、

� Transactional MemoryTransactional Memory�投機的

�楽観的… マズいことになったらリセットすればいいじゃん

�イメージはつかめましたか?

Transactional Memory Primer 8

Page 9: いいかげんな人のためのTransactional Memory Primer

�クリティカルセクション→トランザクション

� Lock(mutex) → Start transaction

� Unlock(mutex) → Commit transaction� Unlock(mutex) → Commit transaction

�共有メモリアクセス→ TMのメモリアクセスAPI

Transactional Memory Primer 9

Page 10: いいかげんな人のためのTransactional Memory Primer

1. Transactional Memory(TM)とは

2. 現状(のような話)

1. Hardware TM

2. Software TM2. Software TM

3. STMメリット、デメリット

Transactional Memory Primer 10

Page 11: いいかげんな人のためのTransactional Memory Primer

1. Hardware Transactional Memory

2. Software Transactional Memory

Hybrid Transactional Memory� Hybrid Transactional Memory

� 忘れ去られてる感

Transactional Memory Primer 11

Page 12: いいかげんな人のためのTransactional Memory Primer

�元祖TM (Maurice Herlihy, 1993)

�最近まで:シミュレータの実装のみ

�最近:Sun Rock Processor

とうとう動くハードウェアが登場か?�とうとう動くハードウェアが登場か?

�延期

�延期

Transactional Memory Primer 12

Page 13: いいかげんな人のためのTransactional Memory Primer

� Sun買収\(^o^)/

Transactional Memory Primer 13

Page 14: いいかげんな人のためのTransactional Memory Primer

� 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

Page 15: いいかげんな人のためのTransactional Memory Primer

�アカデミックの世界で流行� 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

Page 16: いいかげんな人のためのTransactional Memory Primer

�使い物になるの?

�速さが必要なものには使えない

�2~3倍遅くなる

�スクリプト言語の機能としてはアリでは?

�複雑なデータ構造:有効そう

�例:巨大なグラフ、ハッシュテーブル

�→各スレッドは一度にごく一部しか編集しない

�→データの競合がない

�→スケールする

Transactional Memory Primer 16

Page 17: いいかげんな人のためのTransactional Memory Primer

1. Transactional Memory(TM)とは

2. 現状(のような話)

1. Hardware TM

2. Software TM2. Software TM

3. STMメリット、デメリット

Transactional Memory Primer 17

Page 18: いいかげんな人のためのTransactional Memory Primer

� Hardware TM … できないことが多すぎるので割愛

Transactional Memory Primer 18

Page 19: いいかげんな人のためのTransactional Memory Primer

�○ Deadlockが起こらない

�ヤバくなったらリセットすればおk

Transactional Memory Primer 19

Page 20: いいかげんな人のためのTransactional Memory Primer

�○ Composable

�ロックを使ったプログラム… ロックする順番に気をつける必要

� STM … どんどんトランザクションをネストし� STM … どんどんトランザクションをネストしてもおk

Transactional Memory Primer 20

Page 21: いいかげんな人のためのTransactional Memory Primer

�○ Composable

Function

Lock(A)

Function

Lock(B)

Transactional Memory Primer 21

Functioncall Lock(B)

Functioncall Lock(A)

祝・デッドロック

Page 22: いいかげんな人のためのTransactional Memory Primer

�○ Priority inversionがおきない

High

うごけない!!

Transactional Memory Primer 22

Middle

Low

Priority

うごけない!!

Page 23: いいかげんな人のためのTransactional Memory Primer

�○ Priority inversionがおきない

� Mars Pathfinder

� Priority inversionが

Transactional Memory Primer 23

� Priority inversionが原因で再起動

� Realtime systemでは致命的

Page 24: いいかげんな人のためのTransactional Memory Primer

�○ Priority inversionがおきない

�トランザクション同時が衝突したとき

�優先度に応じてリスタートするトランザクションを決定ションを決定

�できるらしい

Transactional Memory Primer 24

Page 25: いいかげんな人のためのTransactional Memory Primer

�×データ競合が頻発する場合くそ遅い

�トランザクションがリスタートしまくる

�カウンタのインクリメント

�線形リストのinsertion, deletion�線形リストのinsertion, deletion

Transactional Memory Primer 25

Page 26: いいかげんな人のためのTransactional Memory Primer

�×取り消し可能な命令しかトランザクション中に実行できない

�リスタートできないといけない

� I/Oができない!!!� I/Oができない!!!

� I/Oを実行するトランザクションは排他的に、という逃げの手段も

� TMのメリットが損なわれてしまう

Transactional Memory Primer 26

Page 27: いいかげんな人のためのTransactional Memory Primer

�ほかにもいろいろ、、、

�もう忘れました

Transactional Memory Primer 27

Page 28: いいかげんな人のためのTransactional Memory Primer

� Hardware TM

�搭載製品が世に出ることはあるのだろうか、、

� Software TM

�いろいろ制限はあるけれど�いろいろ制限はあるけれど

�いろいろメリットもあります

�嬉しいシーンはあるはず

� Clojure!

Transactional Memory Primer 28

Page 29: いいかげんな人のためのTransactional Memory Primer

�道具としての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];

}

}