tutorial ftl - androbenchcsl.skku.edu/uploads/ice3028s14/lab3-tutorial.pdf3 5 … 4151 1 block. ......

26
Sejun Kwon Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Tutorial FTL

Upload: phamdat

Post on 24-May-2018

225 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

Sejun Kwon

Computer Systems Laboratory

Sungkyunkwan University

http://csl.skku.edu

Tutorial FTL

Page 2: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 2

Contents

▪ NAND Flash Memory

▪ NAND Flash Operation

▪ NAND Flash Architecture

▪ NAND Controller

▪ Tutorial FTL

Page 3: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 3

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

Page 4: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 4

NAND Flash Memory

▪ NAND Flash Code Information

• http://www.samsung.com/global/business/semiconductor/support/label-code-info/code-info/memory-component

Page 5: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 5

0

NAND Flash Memory

▪ NAND Flash Organization

Page Buffer

0

2

4

4150

Die

1 (“H

igh”)

Pla

ne 0

Die

0 (“L

ow

”)

Page Buffer

1

3

5

4151

Pla

ne 1

Block

Page 6: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 6

NAND Flash Memory

▪ NAND Flash Organization

0

1

2

127

Data (8KB) Spare (640B)

Block (1MB + 80KB)

Page (8KB + 640B)

Page 7: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 7

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

Page 8: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 8

NAND Flash Configuration

▪ Channel / Way

8 Way

4 C

hannel

Page 9: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 9

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

Page 10: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 10

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

Page 11: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 11

NAND Flash Configuration

Ch A/BBank 0(4)

Ch C/DBank 3(7)

Ch A/BBank 2(6)

Ch C/DBank 1(5)

Ch A/BBank 1(5)

Ch A/BBank 3(7)

Ch C/DBank 2(6)

Ch C/DBank 0(4)

Page 12: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 12

NAND Flash Configuration

▪ 2 Plane operation, 16 bit IO program

• 33 44 55 66 ………… 77 88 99 AA …………

Die 0 (Low) Die 1 (High)

Plane 0 Plane 1 Plane 0 Plane 1

... ... ... ...

77 99 .. 88 AA ..44 66 ..33 55 ..

Block 0 Block 1 Block 0 Block 1

16KB 16KB

Page 13: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 13

NAND Flash Controller

▪ To issue NAND Flash operation

• Defined in ./include/flash.h

FC_COL_ROW_READ_OUTFC_COL_ROW_IN_PROGFC_COPYBACK

FO_PFO_EFO_B_SATA_WFO_B_SATA_R

Page 14: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 14

NAND Flash Controller

▪ To issue NAND Flash operation

Page 15: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 15

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

Page 16: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 16

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

Page 17: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 17

Read Operation

Page 18: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 18

Write Operation

▪ ./ftl_tutorial/ftl.c

Page 19: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 19

Write Operation

Old Page (32KB)

Left hole read Write hole readWriteDRAM

NAND

New Page (32KB)NAND

For Not In-Place Update

For Partial Write

Page 20: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 20

Write Operation

▪ ./ftl_tutorial/ftl.c

Page 21: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 21

Write Operation

▪ ./ftl_tutorial/ftl.c

Page 22: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 22

NAND Flash Operation

▪ ./target_spw/flash.c

Page 23: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 23

NAND Flash Operation

▪ ./target_spw/flash.c

Page 24: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 24

NAND Flash Operation

▪ ./target_spw/flash_wrapper.c

Page 25: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 25

Error Handling

▪ ./ftl_tutorial/ftl.c

ftl_open()

Page 26: Tutorial FTL - AndroBenchcsl.skku.edu/uploads/ICE3028S14/lab3-tutorial.pdf3 5 … 4151 1 Block. ... Tutorial FTL ./ftl_tutorial •ftl.c, ftl.h Page Mapping FTL •Write data from

ICE3028: Embedded Systems Design (Spring 2014) – Jin-Soo Kim ([email protected]) 26

Any Questions?