アイコン 「AVXをどう使えばいいの?」「使うべきじゃない」
Intelは、2010年にコードネーム「Sandy Bridge」において、x86プラットフォームに「YMMレジスタ」と呼ばれる256bitのレジスタを新設し、それに対するSIMD命令群を追加することを発表しました。これを「Intel AVX(Advanced Vector Extensions)」と呼んでいます。
Agner Fogは、AVXにおいて「XSAVE」「XRESTOR」という新しいレジスタ退避命令が追加されるようであるが、ドライバ開発者はどうやってこのレジスタを使えばいいの? と尋ねました。それに対してArjan van de Venは、「使うべきじゃないよ。SSE(注)を使うべきじゃないのと同じ理由でね」と答えました。
注:SSE(Streaming SIMD Extensions)とは、Pentium IIIから搭載されているSIMD拡張命令セットのこと。SSE(無印)からSSE4まであるが、ArjanはXMMレジスタ(SSEレジスタ)を使う命令全般を「SSE」とひとくくりにしています。
Andi Kleenはさらに、「まず、ドライバがカーネルインターフェイスを使わずに勝手にXSAVE、XRESTORを使った場合はカーネルが死んでしまう。決してやってはいけない。カーネルインターフェイスを使うべきだ。カーネル本体のコードは2.6.27で入るよ。でもFPUやSSEなどと同じで、使用されるときだけLazyにレジスタ退避を行う仕様になるので、ほとんどのドライバでは使うと性能が劣化するだろう」と補足しています。
2010年に登場予定の機能が、パフォーマンス得失まで含めてすでに議論がされていることにちょっと驚いてしまいますね
はあ。。。
いままで適当にgnubgをbuildしていたけど、SSE関係をチェックしてちゃんとbuildされているか検証しよう。また仕事が増えた。あとそれからasmを生でいじるのもありだな。かなりしっかりしたテストsetを用意する必要があるが。
0 件のコメント:
コメントを投稿