はやみず   ゆうと
はやみず ゆうと (早水 悠登)
id:hayamiz, @hayamiz
修士課程 入院1年目
 研究室:情報爆発の爆心地
就職活動中 だれか雇って!
卒論:Transactional Memory関係
現在:データベース関係

          Transactional Memory Primer   2
1.    Transactional Memory(TM)とは
2.    現状(のような話)
     1.   Hardware TM
     2.   Software TM
3.    STMメリット、デメリット
4.    (時間があったら)おまけ



                    Transactional Memory Primer   3
知ってる人はどのくらいいる?




      Transactional Memory Primer   4
並列プログラムの同期手法の1つ
ロック(排他的制御)によっておこる困った
問題をいくつか解決してくれる
 Dead lock
 Priority inversion
 …
×ロックの代替




               Transactional Memory Primer   5
ロックによる並列制御
 スレッドA                      スレッドB
    Lock(m)
                                       Lock(m)




         Transactional Memory Primer             6
ロックによる並列制御
 スレッドA                            スレッドB
 Start Txn
                                     Start Txn
 TMload(x)
 TMstore(y,x+1)
           衝突
                                     TMload(y)
                                     TMstore(x,y+1)
 Restart Txn


               Transactional Memory Primer        7
ロック
 排他的
 悲観的 … みんなでさわるとマズいよね、、、
Transactional Memory
 投機的
 楽観的 … マズいことになったらリセットすれ
 ばいいじゃん

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

             Transactional Memory Primer   8
クリティカルセクション
→トランザクション
Lock(mutex) → Start transaction
Unlock(mutex) → Commit transaction
共有メモリアクセス
→ TMのメモリアクセスAPI



             Transactional Memory Primer   9
1.    Transactional Memory(TM)とは
2.    現状(のような話)
     1.   Hardware TM
     2.   Software TM
3.    STMメリット、デメリット




                    Transactional Memory Primer   10
1.   Hardware Transactional Memory
2.   Software 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 が作れたり
    効率良く lock-free data structure が実装できたり
    複雑な処理 ×
      トランザクションのリスタート:TLB miss, async
      interrupt, 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 TM
3.    STMメリット、デメリット




                    Transactional Memory Primer   17
Hardware TM … できないことが多すぎる
ので割愛




        Transactional Memory Primer   18
○ Deadlockが起こらない
 ヤバくなったらリセットすればおk




         Transactional Memory Primer   19
○ Composable
 ロックを使ったプログラム … ロックする順番
 に気をつける必要
 STM … どんどんトランザクションをネストし
 てもおk




           Transactional Memory Primer   20
○ Composable

           Lock(A)                                 Lock(B)
Function                              Function
call          Lock(B)                 call            Lock(A)




              祝・デッドロック
                     Transactional Memory Primer        21
○ Priority inversionがおきない

  High

                 うごけない!!
Middle


  Low

Priority
              Transactional Memory Primer   22
○ Priority inversionがおきない

                              Mars Pathfinder
                              Priority inversionが
                              原因で再起動
                              Realtime systemで
                              は致命的



           Transactional Memory Primer     23
○ Priority inversionがおきない
 トランザクション同時が衝突したとき
 優先度に応じてリスタートするトランザク
 ションを決定
   できるらしい




            Transactional Memory Primer   24
× データ競合が頻発する場合くそ遅い
 トランザクションがリスタートしまくる
 カウンタのインクリメント
 線形リストのinsertion, deletion




         Transactional Memory Primer   25
× 取り消し可能な命令しかトランザク
ション中に実行できない
 リスタートできないといけない
 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) {
     atomic {
       y[i] = x[i+1] + x[i];
     }
   }
Lock Allocation
              Transactional Memory Primer   29

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