{{위키데이터 속성 추적}}
{{기계 번역|날짜=2021-12-20}}
[[파일:Lexar_USB_stick_8_GB_-_Silicon_Motion_SM3253L-0309.jpg|섬네일|Lexar USB 스틱 8GB-실리콘 모션 SM3253L-USB2.0 단일 채널 플래시 컨트롤러.]]
'''플래시 메모리 컨트롤러''' (또는 '''플래시 컨트롤러'''[[플래시 메모리|)는 플래시 메모리에]] 저장된 데이터를 관리하고 [[컴퓨터]]나 [[일렉트로닉스|전자 장치]]와 통신한다. [[SD 카드|플래시 메모리 컨트롤러는 SD 카드]], [[콤팩트플래시]]카드 또는 [[디지털 카메라]], [[개인 정보 단말기|PDA]], [[휴대 전화|휴대폰]] 등에 사용되는 [[데이터 스토리지|기타 유사한 미디어]]와 같은 낮은 [[듀티 사이클]] 환경에서 작동하도록 설계한다. [[USB 플래시 드라이브]]는 낮은 듀티 사이클에서 [[USB|USB 포트]]를 통해 [[개인용 컴퓨터]]와 통신하도록 설계된 플래시 메모리 컨트롤러를 사용한다. [[랩톱 컴퓨터|플래시 컨트롤러는 노트북]] 컴퓨터 시스템에서 [[미션 크리티컬]] 엔터프라이즈 스토리지 어레이까지 데이터 스토리지로 사용되는 [[솔리드 스테이트 드라이브]] (SSD)와 같은 더 높은 듀티 사이클 환경을 위해 설계한다.<ref name="kingston">{{웹 인용|url=http://media.kingston.com/pdfs/FlashMemGuide.pdf|제목=Flash Memory Guide|출판사=kingston.com|확인날짜=7 March 2013}}</ref>

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

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

== 웨어레벨링(Wear-leveling) 및 블록 선정 ==
플래시 메모리는 제한된 수의 프로그램 삭제 주기를 견딜 수 있다. 특정 플래시 메모리 블록이 다른 블록에 쓰지 않고 반복적으로 프로그램되고 지워지면 다른 모든 블록보다 먼저 한 블록이 마모되어 저장 장치의 수명이 조기에 종료된다. 이러한 이유로 플래시 컨트롤러는 웨어 레벨링이라는 기술을 사용하여 SSD의 모든 플래시 블록에 가능한 한 고르게 쓰기를 분산한다. 완벽한 시나리오에서 이렇게 하면 모든 블록이 최대 수명까지 기록될 수 있으므로 모두 동시에 실패한다.<ref name="Li-Pin Chang">{{저널 인용|제목=On Efficient Wear Leveling for Large Scale Flash Memory Storage Systems|성=Chang, Li-Pin|날짜=2007-03-11|출판사=National ChiaoTung University, HsinChu, Taiwan}}</ref>

== 플래시 변환 레이어(Flash Translation Layer:FTL)와 매핑 ==
일반적으로 플래시 메모리 컨트롤러에는 호스트 측 또는 파일 시스템 LBA(논리 블록 주소)를 플래시 메모리의 물리적 주소(논리-물리주소 매핑). LBA는 섹터 번호와 512바이트의 매핑 단위를 나타낸다. 파일 시스템에 표시되고 관리되는 논리적 크기를 나타내는 모든 LBA는 플래시의 물리적 위치(블록 ID, 페이지 ID 및 섹터 ID)에 매핑된다. 웨어 레벨링 및 기타 플래시 관리 알고리즘(불량 블록 관리, 읽기 방해 관리, 안전한 플래시 처리 등)의 일부로 LBA의 물리적 위치가 동적으로 자주 변경될 수 있다. FTL의 매핑 단위는 LBA가 블록, 페이지 또는 하위 페이지 기반으로 매핑되도록 다를 수 있다. 사용 패턴에 따라 세밀하게 매핑하면 플래시 마모를 크게 줄이고 플래시 기반 저장 매체의 내구성을 최대화할 수 있다.<ref>{{웹 인용|url=http://drona.csa.iisc.ernet.in/~gopi/west10/goodson.pdf|제목=Design Tradeoffs in a Flash Translation Layer|성=Goodson|이름=Garth|성2=Iyer|이름2=Rahul|보존url=https://web.archive.org/web/20150623162937/http://drona.csa.iisc.ernet.in/~gopi/west10/goodson.pdf|보존날짜=June 23, 2015}}</ref><ref>{{웹 인용|url=http://flashdba.com/2014/09/17/understanding-flash-the-flash-translation-layer/|제목=Understanding Flash: The Flash Translation Layer|날짜=September 17, 2014}}</ref><ref>{{웹 인용|url=http://files.iccmedia.com/magazines/basfeb15/basfeb15-p25.pdf|제목=New flash management architecture enables MLC for industrial storage|성=Heidrich|이름=Susan|날짜=February 2015|확인날짜=2021-12-19|archive-date=2015-06-23|archive-url=https://web.archive.org/web/20150623164236/http://files.iccmedia.com/magazines/basfeb15/basfeb15-p25.pdf|url-status=}}</ref>

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

== 가비지컬렉션 (Garbage Collection) ==
솔리드 스테이트 저장 장치의 모든 블록이 한 번 작성되면 플래시 컨트롤러는 더 이상 현재 데이터가 없는 초기 블록(부실 블록이라고도 함)으로 돌아가야 한다. 이 블록의 데이터는 새로 기록된 블록으로 대체되었으며 이제 새 데이터를 기록할 수 있도록 삭제되기를 기다리고 있다. ''[[쓰레기 수집 (컴퓨터 과학)|이것은 가비지 컬렉션]]'' (GC)이라고 하는 프로세스이다. 모든 SSD, CF 카드 및 기타 플래시 저장 장치에는 일정 수준의 가비지 수집이 포함된다. 플래시 컨트롤러가 이를 수행하는 속도는 다를 수 있다.<ref name="OCZ_WA">{{웹 인용|url=http://www.oczenterprise.com/whitepapers/ssds-write-amplification-trim-and-gc.pdf|제목=SSDs - Write Amplification, TRIM and GC|출판사=OCZ Technology|보존url=https://web.archive.org/web/20120526033947/http://www.oczenterprise.com/whitepapers/ssds-write-amplification-trim-and-gc.pdf|보존날짜=2012-05-26|url-status=dead|확인날짜=2010-05-31}}</ref>

== 각주 ==
{{각주}}

{{솔리드 스테이트 드라이브}}

[[분류:컴퓨터 메모리]]