福田昭のセミコン業界最前線

サーバー/ハイエンドPCの主記憶を変革するNVDIMM技術

 サーバーやPC、スマートフォンなどのメインメモリ(主記憶)には普通、DRAMを載せる。搭載するDRAMの個数は、用途によって違う。搭載する個数が多い、言い換えるとメインメモリの記憶容量が大きな場合は、数多くのDRAMをDIMM(Dual-Inline Memory Module)と呼ぶモジュールに載せる。DIMMの外形は長方形のボードであり、マザーボードのDIMMコネクタにボードを差し込んで使う。

 DIMMを標準的に採用しているのは、大容量のメインメモリを必要とする、サーバーとハイエンドPC(タワーPCやデスクトップPCなど)である。記憶容量の大きさが限定されるノートPCやスマートフォンなどのモバイル機器では、DIMMを載せていない。載せていたとしても、特殊な小型DIMM(例えばSO-DIMM)になる。

 上記の事柄は、PCユーザーにとっては至極当然のことであり、うっとうしいと思われる読者が少なくないだろう。しかし上記の前提を確認のために提示しておくことが、「DIMMボードが本格的に変わろうとしている未来」を以下に描くために重要なのだ。もうしばらく、ご辛抱されたい。

 そしてDIMMになぜDRAMが搭載されているのか、あるいはメインメモリになぜDRAMが採用されているのか。DRAMは以下のような特長を備えているからだ。すなわち、高速の読み書き、大きな記憶容量、低コスト、の3つである。厳密には、これら3つの特徴のバランスが最も良いメモリがDRAMなのだ。このメリットがあるため、DRAMは1970年代前半に登場してから、ありとあらゆるタイプのコンピュータでメインメモリに採用されるようになった、とも言える。

メインメモリの大容量化によって顕在化するDRAMの弱点

 ただし、DRAMには弱点がないわけではない。おもに2つの弱点がある。「揮発性」と「リフレッシュ」だ。

DRAMのメリットとデメリット

 「揮発性」とは、電源電圧が大きく下がったり、電源供給が止まったりすると、データが失われる性質である。電源供給が止まる原因として想像しやすいのは、停電である。日本では電力事情が良好なのであまり実感がないが、海外では先進国でも停電は日常的な出来事に近い。また「瞬停」と呼ばれる、極めて短い時間だけ瞬時的に電源電圧が低下する現象、あるいは瞬時的に電源供給が停止する現象がしばしば発生する。

 システム外部での突発的な電源異常に対処する標準的な手段は、UPS(無停電電源装置)の導入である。大規模なサーバーシステムでは、UPSの導入は当然のこととなっている。ただし、システム内部での突発的な電源異常には、UPSでは対処できない。電源の供給能力に余裕を持たせることで、ある程度は電源異常の発生を防げる。しかし根本的な対策ではない。

 「リフレッシュ」の問題とは、DRAMは待機時、つまり、メモリアクセスがなくても、一定の電力を消費し続けるということである。メモリセルのデータを一定時間内に書き込み直す動作が、DRAMでは必須だからだ。この書き直し動作を「リフレッシュ」と呼ぶ。

 DRAMはキャパシタを充電することでデータを維持している。キャパシタの充電電荷は充電が完了するともに、かなりの勢いで放電して失われていく。そこで信号電荷が失われる前にDRAMのすべてデータの値を読み直し、データを書き直している(物理的にはキャパシタをフル充電している)。メモリアクセスの有無に関わらず、DRAMではデータの読み書きが発生しているとも言える。

 揮発性とリフレッシュ。この2つの弱点は、メインメモリの記憶容量が急激に大きくなるとともに顕在化し、無視できない問題となる。このため、2013年~2014年ころから、この2つの課題の解決を狙ったDRAMモジュールが製品化され始めた。おもにDDR3 DIMMスロットに対応しており、NANDフラッシュメモリをDIMMボードに載せることで課題に対処しようとした。詳しくは本コラムが2015年9月14日に掲載した記事「NANDフラッシュをDIMMに載せたら」を参照されたい。

DRAMメインメモリのトレンド。DDR世代が交代するごとに、メインメモリの記憶容量が急速に増大している。なお、このトレンドに挙げた記憶容量の数値は最大容量ではなく、表中に記述したDRAMチップ(シリコンダイ当たりの記憶容量)とDIMM当たりのシリコンダイ搭載数、メモリサブシステム当たりのDIMM搭載枚数を仮定して筆者が計算した数値である。実システムの記憶容量は表中の数値を超えていることがあるので、注意されたい

「NVDIMM」の多くはバックアップ機能付きDRAM DIMM

 NANDフラッシュメモリをDIMMボードに載せる製品は、大別すると2種類に分けられる。1つは、DRAM DIMMと見かけはほぼ同じであり、なおかつ、電源異常を検知してDRAMのデータをNANDフラッシュメモリに退避させる機能を備えたDIMMである。DRAMの弱点の1つ、「揮発性」を解決した製品だとも言える。もう1つはDDRタイプのDIMMボードにNANDフラッシュメモリと独自のコントローラを載せた製品である。DRAMが抱えている、もう1つの弱点である「リフレッシュ」と「揮発性」の両方を解決しながら、DRAM DIMMよりもはるかに大きな記憶容量を実現している。

 これら2種類ののDIMM製品の中で、「不揮発性DIMM」や「NVDIMM(Non-Volatile Dual-Inline Memory Module)」などの製品名で販売されてきたのは、前者である。このため、NVDIMMイコール「バックアップ機能付きDRAMモジュール」と考えるPCユーザーは少なくない。

 正確には、「バックアップ機能付きDRAMモジュール」はNVDIMMの中で、「NVDIMM-N」と呼ばれるカテゴリに分類される。「NVDIMM」とサプライヤが呼称しても誤りではないのだが、厳密さには欠けるのでPCユーザーは留意されたい。

「バックアップ機能付きDRAMモジュール」こと「NVDIMM-N」の基本構成。DRAMとNANDフラッシュメモリ、バックアップ電源(スーパーキャパシタ)、専用コントローラなどで構成される
「バックアップ機能付きDRAMモジュール」こと「NVDIMM-N」の製品例。左上がバックアップ電源(スーパーキャパシタ)。ケーブルを介してDIMMボードとバックアップ電源を接続している

AMD CPUとWindows 10 OSがDDR4の「NVDIMM-N」をサポート

 「バックアップ機能付きDRAMモジュール」こと「NVDIMM-N」は最近まで、採用は一部のサーバーにとどまっていた。標準規格が定まっていない、OSのサポートがない、CPUのサポートがない、といった問題を抱えていたからだ。サーバーシステムのメインメモリに導入するには、ハードルが高かった。

 しかし2017年秋の現在、これらの問題は大半が取り除かれつつある。DDR4 DRAMをメインメモリとするシステムでは、「NVDIMM-N」を導入する環境はかなり整ってきたと言える。

 まず標準規格に関しては、大手半導体サプライヤーと大手半導体ユーザーの業界団体JEDECが「DDR4メモリ用NVDIMM-N」の技術仕様(JESD248)を策定し、昨年(2016年)の秋に公開した。「DDR4メモリ用NVDIMM-N」の技術仕様については、本コラムが2015年9月に掲載した記事「不揮発性メモリをDIMMスロットに装着する標準規格「NVDIMM」」に概要が掲載されているので参照されたい。

 OSでは、Linuxからサポートが始まり、Windowsが続いた。2016年1月にリリースされたLinuxカーネル4.4(Lunix Kernel 4.4)と、2016年9月に発売されたWindows Server 2016が、NVDIMM-Nをサポートしている。Windows 10によるサポートも始まる。2017年8月に発表された「Windows 10 Pro for Workstations」(2017年秋にリリース予定)が、NVDIMM-Nをサポートする(記事:4基の物理CPUやNVDIMMに対応する「Windows 10 Pro for Workstations」が今秋登場を参照)。

Lunix Kernel 4.4によるNVDIMM-Nのサポート概要
Windows Server 2016によるNVDIMM-Nのサポート概要。ストレージと同様のブロックアクセスと、DRAMと同様のバイトアクセス(「DAX」と呼んでいる)の両方のモードをサポートしている

 そしてCPUに関しては、AMDが今年(2017年)6月に発表したサーバー向けCPUの「EPYC 7000」ファミリが、DDR4 NVDIMM-Nをサポート対象のメモリに加えた

「NVDIMM-N」のメリットとデメリット

 「バックアップ機能付きDRAMモジュール」こと「NVDIMM-N」のメリットは繰り返しになるが、電源電圧降下や電源の停止(停電)などに対処するコストが下がることだ。

 ここでコストとは、無停電電源装置(UPS)の導入と維持のコストであったり、ダウンタイムの短縮(電源復旧後にストレージからDRAMにデータを書き戻す時間に比べ、NVDIMM-NボードのNANDフラッシュメモリからDRAMにデータを書き戻す時間ははるかに短い)であったりする。データセンターやWeb系システムのようなリアルタイム処理が必要とされるシステムでは、ダウンタイムはすなわち、金額的損失になる。ダウンタイムは極力、短いことが望ましい。

 「NVDIMM-N」デメリットはまず、DIMMのコストが上昇することである。部品コストだけでも、NANDフラッシュメモリとコントローラ、バックアップ電源用スーパーキャパシタのコストが通常のDRAM DIMMに加わる。さらに、既存のアプリケーションはNVDIMM-Nに対応していない。アプリケーションから、NVDIMM-Nの存在を隠ぺいする仕組みが必要になる。

「NVDIMM-N」に期待される応用分野

 これらのメリットとデメリットを勘案し、現在では24時間稼働を前提とする比較的高価なシステムから、導入が始まると期待されている。処理が中断している時間が長引くと金銭的損失が指数関数的に増大するようなシステムでは、主記憶が電源異常に強くなることは、非常に有り難い。連続して生じる膨大なデータを連続して処理しながら分析結果を連続的に出力するリアルタイム分析などは、とくに期待される分野だ。

NVDIMM-Nに期待される応用分野。インメモリ・データベース、従来型データベース(オンディスク・データベース)、エンタープライズ・ストレージ、バーチャライゼーション、高性能コンピューティングなどがある

大規模コンピュータのメモリ階層が変わる

 NVDIMMの登場と普及は、サーバーを始めとする大規模なコンピュータのメモリ/ストレージ階層を変えていく。まとめると「主記憶の階層分化」であり、「メモリとストレージの融合」である。

 メモリ階層の分化は、ストレージが早かった。2011年~2012年ころに登場したSSDは、ストレージの階層化を促した。それまではHDDだけだったのが、SSDはHDDの上層に高速のストレージ階層を形成した。今やSSDはHDD互換という当初の存在を超え、独自の高速インタフェースを備えることで超高速ストレージの位置を盤石なものにしつつある。

最近(2年~3年前)のメモリ階層。ストレージがSSDとHDDに分化した

 これまで主記憶に使われてきたメモリはすべて「高速だが揮発性」というトレードオフを有していた。NVDIMMは、ストレージの備える「不揮発性」を獲得することで、メモリとして扱うことも、ストレージとして扱うこともできる存在となる。

 従来のDRAM DIMMに比べると、NVDIMMの速度は同等あるいは低速であり、DRAM DIMMよりも高速になることはあり得ない。したがって主記憶は近い将来、DRAM DIMMが上層、NVDIMMが下層という2つの階層に分化する可能性が少なくない。

 一方でキャッシュと主記憶の間を見ると、超高速DRAMモジュールの「HBM」が登場し、すでに一部のハイエンドマシンに使われている。HBMはキャッシュではなく、超高速の主記憶である。現在の使われ方は超高速のメモリバッファが多い。

現在のメモリ階層。超高速DRAMモジュールのHBMが導入され始めた

 その後に起こるのが、主記憶におけるHBMとNVDIMMの登場と階層の分化だ。HBMはキャッシュとDRAM DIMMの性能ギャップを埋める。そしてNVDIMMはストレージとDRAM DIMMの性能ギャップを埋める。

近未来におけるメモリ階層。NVDIMMがSSDとDRAM DIMMの間に入る

 さらに将来を見据えると、システムよってはDRAM DIMMの階層がなくなり、主記憶はHBM階層とNVDIMM階層だけで構成される未来が見えてくる。NVDIMM-Nははじまりにすぎない。NVDIMM技術が備える自由度は、DRAM DIMMをすべて置き換えてしまうだけの、潜在力を秘めている。