本研究では不揮発性メモリ(NVM)をプログラミング言語に統合されたかたちで利用できるようにすることを目的として,プログラミングモデル、プログラム実行環境が提供すべきAPI、およびそのAPIを持つプログラム実行環境の構成法を研究した。当初の計画ではJavaのようなマネージド言語を対象に、NVMを永続オブジェクトとして抽象化し、それを低いオーバヘッドで実現する仮想機械の構成法だけを研究することとしていた。しかし、研究を進める中でNVM上のデータ構造を矛盾なく並行アクセスするトランザクション処理の研究が必要になり、それを応用したアンマネージド言語であるC++言語でライブラリの研究も行った。さらに、そこから定期的にNVM上にデータのスナップショットをとるチェックポインティングライブラリの研究にも派生した。それぞれの研究の成果は以下の通りである。 (1) マネージド言語のためのNVMを使った永続オブジェクトの研究では、永続オブジェクトで構成されるデータ構造全体ををDRAMとNVMの両方に複製して同じ内容を維持するアルゴリズムを開発し、それを製品レベルのJava仮想機械であるOpen JDKに実装した。この方法では頻繁に行われるデータの読み出しで低速なNVMへのアクセスを伴わないという利点がある。 (2) C++向けの永続トランザクションライブラリの研究でも、データ構造をNVMとDRAMの両方に複製するアルゴリズムを研究した。同様の方式の既存研究を改良し、既存手法に比べてNVMへの書き込みを抑えたライブラリを開発した。 (3) NVMを使ったC++向けチェックポインティグライブライの研究では、スナップショットを取る際にユーザスレッドを停止する必要がないアルゴリズムを開発している。データレースがないプログラムに対しては、予備調査において高い読み取り性能と安定したレスポンス時間が観測された。
|