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

Post on 12-Jun-2015

4.119 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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];

}

}

top related