본문 바로가기

무언가 만들기 위한 지식/ARM Processor

NAND/NOR FLASH Memory



컴퓨터에 사용되는 메모리에는 여러가지가 있다.
Register부터 시작해서 Cache, RAM, ROM, 하드디스크 등 외부메모리를 포함해서 다양한 것이 있다.

여기서 말하고 싶은 것은 FLASH Memory라고 하는 반도체 메모리이다.
이는 ROM(Read Only Memory)의 일종으로 전원이 공급되지 않더라도 기억된 내용이 보존되는 비휘발성으로, 전기적으로 데이터를 지우고 다시 기록할 수 있다.


점점 FLASH Memory는 발전되고 다양한 기기에서 사용되고 있는데, 이에 대해 알아보자.
(필자가 사용한 보드에서는 NAND Flash Memory가 사용되었음.)
가장 많이 알고 있는 사용용도는 USB드라이브가 있고, 그 외에 휴대 전화나 디지털 카메라 임베디드 보드등에서 자주 사용된다.

ROM의 일종이기 때문에 ROM을 대처한 비휘발성 메모리로 사용된다.
ROM에 대해 간단히 알아보면 비휘발성 메모리로 전원이 공급되지 않더라도 내용이 없어지지 않고 기억을 한다. 단 RAM에 비해서 엑세스 시간은 느리다. 그 종류로는 크게

Mask ROM : 제조시 공장에서 내용 기입, 대량 생산용
PROM(Programmable ROM) : 사용자에 의해 1회 프로그래밍 가능, 이후 수정 불가능
EPROM(Erasable Programmable ROM) : 메모리 속에 저장된 내용을 지우고 재사용할 수 있는 PROM자외선을 비추면 ROM 내의 내용이 삭제, 롬 라이터 같은 장비로 내용 기입이 가능하다.
EEPROM(Electrically Erasable Programmable ROM) : 정상보더 더 높은 전압을 이용하여 반복적으로 지우거나 다시 프로그램이 가능, On-Board 상태에서 자유롭게 읽고 쓰기 가능, 단 수명이 10만회 미만으로 제한, 일부 내용 수정시에는 전체내용을 지우고 다시 프로그램 해야 함.



FLASH Memory :
1984년 도시바에서 근무중인 마스오카 후지오 박사의 발명
읽기 속도가 빠르며, 하드 디스크보다 충격에 강하다. 블록단위로 내용을 쓰고 지울 수 있다. 무엇보다 EEPROM보다 비용이 덜 들기 때문에 여러 분야에서 사용된다. (EEPROM은 바이트 레벨에서 R/W, 플래쉬 메모리가 일반 램처럼 사용하지 못하는 이유는 RAM은 블록이 아닌 바이트 단위로 주소 지정이 가능해야 하기 때문이다.)

블록 내에서 특정 단위로 읽고 쓸 수 있지만, 블록 단위로 지워야 한다. 덮어 쓸 수 없기 때문에 모든 블록을 지우기 전까지는 해당 자료를 변경할 수 없다.


또한 백만번 정도로 지우기 횟수가 제한되어 있다.
내부적으로는 NAND와 NOR가 존재한다.

NOR
- 지우기, 쓰기 시간이 긴 대신 어떤 위치에도 임의로 접근이 가능. 그러나 덮어 쓰기와 지우기는 임의 접근이 불가능하다.
- 업데이트되지 않는 프로그램 코드를 저장

NAND
- 페이지 단위로 읽기/쓰기가 가능하지만 해당 페이지를 덮어 쓰거나 지우려면 모든 블록을 지워야 한다.
- 블록을 여러 페이지로 나누어 사용한다.
- NOR 플래쉬 메모리에 비해 지우기와 쓰기 시간이 좀더 빠르다.
- 비트당 제작비가 NOR비해 낮다.
- 내구성이 훨신 강하다.
- 순차적인 접근만을 지원하다. (그래서 대용량 저장장치로 이용된다.)

NOR상에서는 부트코드로 부팅이 가능하나, NAND상에서는 불가능하다. 그렇기 때문에 NAND Flash Memory를 사용하게 되면 NAND의 내용을 RAM상으로 복사한후 부팅이 이루어 져야 한다.
(ROM이나 NOR Flash Memory 사용시 XIP기법-Excute in Place, ROM상에서 바로 실행)

'무언가 만들기 위한 지식 > ARM Processor' 카테고리의 다른 글

Memory Mapped I/O  (1) 2010.02.20
CISC/RISC  (0) 2010.02.20
MicroProcessor  (0) 2010.02.19
About ARM Processor & Develop Tool  (0) 2010.02.19
Big-Endian & Little-Endian  (0) 2009.04.11