====== 시스템 소프트웨어 특강 ====== 시스템 소프트웨어 특강 수업은 2007년 1학기에 수강했던 과목으로서 주로 플래시 메모리의 FTL(Flash Transport Layer)에 대해서 공부 했다. FTL 의 기본기능은 주소변환이라고 하겠다. 논리주소를 플래시 메모리에 대한 물리적 주소로 변환해주는 역할을 한다. ====== 수업 자료 목록 ====== 파일은 {{ :computer:job:rtcclab: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 개이다. ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----