このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第570回

世界一のスパコン「富岳」が採用したA64FXは、ARMらしくないARMプロセッサー

2020年07月06日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

要素単位で演算の制御を可能にする命令機能
Predicationレジスター

 A64FXはSVEにいろいろとおもしろい実装を行なっている。そもそもSVEで利用するベクトルレジスターはNEONを拡張する形になっており、SVEの演算幅(A64FXなら512bit幅)になっているわけだが、これについて必要ならページフォルトを抑制できるFault-tolerant Speculative Vectorizationや、先ほど話が出てきたPredication操作による、要素単位での演算制御が可能である。

SVEレジスターの構成。水色がもともとのNEONのベクトルレジスターで、グリーンが拡張部分となる

Fault-tolerant Speculative Vectorizationの説明。普通は(1)の実装になるが、Page Faultは処理遅延につながるので、「データがなければ飛ばして良い」という処理なら(2)で構わない。また通常1回Page Faultが発生すれば複数ページを読み出すので、(3)のような実装にすることでPage Faultによる処理の遅れを最小にできる

Predicationレジスターは、要素単位で演算を行なう/行なわないといった制御を可能にするためのもの。当然これはデータ型によって要素数が変わるわけで、最小データ型のINT8にあわせて64bitのBit Fieldになっている

 このPredicationを使った活用例が下の画像で、P1(Predication Register)を利用することでループを回さずに境界条件付きの加算が可能になるとする。

例えばデータの端の部分を扱う場合、端を超えた先は演算対象にしてはいけないが、Predicationを使うことでこれが簡単に記述できることになる

 またSVEレジスターの水平加算が可能になっており、これを利用して大規模な総和を求めることも容易になった。

SVEレジスターの水平加算が可能。それこそAIで言えば畳み込み演算や活性化など、算術演算でもいろいろなところでこうした演算は要求される

大規模な行列の固有値を求めるケースでこの方式は処理性能を上げるのに効きそう

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン