t T T A T e c h n i c a l R e p o r 기술보고서 제정일: 2012년 xx월 xx일 TL 탑재 장치 내부 정보와 파일시스템의 성능 개선 Internal Information of TL Devices and Performance Improvement of ile System
제정일: 2012년 xx월 xx일 TL 탑재 장치 내부 정보와 파일시스템의 성능 개선 Internal Information of TL Devices and Performance Improvement of ile System 본 문서에 대한 저작권은 TTA 에 있으며, TTA 와 사전 협의 없이 이 문서의 전체 또는 일부를 상업적 목적으로 복제 또는 배포해서는 안 됩니다 Copyrightc Telecommunications Technology Association 2012 All Rights Reserved
서 문 1 기술보고서의 목적 본 기술보고서의 목적은 플래시 메모리 기반의 저장장치인 TL 탑재 장치 위에서 동 작하는 파일시스템의 I/O 성능을 개선하기 위해서, TL 탑재 장치가 장치를 구성하는 플 래시 메모리 정보를 제공할 경우의 이점을 밝히는 데에 있다 파일시스템은 부가적으로 제공되는 내부 정보를 통해 TL 탑재 장치를 구성하는 플래시 메모리의 물리적인 레이 아웃에 맞게 파일시스템의 저장장치 상 레이아웃을 정렬시키는 등의 최적화를 통해 성 능 향상을 꾀할 수 있다 2 주요 내용 요약 현재의 TL 탑재 장치들은 플래시 변환 계층을 통해 상위의 운영체제에는 하드디스크 와 같은 블록 장치로 보인다 때문에 운영체제에서는 이 저장장치가 플래시 메모리를 사 용한다는 것을 인지할 수 없다 플래시 메모리를 사용한다는 것을 알 수 없기 때문에 파 일시스템의 레이아웃을 TL 탑재 장치를 구성하는 플래시 메모리에 맞게 정렬을 시키는 등의 최적화를 도모할 수 없다는 문제점이 있다 본 기술보고서에서는 플래시 메모리의 특성, TL 탑재 장치의 구성에 대해 살펴보고 상위의 파일시스템이 효율적으로 동작할 수 있도록 TL 탑재 장치가 제공해야 할 내부 정보를 제시한다 3 기술보고서 적용 산업 분야 및 산업에 미치는 영향 본 기술보고서는 파일시스템이 효율적으로 동작할 수 있도록 TL 탑재 장치가 제공해 야 할 내부 정보를 제시한다 따라서 파일시스템을 탑재하는 운영체제와 emmc와 같은 TL 탑재 장치 산업 분야와 관련된다 파일시스템은 장치 내부 정보를 통해 여러 가지 최적화를 도모할 수 있다 이를 통해 하드웨어적인 성능 개선 없이도 TL 탑재 장치의 전반적인 I/O 성능을 향상시킬 수 있어 TL 탑재 장치의 보급에 도움이 되리라 기대한 다 4 참조 표준(권고) 41 국외 표준(권고) - INCITS 452-2008 (D1699): AT Attachment 8 - ATA/ATAPI Command Set i
42 국내 표준 - 해당 사항 없음 5 참조 표준(권고)과의 비교 51 참조 표준(권고)과의 관련성 - 해당 사항 없음 52 참조한 표준(권고)과 본 표준의 비교표 - 해당 사항 없음 6 지적재산권 관련사항 본 기술보고서의 '지적재산권 확약서 제출 현황은 TTA 웹사이트에서 확인할 수 있다 본 기술보고서를 이용하는 자는 이용함에 있어 지적재산권이 포함되어 있을 수 있으므로, 확인 후 이용한다 본 기술보고서와 관련하여 접수된 확약서 이외에도 지적재산권이 존재할 수 있다 7 시험인증 관련사항 71 시험인증 대상 여부 - 해당 사항 없음 72 시험표준 제정 현황 - 해당 사항 없음 8 기술보고서의 이력 정보 81 기술보고서의 이력 ii
판수 제정 개정일 제정 개정내역 제 1 판 2012---- 제정 TTAxxx-xxxxxx 기술보고서 82 주요 개정 사항 - 해당 사항 없음 iii
Preface 1 Purpose of Technical Report The purpose of this Technical Report is to explain the reason why internal information of TL devices should be revealed to improve I/O performance of file system y using internal information of TL devices, file system data can be aligned with physical layout of flash memory of TL device If file system data is aligned with physical layout of flash memory of TL device, I/O performance of file system can be improved 2 Summary of Contents TL stands for "lash Translation Layer" and it is software which emulates a block device on top of flash hardware All TL devices provide operating system with block I/O access Due to this, file system can t recognize that the underlying storage consists of flash memory ecause file system have no information about the physical layout of flash memory based storage, it cannot optimize the layout of file system data, which can lead to I/O performance degradation 3 Applicable fields of industry and its effect This Technical Report defines internal information of TL devices open to upper layer like file system y using this information, file system can improve I/O performance Due to this, overall I/O performance of TL devices can be improved without any hardware improvement of TL devices So, this Technical Report is related to operating system and TL device industry 4 Reference Standards (Recommendations) 41 International Standards (Recommendations) - INCITS 452-2008 (D1699): AT Attachment 8 - ATA/ATAPI Command Set iv
42 Domestic Standards 기술보고서 - None 5 Relationship to Reference Standards (Recommendations) 51 Relationship of Reference Standards - None 52 Differences between Reference Standard (Recommendation) and this Technical Report - None 6 Statement of Intellectual Property Rights IPRs related to the present document may have been declared to TTA The information pertaining to these IPRs, if any, is available on the TTA Website No guarantee can be given as to the existence of other IPRs not referenced on the TTA website And, please make sure to check before applying the technical report 7 Statement of Testing and Certification 71 Object of Testing and Certification - None 72 Standards of Testing and Certification - None 8 History of Technical Report 81 Change History v
Edition Issued date Outline The 1st edition 2012---- Established TTAxxx-xxxxxx 82 Revisions - None vi
목 차 1 개 요 1 2 기술보고서의 구성 및 범위 1 3 참조 표준(권고) 1 4 용어정의 2 5 하드디스크와 TL 탑재 장치 비교 4 51 하드디스크의 특성 4 52 플래시 메모리의 특성 5 53 플래시 변환 계층 7 6 TL 탑재 장치와 파일시스템 성능 8 61 플래시 메모리와 파일시스템의 정렬 문제 8 62 파일시스템 성능 개선을 위한 TL 탑재 장치 내부 정보 9 63 TL 탑재 장치 내부 정보 제공 예제 10 vii
Contents 1 Introduction 1 2 Constitution and Scope 1 3 Reference Standards (Recommendations) 1 4 Terms and Definitions 2 5 The Comparison of Hard Disk and TL Device 4 51 Characteristics of Hard Disk 4 52 Characteristics of lash Memory 5 53 Characteristics of Hard Disk 7 6 TL Devices and Performance of ile System 8 61 lash Memory and ile System Alignment Problem 8 62 Internal Information of TL Devices to Improve I/O performance 9 63 An example of Identifying TL Devices 10 viii
TL 탑재 장치 내부 정보와 파일시스템의 성능 개선 Internal Information of TL Devices and Performance Improvement of ile System 1 개요 현재의 TL 탑재 장치들은 플래시 변환 계층을 통해 상위의 운영체제에는 하드디스크 와 같은 블록 장치로 보인다 때문에 운영체제에서는 이 저장장치가 플래시 메모리를 사 용한다는 것을 인지할 수 없다 플래시 메모리를 사용한다는 것을 알 수 없기 때문에 파 일시스템의 레이아웃을 TL 탑재 장치를 구성하는 플래시 메모리에 맞게 정렬을 시키는 등의 최적화를 도모할 수 없다는 문제점이 있다 본 기술보고서에서는 플래시 메모리의 특성, TL 탑재 장치의 구성에 대해 살펴보고 상위의 파일시스템이 효율적으로 동작할 수 있도록 TL 탑재 장치가 제공해야 할 내부 정보를 제시한다 2 기술보고서의 구성 및 범위 본 기술보고서는 크게 용어 정의, 하드디스크와 TL 탑재 장치 비교, TL 탑재 장치 와 파일시스템 성능 부분으로 구성되어 있다 용어 정의는 저장장치 기술 관련 주요 용 어들(TL, emmc, LA 등)에 대해 다룬다 하드디스크와 TL 탑재 장치의 비교에서는 각 저장장치의 읽기/쓰기 특성을 살펴보고, 플래시 메모리의 독특한 특성과 이를 처리하 기 위해 존재하는 플래시 변환 계층에 대해 알아본다 마지막으로 TL 탑재 장치와 파 일시스템 성능 부분은 데이터가 정렬되어 저장되지 않을 경우 TL 탑재 장치의 어떤 특 성 때문에 성능 상의 문제가 발생하는지, 이를 회피하기 위해 어떤 정보들이 외부로 제 공되어야 하는지에 대해 다룬다 3 참조 표준(권고) - 해당 사항 없음 1
4 용어정의 기술보고서 41 저장 장치 기술 관련 용어 411 플래시 변환 계층(TL, lash Translation Layer) 플래시 메모리는 페이지/블록 주소 접근 인터페이스를 가지는데, 이를 숨기고 운영체제에 LA(Logical lock Addressing) 공간을 제공하는 블록 장치로 보이는 역할을 수행하는 계층을 의미한다 플래시 메모리가 블록 장치와는 다른 특성들, 즉 한번 쓴 페이지는 블록 전체를 삭제하기 전에는 다시 쓰기를 할 수 없는 점, 블록 내의 페이지들은 반드시 순서대로 써야 한다는 점, 삭제를 할 수 있는 횟수에는 한계가 있다는 점 등을 숨기고 블록 장치로 보이기 때문에 LA 공간과 대응되는 물리적인 플래시 메모리 공간 간의 매핑을 관리한다 412 TL 탑재 장치(TL device) 플래시 메모리에 TL 기능을 수행하는 컨트롤러를 결합하여 하나의 저장장치로 보이게 만든 것으로 플래시 메모리를 대상으로 만들어진 것이 아닌 기존 파일시스템들을 바로 사용할 수 있다는 장점을 가지고 있다 이동식 저장매체로 널리 쓰이는 US 메모리, SD 카드 등과 스마트폰 등 모바일 임베디드 시스템에 많이 들어가는 emmc, 하드디스크를 대체할 수 있는 SSD 등이 대표적이다 412 LA(Logical lock Addressing) 저장장치의 각 블록들에 대해 정수 인덱스로 접근이 가능한 선형 주소 체계이다 저장장치의 내부를 상세하게 알아야 하는 기존의 주소 체계를 대체하기 위해 등장한 것이다 초기의 하드디스크들은 본래 CHS(Cylinder-Head-Sector) 체계를 사용했는데, 이는 하드디스크 상의 실린더, 헤드, 섹터를 일일이 지정해야 하며 선형 주소 공간도 아니기 때문에 사용하는 것이 복잡하고 불편한 면이 있다 이를 해결하기 위해 등장한 것이 LA 방식이다 412 블록 장치(lock Device) 연속적인 바이트인 블록 단위로 데이터를 읽고 쓸 수 있는 장치를 의미한다 이에 대비되는 것으로 문자 장치(Character Device)가 있다 하드디스크, CDROM 등이 대표적인 블록 장치이다 문자 장치가 데이터에 대해 임의 접근이 안 되는 데에 비해, 블록 장치는 임의 접근이 가능하다 412 MMC(Multi Media Card) 플래시 메모리로 만든 메모리 카드의 표준 주로 이동식 저장장치로 쓰기 위해 고안된 것으로 디지털 카메라 등에 탑재되어 사용되는 것이 대표적이다 MMC 는 이후 MMC 를 계승하여 나온 SD 카드에 의해 대체되었으나, SD 카드를 지원하는 대부분의 장치에서 여전히 사용이 가능하다 초기에는 1 비트 시리얼 통신 인터페이스를 사용했으나 이후 4/8 비트 인터페이스로 개선되었다 2
412 SD 카드(SD card, Secure Digital card) MMC 를 확장한 플래시 메모리 기반의 메모리 카드 규격 역시 이동식 저장장치로 사용하는 것을 목적으로 고안된 규격이다 SDSC(Standard Capacity), SDHC(High Capacity), SDXC(eXtended Capaticy), SDIO(Input Output) 4 가지 규격을 포함한다 카드의 물리적인 크기를 기준으로 SD, minisd, microsd 3 가지를 지원한다 412 emmc(embedded Multi Media Card) MMC 인터페이스를 이동식 저장장치가 아닌 임베디드 시스템에 내장된 저장장치로 쓰기 위한 구조를 정의한 규격 이 규격에 따라 만든 것으로 삼성전자의 MoviNAND, SanDisk 의 inand 등이 있다 임베디드 시스템에서 NAND lash Memory 를 직접 내장해서 저장장치로 사용하는 경우를 대체하는 용도로 많이 쓰일 것으로 기대되고 있다 412 NOR 플래시 메모리(NOR lash Memory) 플래시 메모리의 한 종류 바이트 단위로 읽기/쓰기가 가능해 RAM 과 비슷한 모습을 보여 XIP(execute in place) 메모리로 사용되기도 한다 삭제는 블록 단위로만 가능하다 읽기/쓰기 성능은 NAND lash Memory 에 비해 우수하나 삭제 성능은 오히려 떨어지고 가격이 비싸기 때문에 보통 은 NAND lash Memory 처럼 Secondary Storage 로 쓰이지 않는다 412 NAND 플래시 메모리(NAND lash Memory) 플래시 메모리의 한 종류 RAM 처럼 바이트 어드레싱이 가능한 NOR 플래시 메모리와 달리 페이지/블록 단위로 접근한다는 측면에서 블록 장치와 유사하다 읽기/쓰기 성능은 NOR 플래시 메모리보다 떨어지나 삭제 속도는 더 빠르고 가격이 저렴하여 대용량화 하기 쉽기 때문에 이동식 저장장치 등 Secondary Storage 를 만드는 데에 많이 쓰이고 있다 412 JS2(Journaling lash ile System 2) 플래시 메모리에서 사용하기 위해 만들어진 플래시 파일시스템의 하나로 JS 를 계승하였다 로그 구조 기반 파일시스템(log-structured file system)의 형식을 취하고 있으며 리눅스 커널 2410 부터 커널에 포함되었다 마운트 시점에 저장장치 전체를 스캔하여야 하기 때문에 마운트에 시간이 오래 걸리는 단점이 있어 YAS2, UIS 등 다른 플래시 파일시스템들이 등장하게 되었다 412 YAS2(Yet Another lash ile System 2) 플래시 파일시스템의 하나로 YAS 의 후속버전 NAND lash memory 가 small block 구조에서 large block 구조로 가면서 생긴 추가적인 제약사항인 sequential programming 을 해결하기 위해 YAS 를 약간 수정한 것으로 전체적으로 큰 차이는 없다 마운트를 하기 위해 JS2 가 플래시 메모리 전체 페이지들을 스캔하는 데에 3
비해, YAS2 는 플래시 메모리의 스페어 영역들만 스캔하기 때문에 마운트 시간 측면에서 상대적으로 유리하다는 장점을 가지고 있다 412 UIS(UI ile System) JS2 의 후속 버전으로 기존의 JS2 가 가지고 있던 문제점들을 개선하기 위해 개발되었다 UI(Unsorted lock Image)라는 하위 계층 상에서 동작하여 UIS 라는 이름을 가지고 있다 JS2 는 파일시스템의 인덱스를 저장장치에 저장하지 않기 때문에 마운트 시점에 플래시 메모리 전체를 스캔해야 하는 데에 비해, UIS 는 인덱스를 저장장치에 저장해 두기 때문에 인덱스만 읽어 들이면 되기 때문에 마운트 시간이 짧다 또한 write-back 을 지원하여 쓰기 성능 측면에서 우수하다는 장점도 가지고 있다 5 하드디스크와 TL 탑재 장치 비교 TL 탑재 장치는 플래시 메모리에 플래시 변환 계층을 수행하는 컨트롤러를 결합하여 기존의 하드디스크와 같이 블록 장치로 보이는 저장장치이다 TL 탑재 장치는 플래시 메모리의 저렴한 가격, 낮은 소비전력, 작은 크기, 충격에 강한 특성 등의 장점 덕분에 임베디드 시스템에서 저장장치로 널리 쓰인다 플래시 메모리는 하드디스크에 사용되는 자기 디스크와는 그 특성이 크게 다르다 이 로 인해 플래시 메모리를 TL 계층 없이 바로 접근해서 사용할 경우에는 상위에서 동작 하는 소프트웨어(운영체제의 파일시스템 등)가 그 특성에 맞게 따로 제작된 것으로 바뀌 어야 한다 이는 기존 소프트웨어를 그대로 사용할 수 없다는 불편으로 이어진다 때문 에 TL 탑재 장치는 TL을 통해 기존의 블록 장치처럼 보이도록 한다 덕분에 기존의 소프트웨어들을 그대로 사용할 수 있다는 장점이 있긴 하지만, 상위의 운영체제가 저장 장치가 플래시 메모리로 구성되어 있음을 인식하지 못하므로 저장 매체의 특성에 맞는 최적화를 수행할 수가 없다 이 장에서는 기존 하드디스크의 특성, 플래시 메모리의 특성을 알아보고 TL이 하는 역할과 그 구성에 대해서 알아본다 51 하드디스크의 특성 하드디스크는 회전하는 플래터(platter) 위를 헤드가 원하는 데이터가 있는 위치로 이 동하여 데이터를 읽어오는 구조이다 헤드는 플래터 위를 직선으로 앞 뒤로만, 즉 1차원 으로 움직인다 데이터에 접근하기 위해서는 먼저 헤드가 원하는 데이터가 있는 트랙으 로 이동해야 하고 이 과정은 기계적인 동작이다 헤드가 원하는 트랙위로 이동하는 데에 걸리는 시간을 탐색 시간(seek time)이라고 부르는데, 기계 동작이기 때문에 이 시간을 줄이는 데에는 한계가 있다 헤드가 목표한 트랙으로 가면 트랙 상의 원하는 섹터가 헤 드 아래에 위치할 때까지 플래터가 회전하는 것을 기다려야 한다 이에 걸리는 시간을 회전 지연시간(rotational delay)라고 한다 회전 지연 시간 역시 기계적인 동작 시간이 영항을 미치기 때문에 줄이는 데에 한계가 있지만 탐색 시간에 비해서는 짧다 원하는 4
섹터가 헤드 아래에 위치하면 비로서 데이터 전송이 이루어진다 이와 같이 하드디스크 는 기계적인 동작 특성 때문에 임의의 데이터에 접근하는 데에 걸리는 시간이 길다 하드 디스크는 512바이트의 섹터 단위로 데이터 읽기/쓰기가 가능하며, 이 섹터 단위 의 접근 주소를 LA(Logical lock Address)라고 부른다 읽기/쓰기 모두 섹터 단위로 이루어지며 각 연산의 속도 차이도 없다 52 플래시 메모리의 특성 플래시 메모리에는 NOR lash Memory와 NAND lash Memory 가 있지만, TL 탑재 장치에 사용되는 것은 NAND lash Memory이므로, 본 기술보고서에서 플래시 메모리라 함은 NAND lash Memory를 지칭하는 것임을 먼저 밝혀둔다 앞서 밝혔듯이 하드디스크는 512바이트 섹터 단위로 데이터 전송이 이루어지고, 읽기 /쓰기 모두 섹터 단위로 이루어진다 그에 비해 플래시 메모리는 읽기/쓰기는 페이지 라 는 단위로 이루어지는데, 한번 쓰기를 한 페이지는 삭제를 하기 전에는 다시 쓰기를 수 행할 수 없다 이 삭제 연산은 여러 개의 페이지로 구성된 블록 단위로만 가능하다 블 록은 삭제 단위이기 때문에 erase block이라고 부르기도 한다 Page Spare lock 0 P 0 P 1 P 2 P 3 512 512 512 512 16 16 16 16 P 31 lock 1 lock M (그림 5-1) Small lock NAND lash Memory 구조 (그림 5-1)은 페이지 크기가 512바이트인 NAND lash Memory의 구조를 나타낸다 그림에서와 같이, 페이지가 하나의 섹터로 구성된 것을 Small lock 이라고 부른다 각 페이지에는 16바이트의 스페어 영역이 있어 페이지의 데이터를 읽고 쓸 때 제대로 되었 는지 확인하기 위한 ECC 값을 저장하는 등의 용도로 사용된다 각 블록은 32개의 페이 5
지로 구성되어 16K의 크기를 가진다 기술보고서 삭제 동작은 읽기/쓰기에 비해 매우 많은 시간이 걸린다 또한 각 블록은 삭제 가능한 횟수에 제한이 있어 한계에 달하면 해당 블록은 사용할 수 없게 된다 더 이상 쓸 수 없 게 된 블록은 bad block이라 부른다 이런 bad block은 처리하는 것이 힘들뿐만 아니라 bad block만큼 사용 가능한 공간이 감소하기 때문에 저장 장치로서의 기능을 상실하게 된다 따라서 각 블록들이 골고루 닳게 해서 최대한 bad block이 늦게 나타나도록 해야 충분한 수명을 확보할 수 있다 이런 기능을 wear-leveling이라고 부른다 플래시 메모리의 읽기/쓰기/삭제 각 연산은 모두 수행에 소요되는 시간이 다르며, 읽 기 > 쓰기 > 삭제 순으로 빠르다 각 제조사별, 제품별로 그 수치는 다르지만 각 연산 별 상대적인 격차는 거의 비슷하다 <표 5-1>은 플래시 메모리의 각 연산에 걸리는 시 간을 나타낸 한 예이다 <표 5-1> 플래시 메모리 각 연산 수행 속도 비교 종류 시간 읽기(Read) 36 usec 쓰기(Write) 200 usec 삭제(Erase) 2000 usec 플래시 메모리의 이런 특성은 하드디스크와는 달리 기존의 기록된 데이터에 대한 수 정을 원래 위치에 기록하는 in-place update가 매우 곤란함을 의미한다 즉 플래시 메모 리에서는 기존에 기록된 어떤 파일의 데이터를 일부 수정하더라도 해당 위치에 다시 쓰 기를 시도하는 것은 바람직하지 않다 해당 수정 데이터가 대응되는 페이지가 속한 블록 전체를 삭제하고 다시 기록하므로, 시간이 오래 걸려 쓰기 성능이 크게 떨어지기 때문이 다 또한 한 개 페이지에 대해서만 수정해도 페이지가 속한 블록을 모두 다시 쓰기 때문 에 결과적으로 삭제를 남발하는 것이 되어 플래시 메모리의 수명에도 악영향을 미친다 따라서 플래시 메모리에서는 수정 사항이 있어도 본래 위치가 아닌 다른 위치에 수정 사항을 기록하는 방식이 적합하며 이를 out-of-place update라고 부른다 최근의 플래시 메모리들은 용량이 증가하면서 하나의 페이지가 여러 개의 서브 페이 지(sub-page)로 구성된 Large lock 구조를 사용하고 있다 (그림 5-2)는 페이지 크기 가 2K인 Large lock NAND lash Memory의 구조를 나타낸다 512바이트 크기의 서브 페이지 4개로 구성된 각 페이지에는 64바이트의 스페어 영역이 있어 페이지의 데이터를 읽고 쓸 때 제대로 되었는지 확인하기 위한 ECC 값을 저장하는 등의 용도로 사용된다 각 블록은 64개의 페이지로 구성되어 128K의 크기를 가진다 6
Page Spare lock 0 P 0 P 1 P 2 P 63 Sector n Sector n+1 Sector n+2 Sector n+3 512 512 512 512 64 512 512 512 512 64 512 512 512 512 64 lock 1 lock M (그림 5-2) Large lock NAND lash Memory의 구조 Large lock NAND lash Memory의 경우, 한 블록 내의 각 페이지는 반드시 앞에서 부터 차례대로 쓰기를 해야 한다 는 제약 사항도 가지고 있다 이를 어기고 강제로 쓰기 를 수행하면 플래시 메모리의 데이터가 훼손되게 된다 이 제약사항을 다른 용어로 sequential programming 이라고 부른다 53 플래시 변환 계층 앞서 살펴본 바와 같이, 플래시 메모리는 매우 독특한 특성을 가지고 있어 본래 하드 디스크와는 다른 인터페이스(NAND interface)를 가지고 있으며, 블록 장치가 아니다 블 록 장치가 아니므로 상위의 파일시스템 또한 달라야 한다(기존 파일시스템들은 블록 장 치 상에서 동작하도록 구현되어 있음) 때문에 플래시 메모리의 제약 사항들을 처리하고 블록 장치가 아닌 인터페이스에서 동작하는 전용 파일시스템인 플래시 파일시스템들이 등장하였다 플래시 파일시스템으로는 JS2, YAS2, UIS 등이 대표적이다 그러나 기존 파일시스템들을 쓸 수 없으면 불편하므로 TL 탑재 장치는 플래시 메모리를 하드 디스크와 같은 블록 장치로 보이게 하는 TL(lash Translation) 계층을 장치 내부에서 수행한다 즉 레거시 시스템(Legacy System)을 지원하기 위해 TL 탑재 장치는 내부에 컨트롤러를 탑재하여 플래시 메모리의 동작 속성을 외부에 숨긴다 TL은 상위의 운영체제에는 고정된 LA 주소 공간을 제공하여 블록 장치처럼 접근할 수 있도록 한다 그리고 이 주소 공간에 매핑되는 실제 플래시 메모리의 페이지/블록을 7
바꿔줌으로써 플래시 메모리의 여러 제약 사항들, 즉 페이지/블록 단위로 접근하며 한 번 쓰기 한곳에 다시 쓸 때는 먼저 삭제를 하는 점, 블록 내에 페이지는 순차적으로 기 록해야 하는 점 등을 숨겨준다 TL 탑재 장치는 내부에 컨트롤러를 탑재하고 이 컨트롤 러가 TL을 로직을 수행하도록 되어 있다 (그림 5-3)는 이 구조를 나타내고 있다 LA 공간 (운영체제에서의 시점) lash Translation Layer 플래시 메모리 공간 (그림 5-3) 계층 구조 상 TL의 위치 TL을 구현하는 방식은 LA 공간에 매핑되는 플래시 메모리 공간을 어느 크기 단위 로 관리하느냐, 즉 매핑 테이블을 유지하느냐에 따라 여러 가지가 있다 플래시 메모리 의 페이지 단위의 매핑 테이블을 사용하는 페이지 레벨 매핑(Page level mapping), 플래 시 메모리의 블록 단위의 매핑을 수행하는 블록 레벨 매핑(lock level mapping), 블록 레벨 매핑을 사용하지만 일부 블록에 대해서는 좀더 조밀한 페이지 레벨 매핑을 사용하 는 하이브리드 매핑 방식 등이 있다 6 TL 탑재 장치와 파일시스템 성능 본 기술보고서는 TL 탑재 장치에서 동작하는 파일시스템의 성능을 향상시키기 위해 TL필장치가 상위에서 최적화하는 데에 필요한 정보를 제공할 것을 제안한다 이 장에 서는 파일시스템이 TL 탑재 장치 내부의 플래시 메모리 구성 정보를 모르고 접근하면 어떤 문제가 생길 수 있는지 살펴보고, 그에 따라 장치 외부로 공개되어야 하는 정보들 이 어떤 것인지 알아보도록 한다 61 플래시 메모리와 파일시스템의 정렬 문제 TL 탑재 장치는 플래시 메모리로 구성되기 때문에 플래시 메모리의 특성에 따른 영 향을 받을 수 밖에 없다 이는 데이터의 배치에 따라 I/O 성능이 크게 좌우될 수 있다는 뜻이다 이를 몇 가지 예를 통해 설명하도록 하겠다 우선 (그림 5-2)에 나타난 것과 같 은 2K 페이지/128K 블록 인 플래시 메모리로 구성된 TL 탑재 장치가 있다고 가정 한다 이 TL 탑재 장치에 (1)2K의 데이터를 쓰는 경우와, (2)이 내용을 512바이트 단위로 나누어 4회 걸쳐 쓰기를 하는 경우를 비교해 보자 하드디스크라면 별 차이가 나지 않겠 지만 TL 탑재 장치의 경우는 다르다 TL 탑재 장치에서는 플래시 메모리의 특성 때문 에 한번 쓴 페이지에는 다시 쓸 수 없기에 다른 페이지에 써야 한다 때문에 (2)의 경우 에는 페이지 4개에 쓰기를 수행하게 되어 결국 8K 데이터를 쓰게 된다 8
다른 예로 (그림 5-4)의 경우를 살펴보자 LA에 공간에 대해 2개 페이지에 해당하는 연속적인 영역에 쓰기를 수행했다 그런데 대응되는 플래시 메모리 상의 위치가 블록 경 계에 위치하게 되어 각 페이지가 서로 다른 블록에 위치하게 된 경우를 나타내고 있다 LA 공간 (운영체제에서의 시점) lash Translation Layer 플래시 메모리 공간 (그림 5-4) 쓰기 데이터 위치가 플래시 메모리의 블록 경계에 걸친 경우 페이지 하나는 블록의 제일 끝에 위치하고 다른 하나는 블록의 제일 앞에 위치한다 후자의 경우는 문제가 없으나 전자의 경우, 플래시 메모리의 sequential programming 제약사항을 어기게 된다 이를 TL이 처리해서 파일시스템에게는 아무 일도 일어난 것 처럼 보이도록 하게 된다 TL 구현마다 따라 처리 방법이 다르긴 하나, 최악의 경우 (그림 5-4)에서 빗금 친 부분과 같이 sequential programming 제약을 어기게 되는 페 이지 앞의 모든 페이지들을 쓰레기 값으로 채우는 쓰기를 수행하게 된다 이 경우, 파 일시스템에서는 4K의 데이터를 기록했는데 실제 장치에서는 130K(128+2)에 이르는 쓰기를 수행하는 결과를 낳게 된다 이는 곧 I/O 성능 저하 및 플래시 메모리의 수명 단 축으로 이어진다 TL 구현이 달라 위 경우에 대한 대응 방식이 다른 경우를 상정하더라도 좋지 않다 이를테면 페이지 레벨 매핑을 사용하는 TL이라면 위의 경우에 대해 일단은 2개 페이지 만 사용하여 4K의 쓰기만 수행한다 그러나 변경된 매핑 테이블 정보 또한 플래시 메 모리에 저장해야 하므로 추가적이 쓰기가 발생하고, 페이지 레벨 매핑을 사용하기 위해 서는 매핑 테이블 공간이 훨씬 많이 사용되는 것 등을 감안하면 물리적인 장치의 레이 아웃을 고려하지 않은 데이터 배치는 여러 모로 TL에 부담을 안겨주게 된다는 것을 알 수 있다 62 파일시스템 성능 개선을 위한 TL 탑재 장치 내부 정보 앞서 두 가지 예를 통해 살펴본 바와 같이 파일시스템이 TL 탑재 장치를 구성하는 플래시 메모리의 레이아웃에 맞게 데이터를 정렬시켜 배치하는 것이 I/O 성능 및 장치 수명 측면에서 유리하다 즉 플래시 메모리의 제약사항들에 대한 처리를 전부 TL에게 만 맡겨 의존하고 상위 계층인 파일시스템에서 아무렇게나 쓰는 것은 바람직하지 않다 유감스럽게도 현재 대부분의 파일시스템들은 플래시 메모리의 특성들을 고려하여 만들 어지지 않았기에 여러 부분에서 비효율이 발생할 수 있다 이를 막기 위해 파일시스템 또한 데이터 배치를 플래시 메모리 레이아웃에 맞게 하는 것이 좋은데, 문제는 TL 탑재 장치를 구성하는 플래시 메모리의 페이지/블록 크기를 알지 못하면 파일시스템이 최적의 레이아웃을 구성하기 어렵다는 점이다 따라서 emmc, 9
SD card 등 TL 탑재 장치들이 외부로 제공해야 하는 최소한의 정보는 다음과 같다 - 플래시 메모리 페이지 크기 - 플래시 메모리 블록 크기 파일시스템은 이 정보들을 통해 데이터 배치를 정렬시켜 성능을 개선시킬 수 있다 예 를 들어 페이지/블록 크기가 각각 2K/128K인 플래시 메모리를 사용하는 경우를 가정 해보자 이 경우, 파일시스템은 공간 관리 단위 블록(플래시 메모리의 블록을 지칭하는 것이 아님)을 2K로 설정한다 이렇게 하면 앞서 쓰기 최소 단위가 2K가 되어 61장 에서 예로 들은 첫 번째 사례(512바이트 단위로 4번 쓰는 경우)는 발생하지 않게 된다 또한 128K 단위로 공간을 나누어(이를 여기에서는 세그먼트라고 지칭하겠음) 새로운 블록을 할당할 때, 세그먼트 앞 부분부터 할당을 할 수 있다 이렇게 하면 sequential programming을 지키는 것이 가능하므로 61장에서 예로든 두 번째 사례(플래시 메모리 블록 경계에 걸친 경우)를 피할 수 있게 된다 63 TL 탑재 장치 내부 정보 제공 예제 TL 탑재 장치의 내부 정보는 통상적으로 장치 인식 과정에서 제공하는 것이 적절하 다 이를 설명하기 위해 SSD를 예로 들겠다 SSD의 경우, 기존 하드디스크를 대체하기 위해 ATA 인터페이스를 통해 시스템에 연결된다 ATA 인터페이스에서 필수적으로 구현 해야 하는 명령어 중에는 장치 식별을 위한 명령어도 존재한다 IDENTIY DEVICE 명 령어가 그것으로 호스트에서 이 명령어를 보내면 저장장치는 512바이트 블록의 데이터 를 전달하도록 되어있다 전달받는 데이터를 IDENTIY DEVICE data 라고 부르며 <표 6-1>은 이 데이터의 구성의 일부를 나타내고 있다 <표 6-1> ATA IDENTIY DEVICE data Word OM SP V 설명 80 M Major revision number 0000h or h = device does not report version 15:9 Reserved 8 1 = supports ATA8-ACS 7 1 = supports ATA/ATAPI-7 6 1 = supports ATA/ATAPI-6 5 1 = supports ATA/ATAPI-5 4 1 = supports ATA/ATAPI-4 3 Obsolete 2 Obsolete 1 Obsolete 0 Reserved 81 M Minor revision number 82 M Command set supported 10
N X X 기술보고서 15 Obsolete 14 1 = NOP command supported 13 1 = READ UER command supported 12 1 = WRITE UER command supported 11 Obsolete 10 1 = Host Protected Area feature set supported 9 1 = DEVICE RESET command supported 8 1 = SERVICE interrupt supported 7 1 = release interrupt supported 6 1 = look-ahead supported 5 1 = write cache supported 4 Shall be cleared to zero to indicate that the PACKET feature set is not supported 3 1 = mandatory Power Management feature set supported 2 Obsolete 1 1 = Security Mode feature set supported 0 1 = SMART feature set supported <표 6-1>에서 한 word는 16비트로 2바이트 값을 나타낸다 OM은 이 word가 Mandatory인지 Optional인지를 나타낸다 SP는 해당 내용일 Serial 전송인지, Parallel 전 송인지를 의미한다 V에서 인 경우는 이 word의 필드 값이 고정되어 바뀌지 않는다는 것을 의미한다 V인 경우는 장치의 상태나 명령어에 따라 해당 필드가 바뀔 수 있는 (variable) 것을 의미한다 <표 6-2> 제안하는 SSD IDENTIY DEVICE data Word OM V 설명 xxx O 1:15 Reserved 0 1= SSD 장치 xxx+1 O SSD 페이지 크기(바이트 단위) xxx+2 O SSD 블록 크기(바이트 단위) SSD에서는 이 IDENTIY DEVICE data 에 사용하는 플래시 메모리의 페이지 크기/블 록 크기 정보를 <표 6-2>와 같은 형태로 제공하면 된다 Word xxx의 0번 비트가 1이면 이 장치가 SSD임을 의미한다 ATA 인터페이스를 통해 연결된 장치가 하드디스크일 수 도 있으므로 SSD임을 명시해 주어야 식별이 가능하다 나머지 비트는 기타 SSD 속성을 나타내기 위한 용도로 예약해둔다 Word xxx+1은 SSD에 사용된 플래시 메모리의 페이 지 크기를 나타낸다 페이지 크기가 2K인 경우, xxx+1의 값은 2048이 된다 Word xxx+2는 SSD에 사용된 플래시 메모리의 블록 크기를 나타낸다 128K 블록의 경우, 이 값은 131072가 된다 11
기술보고서 작성 공헌자 기술보고서 번호 : /R1 이 기술보고서의 제 개정 및 발간을 위해 아래와 같이 여러분들이 공헌하였습니다 구분 성명 위원회 및 직위 연락처 소속사 기술보고서(과제) 제안 기술보고서 초안 작성자 기술보고서 초안 검토 기술보고서안 심의 사무국 담당 정영준 임베디드 SW 프로젝트그룹 간사 jjing@etrirekr 한국전자통신연구원 천한성 - hschun@etrirekr 한국전자통신연구원 박문주 임베디드 SW 프로젝트그룹 의장 mpark@incheonackr 인천대 외 프로젝트그룹 위원 박승민 기반 SW 기술위원회 의장 minpark@etrirekr 한국전자통신연구원 외 기술위원회 위원 김영화 팀장 ykim@ttaorkr TTA 김영재 책임 yjkim@ttaorkr TTA 12
TL 탑재 장치 내부 정보와 파일시스템의 성능 개선 (Internal Information of TL Devices and Performance Improvement of ile System) 발행인 : 한국정보통신기술협회 회장 발행처 : 한국정보통신기술협회 463-824, 경기도 성남시 분당구 서현동 267-2 Tel : 031-724-0114, ax : 031-724-0019 발행일 : 2012xx