일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Friendship
- 멤버십
- 나르왈프레오
- 물걸레로봇청소기추천
- NarwalFreo
- 삼성전자 소프트웨어멤버십 SSM
- 하이퍼바이저
- hopfield network
- 물걸레자동세척로봇청소기
- Neural Network
- BAM
- 삼성
- 파이썬
- Bidirectional Associative Memory
- 신경망
- Python
- 고려대학교
- Google App Engine
- 삼성소프트웨어멤버십
- 패턴인식
- 인공지능
- 구글 앱 엔진
- 빅데이터
- 증강현실
- 신경회로망
- SSM
- 동아리
- 가상화
- 패턴 인식
- 갤럭시탭S8울트라
- Today
- Total
정보공간_1
[5기 수원 정영진] NAND 플래시 메모리 본문
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 저장 |
대용량 데이터 저장 |
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/
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[5기 부산 정우진] Project Ara는 어떤 변화를 가져올 것인가? (0) | 2014.06.07 |
---|---|
[5기 강남 김영현] PE File Format #2 (0) | 2014.06.07 |
[5기 강남 김영현] PE File Format #1 (0) | 2014.05.09 |
[5기 강북 강현호] HTML5 게임 프레임워크 LimeJS Introduction (0) | 2014.05.02 |
[5기 부산 정우진] 자바 제네릭 이야기 (0) | 2014.04.24 |