2016において、富士通はポスト京コンピュータのプロセサをARMアーキテクチャにすることを発表した。Chipsで発表するというアナウンスだけであった。Stephens氏が発表した。SIMD(NEON)命令は12年前のものである。SIMDもその発展形であり、本格的なHPC向けの命令セットにはなっていない。このため、HPC分野向けには、スキャッタ/ギャザーをサポートし、より長いベクトルを扱える命令を追加することが必要と考えたという。Agnostic)プログラミングができるようにすることができるアーキテクチャを考えた。Extension(SVE)」と呼んでいる。SVEでは、32本のベクトルレジスタZ0~Z31とスケーラブルなプレディケートレジスタP0~P15とFFRレジスタ、ベクトル長を指定する3つのZCR_ELxレジスタを追加している。と64/32/16/8bit長の整数を格納することができる。P0~P7レジスタは演算やロードストアの実行を制御するレーンマスク、P8~P15はプレディケートを操作するためのレジスタである。Registerで、最初にフォールトが起こった命令を指すレジスタである。ZCRレジスタは特権レベルごとにレジスタがあり、それぞれのレベルの処理のベクトル長を指定する。SVEでは32本のベクトルレジスタと16本のPレジスタ、それにFFRとZCRというレジスタを追加しているAArch64では、命令語の28:25bitが命令の大きな種別を表している。この部分が0000、0001、0010、0011の4つの命令は現在は未使用であるので、0010をSVE系の命令に割り当てることにする。ARMの64bit命令では、28:25の4bitで第1レベルの命令の区別を行っているが、0000、0001、0010、0011は未使用になっている。この内の0010をSVE命令に使用するそして、命令の中分類には31:29と24の4bitが使われており、SVE系の命令の場合は、次の表のように割り当てる。0000は整数の演算命令、0111は浮動小数点の演算命令と比較命令となっている。100xはギャザー付きの32bitロード命令となっている。HPCでは32bitアーキテクチャは重要ではないので、AArch32へのSVE拡張は行っていない。ビット31:29,24の4ビットでSVEの中の命令種別を指定する。0000は整数演算、0111は浮動小数点演算と比較命令。100xはギャザー付きのロード命令となっているSVEの各命令の詳細やソースやディスティネーションのレジスタ番号の指定に使えるのは、24bitである。データのサイズやプレディケートの指定のビットが必要であるので、2つのソースオペランドと1つのディスティネーションのレジスタの番号を指定するのには24bitでは足りない。このため、大部分のSVE命令では、結果がソース1のレジスタを上書きする2アドレス命令となっている。MOVPRFX命令とADD命令を連続して書くと、実質的に結果を別のレジスタに格納する3アドレス命令として動作するという仕掛けが組み込まれている。京コンピュータのSPARCプロセサでは、このような命令が設けられていたので、この部分は、富士通の貢献の1つではないかと思われる。28※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。HPCへの進出を目論むARMのベクトル命令拡張(前編)このカテゴリーについて京をはじめとする日本勢もTOP500に代表されるランキングの上位に多く入ることで注目を集めるほか、人工知能(AI)やディープラーニングでも活用が進むなど、さまざまな用途で活用されるようになったスーパーコンピュータに関わるホットな話題を詳細な説明付きで紹介します。Corporation。