플래시 메모리 컨트롤러

위키백과, 우리 모두의 백과사전.

Lexar USB 스틱 8GB-실리콘 모션 SM3253L-USB2.0 단일 채널 플래시 컨트롤러.

플래시 메모리 컨트롤러 (또는 플래시 컨트롤러)는 플래시 메모리에 저장된 데이터를 관리하고 컴퓨터전자 장치와 통신한다. 플래시 메모리 컨트롤러는 SD 카드, 콤팩트플래시카드 또는 디지털 카메라, PDA, 휴대폰 등에 사용되는 기타 유사한 미디어와 같은 낮은 듀티 사이클 환경에서 작동하도록 설계할 수 있다. USB 플래시 드라이브는 낮은 듀티 사이클에서 USB 포트를 통해 개인용 컴퓨터와 통신하도록 설계된 플래시 메모리 컨트롤러를 사용한다. 플래시 컨트롤러는 노트북 컴퓨터 시스템에서 미션 크리티컬 엔터프라이즈 스토리지 어레이까지 데이터 스토리지로 사용되는 솔리드 스테이트 드라이브 (SSD)와 같은 더 높은 듀티 사이클 환경을 위해 설계할 수도 있다.[1]

초기 설정[편집]

플래시 저장 장치가 처음 제조된 후, 먼저 플래시 컨트롤러를 사용하여 플래시 메모리를 포맷한다. 이렇게 하면 장치가 제대로 작동하고 불량 플래시 메모리 셀을 찾아 향후 고장날만한 셀을 대체할 예비 셀을 할당한다. 예비 셀의 일부는 특정 저장 장치에 대한 컨트롤러 및 기타 특수 기능을 작동하는 펌웨어를 유지하는 데에도 사용된다. 컨트롤러가 논리적 섹터에 대한 요청을 실제 플래시 메모리 칩의 물리적 위치로 변환할 수 있도록 디렉토리 구조가 생성된다.[1]

읽기, 쓰기 그리고 지우기[편집]

시스템이나 장치가 플래시 메모리에서 데이터를 읽거나 써야 할 때 플래시 메모리 컨트롤러와 통신한다. SD 카드 및 USB 플래시 드라이브와 같은 단순한 장치에는 일반적으로 동시에 연결된 적은 수의 플래시 메모리 다이(memory die)가 있다. 작업은 개별 플래시 메모리 다이의 속도로 제한된다. 대조적으로, 고성능 솔리드 스테이트 드라이브는 단일 플래시 다이보다 몇 배 빠른 속도를 내도록 병렬 통신 경로가 있는 매트릭스로 구성된 100개 이상의 다이를 갖는다.

웨어레벨링(Wear-leveling) 및 블록 선정[편집]

플래시 메모리는 제한된 수의 프로그램 삭제 주기를 견딜 수 있다. 특정 플래시 메모리 블록이 다른 블록에 쓰지 않고 반복적으로 프로그램되고 지워지면 다른 모든 블록보다 먼저 한 블록이 마모되어 저장 장치의 수명이 조기에 종료된다. 이러한 이유로 플래시 컨트롤러는 웨어 레벨링이라는 기술을 사용하여 SSD의 모든 플래시 블록에 가능한 한 고르게 쓰기를 분산한다. 완벽한 시나리오에서 이렇게 하면 모든 블록이 최대 수명까지 기록될 수 있으므로 모두 동시에 실패한다.[2]

플래시 변환 레이어(Flash Translation Layer:FTL)와 매핑[편집]

일반적으로 플래시 메모리 컨트롤러에는 호스트 측 또는 파일 시스템 LBA(논리 블록 주소)를 플래시 메모리의 물리적 주소(논리-물리주소 매핑). LBA는 섹터 번호와 512바이트의 매핑 단위를 나타낸다. 파일 시스템에 표시되고 관리되는 논리적 크기를 나타내는 모든 LBA는 플래시의 물리적 위치(블록 ID, 페이지 ID 및 섹터 ID)에 매핑된다. 웨어 레벨링 및 기타 플래시 관리 알고리즘(불량 블록 관리, 읽기 방해 관리, 안전한 플래시 처리 등)의 일부로 LBA의 물리적 위치가 동적으로 자주 변경될 수 있다. FTL의 매핑 단위는 LBA가 블록, 페이지 또는 하위 페이지 기반으로 매핑되도록 다를 수 있다. 사용 패턴에 따라 세밀하게 매핑하면 플래시 마모를 크게 줄이고 플래시 기반 저장 매체의 내구성을 최대화할 수 있다.[3][4][5]

FTL 메타 데이터는 자체 플래시 공간을 차지하므로 정전 시에도 보호가 필요하다. 또한 플래시 메모리의 다른 부분이 마모되기 전에 매핑 테이블이 마모되어 저장 장치의 수명이 조기에 종료될 수 있다. FTL에 대해서도 MRAM과 같은 보다 내구성 있는 형태의 저장장치가 제안 되었지만, 이는 일반적으로 예비를 위한 초대형 공간을 할당하여 엔터프라이즈 장치에서 방지된다.

가비지컬렉션 (Garbage Collection)[편집]

솔리드 스테이트 저장 장치의 모든 블록이 한 번 작성되면 플래시 컨트롤러는 더 이상 현재 데이터가 없는 초기 블록(부실 블록이라고도 함)으로 돌아가야 한다. 이 블록의 데이터는 새로 기록된 블록으로 대체되었으며 이제 새 데이터를 기록할 수 있도록 삭제되기를 기다리고 있다. 이것은 가비지 컬렉션 (GC)이라고 하는 프로세스이다. 모든 SSD, CF 카드 및 기타 플래시 저장 장치에는 일정 수준의 가비지 수집이 포함된다. 플래시 컨트롤러가 이를 수행하는 속도는 다를 수 있다.[6]

참고 문헌[편집]

  1. “Flash Memory Guide” (PDF). kingston.com. 2013년 3월 7일에 확인함. 
  2. Chang, Li-Pin (2007년 3월 11일). “On Efficient Wear Leveling for Large Scale Flash Memory Storage Systems”. National ChiaoTung University, HsinChu, Taiwan. 
  3. Goodson, Garth; Iyer, Rahul. “Design Tradeoffs in a Flash Translation Layer” (PDF). 2015년 6월 23일에 원본 문서 (PDF)에서 보존된 문서. 
  4. “Understanding Flash: The Flash Translation Layer”. 2014년 9월 17일. 
  5. Heidrich, Susan (February 2015). “New flash management architecture enables MLC for industrial storage” (PDF). 
  6. “SSDs - Write Amplification, TRIM and GC” (PDF). OCZ Technology. 2012년 5월 26일에 원본 문서 (PDF)에서 보존된 문서. 2010년 5월 31일에 확인함.