Haswellマイクロアーキテクチャとトランザクショナルメモリ

インテルがHaswellマイクロアーキテクチャで、トランザクショナルメモリサポートのアナウンスを行ったと聞き個人的にはとっても期待している。


このトランザクショナルメモリはマルチコア環境のボトルネックを解決する可能性がある技術だからだ。

前置きが長かったが、Intelの次々世代のプロセサであるHaswellがこのようなトランザクションメモリの実装をサポートするTransaction Synchronization Extensions(TSX)と呼ぶハードウェア機構をサポートしていることが明らかとなった。商用のマイクロプロセサとしては初のトランザクションメモリサポートである。

トランザクションメモリのサポートが明らかとなったIntelのHaswell (3) 商用MPUとして初めてトランザクションメモリをサポートするHaswell | マイナビニュース

実は商用プロセッサーでもサポートアナウンスはあったがなかなかリリースまでたどり着かなかった。

  • 他社動向

Hot Chips Hoping to improve the state of server software, Sun Microsystems has confirmed that it will include support for transactional memory with the first generation of its Rock processors due out in the second half of next year.

Sun slots transactional memory into Rock • The Register

PALO ALTO, Calif. – IBM has become the first company to ship a commercial microprocessor using transactional memory, a new feature for multicore chips researchers have studied for years.

The BlueGene/Q processor used in the Sequoia supercomputer IBM is building for Lawrence Livermore National Labs will employ the new feature, IBM disclosed in a paper at the Hot Chips event here. Sequoia is expected to deliver 20 petaflops when it is complete in 2012.

http://www.eetimes.com/electronics-news/4218914/IBM-plants-transactional-memory-in-CPU
  • TSXでの命令セット

大きく2体系の命令セットがアナウンスされている。それぞれネスト呼び出しの動作についてもIntelのドキュメントに記載があり、かなりの完成度になっているように思う。

    • HLE:Hardware Lock Elision(XACQUIRE and XRELEASE)

既存の命令にプレフィックスとして付加することで機能する。
用途や文法から推測するに、既存のロック機構に適用する事を考えていると思う。

    • RTM:Restricted Transactional Memory(XBEGIN, XEND and XABORT)

Transactional Memoryのモデルに基づいた命令セット。
ちょうど対応するように発表されたgcc 4.7で拡張を予定している構文に対応させるものと考えられる。

__transaction_atomic { c = a - b; }

Transactional Memory in GCC



詳細な記述は、ソフトウェアエンジニア向けの以下のマニュアルに記載されている。読み応えがあり時間があればもう少し読んでみたいと思う。
参考:Intel® Architecture Instruction Set Extensions Programming Reference:The Transactional Synchronization Extensions Chapter (Chapter 8)

  • TSXの導入効果

おそらく排他制御をおこなうロジックでTSXが導入されると予測できるが、その効果について少し考えてみた。

    • 既存のOS(Windows2008 or Windows7 Series)

TSXを利用するためには、専用の命令を利用する必要があり残念ながら既存のOSでは性能向上の恩恵を受けられないと考えられる。個人的には、対応パッチがリリースされたら嬉しいけど…。

    • 1 Chip(マルチコア)環境の性能向上

今の公開文章ではそこまでの記述も無いため、推測しかできないがLinux KernelやglibcでHLEによるロック処理(現在のspin Lockやハイブリットの代替として)が採用されれば、若干の性能向上につながるかもしれないと思う。

ただ本命はどっちかというと多コア環境での性能向上だと思う。