Flash-Based Storage in Embedded Systems

Flash-Based Storage in Embedded Systems

Pierre Olivier (Université de Bretagne Occidentale, France), Jalil Boukhobza (Université de Bretagne Occidentale, France) and Eric Senn (Université de Bretagne Sud, France)
DOI: 10.4018/978-1-4666-3922-5.ch022
OnDemand PDF Download:
No Current Special Offers


NAND Flash memories gained a solid foothold in the embedded systems domain due to its attractive characteristics in terms of size, weight, shock resistance, power consumption, and data throughput. Moreover, flash memories tend to be less confined to the embedded domain, as it can be observed through the market explosion of flash-based storage systems (average growth of the NVRAM is reported to be about 69% up to 2015). In this chapter, the authors focus on NAND flash memory NVRAM. After a global presentation of its architecture and very specific constraints, they describe the different ways to manage flash memories in embedded systems which are 1) the use of a hardware Flash Translation Layer (FTL), or 2) a dedicated Flash File System (FFS) software support implemented within the embedded operating system kernel.
Chapter Preview


Nowadays, flash memory is widely used in embedded systems, serving as main storage system in numerous devices such as mp3 players, smartphones and various kind of mobile computers such as tablet computers and netbooks (Maleval, 2010). Moreover, flash memory tends to be less confined to this domain, replacing traditional hard disk drives in general computer systems and complementing them in large data centers. This tendency can be observed through the explosion of flash-based Solid State Drives (SSDs) in the market. 25 years after that Toshiba announced its invention, NAND flash memory is shipping almost 8 times more gigabytes in 2011 than DRAM.

Flash memory provides benefits in terms of size, power consumption, shock resistance, weight, and I/O performance (Macronix International Co., Ltd., 2012). The fast growth of the embedded market brings about a similar interest in both flash memory industrial production and academic/industrial research. For example, the company Anobit shipped 20 Millions of embedded flash controllers during the first semester of 2011 (Storage Newsletter, 2011). Generally speaking, the annual average growth of the non-volatile memory is reported to be about 69% up to 2015, according to MarketResearch.com (EETimes, 2011).

There are many types of flash memory cells, named after the logic gate used as their main building block. Nevertheless, one can identify two main types: NOR and NAND flash memory. NOR flash memory is used for code storage and is considered as a cheap DRAM alternative used for instance in mid-range mobile phones, while NAND flash memory is designed for data storage. This chapter focuses on NAND flash based storage systems and their management techniques.

Because of its intrinsic characteristics, flash memory presents some specific constraints that need to be taken into account in order to achieve efficient storage system integration. Some of these constraints, related to electrical properties of NAND flash memory cells, can be summarized as follows: 1) the necessity to perform an erase operation before a write, 2) the impossibility to perform in-place data updates, 3) the limited number of realizable write/erase cycles (limited lifetime), and 4) the I/O performance asymmetry between read and write operations. Those properties will be detailed farther in this chapter.

NAND flash memory can be managed in different ways in an embedded system, in order to cope with the aforementioned constraints and to abstract the hardware intricacies to the applicative layers.

Flash-based cards like SD cards, USB sticks, and SSDs use a specific hardware layer called the Flash Translation Layer (FTL) (Chung, Park, Park, Lee, Lee, and Song, 2009 ; Gal and Toledo, 2005). The FTL is located into the controller of the flash device. Its main functionalities are: 1) to provide a logical to physical address mapping for the applicative layer, 2) to achieve a good wear leveling algorithm, 3) to perform garbage collection operations, and 4) to emulate a block device so that the flash-based peripheral can be formatted using a standard (hard drive designed) file-system.

Bare flash chips, which can be embedded on many devices such as smartphones and tablet computers, are generally directly controlled by the operating system kernel. This is done by the means of a dedicated Flash File-System (FFS) (Opdenacker and Petazzoni, 2010). In addition to providing wear leveling and garbage collection management schemes, FFSs have to perform all the standard file-system functions: management of file and directory hierarchies, user access rights, etc.

In the first section of this chapter, we present some flash memory generalities, then we focus on the main flash memory type used for data storage, that is NAND. In the second section we describe the Flash Translation Layer (FTL) by depicting popular implementations (Lee and al., 2007 ; Park, Debnath and Du, 2010 ; Gupta, Kim and Urgaonkar, 2009 ; Chiang, Lee and Chang, 1999). In the next section, we present dedicated Flash File Systems (FFSs), implemented into embedded operating systems all along with implementation examples (Manning, 2010 ; Woodhouse, 2001 ; Bityutskiy, Havasi, Loki and Sogor, 2008 ; Engel, 2005).

Complete Chapter List

Search this Book: