The document outlines the FTL Testing procedures for an Embedded System Design course, detailing methods for testing with and without a SATA interface, including the use of tools like IOmeter and FIO. It also describes Project II, which involves porting the DFTL simulator to the Jasmine Board, including configuration and garbage collection policies. Students are required to submit a detailed report analyzing performance metrics and are reminded of the project's significant impact on their overall score.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
3 views
Week11_Lab
The document outlines the FTL Testing procedures for an Embedded System Design course, detailing methods for testing with and without a SATA interface, including the use of tools like IOmeter and FIO. It also describes Project II, which involves porting the DFTL simulator to the Jasmine Board, including configuration and garbage collection policies. Students are required to submit a detailed report analyzing performance metrics and are reminded of the project's significant impact on their overall score.
TA – Junho Lee ([email protected]) TA – Somm Kim ([email protected]) Embedded Software Laboratory Sungkyunkwan University http://nyx.skku.ac.kr
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected])
Contents • FTL Testing – With SATA interface • Windows: IOmeter • Linux: FIO – Without SATA interface • ftl_test (Emulation)
• Project 2: DFTL Porting on Jasmine
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 2
FTL Testing
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected])
FTL Testing: ftl_test • FTL verification without using SATA interface
• Emulate the command inside the SSD.
• Test 8 I/O sub-tests right after ftl_open
• Generate ftl_write and ftl_read internally
– Not from host – Almost same as ftl_sim.c in past lab. ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 4 FTL Testing: ftl_test • How to? – Download ftl_test.zip at course homepage – Unzip it into ftl_xxx folder – Add ftl_test.c to ‘SRCS=‘ in build_gnu/Makefile – Edit include/jasmine.h • Set OPTION_FTL_TEST and OPTION_UART_DEBUG – Edit ftl_xxx/ftl.h • #define DRAM_BYTES_OTHER (… + FTL_TEST_BYTES) • #define FTL_TEST_ADDR (…previous define value…) • #define FTL_TEST_BYTES (4*1024*1024)
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 5
FTL Testing: ftl_test • Result will be shown on PuTTY • Eight I/O patterns are generated – 0th : Specific behaviors – 1st : [SW-SR]s – 2nd : SWs-SRs – 3rd : Similar with 1st one – 4th : Similar with 3rd one – 5th : SWs-RWs-Rs – 6th : Partial page RWs-RRw (hard) – 7th : Similar with 5th • Try it with Greedy FTL • You can also add other workloads by creating them.
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 6
Project II DFTL Porting on Jasmine
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected])
Project II : DFTL Porting on Jasmine
• Porting the DFTL simulator (Project 1) on
Jasmine Board – Store page mapping table on flash memory. – Dynamically load/unload map page into DRAM. – GTD is managed in DRAM.
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 8
Configurations • FTL Configure – Configure to use 1 plane mode (include/jasmine.h)
– Do not modify # of Bank, # of Block, # of Page, etc.
• DFTL Configure – # of Map Blocks (per bank)
– # of Cached Map page (per bank)
• Manage dirty bit separately.
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 9 Description • Block layout – block #0: scan list, firmware binary image, etc. – block #1: FTL misc. metadata • If more than 1 block is needed, use next block – block #2: initial gc block for user block • Perform GC when free block is 1 in the total user blocks – block #3: initial gc block for map block • Perform GC when free block is 1 in the total map blocks – block #4~: user & map data blocks • Total number of map blocks: N_MAP_BLOCKS_PB + 1 (gc block) • Total number of user blocks: REMAINING_BLOCKS – N_MAP_BLOCKS_PB + 1 (gc block)
• Do not use the page mapping table (PAGE_MAP_ADDR) used in
Greedy FTL. – Do not use the associated function. – You must initialize the page mapping table in the NAND.
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 10
– When no page read or write operation required → Cache hit – Other → Cache miss ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 11 Description • Note – Spare area management • Manage map page number list of current block for spare area management. – Store map page number list of current block to last page of the block. – See g_misc_meta[bank].lpn_list_of_cur_vblock.
– Flash wrapper function
• Do not use xxx_from_host(), xxx_to_host() if it only changes to DRAM. • Use RETURN_ON_ISSUE, RETURN_WHEN_DONE according to the operation.
– SRAM data management
• Add the data to the ftl_statistics and misc_metadata structures. – ex) cache_hit, cache_miss, ...
ICE3028: Embedded System Design, Fall 2019, Dongkun Shin ([email protected]) 12
Miscellaneous • Recommended environment : Windows
• Team Project
• You should submit a report
– Describe your code in detail. – Analyze the performance vs. CMT ratio (Draw a graph) – Analyze the performance vs. # of Map OP blocks (Draw a graph) • Configure MAP_OP_RATIO – Measure the performance with an IOmeter • Direct connect to SATA, not through a USB • Sequential Write 16KB, Sequential Read 16KB, Random Write 16KB, Random Read 16KB