Exascaleとその後のメモリはどうなっていくのかに関して、SC16において「Future of Memory Technology for Exascale and Beyond IV」と題するワークショップが行われた。このワークショップは、以前から行われており、今回は4回目であるのでIVが付いている。

モデレータはMicron TechnologyのRichard Murphy氏。ワークショップでの発表者は、AMDのMike Ignatowski氏、NVIDIAのMichael Carter氏、ARMはWendy Elasser氏と発表されていたのであるが、別の人に代わったようである(ARMの発表者の名前は、録音を何度再生しても聞き取れなかった)。それから、IBMのDoug Joseph氏、ノートルダム大のPeter Kogge教授とMicronのSteve Pawlowski氏である。

ワークショップの発表者達。左端の立っているのがモデレータのMurphy氏。その隣から、AMDのIgnatowski氏、NVIDIAのCarter氏、ARMの発表者、IBMのJoseph氏、ノートルダム大のKogge教授、MicronのPawlowski氏 (このレポートのすべての図は、ワークショップでの発表スライドを撮影したもの)

Ignatowski氏は、DRAMやNANDフラッシュのスケーリングや多層化などはほとんどやり尽くされており、今後、大きな改善は期待できないという。また、HDDのために作られたSASやSATAというインタフェースも賞味期限切れである。そして、DIMMも電力を消費しすぎる時代遅れの技術であるという。

そして、将来性のある技術としては、DRAMとNVRAMを組み合わせるNVDIMM-P、HPEが主導するGen-Z、PCIe4.0の上にコヒーレンシを実現するCCIX、IBMが主導するコヒーレントなOpenCAPIを挙げた。

さらに、Exascaleを実現する上で重要なこととして、最適化されたヘテロジニアスなコンピュートエレメント、メモリとコンピュートの物理的な密結合とデータのメモリ上のローカリティを挙げた。

ヘテロジニアスなコンピュート、それと密に結合されたメモリ。加えて、データ局所性の管理が重要

そして、Exascaleのシステムのイメージとして、プロセサ、GPU、他のアクセラレータ、FPGAなどのチップを3D積層したコンピュートスタックとスタックされたメモリをインタポーザに搭載して、高速の新規なインタコネクトで接続するという図を示した。

続いてNVIDIAのCarter氏が登壇し、最初に、最も効率の高いスパコンであるNVIDIAのDGX SATURNVを紹介した。SATURNVは、最もエネルギー効率が高いHBM2を使って、764TB/sのメモリバンド幅を32kWで実現している。

しかし、Exascaleスパコンでは256PB/sのバンド幅を約4000kWのDRAM電力で実現する必要があり、そのためには、HBM2に比べてエネルギー効率を2.7倍に改善する必要があるという。

Green500 第1位のNVIDIAのDGX SATURNVは、HBM2を使い764TB/sのメモリバンド幅を約32kWで実現している

また、SATRUNVに使用されているP100 GPUは、1チップで3840個の演算ユニットを持ち、12万2880スレッドを並列に実行する。このように多数のスレッドを並列に実行するためには、メモリ側も並列度を高める必要がある。

P100 GPUは3840個の演算ユニットを持ち、12万2880スレッドを並列に実行する。このような実行を支えるには、メモリ側ももっと並列度が必要

HBM2は4個で32チャネルを持っており、各チャネルは16バンクに分割されているが、ワープ当たりにすると0.13バンクしか無く、スレッドあたりにすると0.004バンクしかない。したがって、HMB2でも、スレッドごとに異なるアドレスをアクセスするというメモリアクセスには大きな制約がある。

HBM2は32チャネル×16バンクを持つが、ワープ当たりでも0.13バンクで、スレッドあたりでは0.004バンクにしかならない

この問題を軽減するために、細粒度DRAMを提案する。DRAMチップ1個を32個の細粒度のDRAM領域に分割し、並列度を高める。それぞれの領域は256行と小さくなるので、グランドを参照点とする信号伝送を行う。この方式は、電源を参照点とする現在の方式より方式よりも伝送特性が良く、高速、低電力で動作し、2pJ/bitでアクセスできる。

DRAMを32個の独立に動作できる領域に分割して並列度を高める。そして、GNDを参照点とするGRS伝送で高速、低電力化して、2pJ/bitを実現する

次のARMの発表者は、データの移動は、エネルギー、レイテンシ、バンド幅の点でコストが高い処理であると指摘し、次の図の上側のグラフに見られるように、10nmプロセスのチップでは、計算に使われるエネルギーは10%以下で、大分部のエネルギーはインタコネクトで消費されるという。

さらに、DDRのバーストでアクセスしたデータの塊の一部しか使っておらず、多くのデータが読み捨てられており、ムダなデータ移動になっている。

10nmテクノロジでは、90%以上のエネルギーがデータ移動に使われている。また、バーストで多くのデータを読んでくるが、その多くのデータが使われず、ムダなデータ移動になっている

プログラムのムダな命令実行を省くツールは多いが、メモリアクセスの最適化はあまり行われていない。次の左側の例は、クリティカルセクションのアクセスをmutexを使って排他アクセスにしているが、これを右のようにクリティカルな変数xをatomicと宣言できれば、ずっと効率の良い処理ができる。しかし、このような最適化を行うツールが無い。

メモリアクセスのムダを省く例。このような最適化を行うツールが無い

データを動かして演算器のところまで持ってくるのは、大きなエネルギーが必要で効率が悪い。データのあるところで計算を行なうコンピュート・イン・メモリにすれば、データ移動のムダを省ける。具体的には、次の図のように、SSD、NVRAM、DRAM、HBMなどのCPUチップ外のメモリと、オンチップのL2キャッシュに黄色で示したARMコアを付けて処理を行わせることでデータを移動しないで処理ができる。ただし、このようなハードウェアをどのようにプログラムするかは問題で、特にアドレス変換をどうするかは研究が必要と言う。

黄色のARMコアをL2キャッシュ以下のメモリやストレージに置いて、メモリの中で計算処理を行う。プログラミングモデルに関しては、ほぼ解決したが、アドレス変換についてはイノベーションが必要

また、深いメモリ階層がプログラミングを難しくしており、階層を隠すことが重要との指摘があったが、どのように実現するかについては、示されなかった。