SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Intel	
  TSX	
  について	
サイボウズ・ラボ	
  
2012-­‐06-­‐16(土)	
  星野 喬(@starpoz)	
  
x86/x64最適化勉強会4
自己紹介	
•  星野 喬(@starpoz)	
  
– サイボウズ・ラボ	
  
•  昔やってた研究	
  
– データベース,ストレージ,分散アルゴリズム	
  
•  今の仕事	
  
– Linux	
  kernel	
  の	
  IO	
  device	
  driver	
  書いてます	
  
•  アセンブラ書いたことありません(ぇ	
  
– CPU	
  の知識は多少ありますが...	
  
2
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
3
会場の皆さんに質問	
•  並列プログラミングしたことありますか?	
  
– STM/HTM	
  を使ったことはありますか?	
  
– ロックを使ったことはありますか?	
  
– DB	
  トランザクション使ったことはありますか?	
  
•  デッドロックさせたことありますか?	
4
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
5
ロックによる並列プログラミングの問題	
•  Deadlock	
  
•  合成不可能	
Thread1:	
  
	
  	
  lock	
  x	
  
	
  	
  lock	
  y	
  
	
  	
  write	
  x	
  
	
  	
  write	
  y	
  
	
  	
  unlock	
  y	
  
	
  	
  unlock	
  x	
Thread2:	
  
	
  	
  lock	
  x	
  
	
  	
  lock	
  y	
  
	
  	
  read	
  x	
  
	
  	
  read	
  y	
  
	
  	
  unlock	
  y	
  
	
  	
  unlock	
  x	
Thread2’:	
  
	
  	
  lock	
  y	
  
	
  	
  lock	
  x	
  
	
  	
  read	
  x	
  
	
  	
  read	
  y	
  
	
  	
  unlock	
  x	
  
	
  	
  unlock	
  y	
Function1:	
  
	
  	
  lock	
  x	
  
	
  	
  read	
  x	
  
	
  	
  unlock	
  x	
Function2:	
  
	
  	
  lock	
  x	
  
	
  	
  write	
  x	
  
	
  	
  unlock	
  x	
Function3:	
  
	
  	
  lock	
  x	
  
	
  	
  read	
  x	
  
	
  	
  write	
  x	
  
	
  	
  unlock	
  x	
Function3’:	
  
	
  	
  Function1	
  
	
  	
  Function2	
6
トランザクショナルメモリ	
  (TM)	
•  トランザクションを使ってメモリアクセス	
  
– Lock/unlock	
  をプログラマが書く必要なし	
  
– Deadlock	
  が起きない(方式による)	
  
– 合成可能	
  
•  実現方式	
  
– ハードウェア:	
  HTM	
  
– ソフトウェア:	
  STM	
  
– たくさんのバリエーションが提案されている	
  
7
トランザクション	
•  分けることのできない一連の情報処理単位	
  
•  ACID	
  特性	
  
– Atomicity:	
  トランザクションの実行は全か無のみ	
  
– Consistency:	
  常に一貫性のある状態を保つ	
  
– IsolaQon:	
  commit	
  まで変更は他に見えない	
  
– Durability:	
  commit	
  時に変更は永続的に記録される	
  
8
トランザクショナルメモリの歴史	
•  1986	
  	
  TM	
  のアイデア論文	
  
•  1993	
  	
  Hardware	
  TM	
  という名前で提案	
  
•  1995	
  	
  SoTware	
  TM	
  の提案	
  
•  2005	
  	
  Haskell	
  での	
  STM	
  実装	
  
•  2007	
  	
  Clojure	
  STM	
  言語レベルのサポート	
  
•  2010	
  	
  MS	
  .NET	
  で	
  STM	
  を使えないと判断	
  
•  2013	
  	
  Intel	
  TSX	
  が Haswell	
  に搭載予定	
  
Thanks	
  to	
  @nishio	
 9
トランザクショナルメモリのインターフェース	
•  Atomic	
  ブロック	
  
– トランザクションにしたいコードを囲むだけ	
  
•  その他	
  
– abort	
  命令	
  
– commit	
  成否を検知する命令	
  
– 明示的に排他対象を指定する方式もある	
  
10	
Thread1:	
  
	
  	
  atomic	
  {	
  
	
  	
  	
  	
  write	
  x	
  
	
  	
  	
  	
  write	
  y	
  
	
  	
  }	
Thread2:	
  
	
  	
  atomic	
  {	
  
	
  	
  	
  	
  read	
  x	
  
	
  	
  	
  	
  read	
  y	
  
	
  	
  }
Lock	
  に対する	
  TM	
  ってどう思えばいいの?	
•  Malloc/free	
  ßà	
  Garbage	
  CollecQon	
  
– GC	
  でメモリリークフリーなプログラミングができる	
  
– 性能は向上しているがオーバーヘッドはある	
  
•  Lock/unlock	
  ßà	
  TransacQonal	
  Memory	
  
– TM	
  で	
  Lock-­‐free	
  な並列プログラミングができる	
  
– STM	
  はオーバーヘッドが...	
  
– HTM	
  は使える実装や制約が...	
  
11
TM	
  実現方式の例	
12	
0	
  T1	
  begin	
  
1	
  T1	
  write	
  x	
  1	
  
2	
  T1	
  write	
  y	
  1	
  
3	
  T1	
  commit	
  
4	
  T2	
  begin	
  
5	
  T2	
  read	
  y	
  
6	
  T2	
  read	
  x	
  
7	
  T2	
  commit	
  
0	
x	
0	
y	
0	
 0	
0	
 0	
1	
 1	
1	
 1	
1	
 1	
1	
 1	
1	
 1	
T1	
  	
  
writes	
T2	
  	
  
writes	
x:1	
x:1,y:1	
T1	
T1	
T2	
T1	
T2	
T2	
tag	
 tag	
T1:	
  
	
  	
  write	
  x	
  1	
  
	
  	
  write	
  y	
  1	
  
T2:	
  
	
  	
  read	
  y	
  
	
  	
  read	
  x	
  
Run	
Memory
TM	
  実現方式の例	
  –cont.	
13	
0	
  T1	
  begin	
  
1	
  T1	
  write	
  x	
  1	
  
2	
  T2	
  begin	
  
3	
  T2	
  read	
  y	
  
4	
  T1	
  write	
  y	
  1	
  
5	
  T1	
  abort	
  
6	
  T2	
  read	
  x	
  
7	
  T2	
  commit	
  
0	
x	
0	
y	
0	
 0	
0	
 0	
0	
 0	
0	
 0	
0	
 0	
0	
 0	
0	
 0	
T1	
  	
  
writes	
T2	
  	
  
writes	
x:1	
x:1	
x:1,y:1	
T1	
T1	
T1	
T1	
T2	
T2	
T2	
T2	
T2	
	
  
tag	
	
  
tag	
T1:	
  
	
  	
  write	
  x	
  1	
  
	
  	
  write	
  y	
  1	
  
T2:	
  
	
  	
  read	
  y	
  
	
  	
  read	
  x	
  
Run	
Memory
TM	
  実現方式の例	
  –cont.	
•  Read-­‐set/write-­‐set	
  
– 各 trn	
  が	
  read/write	
  した領域	
  
– 同じ領域に自分以外がアクセスしたら	
  abort	
  
•  Private	
  writes	
  
– commit	
  するまで他の trn	
  に変更を見せない	
  
– abort	
  時に変更はなかったことにする	
  
14
PessimisQc	
  vs	
  OpQmisQc	
•  PessimisQc	
  
•  OpQmisQc	
15
PessimisQc	
  vs	
  OpQmisQc	
  –cont.	
•  PessimisQc	
  (悲観的)	
  
– 競合し得る trn	
  の同時実行を許さない	
  
– 必ず	
  commit	
  できる	
  
•  OpQmisQc	
  (楽観的)	
  
– 競合し得る trn	
  の投機的な同時実行を許す	
  
– 競合で commit	
  できないことがある	
  
– 状況次第で	
  pessimisQc	
  よりスケールする	
  
– 競合しやすい trn	
  だと資源の無駄	
  
16
トランザクショナルメモリ本	
•  2009	
  年頃までの	
  
TM	
  の研究まとめ	
  
•  参考文献	
  351	
  個!	
  
•  図表にして欲しい箇
所がたくさん...	
17
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
18
Intel	
  TSX	
•  TransacQonal	
  SynchronizaQon	
  eXtension	
  の略	
  
•  2 つのインターフェースを提供	
  
– HLE:	
  Lock	
  prefix	
  の拡張で細粒度の排他を実現	
  
– RTM:	
  制約はあるが HTM	
  そのもの	
  
•  OpQmisQc	
  な振舞	
  
•  CPU	
  キャッシュを使って必要なデータを管理	
  
•  キャッシュライン単位での競合検出	
  
19
TSX	
  のための実装	
  (TM本	
  5.1	
  章を元に想像)	
•  Read-­‐set	
  
– キャッシュライン毎の	
  read	
  タグ	
  
– read	
  したアドレスを保持するバッファ	
  
•  Write-­‐set	
  
– 論理CPU毎の	
  Write	
  buffer	
  を流用	
  
or	
  L1/L2	
  d-­‐cache	
  を流用	
  
•  競合検出	
  
– Read-­‐set	
  に含まれるライン	
  à	
  write 要求	
  
– Write-­‐set	
  に含まれるライン	
  à	
  read/write	
  要求	
  
20
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
21
HLE	
•  Hardware	
  Lock	
  Elision	
  の略	
  
– ロックを無視	
  
•  命令	
  
– XACQUIRE/XRELEASE	
  
– Lock	
  prefix	
  にさらに追加する prefix	
  
– トランザクションにしたいコードを	
  
XACQUIRE と	
  XRELEASE	
  で囲む	
  
22
HLE	
  動作概要	
23	
投機実行	
Write-­‐set	
  反映,破棄	
START	
END	
XACQUIRE	
XRELEASE	
 競合検出	
競合が起きないケース	
 競合が起きるケース	
投機実行	
Write-­‐set 破棄	
START	
END	
XACQUIRE	
 XACQUIRE	
  まで	
  
戻って通常実行	
XRELEASE
HLE: 動作概要	
  –cont.	
•  実行時の挙動	
  
– XACQUIRE	
  から	
  XRELEASE	
  までのコードは	
  
投機的に実行	
  
– Write-­‐set	
  の内容は	
  commit	
  されるまで	
  
他の論理	
  CPU	
  からは見えない	
  
•  競合が検出された場合	
  
– Abort	
  し XACQUIRE以降のメモリ操作が	
  
なかったことになる	
  
– HLE	
  なしで再実行:	
  必ず成功	
  
24
HLE:	
  メリットとデメリット	
•  メリット	
  
– 実際に競合がなければ並列実行可能	
  
•  細粒度に排他したプログラムに近い性能が期待	
  
– 既存のコードをほとんど修正なしで使える	
  
•  場合によってはリコンパイルのみ	
  
•  デメリット	
  
– 競合が頻繁に起きるケースは資源の無駄	
  
•  XACQUIRE/XRELEASE	
  をつけるべきではない	
  
25
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
26
RTM	
•  Restricted	
  TransacQonal	
  Memory	
  の略	
  
– 制約つきの	
  TM	
  
•  命令	
  
– XBEGIN:	
  トランザクション開始	
  
– XEND:	
  トランザクション終了	
  
– XABORT:	
  明示的に	
  abort	
  
27
RTM	
  動作概要	
28	
投機実行	
Write-­‐set	
  反映,破棄	
START	
END	
XBEGIN	
XEND	
 競合検出	
  
or	
  XABORT	
競合が起きないケース	
 競合が起きるケース	
投機実行	
Write-­‐set 破棄	
START	
END	
XBEGIN	
EAX	
  に	
  
結果をセット	
  
Fallback	
  
アドレスに	
  
ジャンプ	
通常実行
RTM:	
  動作概要	
  –cont.	
•  実行時の挙動	
  
– XBEGIN	
  から	
  XEND	
  までを投機的に実行	
  
– Write-­‐set	
  の内容は他CPUから見えない	
  
– XEND	
  までに競合検出されなければ	
  commit	
  
•  競合検出時	
  
– Write-­‐set	
  を破棄して Fallback	
  アドレスにジャンプ	
  
– EAX	
  に	
  abort	
  原因をセット	
  
•  XABORT	
  時	
  
– 8bit	
  即値を渡せる(EAX	
  の一部)	
29
RTM:	
  メリットとデメリット	
•  メリット	
  
– HTM	
  なので高速	
  
– TM	
  のためのキャッシュ操作に伴う	
  
オーバーヘッドのみ	
  
•  デメリット	
  
– OpQmisQc	
  なので必ず	
  commit	
  できる保証なし	
  
– Retry	
  しても毎回	
  abort	
  するかも知れない	
  
– プログラマ/ライブラリ/OS	
  が面倒見ないといけない	
  
30
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– HTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
31
トランザクション内で使えるインストラクション	
•  Abort	
  しないもの	
  
– IP	
  や一般のレジスタ,ステータスフラグを使う命令	
  
– XMM,	
  YMM,MXCSR	
  レジスタを使う命令	
  
•  Abort	
  するかも知れないもの	
  
– CPUID,	
  PAUSE	
  (これらは絶対	
  abort)	
  
– SSE/XMM	
  と	
  AVX/YMM	
  を混ぜて使う	
  
– INT や	
  SYSENTER	
  など諸々	
  
•  詳細はマニュアル参照	
32
NesQng	
  (入れ子)	
•  HLE	
  
– MAX_HLE_NEST_COUNT	
  まで入れ子にできる	
– 同じアドレスに対しては再帰的に使えない	
  
•  RTM	
  
– MAX_RTM_NEST_COUNT	
  まで入れ子にできる	
  
– abort	
  時は最外 trn	
  の	
  fallback	
  アドレスに飛ぶ	
  
•  組み合わせ	
  
– RTM	
  の中で	
  HLE	
  à	
  無視される	
  
– HLE	
  の中で	
  RTM	
  à	
  abort	
  後	
  HLE	
  無視して実行	
  
33
Abort	
  する条件	
•  アクセス競合が検出されたとき	
  
•  特定の命令を実行したとき	
  
•  Nest	
  限界を越えたとき	
  
•  TM	
  管理データ用の領域が足りなくなったとき	
34
実行順序	
•  これまでと変わらないので自分でケア	
  
– fence	
  命令	
  
•  XACQUIRE/XBEGIN	
  後の命令のみ	
  abort	
  時に
undo	
  される	
35
性能を出すための注意	
•  長いトランザクションにしない	
  
•  多くの領域にアクセスしない	
  
•  Abort	
  を引き起こす命令は使わない	
  
•  競合しやすい排他対象に使わない	
36
言語処理系のサポート	
•  C++	
  標準への提案	
  
– by	
  Intel	
  の中の人その他	
  
– atomic	
  block,	
  cancel,	
  例外との組み合わせ	
  
– Undo	
  できる/ない関数のアノテーション/自動判別	
  
•  Intel	
  compiler	
  は独自命令でサポート	
  
•  GCC	
  は	
  4.7 から試験的にサポート	
  
– -­‐fgnu-­‐tm	
  オプション	
  
37
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– RTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
38
今後の展望(予測)	
•  HLE	
  は早期に実用できると期待	
•  RTM は...(時間かかりそう)	
•  言語処理系への採用が進む	
  
– HLE,	
  RTM	
  サポート	
  
– STM	
  のアクセラレータとして	
  RTM	
  を使う	
  
•  将来的には	
  OS	
  によるサポートが必要?	
  
– CPUキャッシュ資源を適切に振り分ける	
  
– 競合コントロール	
  
39
発表概要	
•  トランザクショナルメモリ	
  
•  Intel	
  TSX	
  
– HLE	
  
– HTM	
  
– 制約その他	
  
•  今後の展望	
  
•  まとめと参考文献	
  
40
まとめ	
•  トランザクショナルメモリについて	
  
•  Intel	
  TSX	
  について	
  
– opQmisQc	
  な	
  TM	
  なので気をつけて	
  
•  Haswell	
  の登場を楽しみに待ちましょう	
  
41
参考文献	
•  Intel	
  Architecture	
  InstrucQon	
  Set	
  Extensions	
  
Programming	
  Reference	
  
•  TransacQonal	
  Memory	
  2nd	
  EdiQon	
  
•  DraT	
  SpecificaQon	
  of	
  TransacQonal	
  Language	
  
Constructs	
  for	
  C++	
  
•  ニュース/ブログ記事など	
  
– 主に	
  @kumagi	
  さん,Hisa	
  Ando	
  さん	
42
•  おしまい	
43

Mais conteúdo relacionado

Mais procurados

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と MeltdownHirotaka Kawata
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみるYagi Shinnosuke
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法Takeshi Yamamuro
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスSho Nakazono
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理KageShiron
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料SECCON Beginners
 

Mais procurados (20)

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
Lockfree Queue
Lockfree QueueLockfree Queue
Lockfree Queue
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックス
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 

Semelhante a Intel TSX について x86opti

Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解するNorimasa FUJITA
 
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきことmao999
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010Tsukasa Oi
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生MITSUNARI Shigeo
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryAtsushi Koshiba
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜VirtualTech Japan Inc.
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
C++ Transactional Memory言語拡張の紹介
C++ Transactional Memory言語拡張の紹介C++ Transactional Memory言語拡張の紹介
C++ Transactional Memory言語拡張の紹介yohhoy
 
Optimistic Rollupとは何か
Optimistic Rollupとは何かOptimistic Rollupとは何か
Optimistic Rollupとは何かSyuhei Hiya
 
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うJavaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うKenji Kazumura
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話LINE Corporation
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視npsg
 

Semelhante a Intel TSX について x86opti (20)

Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
 
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
 
Code jp2015 cpuの話
Code jp2015 cpuの話Code jp2015 cpuの話
Code jp2015 cpuの話
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
Osc2011 Do
Osc2011 DoOsc2011 Do
Osc2011 Do
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
C++ Transactional Memory言語拡張の紹介
C++ Transactional Memory言語拡張の紹介C++ Transactional Memory言語拡張の紹介
C++ Transactional Memory言語拡張の紹介
 
Optimistic Rollupとは何か
Optimistic Rollupとは何かOptimistic Rollupとは何か
Optimistic Rollupとは何か
 
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うJavaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
WalBの紹介
WalBの紹介WalBの紹介
WalBの紹介
 

Mais de Takashi Hoshino

Serializabilityとは何か
Serializabilityとは何かSerializabilityとは何か
Serializabilityとは何かTakashi Hoshino
 
Isolation Level について
Isolation Level についてIsolation Level について
Isolation Level についてTakashi Hoshino
 
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3Takashi Hoshino
 
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38Takashi Hoshino
 
Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25Takashi Hoshino
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Takashi Hoshino
 
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法Takashi Hoshino
 
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介Takashi Hoshino
 
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーションTakashi Hoshino
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージTakashi Hoshino
 
Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)Takashi Hoshino
 
Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介Takashi Hoshino
 
An Efficient Backup and Replication of Storage
An Efficient Backup and Replication of StorageAn Efficient Backup and Replication of Storage
An Efficient Backup and Replication of StorageTakashi Hoshino
 
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法Takashi Hoshino
 
WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.Takashi Hoshino
 
VMware Backup in Cybozu Labs
VMware Backup in Cybozu LabsVMware Backup in Cybozu Labs
VMware Backup in Cybozu LabsTakashi Hoshino
 
Vmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup ToolVmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup ToolTakashi Hoshino
 

Mais de Takashi Hoshino (19)

Serializabilityとは何か
Serializabilityとは何かSerializabilityとは何か
Serializabilityとは何か
 
Isolation Level について
Isolation Level についてIsolation Level について
Isolation Level について
 
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
 
WalB Driver Internals
WalB Driver InternalsWalB Driver Internals
WalB Driver Internals
 
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38
 
Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
 
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
 
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介
 
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
 
Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX 触ってみた 追加実験 (TTAS)
 
Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介Suffix Array 構築方法の紹介
Suffix Array 構築方法の紹介
 
An Efficient Backup and Replication of Storage
An Efficient Backup and Replication of StorageAn Efficient Backup and Replication of Storage
An Efficient Backup and Replication of Storage
 
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法
 
WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.WalB: Block-level WAL. Concept.
WalB: Block-level WAL. Concept.
 
VMware Backup in Cybozu Labs
VMware Backup in Cybozu LabsVMware Backup in Cybozu Labs
VMware Backup in Cybozu Labs
 
Vmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup ToolVmbkp: VMware vSphere Incremental Backup Tool
Vmbkp: VMware vSphere Incremental Backup Tool
 
Inside database
Inside databaseInside database
Inside database
 

Último

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Último (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Intel TSX について x86opti

  • 1. Intel  TSX  について サイボウズ・ラボ   2012-­‐06-­‐16(土)  星野 喬(@starpoz)   x86/x64最適化勉強会4
  • 2. 自己紹介 •  星野 喬(@starpoz)   – サイボウズ・ラボ   •  昔やってた研究   – データベース,ストレージ,分散アルゴリズム   •  今の仕事   – Linux  kernel  の  IO  device  driver  書いてます   •  アセンブラ書いたことありません(ぇ   – CPU  の知識は多少ありますが...   2
  • 3. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   3
  • 4. 会場の皆さんに質問 •  並列プログラミングしたことありますか?   – STM/HTM  を使ったことはありますか?   – ロックを使ったことはありますか?   – DB  トランザクション使ったことはありますか?   •  デッドロックさせたことありますか? 4
  • 5. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   5
  • 6. ロックによる並列プログラミングの問題 •  Deadlock   •  合成不可能 Thread1:      lock  x      lock  y      write  x      write  y      unlock  y      unlock  x Thread2:      lock  x      lock  y      read  x      read  y      unlock  y      unlock  x Thread2’:      lock  y      lock  x      read  x      read  y      unlock  x      unlock  y Function1:      lock  x      read  x      unlock  x Function2:      lock  x      write  x      unlock  x Function3:      lock  x      read  x      write  x      unlock  x Function3’:      Function1      Function2 6
  • 7. トランザクショナルメモリ  (TM) •  トランザクションを使ってメモリアクセス   – Lock/unlock  をプログラマが書く必要なし   – Deadlock  が起きない(方式による)   – 合成可能   •  実現方式   – ハードウェア:  HTM   – ソフトウェア:  STM   – たくさんのバリエーションが提案されている   7
  • 8. トランザクション •  分けることのできない一連の情報処理単位   •  ACID  特性   – Atomicity:  トランザクションの実行は全か無のみ   – Consistency:  常に一貫性のある状態を保つ   – IsolaQon:  commit  まで変更は他に見えない   – Durability:  commit  時に変更は永続的に記録される   8
  • 9. トランザクショナルメモリの歴史 •  1986    TM  のアイデア論文   •  1993    Hardware  TM  という名前で提案   •  1995    SoTware  TM  の提案   •  2005    Haskell  での  STM  実装   •  2007    Clojure  STM  言語レベルのサポート   •  2010    MS  .NET  で  STM  を使えないと判断   •  2013    Intel  TSX  が Haswell  に搭載予定   Thanks  to  @nishio 9
  • 10. トランザクショナルメモリのインターフェース •  Atomic  ブロック   – トランザクションにしたいコードを囲むだけ   •  その他   – abort  命令   – commit  成否を検知する命令   – 明示的に排他対象を指定する方式もある   10 Thread1:      atomic  {          write  x          write  y      } Thread2:      atomic  {          read  x          read  y      }
  • 11. Lock  に対する  TM  ってどう思えばいいの? •  Malloc/free  ßà  Garbage  CollecQon   – GC  でメモリリークフリーなプログラミングができる   – 性能は向上しているがオーバーヘッドはある   •  Lock/unlock  ßà  TransacQonal  Memory   – TM  で  Lock-­‐free  な並列プログラミングができる   – STM  はオーバーヘッドが...   – HTM  は使える実装や制約が...   11
  • 12. TM  実現方式の例 12 0  T1  begin   1  T1  write  x  1   2  T1  write  y  1   3  T1  commit   4  T2  begin   5  T2  read  y   6  T2  read  x   7  T2  commit   0 x 0 y 0 0 0 0 1 1 1 1 1 1 1 1 1 1 T1     writes T2     writes x:1 x:1,y:1 T1 T1 T2 T1 T2 T2 tag tag T1:      write  x  1      write  y  1   T2:      read  y      read  x   Run Memory
  • 13. TM  実現方式の例  –cont. 13 0  T1  begin   1  T1  write  x  1   2  T2  begin   3  T2  read  y   4  T1  write  y  1   5  T1  abort   6  T2  read  x   7  T2  commit   0 x 0 y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T1     writes T2     writes x:1 x:1 x:1,y:1 T1 T1 T1 T1 T2 T2 T2 T2 T2   tag   tag T1:      write  x  1      write  y  1   T2:      read  y      read  x   Run Memory
  • 14. TM  実現方式の例  –cont. •  Read-­‐set/write-­‐set   – 各 trn  が  read/write  した領域   – 同じ領域に自分以外がアクセスしたら  abort   •  Private  writes   – commit  するまで他の trn  に変更を見せない   – abort  時に変更はなかったことにする   14
  • 15. PessimisQc  vs  OpQmisQc •  PessimisQc   •  OpQmisQc 15
  • 16. PessimisQc  vs  OpQmisQc  –cont. •  PessimisQc  (悲観的)   – 競合し得る trn  の同時実行を許さない   – 必ず  commit  できる   •  OpQmisQc  (楽観的)   – 競合し得る trn  の投機的な同時実行を許す   – 競合で commit  できないことがある   – 状況次第で  pessimisQc  よりスケールする   – 競合しやすい trn  だと資源の無駄   16
  • 17. トランザクショナルメモリ本 •  2009  年頃までの   TM  の研究まとめ   •  参考文献  351  個!   •  図表にして欲しい箇 所がたくさん... 17
  • 18. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   18
  • 19. Intel  TSX •  TransacQonal  SynchronizaQon  eXtension  の略   •  2 つのインターフェースを提供   – HLE:  Lock  prefix  の拡張で細粒度の排他を実現   – RTM:  制約はあるが HTM  そのもの   •  OpQmisQc  な振舞   •  CPU  キャッシュを使って必要なデータを管理   •  キャッシュライン単位での競合検出   19
  • 20. TSX  のための実装  (TM本  5.1  章を元に想像) •  Read-­‐set   – キャッシュライン毎の  read  タグ   – read  したアドレスを保持するバッファ   •  Write-­‐set   – 論理CPU毎の  Write  buffer  を流用   or  L1/L2  d-­‐cache  を流用   •  競合検出   – Read-­‐set  に含まれるライン  à  write 要求   – Write-­‐set  に含まれるライン  à  read/write  要求   20
  • 21. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   21
  • 22. HLE •  Hardware  Lock  Elision  の略   – ロックを無視   •  命令   – XACQUIRE/XRELEASE   – Lock  prefix  にさらに追加する prefix   – トランザクションにしたいコードを   XACQUIRE と  XRELEASE  で囲む   22
  • 23. HLE  動作概要 23 投機実行 Write-­‐set  反映,破棄 START END XACQUIRE XRELEASE 競合検出 競合が起きないケース 競合が起きるケース 投機実行 Write-­‐set 破棄 START END XACQUIRE XACQUIRE  まで   戻って通常実行 XRELEASE
  • 24. HLE: 動作概要  –cont. •  実行時の挙動   – XACQUIRE  から  XRELEASE  までのコードは   投機的に実行   – Write-­‐set  の内容は  commit  されるまで   他の論理  CPU  からは見えない   •  競合が検出された場合   – Abort  し XACQUIRE以降のメモリ操作が   なかったことになる   – HLE  なしで再実行:  必ず成功   24
  • 25. HLE:  メリットとデメリット •  メリット   – 実際に競合がなければ並列実行可能   •  細粒度に排他したプログラムに近い性能が期待   – 既存のコードをほとんど修正なしで使える   •  場合によってはリコンパイルのみ   •  デメリット   – 競合が頻繁に起きるケースは資源の無駄   •  XACQUIRE/XRELEASE  をつけるべきではない   25
  • 26. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   26
  • 27. RTM •  Restricted  TransacQonal  Memory  の略   – 制約つきの  TM   •  命令   – XBEGIN:  トランザクション開始   – XEND:  トランザクション終了   – XABORT:  明示的に  abort   27
  • 28. RTM  動作概要 28 投機実行 Write-­‐set  反映,破棄 START END XBEGIN XEND 競合検出   or  XABORT 競合が起きないケース 競合が起きるケース 投機実行 Write-­‐set 破棄 START END XBEGIN EAX  に   結果をセット   Fallback   アドレスに   ジャンプ 通常実行
  • 29. RTM:  動作概要  –cont. •  実行時の挙動   – XBEGIN  から  XEND  までを投機的に実行   – Write-­‐set  の内容は他CPUから見えない   – XEND  までに競合検出されなければ  commit   •  競合検出時   – Write-­‐set  を破棄して Fallback  アドレスにジャンプ   – EAX  に  abort  原因をセット   •  XABORT  時   – 8bit  即値を渡せる(EAX  の一部) 29
  • 30. RTM:  メリットとデメリット •  メリット   – HTM  なので高速   – TM  のためのキャッシュ操作に伴う   オーバーヘッドのみ   •  デメリット   – OpQmisQc  なので必ず  commit  できる保証なし   – Retry  しても毎回  abort  するかも知れない   – プログラマ/ライブラリ/OS  が面倒見ないといけない   30
  • 31. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – HTM   – 制約その他   •  今後の展望   •  まとめと参考文献   31
  • 32. トランザクション内で使えるインストラクション •  Abort  しないもの   – IP  や一般のレジスタ,ステータスフラグを使う命令   – XMM,  YMM,MXCSR  レジスタを使う命令   •  Abort  するかも知れないもの   – CPUID,  PAUSE  (これらは絶対  abort)   – SSE/XMM  と  AVX/YMM  を混ぜて使う   – INT や  SYSENTER  など諸々   •  詳細はマニュアル参照 32
  • 33. NesQng  (入れ子) •  HLE   – MAX_HLE_NEST_COUNT  まで入れ子にできる – 同じアドレスに対しては再帰的に使えない   •  RTM   – MAX_RTM_NEST_COUNT  まで入れ子にできる   – abort  時は最外 trn  の  fallback  アドレスに飛ぶ   •  組み合わせ   – RTM  の中で  HLE  à  無視される   – HLE  の中で  RTM  à  abort  後  HLE  無視して実行   33
  • 34. Abort  する条件 •  アクセス競合が検出されたとき   •  特定の命令を実行したとき   •  Nest  限界を越えたとき   •  TM  管理データ用の領域が足りなくなったとき 34
  • 35. 実行順序 •  これまでと変わらないので自分でケア   – fence  命令   •  XACQUIRE/XBEGIN  後の命令のみ  abort  時に undo  される 35
  • 36. 性能を出すための注意 •  長いトランザクションにしない   •  多くの領域にアクセスしない   •  Abort  を引き起こす命令は使わない   •  競合しやすい排他対象に使わない 36
  • 37. 言語処理系のサポート •  C++  標準への提案   – by  Intel  の中の人その他   – atomic  block,  cancel,  例外との組み合わせ   – Undo  できる/ない関数のアノテーション/自動判別   •  Intel  compiler  は独自命令でサポート   •  GCC  は  4.7 から試験的にサポート   – -­‐fgnu-­‐tm  オプション   37
  • 38. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – RTM   – 制約その他   •  今後の展望   •  まとめと参考文献   38
  • 39. 今後の展望(予測) •  HLE  は早期に実用できると期待 •  RTM は...(時間かかりそう) •  言語処理系への採用が進む   – HLE,  RTM  サポート   – STM  のアクセラレータとして  RTM  を使う   •  将来的には  OS  によるサポートが必要?   – CPUキャッシュ資源を適切に振り分ける   – 競合コントロール   39
  • 40. 発表概要 •  トランザクショナルメモリ   •  Intel  TSX   – HLE   – HTM   – 制約その他   •  今後の展望   •  まとめと参考文献   40
  • 41. まとめ •  トランザクショナルメモリについて   •  Intel  TSX  について   – opQmisQc  な  TM  なので気をつけて   •  Haswell  の登場を楽しみに待ちましょう   41
  • 42. 参考文献 •  Intel  Architecture  InstrucQon  Set  Extensions   Programming  Reference   •  TransacQonal  Memory  2nd  EdiQon   •  DraT  SpecificaQon  of  TransacQonal  Language   Constructs  for  C++   •  ニュース/ブログ記事など   – 主に  @kumagi  さん,Hisa  Ando  さん 42