플래시 메모리 컨트롤러

플래시 메모리 컨트롤러(Flash memory controller) 또는 플래시 컨트롤러는 플래시 메모리(보통 NAND 플래시)에 저장된 데이터를 관리하고 컴퓨터 또는 전자 기기와 통신한다. 플래시 메모리 컨트롤러는 개인 정보 단말기(PDA), 휴대 전화 등에 사용되는 메모리 카드나 기타 유사한 매체와 같이 낮은 듀티 사이클 환경에서 작동하도록 설계될 수 있다. USB 플래시 드라이브는 낮은 듀티 사이클에서 USB 포트를 통해 개인용 컴퓨터와 통신하도록 설계된 플래시 메모리 컨트롤러를 사용한다. 또한 플래시 컨트롤러는 랩톱 컴퓨터 시스템의 데이터 저장소부터 미션 크리티컬 기업용 스토리지 어레이에 이르기까지 사용되는 솔리드 스테이트 드라이브(SSD)와 같은 높은 듀티 사이클 환경을 위해 설계될 수도 있다.

 초기 설정 
플래시 저장 장치가 처음 제조된 후, 플래시 컨트롤러는 먼저 플래시 메모리를 포맷하는 데 사용된다. 이 과정은 장치가 제대로 작동하는지 확인하고, 불량 플래시 메모리 셀을 찾아내며(맵 아웃), 향후 발생할 결함 셀을 대체하기 위해 예비 셀을 할당한다. 예비 셀의 일부는 컨트롤러를 작동시키는 펌웨어 및 특정 저장 장치를 위한 기타 특수 기능을 저장하는 데에도 사용된다. 컨트롤러가 논리 섹터에 대한 요청을 실제 플래시 메모리 칩의 물리적 위치로 변환할 수 있도록 디렉터리 구조가 생성된다.

 읽기, 쓰기 및 삭제 

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

 웨어 레벨링 및 블록 선택 

플래시 메모리는 한정된 횟수의 프로그램-삭제(program-erase) 사이클을 견딜 수 있다. 만약 특정 플래시 메모리 블록이 다른 블록에 쓰지 않고 반복적으로 프로그램되고 삭제된다면, 해당 블록은 다른 모든 블록보다 먼저 마모되어 저장 장치의 수명을 조기에 끝내게 된다. 이러한 이유로 플래시 컨트롤러는 SSD의 모든 플래시 블록에 쓰기 작업을 가능한 한 균등하게 분산시키는 웨어 레벨링이라는 기술을 사용한다. 완벽한 시나리오에서는 이를 통해 모든 블록이 총 쓰기 용량(terabytes written) 임계값에 도달할 수 있게 된다.

 플래시 변환 계층 (FTL) 및 매핑 

일반적으로 플래시 메모리 컨트롤러에는 호스트 측 또는 파일 시스템의 논리 블록 주소(LBA)를 플래시 메모리의 물리적 주소로 매핑하는(논리-물리 매핑) 파일 시스템 아래의 계층인 "플래시 변환 계층"(FTL)이 포함되어 있다. LBA는 섹터 번호와 512바이트의 매핑 단위를 나타낸다. 파일 시스템이 인식하고 관리하는 논리적 크기를 나타내는 모든 LBA는 플래시 메모리의 물리적 위치(블록 ID, 페이지 ID 및 섹터 ID)로 매핑된다. 웨어 레벨링 및 기타 플래시 관리 알고리즘(불량 블록 관리, 읽기 간섭 관리, 안전한 플래시 처리 등)의 일부로, LBA의 물리적 위치는 동적으로 자주 변경될 수 있다. FTL의 매핑 단위는 LBA가 블록, 페이지 또는 하위 페이지 단위로 매핑되도록 다를 수 있다. 사용 패턴에 따라 더 세밀한 매핑 단위를 사용하면 플래시 마모를 크게 줄이고 플래시 기반 저장 매체의 내구성을 극대화할 수 있다. 중복 데이터를 제거하고 중복 쓰기를 방지하는 중복 제거 기능도 FTL에 추가된다.

FTL 메타데이터는 자체적인 플래시 공간을 차지하므로 전원 손실 시 보호가 필요하다. 또한, 플래시 메모리의 다른 부분보다 매핑 테이블이 먼저 마모되어 저장 장치의 수명이 조기에 끝날 가능성도 있다. 이는 일반적으로 기업용 장치에서 예비 공간을 넉넉하게 할당함으로써 방지되지만, FTL을 위해 자기 저항 메모리(MRAM)와 같이 더 내구성이 뛰어난 형태의 저장 장치도 제안되었다.

FTL에는 페이지 매핑, 블록 매핑, 하이브리드 매핑의 세 가지 유형이 있을 수 있다. 페이지 매핑은 성능이 더 높을 수 있지만, FTL 메타데이터 크기가 더 크고 비용이 더 많이 들어 보통 솔리드 스테이트 드라이브에 사용된다. 블록 매핑은 메타데이터 크기가 작고 비용이 저렴하지만 성능이 낮아 보통 USB 플래시 드라이브에 사용된다. 페이지 매핑 FTL 구현에서 FTL 메타데이터 크기와 저장 용량의 비율은 보통 1:1000이며, 예를 들어 1TB 플래시 저장 장치는 1GB의 FTL 메타데이터를 가질 수 있다.

일반적으로 FTL은 저장 장치(거의 모든 SSD, eMMC, SD 카드, USB 플래시 드라이브 등)에 내장된 플래시 메모리 컨트롤러에서 실행되는 펌웨어에 의해 구현된다. 그러나 일부 시스템은 중간 하드웨어 플래시 메모리 컨트롤러 없이 호스트 프로세서를 로(raw) 플래시 칩에 직접 연결하고, 대신 호스트 프로세서에서 실행되는 소프트웨어로 불량 블록 관리 및 웨어 레벨링을 처리한다."UBIFS - UBI File-System: Raw flash vs. FTL devices".

 쓰레기 수집 

솔리드 스테이트 저장 장치의 모든 블록에 데이터가 한 번씩 기록되면, 플래시 컨트롤러는 더 이상 유효한 데이터가 없는 초기 블록(오래된 블록이라고도 함)으로 돌아가야 한다. 이 블록들의 데이터는 새로 기록된 블록으로 대체되었으며, 이제 새 데이터를 기록할 수 있도록 삭제되기를 기다리는 상태다. 이 과정을 쓰레기 수집(GC)이라고 한다. 모든 SSD, CF 카드 및 기타 플래시 저장 장치는 일정 수준의 쓰레기 수집 기능을 포함한다. 플래시 컨트롤러가 이 작업을 수행하는 속도는 기기마다 다를 수 있다.

 각주 

분류:컴퓨터 메모리