웨어 레벨링 (wear leveling 또는 wear levelling)은 솔리드 스테이트 드라이브 (SSD) 및 USB 플래시 드라이브, 및 상-변화 메모리에 사용되는 플래시 메모리와 같은 지울 수 있는 컴퓨터 저장 매체의 서비스 수명을 연장하는 기술입니다. 그러한 메모리 시스템에서 다양한 수준의 수명 향상을 제공하는 몇 가지 웨어 레벨링 메커니즘이 있습니다.
용어 preemptive wear leveling (PWL)는 Western Digital에 의해 오디오와 비디오 데이터를 저장하기 위해 설계된 하드 디스크 드라이브 (HDD)에 사용되는 보존 기술을 설명하기 위해 사용되어 왔습니다. 어쨌든, HDD는 일반적으로 이 기사의 맥락에서 웨어-레벨된 장치가 아닙니다.
Rationale
EEPROM 및 플래시 메모리 미디어는 개별적으로 지울 수 있는 세그먼트가 있으며, 각 세그먼트는 신뢰할 수 없게 되기 전에 제한된 수의 삭제 주기를 거칠 수 있습니다. 이것은 보통 약 3,000/5,000 주기이지만 많은 플래시 장치는 100,000+ 주기의 특별히 연장된 수명을 가진 하나의 블록이 있어 플래시 메모리 컨트롤러에 의해 세그먼트 전반의 데이터 이동 및 마모를 추적하기 위해 사용될 수 있습니다. CD-RW와 DVD-RW와 같은 지울 수 있는 광학 미디어의 정격은 최대 1,000 주기 (DVD-RAM 미디어에 대해 100,000 주기)입니다.
웨어 레벨링은 삭제 및 다시 쓰기가 매체 전체에 고르게 분산되도록 데이터를 정렬함으로써 이들 제한 사항을 해결하려고 시도합니다. 이러한 방식으로, 쓰기 주기의 집중으로 인해 단일 삭제 블록이 조기에 실패하지 않습니다. 플래시 메모리에서, 칩에서 단일 블록은 다른 블록보다 수명이 더 길도록 설계되어 메모리 컨트롤러가 손상 가능성을 낮추면서 작동 데이터를 저장할 수 있습니다.
FAT, UFS, HFS, ext2, 및 NTFS와 같은 전통적인 파일 시스템은 원래 자기 디스크에 대해 설계되었고 이를테면 많은 데이터 구조 (예를 들어 디렉터리)를 같은 영역에 반복적으로 다시 씁니다. 이들 시스템이 플래시 메모리 미디어에 사용될 때, 이것이 문제가 됩니다. 문제는 일부 파일 시스템이 마지막-접근 시간을 추적한다는 사실로 인해 악화되어 파일 메타데이터가 계속 제자리에서 재작성되는 것으로 이어질 수 있습니다.
Types
플래시 메모리 저장 장치에 사용되는 웨어 레벨링 메커니즘에는 세 가지 기본 유형이 있습니다:
No wear leveling
웨어 레벨링이 없는 플래시 메모리 저장 시스템은 만약 데이터가 플래시에 쓰이면 오래 지속되지 않을 것입니다. 웨어 레벨링 없이, 기본 플래시 컨트롤러는 운영 시스템 (OS)의 논리적 주소를 플래시 메모리의 물리적 주소로 영구적으로 할당해야 합니다. 이것은 이전에 기록된 블록에 대한 모든 각 쓰기는 먼저 같은 위치에 읽고, 지우고, 수정하고, 다시 기록해야 함을 의미합니다. 이 접근 방식은 시간이 많이 걸리고 자주 작성되는 위치는 빨리 마모되지만 다른 위치는 전혀 사용되지 않을 것입니다. 몇 블록의 수명이 다하면 그러한 장치가 작동하지 않게 됩니다.
Dynamic wear leveling
첫 번째 유형의 웨어 레벨링은 동적 웨어 레벨링이라고 불리고 그것은 맵을 OS에서 물리적 플래시 메모리로 논리적 블록 주소 (LBA)를 연결하기 위해 사용합니다. OS가 대체 데이터를 쓸 때마다, 원래 물리적 블록이 유효하지 않은 데이터로 표시되도록 맵이 업데이트되고 새 블록이 해당 맵 항목에 연결됩니다. 데이터 블록이 플래시 메모리에 다시 쓰일 때마다, 그것은 새로운 위치에 쓰입니다. 어쨌든, 교체 데이터를 가져오지 않는 플래시 메모리 블록은 추가 마모를 지속하지 않고, 따라서 그 이름은 재활용되는 동적 데이터에서 오직 유래합니다. 그러한 장치는 웨어 레벨링이 없는 장치보다 더 오래 지속될 수 있지만 장치를 더 이상 작동할 수 없는 경우에도 여전히 활성 상태로 남아 있는 블록이 있습니다.
Static wear leveling
다른 유형의 웨어 레벨링은 역시 LBA를 물리적 메모리 주소에 연결하기 위해 맵을 사용하는 정적 웨어 레벨링이라고 불립니다. 정적 웨어 레벨링은 변경되지 않는 정적 블록이 주기적으로 이동하여 이러한 낮은 사용량 셀을 다른 데이터에서 사용할 수 있다는 점을 제외하면 동적 웨어 레벨링과 동일하게 작동합니다. 이 회전 효과는 SSD를 대부분의 블록 수명이 다할 때까지 계속 작동하기 위해 활성화합니다.
Global wear leveling
동적 및 정적 웨어 레벨링은 로컬 수준에서 구현됩니다. 이것은 단순히 다중 칩 제품에서 모든 칩이 단일 자원으로 관리된다는 것을 의미합니다. NAND 플래시 메모리 내의 서로 다른 칩에 있는 결함 블록의 수는 다양합니다. 주어진 칩은 모든 데이터 블록이 마모될 수 있지만 다른 칩은 모든 블록이 여전히 활성 상태일 수 있습니다. 이러한 상황을 해결하기 위해, 글로벌 웨어 레벨링이 도입됩니다. 글로벌 웨어 레벨링에서, 플래시 메모리에서 모든 플래시 칩에 있는 모든 블록이 단일 풀에서 함께 관리됩니다. 제품 내 모든 칩의 모든 셀이 고르게 마모되도록 합니다.
Comparison
다음 테이블은 정적 및 동적 웨어 레벨링을 비교합니다:
항목 | 정적 | 동적 |
지구력 | 더 긴 기대 수명 | 더 짧은 기대 수명 |
성능 | 더 느림 | 더 빠름 |
설계 복잡도 | 보다 복잡함 | 덜 복잡함 |
전형적인 사용처 | SSDs, 산업용 플래시 드라이브 |
소비자용 플래시 드라이브 |
Techniques
미디어 수명을 연장하기 위한 몇 가지 기술이 있습니다:
- 체크섬 또는 오류-수정 코드는 오류를 감지하거나 오류를 수정하기 위해 각 블록 또는 섹터에 대해 유지될 수 있습니다.
- 예비 공간의 풀이 역시 유지될 수 있습니다. 블록 또는 섹터가 실패할 때, 그것에 향후 읽기 및 쓰기가 해당 풀에서 교체로 리다이렉션될 수 있습니다.
- 미디어의 블록 또는 섹터는 최소 자주 사용 (LFU) 대기열에서 추적될 수 있습니다. 대기열 자체에 대한 데이터 구조는 장치 외부에 저장되거나 대기열이 사용하는 공간 자체가 웨어-레벨되는 방식으로 또는 플래시 메모리의 경우에서 특별히 연장된 수명을 가진 블록에 저장되어야 합니다. 어쨌든, 보통 캐시 알고리듬은 RAM-기반 캐시로 들어오고 나가는 데이터 흐름을 관리하도록 설계되어, 플래시-기반 저장 장치가 비대칭 특성을 가지고 있기 때문에 직접적으로 적합하지 않게 만듭니다 – 읽기는 보통 쓰기보다 훨씬 빠르고, 지우기 작업은 한 번에 오직 하나의 "블록"에 수행될 수 있습니다.
일부 전문 보안 디지털 카드에서, 기술은 내장 마이크로컨트롤러에 의해 하드웨어에서 구현됩니다. 그러한 장치에서, 웨어 레벨링은 투명하고, 대부분의 기존 파일 시스템은 그대로 그것들에 사용될 수 있습니다.
웨어 레벨링은 플래시 미디어의 JFFS2 및 YAFFS 또는 광학 미디어의 UDF와 같은 특수-목적 파일 시스템으로 소프트웨어에서 구현할 수도 있습니다. 세 가지 모두는 미디어를 순환 로그로 취급하고 순차적 패스로 기록한다는 점에서 로그 구조의 파일 시스템입니다. ZFS와 같은 copy-on-write 전략을 구현하는 파일 시스템은 역시 일종의 웨어 레벨링을 구현합니다.
External links
- Flash SSDs – Inferior Technology or Closet Superstar?, bitmicro.com, archived from the original on February 2, 2007