시스템 소프트웨어 특강 수업은 2007년 1학기에 수강했던 과목으로서 주로 플래시 메모리의 FTL(Flash Transport Layer)에 대해서 공부 했다.
FTL 의 기본기능은 주소변환이라고 하겠다. 논리주소를 플래시 메모리에 대한 물리적 주소로 변환해주는 역할을 한다.
수업 자료 목록
파일은 ftl.zip 에서 다운로드 받을 수 있다. 자료의 순서는 파일명의 숫자로 구분한다.
역시 수업에서 발표했던 전체 PPT 파일은 에서 다운로드 받을 수 있다.
제목 | 파일명 |
플래시 메모리 기반 시스템 소프트웨어 | FlashMemory_intro.pdf |
NAND Operation - Detail's | NAND_Operation.pdf |
FTL - Introduction | FTL_intro.pdf |
M-Systems | Msystem.pdf |
Mitsubish | Mitsubishi.pdf |
Moving sectors within a block of information in a flash memory mass storage architecture | lexar.pdf |
A SPACE-EFFICIENT FALSH TRANSLATION LAYER FOR COMPACTFLASH SYSTEM | A_SPACE_EFFICIENT_FALSH_TRANSLATION_LAYER_FOR_COMPACTFLASH_SYSTEM.pdf |
A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation | A_Log_Buffer_Based_Flash_Translation_Layer_Using_Fully_Associative_Sector_Translation.ppt |
Method of Driving Remapping in Flash Memory and Flash Memory Architecture suitable Therefor | SSR.pdf |
A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation | A_Log_Buffer_Based_Flash_Translation_Layer_Using_Fully_Associative_Sector_Translation.ppt |
A Space-Efficient Caching Mechanism for Flash-Memory Address Translation | caching_Mech.pdf |
Configurable NAND Flash Translation Layer | Configurable_NAND_Flash_Translation_Layer.ppt |
A Log-based Flash Translation Layer for Large NAND flash memory | log_based_FTL_for_large_nand_flash_memory.pdf |
FLASH MEMORY WEAR LEVELING SYSTEM AND METHOD | FLASH_MEMORY_WEAR_LEVELING_SYSTEM_AND_METHOD_.ppt |
Wear Leveling of Static Areas in Flash Memory | 손형서_Wear_Leveling_of_Static_Areas_in_Flash_Memory.ppt |
A Flash-Memory Based File System | A_Flash_Memory_Based_File_System.ppt |
An Efficient log-structured flash file system for micro sensor nodes | An_Efficient_Log_Structured_Flash_File_System_for_Micro_Sensor_Nodes.pdf |
A Fast Start-Up Technique for Flash Memory Based Computing Systems | Fast_Start_Up_Technique.ppt |
Portable Electronic Device Having A Log-Structured File System In Flash Memory | Portable_Electronic_Device_Having_A_Log_Structured_File_System_In_Flash_Memory.pdf |
Design of a Reliable NAND Flash Software for Mobile Device | Design_of_a_Reliable_NAND_Flash_Software_for_Mobile_Device_김형진.pdf |
A Transactional Flash File System for Microcontrollers | A_Transactional_Flash_File_System_for_Microcontrollers_1.ppt |
PicoDBMS_Scaling down Database Techniques for the Smartcard | PicoDBMS_Scaling_down_Database_Tecchniques_for_the_Smartcard_system.ppt |
PoLiDBMS Design and prototype Implementation of a DBMS for portable Devices | PoLiDBMS_Design_and_prototype_Implementation_of_a_DBMS_for_portable_Devices.ppt |
An Efficient B-Tree Layer for Flash-Memory Storage Systems | BFTL_유종선.pdf |
An Efficient NAND Flash File System for Flash Memory Storage | An_Efficient_NAND_Flash_File_System.ppt |
FAB: Flash-Aware Buffer Management Policy for Portable Media Players | FAB__2007505625_전제민_.ppt |
Design of Flash-based DBMS :An In-Page Logging Approach | Design_of_Flash_based_DBMS_An_in_page_Logging_Approach.pdf |
An Efficient Management Scheme for Large-Scale Flash-Memory Storage System | An_Efficient_Management_Scheme_for_Large_Scale_Flash_Memory_Storage_System.ppt |
MicroHash: An Efficient Index Structure for Flash-Based Sensor Devices | MicroHash.ppt |
Algorithms and Data Structures for Flash Memories | 2007601288_장경현.ppt |
Managing Flash Memory In Personnal Communication Devices | Managing_Flash_Memory_In_Personnal_Communication_Devices.ppt |
STAFF: State Transition Applied Fast Flash Translation Layer | STAFF_2007505368_고상원.pdf |
Efficient Data Management on Lightweight Computing Devices | Efficient_Data_Management_on_Lightweight_Computing_Devices.ppt |
NAND FLASH 의 특징
- No In-place Update = Erase-before-write Arch(1 → 0 : OK, 0 → 1 : NO)
- Operation unit : read / write(program) : page 단위로 이루어짐/ erase : block 단위
- Asymmetric Cost : read(10us) / write(200us) / erase(2ms)
부분적인(partial) read/write 가 가능하다, 하지만, erase 는 block 단위로 이루어진다.
타입 | 단점 | 장점 |
SLC(single level cell) | cell 에 전자가 하나이기 때문에, 0 과 1 밖에 표현할 수 없다 | 속도가 빠르다(에러체크) |
MLC(multi level cell) | 에러체크에 경우, 복잡하다 | cell 에 전자가 2 개 이상이기 때문에, 여러가지 상태를 표현할 수 있음, 집적도가 높음(대용량에 적합) |
Mitsubishi
LASAR
렉사(LASAR) 방식의 가장 큰 특징이라 한다면, 여러가지 플래그를 사용한다는 것이다. 플래그는 각각 move, used, old, defect 로 나뉘어져 있다.
동작 순서는 다음과 같다.
- spare 영역의 구조체에는 각각의 플래그가 선언되어 있다.
- 초기화시에는 모든 플래그가 0 으로 설정된다.
- write 시에는 빈 블럭에 데이터를 저장하고, used 플래그를 1로 설정한다.
- 만일 다음에 같은 주소에 write 할 시에는, used 플래그를 보고, 다른 블럭에 저장한다. 그리고 이전의 저장된 데이터 블럭은 old 플래그와 defect 플래그를 1 로 설정한다.
- 현재 블럭이 다 차면, 새로운 블럭을 하나 할당한다. 여기서 저장되는 것들은 move 플래그를 1 로 설정한다.
- 두개의 블럭 모두 다 차면, merge 가 일어나면서 새로운 블럭에 used 플래그만 있는 데이터를 옮겨와 저장한다.
SSR
현재까지 알아본 FTL 알고리즘 중에서 가장 성능이 안 좋은 방법이다.
기존의 방법과는 달리 INPLACE 영역이 없다. Mitsubishi 의 경우에는 1/2 를 INPLACE 영역으로 할당했지만, 여기서는 그럴 필요가 없다.
이 방법이 성능이 안좋은 결정적인 이유는 기존의 블럭이 모두 차서(FULL) 새로운 블럭을 할당할 때, 기존의 번지에 값이 이미 write 되어 있다면, 비록 다른 번지에 빈 공간이 있다고 하더라고 새로운 블럭을 할당한다.
BAST
현재까지의 FTL 알고리즘 중에서 가장 성능이 좋은 방법이다.
한 블럭의 모든 데이터가 invalid 하면 switch 를 시키고, 하나라도 valid 하면 merge 시킨다.
로그 블럭을 선언하고, ftl_write(), merge(), switch() 함수를 수정하여 구현한다.
실험시에는 로그 블럭의 숫자(2,4,8,16,32)를 달리 하여 테스트한다.
FAST
BAST 알고리즘과 로그블럭 갯수를 같이 증가 시켜 비교 한다. 이때, SSR 과 LEXAR 방법은 비교가 곤란하므로 테스트에서 제외시킨다.
FAST 는 랜덤 로그 블럭이 여러 개이고, 시퀀셜 로그 블럭이 1 개이다.