追加された AVX-512 命令

特集

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Additional AVX-512 instructions」 (https://software.intel.com/en-us/blogs/additional-avx-512-instructions) の日本語参考訳です。



12286799James Reinders
2014 年 7 月 17 日

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX2)

最新の「Intel® Architecture Instruction Set Extensions Programming Reference (インテル® アーキテクチャー命令セット拡張プログラミング・リファレンス)」(https://software.intel.com/sites/default/files/managed/c6/a9/319433-020.pdf) には、インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 命令の定義が掲載されています。

昨年、私のブログ「first blog about Intel® AVX-512」(https://software.intel.com/en-us/blogs/2013/avx-512-instructions) で紹介したように、コード名 Knights Landing として知られる、インテル® AVX-512 は、将来のインテル® Xeon Phi™ プロセッサーとコプロセッサーで実装されます。

また、インテル® AVX-512 は、Knights Landing が発表された後にインテル® Xeon® プロセッサーでサポートされることがコミットされています。これらの追加命令は、すでに公開されている大部分のインテル® AVX-512 命令とともにプロセッサー発表時に実装されます。

これらの新しい命令は、インテル® AVX-512 の一部として有益な操作を可能にします。命令は、2 つのグループに分類できます。1 つのグループは、バイトおよびワード命令として知られる、バイトとワード(8 ビットと 16 ビット)操作を行う命令で、AVX512BW CPUID flag によって整数演算を強化します。これらが、マスクレジスター中のすべての 64 ビットに利用できるのは、注目に値します。もう 1 つのグループは、ダブルワードおよびクワッドワード命令として知られる、ダブルワードとクワッドワード(32 ビットと 64 ビット)操作を行う命令で、AVX512QD CPUID flag によって整数演算と浮動小数点演算を強化します。

ほとんどの AVX-512 命令は、512 ビットだけではなく、128 や 256 ビットを操作するベクトル長の拡張機能を提供します。ベクトル長の拡張機能は、現在ほとんどの基本命令、新しいバイト、ワード、ダブルワード、そしてクワッドワード命令だけでなく競合検出命令に適用されます。これら AVX-512 のベクトル長拡張は、AVX512VL CPUID flag として表記されます。ベクトル長の拡張機能を利用することで、ほとんどの AVX-512 操作は、XMM(128 ビット、SSE)レジスターと YMM(256 ビット、AVX)レジスターも同様に操作することが可能になります。ベクトル長の拡張機能を使用すると、マスクレジスターの使用とレジスターの 16 .. 31 ビットへのアクセスを含む EVEX エンコード機能を、ZMM レジスターだけでなく XMM と YMM レジスターに適用できます。

製品化前のテストのためのエミュレーション

インテル® Software Development Emulator は、これらの新しいインテル® AVX-512 命令を含むテスト向けのサポート機能が拡張されており、すぐに利用できます。http://www.intel.com/software/sde から入手してください。

インテル® AVX-512 命令ファミリー

インテル® AVX-512 基本命令は、インテル® AVX-512 の全ての実装に含まれます。インテル® AVX-512 の競合検出命令は、オプションの拡張として文書化されていますが、コンパイラーのベクトル化にとって、インテル® AVX-512 をサポートするインテル® Xeon® プロセッサーに含まれることは、非常に価値があることが証明されています。これは、基本命令と競合検出命令の両方が、将来のインテル® Xeon Phi™ コプロセッサーとプロセッサーおよびインテル® Xeon® プロセッサーのインテル® AVX-512 サポートの一部になるでしょう。

Knights Landing は、インテル® AVX-512 の指数および逆数命令と、インテル® AVX-512 プリフェッチ命令をサポートします。インテル® AVX-512 を搭載する最初のインテル® Xeon® プロセッサーは、インテル® AVX-512 ダブルワード&クワッドワード命令、インテル® AVX-512 バイト&ワード命令およびインテル® AVX-512 ベクトル長拡張をサポートします。Knights Landing の後の将来のインテル® Xeon Phi™ コプロセサーとプロセッサーは、Knights Landing でサポートされる機能(基本命令、競合検出命令、指数&逆数命令、およびプリフェッチ命令)を維持しながら、追加のインテル® AVX-512 命令を提供しなければいけません。また、インテル® Xeon® プロセッサー・ファミリーでインテル® AVX-512 命令がサポートされる時も同様に、少なくとも基本命令、基本命令、競合検出命令、バイト&ワード命令、ダブルワード&クワッドワード命令、そしてインテル® AVX-512 ベクトル長拡張が提供されている必要があります。各ファミリーに対し、これらのベースラインを想定して、コンパイラーの設計を簡素化する必要があります。

インテル® AVX-512 サポート

これら追加のインテル® AVX-512 命令の詳細情報の事前提供は、製品が登場するまでにツール、アプリケーション、そしてオペレーティング・システムにおけるサポートを有効にするのを支援します。私たちは、サポートの導入を支援するため、オープンソース・プロジェクト、アプリケーション提供者、およびツールベンダーと協業しています。インテル® コンパイラー、ライブラリー、そして解析ツールは、今日のインテル® AVX-512 を強力にサポートしていますが、2014 年 11 月に、これらの追加命令をサポートが予定されています。

インテル® AVX-512 ドキュメント

Intel® Architecture Instruction Set Extensions Programming Reference (https://software.intel.com/sites/default/files/managed/c6/a9/319433-020.pdf) に記載されています。2-7 章に、インテル AVX-512 の詳細があります。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました