ISC 2015においてHPC向けのメモリとシステムはどうなるのかというセッションがあり、カーネギーメロン大学、Micron Technology、Samsung Electronicsの3者から発表が行われた。

メモリシステムの設計を考え直す

カーネギーメロン大のOnur Mutlu准教授は、「メモリシステムの設計を考え直す」というタイトルで発表を行った。

図6.1 メモリシステムについて発表するカーネギーメロン大のMutlu先生 (以下の図の出典は、ISC 20115でのMutlu先生の発表スライド)

メモリ容量、バンド幅はプロセサ性能の向上に追いついていない

マルチコアプロセサのコア数は2年で2倍に増えるのに、メモリ容量が倍増するには3年程度を要しており、コアあたりのメモリ量は2年ごとに30%減少している。一方、アプリケーションの方はより多くのデータを扱うようになってきており、メモリの不足感が強まってきている。

図6.2 メモリシステムの容量ギャップ。プロセサコア数は2年で倍増、メモリ容量は倍増に3年かかる。コアあたりのバンド幅はこれよりギャップが大きい

CPUチップの外部のメモリ階層はシステム全体の40%~50%の電力を消費しており、メインメモリの消費電力はシステム設計上、大きな懸念事項となっている。また、DRAMの微細化は限界に近付いており、今後、微細化による大きな改善が難しいという問題がある。

微細化の副作用「Row Hammer」

微細化の副作用として、2014年にMutlu先生のグループが明らかにしたのが「Row Hammer」という現象である。図6.3に示すように、メモリアレイの1つの行に隣接した行のワード線を選択、非選択と切り替えてその電位を変化させると、隣接する行のワード線にそれがノイズとして載り、読み出しを行っていない隣接行のビットが化けるという現象である。昔はワード線やビット線の間の距離が長くて問題にならなかったのであるが、微細化で配線の距離が近くなり、線の間の寄生容量が大きくなったことで発生するようになったと考えられる。

図6.3 赤のHammer Rowの電位を繰り返し変化させると、隣接するVictim Rowにノイズが載って、記憶されている情報が化けてしまう

同じHammer Rowに繰り返しアクセスするプログラムを連続して実行することにより、2GBのDRAMモジュールを使ったIvy BridgeやHaswellのシステムでは20Kビット以上のビット反転を観測したと報告されている。また、当然、製造ロットなどでバラつきはあるが、3社のDRAMを使ったモジュールすべてで、エラーが起こったとのことであり、特定のチップやメーカーの問題ではなく、 DRAM微細化による根本的な問題である。ビット化けが起こるとシステムエラーを引き起こす。また、このビット化けを利用してページテーブルを書き換えて、カーネルを乗っ取ることができたという報告もあり、セキュリティの面でも重要な問題である。

図6.4 実システムでの観測されたエラー数。Ivy BridgeやHaswellでは20Kビット以上の反転が観測され、信頼性やセキュリティの面で重大な問題

問題の解決:その1

Row Hammerのような問題を解決する方法はいくつか考えられる。その第1はDRAMを直すことである。NAND Flashでは、Row Hammerのような干渉の問題は以前から顕著になっているが、NANDの特性に合わせたインテリジェントなコントローラを開発して、問題が顕在化しないようにしている。これと同様に、DRAMとそれに対応したコントローラを開発するというシステムのコデザインを行えば良い。もちろん、DRAMのアーキテクチャなどを変えて問題を解決する方法もあり得る。

図6.5 解1:DRAMの問題を直す

問題の解決:その2

DRAMの微細化の行き詰まりを解決する方法としては、Resistive Memory(ReRAM)を使うことが考えられる。Resistive Memoryは、ITRSのロードマップでは9nm程度まで微細化でき、マルチビットセルも可能であるので、DRAMより高い記憶密度が期待できると評価されている。

しかし、まだ発展途上のメモリであり、本当に、DRAMを超えることができるかは未知数である。

図6.6 解2:新メモリテクノロジを使う。Resistive MemoryはDRAMより高い記憶密度が期待される

問題の解決:その3

また、図6.7に示すように、DRAMと他のテクノロジのメモリを組み合わせるという解もある。そして、ハードとソフトが協調して、どのメモリを割り当てるか、データをどこに移動するかを管理する。

図6.7 解3:ハイブリッドメモリシステムを作り、ハードとソフトで最適な方を選択して使う

複数のテクノロジのメモリを使ってメモリの耐エラー性を改善する場合、一方のメモリは信頼度の高いメモリを使い、他方のメモリはエラーに対して特別に配慮しないローコストのメモリを使う。

そして、重要なデータは信頼度の高いメモリに格納し、無くなってもあまり困らないデータはコストが安いメモリに格納する。マイクロソフトのWebサーチのワークロードでは、このやり方でコストを4.7%下げ、コストの安いメモリを使っているにも拘わらず、99.90%のアベイラビリティを達成したと報告されている。

図6.8 高信頼度のメモリと低コストメモリを組み合わせ、エラーが許容できるデータは低コストメモリに格納する