IT技術についてのトレンドや、ベンダーの戦略についての考察などを書いていきます。

ARMのベクトル拡張「SVE」の可能性とは

»

富士通がARMとの協業で開発したスパコン用CPUの仕様を発表しました。富士通はこの技術を使って、2021年稼働予定の次期「京」で今の最大100倍の処理能力を目指すとされています。

スパコン「京」後継機、100倍の性能に CPUの仕様、富士通が発表

このプロセッサは、ARMアーキテクチャにベクトル処理を拡張するSVE (Scalable Vector Extension) を採用しているということです。このSVE、スパコンのみならずIoTやモバイルデバイスでも大きな効果を持つと考えられ、ARMの今後にとって大きな意味を持つ技術になるのではないかと思います。

computer_supercomputer_red.png

まず最初に ~ ベクトルってなんだ?

ベクトル処理というのは、大量のデータを従来のコンピュータとは桁違いの速度で処理するための仕組みで、昔はスーパーコンピュータの代名詞でした。しかし、ベクトルというのがよくわからん、という方も多いのではないでしょうか。

ベクトルというと、あの矢印を思い浮かべる方も多いと思いますが、検索してみるといろいろな解説があり、さらにわからなくなってしまいますね。コンピュータでベクトルという場合には、「ひとまとまりの(連続した)データ」と理解すれば良いと思います。データをひとつずつではなく、いくつかまとめて計算しようという考え方です。

コンピュータ入門コースなどで説明される、所謂「普通の」コンピュータ(ベクトル型に対してスカラ型とも呼ばれます)は、メモリから命令を読み込んで、次にデータを読み込み、計算をして、結果をメモリに書き込む、という順番で動作をして、ひとつの処理を終えます。しかし、このやり方だと、データが大量になってくると計算時間がめちゃくちゃかかります。

そして、データが大量になりがちな計算分野に、科学技術計算というのがあります。流体シミュレーションや構造解析、気象予測といった分野では、空間や物体をメッシュに切って、各々のポイントでの力のかかり具合などを計算するわけですが、精度を上げようとしてメッシュを細かくすると、指数関数的に取り扱うデータ量が増えてしまいます。こういった計算を先ほどのようにいちいちやっていては、いつまで経っても計算が終りません。ゲームなどでよく使われる3次元グラフィックスの処理も、モデルを3角形のメッシュで構成しており、各点の座標を計算することで移動や回転をさせます。

一方で、こういった計算においては、データは大量ですが、計算の内容は同じ、というケースがよくあります。全てのデータに対して一定の数をかけ算したり、足し算したりするわけです。先ほどの3次元グラフィックスの例で言えば、あるモデルをX軸方向に移動させる場合、各点のX座標に同じ数を加えるという処理になります。

こういった処理を高速に行うための方法のひとつが、計算機を複数台並べて並列処理するというものですが、昔のコンピュータは高価でしたし、たとえ数台並べたとしても効果は知れています。そこで、「CPUにいくつかのデータをまとめて読み込み、一括で処理すれば良いのではないか」というアイデアが生まれました。そのために考え出されたのが、ひとまとまりのデータを格納するための「ベクトルレジスタ」です。スパコンの元祖と呼ばれるCray-1がこのアーキテクチャを採用したのが最初と言われています。(今では超並列処理がスパコンの主流になり、ベクトルの解釈も広くなったりしてこのあたりの定義も複雑化していますが)

ベクトル長とは

Cray-1では64ビット浮動小数点データを64個格納できるベクトルレジスタが8本用意されており、64個のデータを読み込んで一気に計算ができるようになっていました。その後、レジスタをさらに多く持つプロセッサも開発されました(昔、私が関わっていたArdent TITANなどは、64ビットのレジスタが8,192個あり、8,192x1や32x256として利用できるという、今から考えるとかなり頑張った設計になっていました)が、最近ではベクトル長は128ビットくらいで落ち着いているようです。これは、最近のスパコンはマッシブパラレルが主流なため、個々のプロセッサに大量のデータを持つ必要が薄れているからと考えられます。今の京も128ビットのようです。

ベクトル長を変えられるSVE

SVEの最大の特徴は、その名の通り、ベクトルレジスタの長さを変えられることです。これは、プロセッサの設計段階でレジスタ長を選べるということですが、もうひとつ、SVEを採用していれば異なるレジスタ長のプロセッサでも同じプログラム(バイナリ)を実行できるという特徴があります。特に後者は、技術的にはかなり難しそうですが、前者だけでも十分なメリットがあると思います。

ポスト京では、この機能を使ってベクトル長を512ビットに設定しているということです。今よりもデータを大量に読み込んで、一気に計算できるということですね。将来ベクトル長をさらに長くすることもでき、その際にプログラムの書き換えは不要、ということになります。

SVEのもう一つの特徴として、様々な数値フォーマットに対応していることが挙げられます。(これは以前にあったNeon SIMDでも同じですが)科学技術計算で主に使われる64ビット浮動小数点に加え、32/16ビット浮動小数点、64/32/16/8ビット整数もサポートしているのです。以前のブログにも書いたとおり、今流行の機械学習では、ニューラルネットワークを作るための「学習」に16か32ビットの浮動小数点、「推論」には8ビット整数で十分とされているため、推論に特化したプロセッサや、推論メインだが学習も少しできるプロセッサなど、きめ細かい調整が可能になり、製品開発の幅が広がることになるでしょう。

スマホやIoTでも大きなメリット

SVEは、ARM標準の機能として、富士通以外のパートナーも利用可能だということです。そうなると、今のスマホで求められている画像処理や、今後VR/ARで求められる画像処理・3次元グラフィックス・人工知能・4K・データ圧縮、IoTなどなど、これからのプロセッサに求められる様々なビッグデータ処理を高速に、かつ柔軟に行えるようになります。組み込み機器やモバイルデバイスは、用途を限定して高性能と省電力性能を両立しなければならない上、パラレル化にも限界があるでしょうから、ベクトル長を調整することで最適なパフォーマンスを追求できるSVEは、スパコン以上に合っているのかも知れません。しかもベクトル長にかかわらずバイナリ互換ですから、同じソフトウェアが使え、エントリー機は128ビット長で上位機を256ビット長にするなどといったファミリー内での差別化にも使えるでしょう。

IoT用の極小デバイスから世界最高速のスパコンまでを、ひとつのアーキテクチャでカバーできるということは、ARMプロセッサの活用の可能性を大きく広げる、重要な技術と言って良いでしょう。

Comment(0)

コメント

コメントを投稿する