BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Gil Tene氏が講演でハードウェアトランザクショナルメモリを解説

Gil Tene氏が講演でハードウェアトランザクショナルメモリを解説

原文(投稿日:2016/06/19)へのリンク

QCon New York 2016で行なわれたプレゼンテーション “Understanding Hardware Transactional Memory”で,Gil Tene氏は,ハードウェアトランザクショナルメモリ(HTM)について紹介した。HTMは概念としては古くからあったが,やっと今,一般的なハードウェアとして利用できるようになったのだ。例えば,2016年第2四半期以降のIntelベースのサーバはすべて,HTMをサポートしている。HTMの基本目的は,メモリの複数アドレスに対するアトミックな書き込みを可能にすることによって,他のスレッドとの共同動作に矛盾を生じさせないことにある。

最初にTene氏は,メモリキャッシュの持つ4つの状態を紹介した。

  • 無効(Invalid)
  • 共有(Shared)
  • 排他(Exclusive)
  • 変更済(Modified)

ハードウェアトランザクショナルメモリでは,これらに加えて,さらに2つの状態がある。

  • 投機(Speculation)中のライン読み込み
  • 投機中のライン更新

他のCPUがデータを書き込んだ場合,変更されたデータを参照したい場合,CPUがキャッシュの破棄を決定した場合には,そのトランザクションは中止されなくてはならない。

Tene氏によれば,ハードウェアトランザクショナルメモリの大きなメリットは,処理の直列化によって発生するブロックを回避できる点にある。その結果として,完全な並列実行が実現する。ロールバックが必要なのは,データ項目へのアクセス中に実際にコリジョンが発生した場合のみだ。この点は,コアの数が多くなるに従って実際の速度改善率が低くなるという,Amdahlの法則に直接的に関わってくる。アプリケーション内に10%の直列化が存在する場合,CPU10個による速度向上は5倍をやや越える程度にしかならない。実際に10倍のスピードアップを実現しようとすれば,100個程度のCPUを使用する必要があるのだ。

続いてTene氏は,ロック競合(lock contension)とデータ競合(data contention)の違いについて説明する。大規模なハッシュセットを使って処理を行なう時,例えば,まったく別の領域をアクセスしているような場合においても,ハッシュセットのロックが必要だ。一般的にはロック競合はデータ競合よりはるかに大きいが,複数のCPUが並列動作する場合に問題となるのはデータ競合のみである。従って,データ競合が発生した場合のトランザクションを単に中断することで,Amdahlの法則の影響が大幅に減少し,並列コンピューティングの高速化が可能になる。

Javaのsynchronizedブロックについて,Tene氏は,競合が発生しない限り通常と同じ速度で動作するはずだ,と説明する。実際にデータ競合が発生した場合のみ,トランザクションをロールバックして,並列コードを再実行する必要が生じる。この動作はJavaアプリケーションに対しては完全に透過的であり,Java仮想マシンさえHTMをサポートすれば,コードの変更はまったく必要ない。この条件が当てはまるのは,Hotspot 8 JVMのupdate 40以降である。ハードウェアトランザクショナルメモリの効果は,簡単なベンチマークでも視覚化可能だ - 5%のハッシュセット書き込みがある場合においても,CPU追加時によるスケールファクタが線形であることが確認できる。

Gil Tene氏は最後に,HTMの使用が開発者に対して透過的ではある一方で,アプリケーションのデータ競合について考え始める必要があることを指摘して,自身の講演の結論としている。複数のスレッドによる同じ変数の変更はデータ競合を誘発し,HTMLのアドバンテージを活かせなくなり,結果として速度低下を招くため,そのような処理は避けるべきだ。

なお,カンファレンス終了後の数週間で無償公開されるのは,QConのプレゼンテーションの一部である点について了承頂きたい。InfoQでは,Gil Tene氏へのインタビューも記事として公開している。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT