OpenNVRAM is dedicated to provide the resources for developing the softwares for byte-addressable NVRAM. You are welcome to donate your contribution. 

NVRAM Hardware Platform

NVM-H2 platform is commercially available. Please contact CRZ Technology ( for further detail.

TUNA: The Platform for Emulating NVM [3, 5][19-22]

TUNA board is a hardware platform to test, verify and project the performance of the software for NVRAM [3]. It is ARM based platform. The TUNA platform emulates NVRAM via providing separate power source to a collection of DRAM chips [5]. TUNA platform provides 15 levels of varying latency of emulated NVRAM for load and store.


NVM-H2 has 1 GByte of DRAM for main memory and 8 GByte of emulated NVRAM. Android is ported.


  • Xilinx Zynq-7000 SoC
    • Dual ARM Cortex-A9 1GHz
    • NEON DSP co-processor for each core
    • 350K LCs
  • Memory
    • Two 128Mb Quad-SPI(QSPI) Flash Memories
    • For NVM: 8GB PL DDR3-SDRAM

TUNA Board Tutorial

Board Systems for TUNA v2.0 Board

TUNA board system is a reference system package, including board support package and OS, to run the TUNA platform. It has three key functions, (i) NVM latency emulation, (ii) NVM nonvolatility emulation, and (iii) HDMI. It also supports two root file systems, Petalinux or Ubuntu Desktop, which can be selected by the user. The board support package includes pre-built images and a Vivado project (2015.2.1). For more details on the TUNA platform, refer to the provided user guide.

TUNA2 user manual -> Usage for Pre-built system package

zc706.tar -> Pre-built system package for zc706 board

TUNA2.tar -> Pre-built system package for TUNA v2.0 board

TUNA2_source.tar.gz -> Source code for TUNA v2.0 board system is maintained by Center for File and Storage Systems Research at Hanyang University. Followings are the list of contributors. You are welcome to join us.

NVRAM Open Source

Github link:

We developed a heap-based persistent object store, HEAPO [1], to manage persistent objects in byte-addressable NVRAM [5]. HEAPO defines its own persistent heap layout, the persistent object format, name space organization, object sharing and protection mechanism, and undo-only log based crash recovery, all of which are effectively tailored for NVRAM. We put our effort into developing lightweight and flexible layer to exploit the DRAM-like access latency of NVRAM. To address this objective, we developed (i) native management layer for NVRAM to eliminate redundancy between in-core and on-disk copy of the metadata, (ii) expandable object format, (iii) burst trie based global name space with local name space caching, (iv) static address binding, and (v) minimal logging for undo-only crash recovery. Following papers exploits HEAPO [4][6-13]

Github link:

We developed nvramdisk [2], a transactional block device driver for byte-addressable NVRAM. nvramdisk effectively addresses the key technical challenges in using a section of NVRAM as a transactional persistent block device [4]. nvramdisk adopts (i) shadow block, (ii) mapping table journaling, and (iii) type-dependent ordering guarantee to provide atomicity, consistency, integrity and durability in write operations on nvramdisk imposed block device. We fully implemented nvramdisk device driver on Linux OS and port it on the desktop computer as well as Android smartphones. In memcachedb, locating the database table in nvramdisk brings 1.9 insertions/sec and updates/sec performance gain against locating the database table in a high-end SSD (FusionIO ioDrive2). SQLite performance increases by 2.9, from 743 ins/sec to 2184 ins/sec, in smartphone(Samsung Galaxy S4) and 15, from 730 ins/sec to 12390 ins/sec in PC. nvramdisk yields 26% higher random write performance against Persistent Memory Block Driver. The overhead of supporting transaction accompanies 6% performance penalty in memcachedb operations.

Github link:

Web browsers reduce rendering time of a web page via caching the object in the DRAM memory. However, since DRAM memory is volatile, all stored objects in the cache area are cleared when the browser terminates or the power of the computing device is turned off. When a user visits the same site again, the browser has to cache the objects from the scratch.  We developed the NVRAM-aware web browser to address the issue.


Github link:

FSL enables persistent computing in which the state of the system remains intact even after the power is turned off and exploits this to significantly improve booting time even compared to conventional power management methods such as ‘sleep mode’ and ‘hibernation mode’. To show the effectiveness of FSL, we implement FSL on an in-house embedded test board, which we refer to as the TUNA board, equipped with pseudo new memory.


[1] Taeho Hwang, Jaemin Jung, and Youjip Won, “HEAPO: Heap-based Persistent Object Store”ACM Transactions on Storage, Vol. 11, Issue 1, Dec. 2014. DOI:

[2] Jaemin Jung and Youjip Won, “nvramdisk: A Transactional Block Device Driver for Non-Volatile RAM”, Computers, IEEE Transactions on, vol.PP, no.99. DOI:

[3] Taemin Lee, Dongki Kim, Hyunsun Park, Sungjoo Yoo, Sunggu Lee, “FPGA-based prototyping systems for emerging memory technologies”Rapid System Prototyping (RSP), 2014 25th IEEE International Symposium on, 16-17 Oct. 2014. DOI:

[4] Wookhee Kim, Jinwoong Kim, Woongki Baek,  Beomseok Nam, Youjip Won, “NVWAL: Exploiting NVRAM in Write-Ahead-Logging”, In Proceedings of  International Conference on Architectural Support for Programming Languages and Operating Systems(ASPLOS 2016), Atlanta, USA, Apr. 2-6, 2016

[5] Youjip Won, “NVRAM Emulation Platform and Persistent Heap”, Flash Memory Summit 2015

[6]  Keonwoo Lee, Youjip Won, “Durability Guarantee in Software Transactional Memory“, Bulletin of Networking Computing Systems and Software(BNCSS), Volume 5, Number 1, pages 59–63, Sapporo, Japan, Jan. 2016

[7] 이도근, 손성배, 이성진, 원유집, “NVM 기반 시스템에서의 다중 타입 객체 지원 가비지 수집 기법”, 한국정보과학회, 2016 한국컴퓨터종합학술대회 (KCC 2016), 2016년 6월 29 – 7월 01일, 제주  ICC&부영호텔, 제주

[8] 노연진, 유진수, 이성진, 원유집, “UFLRU: 비휘발성 메모리와 플래시 메모리의 계층 구조를 위한 영속 객체 스와핑 알고리즘”, 한국정보과학회, 2016 한국컴퓨터종합학술대회 (KCC 2016), 2016년 6월 29 – 7월 01일, 제주  ICC&부영호텔, 제주

[9] 이성수, 이성진, 원유집, “비휘발성 메모리의 영속 객체를 위한 효율적인 메타데이터 관리 및 영속화 기법”, 한국정보과학회, 2016 한국컴퓨터종합학술대회 (KCC 2016), 2016년 6월 29 – 7월 01일, 제주  ICC&부영호텔, 제주

[10] 이도근, 원유집, “비 휘발성 메모리의 특성을 고려한 쓰레기 수집 기법”, 대한전자공학회, 2015 하계종합학술대회, 2015년 6월 21-23일, 제주 라마다호텔, 제주

[11] 이도근, 원유집, “트리 자료구조를 이용한 비 휘발성 메모리의 쓰레기 수집 기법”, 한국정보과학회, 2015 한국컴퓨터종합학술대회 (KCC 2015), 2015년 6월 24-26일, 제주대학교, 제주

[12] 이건우, 정재민, 원유집, “최소집합 로깅 : 비휘발성 메모리상의 자료구조 복구기법”, 한국정보과학회, 2015 한국컴퓨터종합학술대회 (KCC 2015), 2015년 6월 24-26일, 제주대학교, 제주

[13] 이성수, 정재민, 원유집, “비휘발성 메모리 영역 사용을 위한 코드 재생성”, 한국정보과학회, 2015 한국컴퓨터종합학술대회 (KCC 2015), 2015년 6월 24-26일, 제주대학교, 제주

[14] 남성민, 김태석, “웹 브라우저에서 선택적 요청을 이용한 캐시 성능저하 방지”, 한국정보과학회, 2014, 6

[15] 남태호, 김태석, “NVRAM을 이용한 웹 브라우저의 메모리 캐싱 기법”, 한국정보과학회, 2014, 6

[16] Taeho Nam, Taeseok Kim, “Page Caching of Web Browser using NVRAM”, Korea Conference on Semiconductors, 2014

[17] Kyusik Kim and Taeseok Kim, “A Frame Buffer Caching for Fast Launch of Browsers,” The 30th International Conference on Information Networking (ICOIN) 2016

[18] 김규식, 양승원, 윤태원, 이호영, 이동현, 김태석, “선택적 프리로딩을 지원하는 비휘발성 메모리 기반 웹브라우저”, 2016 한국컴퓨터종합학술대회

[19] T. Lee, H. Park, D. Kim, S. Yoo, S. Lee, “FPGA-based Prototyping Systems for Emerging Memory Technologies,” Proc. Rapid System Prototyping, Oct. 2014.

[20] T. Lee, S. Yoo “Selective Refresh to Avoid Read Disturb Errors in STT-RAM Main Memory,” to appear in Proc. IEEE International SoC Design Conference (ISOCC), Oct. 2016.

[21] J. Hyun Kim, Young Je Moon and Sam H. Noh, “An Experimental Study on the Effect of Asymmetric Memory Latency of New Memory on Application Performance” MASCOTS 2016, September 19-21, Imperial College, London, UK

Please contact to upload your code.