작고 빠름
최소 유닛 : page (디스크의 섹터와 같음), 디스크는 블록 디바이스로 무조건 섹터 단위로만 읽어야함, 특정 크기로만 접근해야하는 디바이스를 블록 디바이스 <=> 반대로 character device, 바이트 단위로 전송 가능한 디바이스(ex keyboard)
플래쉬 메모리도 블록 디바이스(페이지 단위), 일반적인 page 크기 512바이트
4개의 페이지 = erase unit, 보통 128kb, 256page
전체는 페이지로 나뉘지만 관리는 erase unit으로
기존 파일시스템과의 호환성을 가장 고려 => flash translation layer 플래쉬 메모리가 마치 하드디스크인것처럼 동작하는 interface를 제공해줌
디스크를 세그먼트 단위로 나눔, 메모리도 세그먼트 단위로 잡음
변경된 데이터를 세그먼트 단위만큼 축적함, 변경 데이터들을 모아두다가 세그먼트 단위가 꽉 차면 그 때 디스크에 저장함.
디스크에 저장될 시 예전 데이터들은 무효화됨. 무효화된 데이터의 공간들은 빈 상태로 남게됨. 새 세그먼트 공간을 디스크에 확보하기 위해 garbage collection이 해결, 이 garbage collection 동작 떄문에 LFS의 속도가 떨어질 수 있으나 write속도 자체가 너무 빠르기 때문에 Flash memory에서도 사용함
이번엔 flash memory에서 동작
1. 블록 레벨 write, 단 erase를 최소화시켜서
문제점 : 변경되지 않은 page들까지 다른 블록에 저장됨, 즉 불필요한 copy를 요구하기 때문에 부하 증가
garbage collection으로 write 속도 저하
page-level write
erase를 최소화해서 write 성능 최대로
하나씩 업데이트함(페이지 하나씩)
garbage collection 발생함
page-mapping FTL: 섹터번호와 페이지 번호와 대응관계 저장하는 테이블
플래쉬 메모리를 확장한 것, 반도체
장점: read,write속도 빠름,가격 낮다, 파워 소비 작다(디스크는 모터로 구동되기 때문에 전력 소모 큼), no moving parts
플래쉬 패키지: 한블록(256kb라 가정), 64개의 페이지
플래인: 1플레인(512mb):2048 blocks + register
die : 4planes(2gb)
8 bit serial IO bus
페이지를 각 플레인에 하나씩 저장함, 이렇게 퍼뜨려서 저장하면 8개 페이지가 병렬적으로 레지스터로 올라가서 읽는 속도가 빨라짐.