정보공간_1

[5기 수원 정영진] NAND 플래시 메모리 본문

IT 놀이터/Elite Member Tech & Talk

[5기 수원 정영진] NAND 플래시 메모리

알 수 없는 사용자 2014. 5. 30. 18:49

1. NOR 플래시 메모리와 NAND 플래시 메모리

 플래시 메모리(flash memory)는 ROM의 일종으로, EEPROM에서 변형된 형태이자 전기적으로 데이터를 지우고 기록할 수 있는 비휘발성 저장매체입니다. 플래시 메모리는 1984년 Toshiba에서 근무하던 마스오카 후지오박사에 의해 최초로 개발되었는데 메모리의 내용이 지워지는 과정이 마치 카메라의 플래시와 비슷하다고하여 '플래시 메모리'라고 이름이 지어졌습니다. 그 이후 1988년 Intel에서는 플래시 메모리의 엄청난 가능성을 인지하여 최초의 상업용 NOR 플래시 메모리를 개발하였습니다. 이후 비트 선과 접지 선 사이의 셀(cell)이 병렬배치인지 직렬배치인지에 따라 NOR 플래시 메모리와 NAND 플래시 메모리로 구분되었으며 두 가지 타입의 플래시 메모리는 특징이 달라 서로 다른 용도로 사용되어왔습니다. 



 NOR 플래시 메모리는 NAND 플래시 메모리에 비해 쓰기 속도가 느린 대신 읽기 속도가 빠르며 마치 DRAM과 같은 바이트 단위 임의 읽기 및 쓰기(random access) 연산이 가능합니다. 이는 PC가 NOR 플래시 메모리의 모든 바이트 단위 영역에 접근할 수 있다는 것을 의미하며 NOR 플래시 메모리에 올려진 프로그램을 실행시킬 수 있다는 것을 의미합니다. 플래시 메모리는 전원이 내려가도 저장된 내용이 지워지지 않으므로 NOR 플래시 메모리를 주로 ROM(Read Only Memory)으로 활용하여 바이오스(BIOS)나 운영체제(OS)또는 펌웨어(firmware)의 저장 목적으로 쓰입니다.

 NAND 플래시 메모리는 NOR 플래시 메모리에 비해 쓰기 속도가 빠르지만 NOR 플래시 메모리처럼 바이트 단위 데이터 접근은 불가능합니다. 데이터를 저장하는 셀의 배치 구조로 인해 1Byte 단위의 데이터 접근이 어렵고 4KB ~ 16KB의 페이지(page)단위로만 접근할 수 있습니다. 바이트 단위의 데이터 접근이 불가능하며 NOR 플래시 메모리에 비해 가격이 저렴한 편이기 때문에 주로 대용량 데이터를 저장하기 위한 용도로 사용됩니다.

 NOR 플래시 메모리와 NAND 플래시 메모리의 특징을 비교하면 아래 표와 같습니다.

 

 NOR 플래시 메모리

NAND 플래시 메모리 

Read time

20usec

25usec 

Write time 

25msec

200usec 

Erase time

1.2sec

1.5msec 

Access unit

Byte

Page 

Cost

High cost

Low cost 

 용도

Program code 저장

대용량 데이터 저장 


 현대의 플래시 메모리는 스마트폰, 디지털 카메라, SSD, 블랙박스 등 데이터를 저장하는 수많은 매체에서 사용되고 있으며 컴퓨터 시스템의 역사에서 빼놓을 수 없는 가장 중요한 저장매체중 하나입니다. 특히 NAND 플래시 메모리는 HDD에 비해 소모 전력이 적고 소형화가 가능하며 충격에 강하다는 장점 때문에 임베디드 환경에서 2차 저장매체로 널리 사용되어 왔으며 최근 스마트 폰의 등장과 SSD의 발전으로 인해 그 활용도가 점점 높아지는 추세에 있습니다.





2. NAND 플래시 메모리의 단점과 극복 방법

 플래시 메모리가 지닌 장점들은 플래시 메모리를 매력적인 저장장치로 만들기에 충분하지만 물리적 한계로 인해 발생하는 치명적인 단점들 때문에 사용범위가 제한될 수 밖에 없습니다. DRAM이나 HDD(Hard Disk Drive)와 달리 플래시 메모리는 데이터의 제자리 덮어쓰기(in-place update)가 불가능합니다. NOR 플래시 메모리는 프로그램 코드를 한 번 기록한 뒤 업데이트가 거의 발생하지 않는 반면, 저장장치로 활용되는 NAND 플래시 메모리는 데이터에 빈번한 업데이트가 발생하여 많은 삭제 연산을 필요로 합니다.

 일단 데이터를 덮어쓰기 위해서는 먼저 저장되어 있던 데이터를 삭제해야 하며 삭제 연산은 읽기, 쓰기 연산보다 오래걸리고 연산의 단위가 훨씬 큽니다. 플래시 메모리에서 삭제 연산의 단위는 읽기 및 쓰기 보다 약 100배 큰 블록(block)단위입니다. 블록 단위의 삭제 연산은 페이지 단위의 읽기, 쓰기 연산의 범위보다 크기 때문에 한 번의 삭제 연산은 지우면 안 될 페이지까지 함께 지울 수도 있습니다. 따라서 데이터 업데이트 요청이 발생하면 저장장치는 이전 데이터를 바로 삭제하지 않는 대신 다른 위치에 새로운 데이터를 기록한 다음, 예전 데이터는 무효(invalid)로 처리한 뒤 데이터를 리매핑(remapping)합니다. 이를 위해 저장장치는 자체적으로 매핑 테이블을 유지하고 있습니다.

 무효 처리된 페이지 개수가 많아지면 새로운 데이터를 쓸 공간이 부족해지므로 저장장치는 주기적으로 블록 단위 삭제 연산을 수행하며 이 때 블록 내 유효 페이지는 다른 위치로 복사 되는데, 이를 가비지 컬렉션(garbage collection)이라고 합니다. 먼저 삭제 연산을 수행할 블록을 선택한 뒤 해당 블록 내 유효한 페이지가 있는 경우 다른 위치로 이동시킵니다. 유효한 페이지들을 모두 옮긴 후 삭제 연산을 수행하며 필요한 만큼의 빈 공간이 만들어질 때까지 반복합니다. 삭제 연산에 걸리는 시간은 읽기 및 쓰기 연산에 걸리는 시간보다 크며 유효한 데이터를 다른 위치로 이동시키는 데 걸리는 시간 때문에 가비지 컬렉션은 저장장치의 성능을 크게 떨어뜨리는 요소 중 하나입니다. 뿐만 아니라 삭제 연산은 데이터를 저장하는 셀을 마모시켜 플래시 메모리의 수명을 단축시킵니다. 따라서 많은 삭제 연산은 저장장치의 수명을 줄이며 성능을 떨어뜨리는 직접적인 원인이 될 수 있습니다.

 데이터 접근 패턴의 특성상 자주 업데이트 되는 데이터(hot data)와 자주 업데이트 되지 않는 데이터(cold data)가 나타날 수 있으므로 비교적 마모가 많이 발생한 셀과 비교적 적게 발생한 셀이 만들어질 수 있습니다. 따라서 NAND 플래시 메모리를 저장매체로 활용하는 저장장치는 특정 셀에 마모가 집중되어 특정 셀이 먼저 고장나지 않도록 마모 평준화(wear leveling)를 위한 매커니즘을 필요로합니다. 마모 평준화를 위해 매핑 과정에서는 새로운 데이터를 쓸 때 비교적 삭제 연산이 많이 발생하지 않은 블록을 선택하여 기록하도록 합니다.



 NAND 플래시 메모리를 저장매체로 활용하는 저장장치는 기본적으로 지금까지 설명한 매커니즘들을 모두 필요로합니다. 이를 지원하기 위해 이들은 FTL(Falsh Translation Layer)이라는 조금 특별한 소프트웨어 계층을 만들어두고 활용합니다. FTL은 아래 그림과 같이 NAND 플래시 메모리와 호스트 파일시스템 사이에 존재하며 중간에서 데이터의 매핑을 담당하기 때문에 파일시스템의 LBA(Logical Block Address)와 NAND 플래시 메모리 상에서 실제 데이터가 저장된 위치는 달라질 수 있습니다. 주변에서 흔히 볼 수 있는 SSD, USB 등 NAND 플래시 메모리를 활용하는 저장장치들은 모두 자체적으로 펌웨어 내에 FTL을 두고 활용한다고 볼 수 있습니다.

 FTL의 역할을 표로 정리하면 아래와 같습니다.

 기능

설명 

 데이터 매핑

 LBA와 NAND 플래시 메모리 상의 물리 주소의 연결을 유지하는 기능

 가비지 컬렉션

 데이터 업데이트 과정에서 생성된 무효 페이지를 제거하기 위해 유효 페이지의 위치를 조정하고 블록을 삭제하는 기능

마모 평준화 

 일부 블록에 마모가 누적되어 다른 블록보다 먼저 마모되지 않도록 각 블록의 마모도를 균등하게 유지시키는 기능


 이번 포스팅에서는 플래시 메모리의 탄생과 그 종류 및 NAND 플래시 메모리의 단점과 극복 방법에 대해 알아보았습니다. 다음 포스팅에서는 NAND 플래시 메모리를 활용한 SSD의 특징에 대해 알아보도록 하겠습니다.


reference

- http://ko.wikipedia.org/wiki/플래시_메모리

- Flash memory 이미지 : http://www.geeky-gadgets.com/intel-micron-introduce-128gb-20nm-nand-flash-07-12-2011/