Tutorial FTL Sejun Kwon Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu
Contents NAND Flash Memory NAND Flash Operation NAND Flash Architecture NAND Controller Tutorial FTL ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 2
NAND Flash Memory K9LCG08U1M (Dual die) Samsung 35 nm 2-bit MLC flash 16 sectors per page (8 KB + 640 B) 128 pages per block (1 MB + 80 KB) 4096 + 56 blocks per die Page read : 250 us Page program : 1.3 ms Block erase : 1.5 ms ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 3
NAND Flash Memory NAND Flash Code Information http://www.samsung.com/global/business/semic onductor/support/label-code-info/codeinfo/memory-component ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 4
Plane 0 Plane 1 Die 0 ( Low ) Die 1 ( High ) NAND Flash Memory NAND Flash Organization Block Page Buffer Page Buffer 0 1 2 3 4 0 5 4150 4151 ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 5
NAND Flash Memory NAND Flash Organization Data (8KB) Spare (640B) 0 1 2 127 Page (8KB + 640B) Block (1MB + 80KB) ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 6
NAND Flash Operation Page read Cell -> Page Buffer -> RAM Page program RAM -> Page Buffer -> Cell Page copy-back Cell (Src) -> Page Buffer -> Cell (Dst) Block erase ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 7
4 Channel NAND Flash Configuration Channel / Way 8 Way ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 8
NAND Flash Configuration Jasmine Firmware abstracts channel and way to bank 4way * 2 channel = 8 banks bank number = physical page number % number of banks Each bank has blocks ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 9
NAND Flash Configuration Banks share the same IO bus Each bank can perform cell operation in parallel Cell to Page Buffer operation, Block erase Barefoot has only 4 R/B signal inputs per channel A0 and A4 are tied together Maximum 4 way interleaving ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 10
NAND Flash Configuration Ch C/D Bank 3(7) Ch C/D Bank 1(5) Ch A/B Bank 0(4) Ch A/B Bank 2(6) Ch A/B Bank 1(5) Ch A/B Bank 3(7) Ch C/D Bank 2(6) Ch C/D Bank 0(4) ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 11
NAND Flash Configuration 2 Plane operation, 16 bit IO program 33 44 55 66 77 88 99 AA 16KB Die 0 (Low) 16KB Die 1 (High) Plane 0 Plane 1 Plane 0 Plane 1 33 55.. 77 99.. 44 66.. 88 AA.. Block 0 Block 1 Block 0 Block 1............ ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 12
NAND Flash Controller To issue NAND Flash operation Defined in./include/flash.h FC_COL_ROW_READ_OUT FC_COL_ROW_IN_PROG FC_COPYBACK FO_P FO_E FO_B_SATA_W FO_B_SATA_R ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 13
NAND Flash Controller To issue NAND Flash operation ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 14
Tutorial FTL./ftl_tutorial ftl.c, ftl.h Page Mapping FTL Write data from DRAM to NAND Read data from NAND to DRAM But no garbage collection ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 15
Page Mapping Table LPN to PPN map LPN: Logical Page Number - LPN = LBA / Sectors Per Page PPN: Physical Page Number Index 0 1 2 3 2097151 Value 100 256 0 INVALID 20000 ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 16
Read Operation ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 17
./ftl_tutorial/ftl.c Write Operation ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 18
Write Operation NAND Old Page (32KB) For Partial Write DRAM Left hole read Write Write hole read For Not In-Place Update NAND New Page (32KB) ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 19
./ftl_tutorial/ftl.c Write Operation ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 20
./ftl_tutorial/ftl.c Write Operation ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 21
NAND Flash Operation./target_spw/flash.c ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 22
NAND Flash Operation./target_spw/flash.c ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 23
NAND Flash Operation./target_spw/flash_wrapper.c ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 24
./ftl_tutorial/ftl.c Error Handling ftl_open() ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 25
Any Questions? ICE3028: Embedded Systems Design (Spring 2014) Jin-Soo Kim (jinsookim@skku.edu) 26