間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

Haswell世代のCPUにエラッタが見つかる、Haswellの新機能「TSX」を無効化へ

http://techreport.com/news/26911/errata-prompts-intel-to-disable-tsx-in-haswell-early-broadwell-cpus
TSXとは
http://ascii.jp/elem/000/000/726/726151/

TSXの基本的な動作は、トランザクション処理にある
(中略)
 TSXでは「コンフリクト」のチェックを自動で行なう。TSXの機能のひとつである「Restricted Transactional Memory」(RTM)には、トランザクションの開始と終了を示す「XBEGIN」「XEND」という命令がある。この命令で挟まれている部分(トランザクション対象ルーチン)では、TSXトランザクション機能が働く。トランザクションの開始となるXBEGIN命令を実行すると、その時点でのCPUの内部状態がCPU内の特別な場所に保存される
(中略)

 トランザクション対象ルーチンからのメモリー読み出しは、コンフリクトの監視対象となる。これには1次(L1)キャッシュを使う(メモリーからの読み込みは必ず1次キャッシュにキャッシュされる)。同様に、メモリーへの書き込みは1次キャッシュのテンポラリー(一時利用)領域に置かれて、トランザクション処理が終わるまで書き込みを保留される。

 この最中に、読み出したメモリーアドレスを他のスレッドが書き込むと(コンフリクトの発生)、トランザクション開始時に指定したアボート・アドレスにあるプログラム(アボート・ルーチン)に制御が移る。
(中略)
 TSXでは、コンフリクトが発生しなければアボートも発生せず、そのままXENDで1次キャッシュに保留されていたメモリー内容がコミットされ書き込まれる。「コンフリクトが生じなければ、そのまま処理を続ける」というやり方を、「楽観的な実行」と呼ぶ。実際の処理では読み書きするメモリーは多数あるし、広い範囲をロックして利用することになるため、常に衝突が起きるとは限らない。

めも、未検証
http://it.slashdot.jp/comments.pl?sid=638549&cid=2657407

たとえば linux だと、カーネルは 3.13 あたりから、glibcは2.18から内部でTSXを使ってます。
glibc-2.18は2013年8月リリースですので、ここ一年以内にリリースされた新しめのLinuxディストリビューションは影響を受ける可能性が高いです。

http://it.slashdot.jp/comments.pl?sid=638549&cid=2657715

そもそもTSXは特権命令じゃないのでカーネルは関係ないです。あと少なくともFedora20はTSXを有効にしています

めも、未検証

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。