このエントリは以下の一連のエントリをベースにしたものです。
This entry is based on the following ones written by Mario Wolczko (Architect, Oracle Labs) and Bill Bridge (Software Architect, Oracle).
- Part 1: Introducing NVM (このエントリ)
https://medium.com/@mwolczko/non-volatile-memory-and-java-7ba80f1e730c - Part 2: The view from software
https://medium.com/@mwolczko/non-volatile-memory-and-java-part-2-c15954c04e11 - Part 3: Benefits and challenges of Non-Volatile RAM
https://medium.com/@mwolczko/non-volatile-memory-and-java-part-3-ebe305ef4bc4 - Part 4: Java and non-volatility
https://medium.com/@mwolczko/non-volatile-memory-and-java-part-4-17f7a7f78f1e
また、筆者がこのテーマで語った際のスライド、動画は以下からご覧頂けます。
PROGRAMMING LANGUAGE IMPLEMENTATION SUMMER SCHOOL 2019
The Coming Persistence Apocalypse
https://pliss2019.github.io/mario_wolczko_slides.pdf
Part 1: Introducing NVM
Non-volatile Random Access Memory (NVRAM、不揮発性ランダムアクセスメモリ) がコンピューティングの主流になってきました。
Intel announces Optane DC Persistent Memory DIMMs
https://www.techspot.com/news/79483-intel-announces-optane-dc-persistent-memory-dimms.html
これは非常に破壊的で、DRAM(Dynamic Random Access Memory、動的ランダムアクセスメモリ)とフラッシュストレージの間の中間レベルが新たにもたらされることで、メモリ階層の経済性を変えることになるでしょう。ただ、完全に新しいテクノロジーを活用するには、ソフトウェアの設計と作成に幅広い変更が必要になるでしょう。そうであるにもかかわらず、プログラマー(およびそのマネージャ)サイドのテクノロジーの認知度は驚くほど低いため、プログラマが変化に対応するために必要なテクニックやツールの開発において、(パラダイムシフトの大きさに比較して)学界での活動が比較的少ない状況にあります。
このエントリでは、JavaエコシステムでのNVRAMの考えられる影響を説明します。Javaは最も幅広く利用されているプログラミング言語であり、数百万人のJava開発者がおり、数十億行のJavaコードが日常的に使われています。大きな流れは以下の通りです。
- リリースされたIntelのハードウェアとソフトウェアインターフェースについて
- この組み合わせがソフトウェアにもたらす影響(オポチュニティと課題を含む)
- Javaへの影響
- プラットフォームがテクノロジーに対処する際に直面している取り得る選択肢
- これまでの提案でそれらの選択肢をどのように解決したか
- Oracle Labsで追求してきたアイデアとその根底にある理論的根拠
コンセプトと文言を必要に応じて説明することで、典型的なJavaプログラマ(およびそのマネージャ)が内容を理解できるように努めました。
Introduction
ほとんどの方はご存知でしょうが、コンピュータは電源がOffになるとメインメモリの内容は消えてなくなります(セミコンダクターメモリ以前はフェライトコア記憶装置で、これもまた不揮発性でしたが、誰かがこの特性を利用したのか、利用したとしてどのように利用したのかはわかりません)。しかし、その常識は変わろうとしています。Intelは先ごろOptane DC Persistent Memoryというブランドで、不揮発性DIMM(NV-DIMM)をリリースしました。基盤となる回路技術は、3D XPointというブランドで知られています。3D XPointチップを使用したSSDは、2017年半ばから出荷されており、現在、コンピュータにこれらのデバイスをNVRAMとして接続できます。
Intel® Optane™ Technology for Data Centers
https://www.intel.com/content/www/us/en/architecture-and-technology/optane-technology/optane-for-data-centers.html
3D XPoint
https://en.wikipedia.org/wiki/3D_XPoint
他社も同じ目標に向けて取り組んでおり、今後数年のうちに種々の競合技術や製品が登場することになるでしょう。しかしIntelは、この分野への参入により、新たな正当性と重要性が生まれました。
What we know about Intel’s hardware
IntelとそのテクノロジーパートナーであるMicronが開発したテクノロジーの詳細の多くはまだ明確ではなく、この記事を執筆した時点(2019年4月)では、以下に記載の詳細はIntelの発表やメディアによる記事、UCSDの論文をベースにしています。筆者もまだ動作している有効なシステムにアクセスできていません。
3D XPoint™ Technology
https://www.micron.com/products/advanced-solutions/3d-xpoint-technology
Basic Performance Measurements of the Intel Optane DC Persistent Memory Module
https://arxiv.org/abs/1903.05714
バイトアドレス指定が可能なこと、不揮発性に加えて、以下の特長があります。
- 記録密度はDRAMよりも大幅に高くなっています。最初のPersistent Memory Module(PMM)のサイズは、128Gbパーツを使用し128、256、および512GBです。これに対して、最大のDRAM DIMMは現在、16Gbパーツを使用し256GBです。
Intel Launches Optane DIMMs Up To 512GB: Apache Pass Is Here!
https://www.anandtech.com/show/12828/intel-launches-optane-dimms-up-to-512gb-apache-pass-is-here
Module | Samsung Semiconductor Global Website
https://www.samsung.com/semiconductor/dram/module/ - bitあたりのコストはDRAMよりも大幅に低いものの、フラッシュよりも大幅に高く、初期のビットあたりの価格は、DRAMの価格の約20%(大容量モジュールの場合は最大40%ですが、これは今後低下する可能性があります)になるようです。DRAMの価格も現在、最近の高値から下落しているため、この比率はしばらく変動するでしょう。
Intel Optane DIMM Pricing: $695 for 128GB, $2595 for 256GB, $7816 for 512GB (Update)
https://www.tomshardware.co.uk/intel-optane-dimm-pricing-performance,news-60320.html
God DRAM, that’s a big price drop: Memory down 30 per cent, claim industry watchers
https://www.theregister.co.uk/2019/03/07/dram_price_drop/ - 読み取りおよび書き込みのレイテンシはDRAMよりも高いですが、1桁以内であるため、フラッシュよりもはるかに(数桁)低くなります。 Intelからのデータは見ていませんが、UCSDの調査で確認されています:ランダムな読み取りレイテンシは約300ns(DRAMの場合は約80ns)であり、順次読み取りレイテンシは約170 nsです。書き込みレイテンシはOptaneの場合は94ns、DRAMの場合は86nsと拮抗しています(詳細は後述)。
Basic Performance Measurements of the Intel Optane DC Persistent Memory Module
https://arxiv.org/abs/1903.05714 - (先ほどのUCSDの論文によると)読み取り帯域幅はDRAMの1/3ほどでピークに到達しますが、書き込み帯域幅はDRAMの約1/6です。
- 耐久性はフラッシュよりもはるかに高いと予想されますが、Intelは耐久性の数値を公式に発表していないため、DRAMにどれだけ近いかはまだ分かりません。初期のマーケティングメッセージでは、Optaneにはフラッシュの1000倍の速度(メディアの相互遅延を意味します)と耐久性、DRAMより10倍の記憶密度が大きいと主張していました。これは、(フラッシュの場合は10⁵、DRAMの場合は10¹⁵以上と比較して)1セルあたり約10⁸のオーダーの書き込みサイクルの耐久性を意味します。簡単な計算により、これで十分であることが確認されています。UCSDの論文によると、256Bブロック(Optaneのネイティブブロックサイズ)に対して1.5GB/sのシングルDIMMピーク書き込み帯域幅で、これは完全なウェアレベリングを想定して、保証された5年間の寿命で約6M書き込み/秒、最大約1Pの書き込み、または128GB DIMMで2M書き込み/ブロックに相当します。
Game-changing Fast Memory Also a Big Deal for Big Data
https://newsroom.intel.com/editorials/3d-xpoint-memory-storage/
DRAMよりもレイテンシが長い(確認が必要ですが、おそらく耐久性が低い)ため、Optaneを使用するシステムにはまだDRAMが含まれています。Optaneをサポートできる新しいシステムもリリースされました。Intelの新しいCascade Lakeアーキテクチャでは、各CPUソケットに2つのメモリコントローラーを介して最大6つのメモリモジュールが接続され、1ソケットあたり最大3.75TB(6×0.5TB PMMおよび6x128GB DIMM)のキャパシティがあります。
Intel Optane DC Persistent Memory (DCPMM) — Population Rules
https://www.intel.com/content/dam/support/us/en/documents/memory-and-storage/data-center-persistent-mem/Population-Configuration.pdf
各PMMには内部間接テーブルがあり、これを使ってCPU物理アドレスを内部アドレスにマッピングします。これを使うことで、各モジュールに対して内部でウェアレベリングと不良ブロック管理を実現できるので(UCSDの論文§2.1.1に記載)、実用的な耐久性が向上するはずです。モジュールやモジュールパーティションを次の2種類のモードの一つで構成できます。Memoryモードでは、同じコントローラにアタッチされているDRAMはキャッシュとして動作しますが、AppDirectモードでは永続メモリにCPUが直接アクセスします。メモリモードは永続化をサポートしないので、ライトバックを強制する方法はないので、いつ更新が永続的になるかを知る方法がありません。それゆえ、このモードについてこれ以後検討するつもりはありません。
このような技術を市場に投入するには、システムアーキテクチャの多くの側面を含むさまざまな開発が必要であり、長年かけて完成しました。その一部について後で説明します。不揮発性回路技術を発明し、ピンに互換性があるDIMMを構築するだけの問題ではありません。これにより、必要なすべてのテクノロジーを管理する業界関係者が多くないという点で、Intelに利点がもたらされますが、欠点もあります。IntelのPMMは他のメーカーのシステムでは動作しませんし、古いIntelハードウェアでも動作しません。不揮発性メモリテクノロジーの複数の提供元が出てからITアーキテクチャにミッションクリティカルな変更を加えたいと思っているエンタープライズの顧客は、競合他社が追いつくのを待つ必要があります。発散を最小限に抑えるため、業界コンソーシアム(SNIA —Storage Networking Industry Association)は、Solid State Storage Initiativeの下でロードマップを作成しています。
Solid State Storage Initiative
https://www.snia.org/forums/sssi
NVRAMテクノロジーを開発中の企業は他にも多数ありますので、複数の供給元が最終的で出てくることには自信を持っていますが、その時期がいつになるのかは予測が難しいところです。例えばNanteroのような企業が自社のテクノロジーはDRAMと同じぐらい高速になると主張しています。速度と耐久性が最終的にDRAM同等もしくはそれを上回るのであれば、全てのDRAMのNVRAMへの置き換えが考えられますが、それほど差し迫ってはいません。しかしながら、DRAMが最終的にNVMに置き換えられた場合、ソフトウェアの構築方法における2ラウンドの混乱を避け、その不測の事態を計画することができれば良いでしょう。
Nantero
http://nantero.com/