OpenSSD Platform Simulator to Reduce SSD Firmware Test Time. Taedong Jung, Yongmyoung Lee, Ilhoon Shin

Similar documents
Page Mapping Scheme to Support Secure File Deletion for NANDbased Block Devices

A Memory Management Scheme for Hybrid Memory Architecture in Mission Critical Computers

Storage Architecture and Software Support for SLC/MLC Combined Flash Memory

BDB FTL: Design and Implementation of a Buffer-Detector Based Flash Translation Layer

Presented by: Nafiseh Mahmoudi Spring 2017

Chapter 14 HARD: Host-Level Address Remapping Driver for Solid-State Disk

SSD Garbage Collection Detection and Management with Machine Learning Algorithm 1

System Software for Flash Memory: A Survey

LAST: Locality-Aware Sector Translation for NAND Flash Memory-Based Storage Systems

Experimental Results of Implementing NV Me-based Open Channel SSDs

SSD Firmware Implementation Project Lab. #6

Meta Paged Flash Translation Layer

S-FTL: An Efficient Address Translation for Flash Memory by Exploiting Spatial Locality

LETTER Solid-State Disk with Double Data Rate DRAM Interface for High-Performance PCs

SFS: Random Write Considered Harmful in Solid State Drives

White Paper: Understanding the Relationship Between SSD Endurance and Over-Provisioning. Solid State Drive

NAND Flash-based Storage. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

[537] Flash. Tyler Harter

Baoping Wang School of software, Nanyang Normal University, Nanyang , Henan, China

I/O Devices & SSD. Dongkun Shin, SKKU

NAND Flash-based Storage. Computer Systems Laboratory Sungkyunkwan University

Introduction to the OpenSSD Jasmine Platform

VSSIM: Virtual Machine based SSD Simulator

A Mixed Flash Translation Layer Structure for SLC-MLC Combined Flash Memory System

SHRD: Improving Spatial Locality in Flash Storage Accesses by Sequentializing in Host and Randomizing in Device

NAND Flash-based Storage. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Improving File System Performance and Reliability of Car Digital Video Recorders

Tutorial FTL. Jinyong Computer Systems Laboratory Sungkyunkwan University

Solid State Drives (SSDs) Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Understanding SSD overprovisioning

NAND Flash-based Storage. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Yiying Zhang, Leo Prasath Arulraj, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. University of Wisconsin - Madison

Delayed Partial Parity Scheme for Reliable and High-Performance Flash Memory SSD

FILE SYSTEMS, PART 2. CS124 Operating Systems Fall , Lecture 24

A Buffer Replacement Algorithm Exploiting Multi-Chip Parallelism in Solid State Disks

SSD-based Information Retrieval Systems

Using Transparent Compression to Improve SSD-based I/O Caches

A Semi Preemptive Garbage Collector for Solid State Drives. Junghee Lee, Youngjae Kim, Galen M. Shipman, Sarp Oral, Feiyi Wang, and Jongman Kim

Tutorial FTL. Sejun Kwon Computer Systems Laboratory Sungkyunkwan University

OSSD: A Case for Object-based Solid State Drives

Implementation of metadata logging and power loss recovery for page-mapping FTL

Open-Channel SSDs Offer the Flexibility Required by Hyperscale Infrastructure Matias Bjørling CNEX Labs

Getting Real: Lessons in Transitioning Research Simulations into Hardware Systems

Partitioned Real-Time NAND Flash Storage. Katherine Missimer and Rich West

SSD-based Information Retrieval Systems

Chapter 12 Wear Leveling for PCM Using Hot Data Identification

Architecture Exploration of High-Performance PCs with a Solid-State Disk

SSDs vs HDDs for DBMS by Glen Berseth York University, Toronto

Cascade Mapping: Optimizing Memory Efficiency for Flash-based Key-value Caching

CTWP005: Write Abort Handling for Cactus Technologies Industrial-Grade Flash-Storage Products

P2FS: supporting atomic writes for reliable file system design in PCM storage

1110 IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, VOL. 33, NO. 7, JULY 2014

Mass-Storage Structure

An Adaptive Partitioning Scheme for DRAM-based Cache in Solid State Drives

Manual Format Flash Drive Ntfs Allocation Unit Size

Divided Disk Cache and SSD FTL for Improving Performance in Storage

SOS : Software-based Out-of-Order Scheduling for High-Performance NAND Flash-Based SSDs

Middleware and Flash Translation Layer Co-Design for the Performance Boost of Solid-State Drives

Toward SLO Complying SSDs Through OPS Isolation

SSD (Solid State Disk)

CHAPTER 11: IMPLEMENTING FILE SYSTEMS (COMPACT) By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

FAB: Flash-Aware Buffer Management Policy for Portable Media Players

COS 318: Operating Systems. Storage Devices. Vivek Pai Computer Science Department Princeton University

BPCLC: An Efficient Write Buffer Management Scheme for Flash-Based Solid State Disks

Near-Data Processing for Differentiable Machine Learning Models

Tiered Storage and Caching Decisions

OSSD: Object-based Solid State Drive. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

A New Cache Management Approach for Transaction Processing on Flash-based Database

D E N A L I S T O R A G E I N T E R F A C E. Laura Caulfield Senior Software Engineer. Arie van der Hoeven Principal Program Manager

Clustered Page-Level Mapping for Flash Memory-Based Storage Devices

smxnand RTOS Innovators Flash Driver General Features

Solid State Drive (SSD) Cache:

Adaptec MaxIQ SSD Cache Performance Solution for Web Server Environments Analysis

A+ Guide to Hardware: Managing, Maintaining, and Troubleshooting, 5e. Chapter 6 Supporting Hard Drives

SSD Firmware Implementation Project Lab. #5

and data combined) is equal to 7% of the number of instructions. Miss Rate with Second- Level Cache, Direct- Mapped Speed

p-oftl: An Object-based Semantic-aware Parallel Flash Translation Layer

Computer Engineering II Solution to Exercise Sheet 9

WipeDrive Home 9. IMPORTANT! PLEASE READ CAREFULLY:... 3 General Information... 3 WipeDrive Overview... 3 System Requirements...

STORAGE LATENCY x. RAMAC 350 (600 ms) NAND SSD (60 us)

SSD Firmware Implementation Project Lab. #4

FFS: The Fast File System -and- The Magical World of SSDs

CS 31: Intro to Systems Caching. Kevin Webb Swarthmore College March 24, 2015

Journal of Systems Architecture

Format Hard Drive Using Windows 7 Recovery Disk

Virtual Memory. Reading. Sections 5.4, 5.5, 5.6, 5.8, 5.10 (2) Lecture notes from MKP and S. Yalamanchili

FlashBench: A Workbench for a Rapid Development of Flash-Based Storage Devices

Performance Benefits of Running RocksDB on Samsung NVMe SSDs

Pseudo SLC. Comparison of SLC, MLC and p-slc structures. pslc

A Caching-Oriented FTL Design for Multi-Chipped Solid-State Disks. Yuan-Hao Chang, Wei-Lun Lu, Po-Chun Huang, Lue-Jane Lee, and Tei-Wei Kuo

3MG2-P Series. Customer Approver. Approver. Customer: Customer Part Number: Innodisk Part Number: Model Name: Date:

C 1. Recap. CSE 486/586 Distributed Systems Distributed File Systems. Traditional Distributed File Systems. Local File Systems.

IBM Spectrum NAS. Easy-to-manage software-defined file storage for the enterprise. Overview. Highlights

EI 338: Computer Systems Engineering (Operating Systems & Computer Architecture)

Preface. Fig. 1 Solid-State-Drive block diagram

Application-Managed Flash

Chapter Two File Systems. CIS 4000 Intro. to Forensic Computing David McDonald, Ph.D.

A+ Guide to Hardware: Managing, Maintaining, and Troubleshooting, 5e. Chapter 6 Supporting Hard Drives

CSE 333 Lecture 9 - storage

CS 537 Fall 2017 Review Session

Transcription:

OpenSSD Platform Simulator to Reduce SSD Firmware Test Time Taedong Jung, Yongmyoung Lee, Ilhoon Shin Department of Electronic Engineering, Seoul National University of Science and Technology, South Korea Building 3,206, Seoul 139-743, South Korea ilhoon.shin@snut.ac.kr Abstract: Recently, NAND flash memory is widely used as storage media in various devices such as SD card, USB memory, and solid state drives (SSDs). NAND flash memory has different characteristics from hard disks, and thereby a firmware called flash translation layer (FTL) should be deployed to use traditional file systems on NAND flash memory. Because FTL majorly determines performance and stability of NAND-based block devices, various FTL schemes have been developed. However, their efficiency has been evaluated via simulation not on a real device, which restricts the reliability of the results. Recently, OpenSSD platform, which allows implementing a new FTL scheme on real NAND devices, was developed. By using it, evaluating the FTL performance on real NAND devices becomes possible. The problem is that it is difficult and time consuming to debug the new FTL on the OpenSSD platform. In order to address this, we design an OpenSSD simulator that helps find the bugs of FTL and reduces the test time. The FTL developed on the simulator can be migrated to the OpenSSD platform without additional porting. [Taedong Jung, Yongmyoung Lee, Ilhoon Shin. OpenSSD Platform Simulator to Reduce SSD Firmware Test Time. Life Sci J 2014;11(7):564-568]. (ISSN:1097-8135).. 77 Keywords: Bug detection, OpenSSD simulator, Flash translation layer, NAND flash memory 1. Introduction SSD has strong points like the fast speed and safety, contrast to HDD. SSD is guaranteed fast I/O speed via the parallel activity of multiple NAND flash memory. NAND flash memory consists of multiple storage media called as block. One block consists of many pages which are 64 or 128 units, and so on. NAND flash memory's I/O unit is a page. Also, pages in a block should be sequentially written, and the page cannot be overwritten (Kawaguchi et al., 1995). To overcome these restrictions, a firmware called FTL is deployed within SSD, and SSD can be used like a general disk device. Because FTL majorly determines performance and stability of NANDbased block devices, various FTL schemes have been developed (Gupta et al., 2009) (Lee et al., 2007). However, their efficiency has been evaluated via simulation not on a real device, which restricts the reliability of the results. Recently, OpenSSD platform, which allows implementing a new FTL scheme on real NAND devices, was developed. OpenSSD platform has the same construction of the existing SSD. As seen in Figure 1, it consists of real NAND flash memory and controller, DRAM, SATA Interfere, and so on. By using it, evaluating the FTL performance on real NAND devices becomes possible. There are two ways for debugging FTL in OpenSSD platform. The one method is using RV ICE and RVDS. The second is using GNU compiler. To the reason of character of hardware, the time for I/O at NAND flash memory is evaluated intactly, all of two ways spend lots of time in debugging. The case of logical error that can be detected in a long time after beginning of real FTL evaluation spends lots of time for debugging, these cases makes hard for OpenSSD platform. For solving these problems, if OpenSSD simulator is developed by detecting the logical error of FTL code in a way of software, the time for development can be decreased. Because I/O like real hardware is not operated, it can be verified quickly at the same test environment. After verifying the logical error of FTL via OpenSSD simulator, and then if there is a test in OpenSSD platform, it could be efficient because the time for debugging is decreased very much. Figure 1. Internal structure of the OpenSSD Platform This paper will explain about the necessity of simulator in chapter 2, the construction of simulator in chapter 3. In chapter 4, there will be verifying the effectiveness of extracting the error via the experiment, and the conclusion will be derived in chapter 5. 564

2. Necessity of OpenSSD Simulator The difficult point at the progress of development of FTL in OpenSSD platform is spending lots of time for finding the logical error. These logical errors can be categorized into two ways in large scale. At first, the error which is founded after the long time has been passed by at the beginning of verification. This error is not detected before the operation of Garbage collection which deletes the unnecessary data is operating. Secondly, even though it is the mistaken I/O, it can be hard to detect in the way of hardware. In the case of overwriting the space which has already the data and improperly access at the region of DRAM, the board can't be recognizing its problem and operating the mistaken I/O. 2.1. Errors that can be detected after a long time Free Block Count Variable is the variable which administers the free block unit for saving the data in NAND flash memory. At the initialization of NAND flash memory, it can be categorized into the meta-block which saves the meta-data and data-block which saves the data. These category's difference is depend of FTL policy, thus Free Block Count's variable is depend on the developer's development policy for its difference. If all of the blocks are exhausted, and Free Block Count's variable number will be 0, then Garbage Collection should be operating for getting the storage place of its new data. However, if Free Block Count's variable is improperly initialized because of the developer's mistake, it can't be possible to detect the error until all of blocks are exhausted. If Free Block Count variable is initialized less than its normal state; the block which is not used about its difference will be emerging. In contrast to its situation, it is initialized more than its normal state; it will try to find the free block in the situation which there is not unusable block. In this case, the problem of falling into the infinite loop of firmware is emerging because it tries to find the new free block while it checks all of blocks. It can be possible to check the mistaken initialization of Free Block Count's variable with using of ASSERT function of inside of firmware which is the existing debugging method, but it can be spending lots of time to detect the error. The reason for this is that it is operated actually the I/O of the hardware way by OpenSSD. OpenSSD platform has lots of logical errors that is spending lots of time to detect like Free Block Count variable because of I/O of the hardware way. Because Garbage collection will be operated after NAND flash memory's whole space is exhausted, the first operation is emerging normally after several hours. Therefore, it costs lots of time to detect the logical error with using only OpenSSD platform. In case of OpensSSD platform, it can be possible to detect the logical error at the same test environment in a few minutes. 2.2. Errors that is hard to be detected There is the situation that can't be recognizing the error in case of I/O that is the problem at the time of FTL development. The invasion of DRAM region is the representative example. At OpenSSD platform, the meta-data of FTL is distributing DRAM region like Figure 2 and saving each region. The improperly accessing is possible about the distributed region; however, the hardware is operating without problem. This is possible because API which is related to memory brings the data of ordered addresses without verification. The data that is saved on DRAM is hard to progress the specific verification according to the situation because it is the randomly saved meta-data. For example, suppose that the case of accessing to DRAM for its changing the number of Valid Count of figure 2. If the developer sets up 16Byte to each entry but if access 32Bytes to the mistaken function and it can access to the excessive region over the real region. If some data is saved on the mistaken region, the problem that its data is improperly recognized to Valid Count is emerging. Figure 2. Distribution of DRAM region Even though it is the problematic situation in reality, various situations which are not recognized are around. If the sequential writing is broken on the block, in case of I/O of block or page that is out of region, the situation of operating the write with the overlapping on the already written page, these cases are the relevant cases. 3. Design of OpenSSD Simulator OpenSSD simulator is constructed for verifying FTL code of OpenSSD platform. Therefore, Low-Level device Driver API which is ordering to NAND flash memory and Memory Utility API which is ordering to DRAM, these two things are constructed like a Figure 3. This is the necessary API for expressing the I/O of OpenSSD platform in the way of software. However, OpenSSD simulator can't replace to all of the function of OpenSSD platform. These are the function of Power-Off Recovery and Bad Block Management and interrupt. The better simulator can be expected if its part is solved with the part that is hard to realize in the way of software. 565

is right or not. But, the simulator is possible to know the accuracy of operation via checking the order of data block. Figure 3. Structure of OpenSSD Simulator The virtual NAND flash memory at simulator is distributed into the data-block and metablock. Data block is the place where saves the real data, however the simulator is not needed these entire place. Because the real data is not related to logical error, and the amount of memory is limited to allot in OS. Data block is used to verify the logical error instead of real data that is saved because I/O order is saved. However, all of the meta-block is necessary. In this place the necessary order is saved like a mapping table. In conclusion, it can be using by distributing into the meta-block which demands all of the space like a OpenSSD Platform and data-block which is saving I/O order. FTL is distributing like Read/Write/Copy Buffer, FTL Buffer, and ECT for using effectively in DRAM space. The simulator is using 64MB in the inside of its space with the dynamic allotment, and each meta-data's space is allotting on the order of FTL code. OpenSSD simulator's activity is beginning from passing its order of I/O. The order of I/O is using the pattern of I/O which is collected from the past based on users. Because the transferred order is based on Disk, it is converting to base order of NAND flash memory via FTL. The converted order is saved on virtual NAND flash memory via using Memory Utility API, Low-Level device Driver API. Both Memory Utility API and Low-Level device Driver API, there are added the various codes to verify the logical error. ASSERT function which is to detect the logical error at the simulator has the same operation of ASSERT function of OpenSSD platform. Lots of codes are already applied to check the logical error that is considered in the simulator contrast to OpenSSD platform that is added the appropriate error check by user. Also, the function for checking logical error by user additionally, it can be easily possible to add with using ASSERT function of simulator. The saved order which was doing before is using to check the logical error. As checking the saved order on Data block, it can be possible to verify the error about the sequential writing on the block or pages overwrite. In OpenSSD Platform which is I/O per page is hard to know whether the progress of Partial Programming 4. Experiment FTL_GREEDY code which is sample of FTL of OpenSSD platform is using at the experiment of OpenSSD simulator. Some part of FTL code is necessary to delete because there are the functions that is not provided by simulator like a Power of recovery management function and Bad Block management function, etc. These things are like this. - Static void build_bad_blk_list(void) - Static BOOL32 is_bad_block(uint32 const bank, UINT32 const vblk_offset) - Static void logging_misc_metadata(void) - Static void logging_pmap_table(void) - Static void load_metadata(void) - Static void load_misc_metadata(void) - Static void load_pmap_table(void) - Static void write_format_mark(void) - Static BOOL32 check_format_mark(void) - void ftl_isr(void) Except this, FTL of OpenSSD's verification is possible via the simulator without correction of FTL code. Table 1. PC configuration CPU Intel i5-3210m RAM OS 8GB Windows 7 64bit Complier Visual Studio 2010 Table 2. Workload Information File System NTFS Partition size 55GB Total Write Count 322861057 Total Read Count 309456579 Table 1 is the specification of PC which is operating OpenSSD, and table 2 is the detail explanation of workload for using in verification of code. Workload is the result of collecting the I/O patterns of hard-disk in a long time in PC that is installed of windows XP, NTFS file system. If the simulator operates and finishes the order of operation without logical error of FTL, the result like Figure 4 is emerging. The result writes both of number of order and count of writing, reading and erasing. This information helps the judgment of function of FTL. The effective I/O should be operating for making a better process. Effective I/O work is related to less 566

amount of number of order of writing, erasing at the time of using the same workload. Therefore, it can be helpful to judge the capability of FTL with using the simulator quickly. Figure 6. Add Block Write Count region Figure 4. Results of OpenSSD simulator 4.1. Experiment to find logical errors Free block count variable is the number of block which is not yet used. The garbage collection is operated when its variable number becomes 1 because it means all of blocks is extinguished. Therefore, if the programmer miscalculates this variable and it is initiated, it should be waiting the time as much as all blocks are extinguished, and then it could be possible to confirm the error. The program operates after improperly initialized its free block count variable is added 1 more than its variable for checking the normal operation of simulator. In this case, the emerging of error is detected while the process of simulator program. The detected error shows its number of variable and location of error like Figure 5. Valid count metadata entries count is [total bank count (8)] * [total block count per bank], and size per entries is 2bytes (sizeof(uint16)). The count of added block write count metadata entries is [total bank count (8)]*[total block count per bank], and size per entries is 4bytes (sizeof(uint32)). Figure 7. Invading the region of Block Write Count In order to do experiments, sizeof(uint32) replaces sizeof(uint16) for the size of valid count metadata. In this case, valid count per entries is same but valid count metadata region invades the following region which is block write count because of the change in size of valid count metadata. There is a possibility that error is not detected although get_vcount() function for getting valid count data gets block write count. However this kind of error can be easily detected by debug tool in visual studio. Figure 5. Invalid initialization errors of free block count variables If OpenSSD platform is used, the time for exhausting all of the blocks should be waited. But OpenSSD simulator is used; you can confirm the result in a few minutes. Also, the logical error can be possible to confirm in the same pattern about ignoring the sequential writing on the block, overwrite the page which has an existed data. 4.2. Experiment of wrong DRAM access To show DRAM region wrong accessed example in FTL_GREEDY, block write count in the region following valid count region was randomly added. Figure 8. New breakpoint function The region of DRAM's address is not constant because its program is allotted dynamically. Therefore, at the time of FTL initialization, DRAM region of Block Write Count is derived. After that, it is printing where is the location to access DRAM region via new breakpoint of debugger implement. 567

Acknowledgements: This study was supported by the Research Program funded by the Seoul National University of Science and Technology. Figure 9. Using the debugger to check access Via debugger, it should be detected that invasion of Block Write Count region at the function of set_vcount(). From this ability, the fault of set_vcount( ) is corrected. 5. Conclusion OpenSSD platform is a practical tool to evaluate FTL performance. However, the verification is time consuming and difficult. In order to solve the problem, we designed a simulator for OpenSSD platform, which reduces the verification time and help find the bugs of FTL. Currently, it does not provide power off recovery, bad block management, interrupt control, and package level parallelism capability, which is targets of our future work. Corresponding Author: Dr. Ilhoon Shin Department of Electronic Engineering Seoul National University of Science and Technology NowonGu GongleungDong, Seoul 139-743, South Korea E-mail: ilhoon.shin@snut.ac.kr References 1. Kawaguchi A, Nishioka S, Motoda H. A flashmemory based file system. USENIX, USA, 1995. 2. Gupta A, Kim Y, UrgaonKar B. DFTL: A flash translation layer employing demand-based selective caching of page-level address mappings. ASPLOS, USA, 2009. 3. Lee S, Park D, Chung T, Lee D, Park S, Song H. A log buffer-based flash translation layer using fully-associative sector translation. ACM Transactions on storage 2007; 6(3). 4. The OpenSSD project. http://www.openssdproject.org/wiki/jasmine_openssd_platfrom. 1/7/2014 568