Intelは「APX」と呼ばれる拡張を新たに発表しました。
APX
APXは「Advanced Performance Extensions」の略です。命令ではなく新たな拡張です。
APXを簡単に説明するとアクセスできるレジスタの数を増やした事によってシリコン面積やコアの消費電力を大幅に増やすことなく、様々なワークロードで効率的な性能向上を実現するというものです。
具体的には、APXは汎用レジスタ(GPR)の数を16から32に倍増させる(R16~R31が追加された)ことで、コンパイラがより多くの値をレジスタに保持できるようになり、Intel 64向けにコンパイルされた同一のコードでもロードが10%、ストアが20%以上少なくなると説明しています。
これはx86(というかCISCというか)の特有の性格を活用しており、可変長命令エンコードを応用した仕組みになっており、ArmやRISC-Vでは真似出来ないようなものとなっています。
コンパイラの有効化は簡単で、新しくREX2プレフィックスが提供され、これを通じて対応できます。コードの書き換えは必要なく、再度コンパイルするだけで利用可能だそうです。AVX命令では、既存のEVEXプレフィックスで、新しいビットにアクセス出来るようです。またAVX10はAPXを前提としている模様です。
新しいプレフィックスによって平均命令長は増加するものの、APXデコンパイルされたコードの命令は10%減少するため、コード密度は変わらないとしています。
更に、新たなGPRではXSAVE対応し、コンテキストスイッチを行う場合、自動的にセーブとリストアが行われるそうです。また、新しいGPRはABIの中で揮発性として定義されており、既存のバイナリとの相互運用もできるとしています。
これによってレジスタ内で完結する処理も増えるため性能が向上することが期待できます。
私自身が若干影響ある分野のないようなので注視しまたなにかあれば更新します。