SlideShare a Scribd company logo
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

More Related Content

What's hot

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
Sho Nakazono
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
Atsushi KOMIYA
 
Raft
RaftRaft
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
裕士 常田
 

What's hot (20)

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
Raft
RaftRaft
Raft
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
 

Similar to Intel TSX について x86opti

Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
Norimasa FUJITA
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
Takashi Hoshino
 
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
 
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
 
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
Atsushi Koshiba
 
Code jp2015 cpuの話
Code jp2015 cpuの話Code jp2015 cpuの話
Code jp2015 cpuの話
Shinichiro Niiyama
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
VirtualTech Japan Inc.
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
NTT Communications Technology Development
 
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
 

Similar to 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とその派生
 
本当にわかる 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の深い話
 

More from 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.3
Takashi Hoshino
 
WalB Driver Internals
WalB Driver InternalsWalB Driver Internals
WalB Driver Internals
Takashi Hoshino
 
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#8 Item38
Takashi Hoshino
 
Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#6 Item25
Takashi Hoshino
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
 
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
Takashi Hoshino
 
メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介メモリより大きなデータの Sufix Array 構築方法の紹介
メモリより大きなデータの Sufix Array 構築方法の紹介
Takashi Hoshino
 
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーションTakashi Hoshino
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ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 Storage
Takashi 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 Tool
Takashi Hoshino
 

More from Takashi Hoshino (20)

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 構築方法の紹介
 
WalBの紹介
WalBの紹介WalBの紹介
WalBの紹介
 
10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション10分で分かるバックアップとレプリケーション
10分で分かるバックアップとレプリケーション
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
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
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 

Recently uploaded (16)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 

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