임베디드 시스템에서 데이터를 저장하는 방식은 다양하지만, 대용량 데이터 저장과 빠른 읽기/쓰기 성능이 필요한 경우 가장 많이 사용되는 것이 Flash 메모리이다.
Flash 메모리는 스마트폰, 자동차 ECU, 산업용 컨트롤러, IoT 기기 등 다양한 임베디드 시스템에서 핵심적인 역할을 한다. 이번 글에서는 Flash 메모리의 개념, 특징, 동작 원리, 그리고 임베디드 시스템에서의 활용 방안을 살펴보겠다.
⸻
1. Flash 메모리란?
Flash 메모리는 전원이 꺼져도 데이터를 유지할 수 있는 비휘발성 메모리의 한 종류로, 빠른 읽기/쓰기 속도와 대용량 저장이 가능하다는 장점이 있다.
EEPROM과 마찬가지로 Floating Gate MOSFET(플로팅 게이트 트랜지스터)을 기반으로 데이터를 저장하지만, 구조적으로 더 효율적인 설계를 채택하여 대용량 데이터를 빠르게 저장할 수 있도록 발전한 형태이다.
⸻
2. Flash 메모리의 주요 특징
1) 비휘발성 (Non-Volatile)
• 전원이 꺼져도 데이터가 유지됨
• 임베디드 시스템에서 OS, 펌웨어, 설정 값 등을 저장하는 데 적합
2) 빠른 읽기 속도
• DRAM보다 느리지만, HDD(하드디스크)보다는 훨씬 빠름
• 실행 속도가 중요한 임베디드 시스템에서 중요한 역할
3) 페이지(Page) 단위 쓰기 & 블록(Block) 단위 삭제
• Flash 메모리는 페이지 단위(보통 256B4KB)로 데이터를 기록하고, 블록 단위(보통 4KB128KB)로 삭제
• 즉, 일부 데이터를 변경하려면 전체 블록을 삭제한 후 다시 써야 함
• 이로 인해 쓰기 속도가 삭제 속도보다 빠름
4) 한정된 쓰기/지우기 수명
• Flash 메모리는 반복적인 쓰기/지우기 동작을 수행할수록 수명이 닳음
• 일반적으로 NAND Flash는 약 10,000~100,000번, NOR Flash는 약 100,000~1,000,000번 가능
⸻
3. Flash 메모리의 종류
Flash 메모리는 크게 NOR Flash와 NAND Flash 두 가지로 나뉜다.
1) NOR Flash
• 빠른 랜덤 액세스(Random Access) 가능 → 코드 저장에 유리
• 바이트 단위 읽기 가능 → 메모리 매핑이 가능하여 프로그램 실행(XIP, eXecute In Place) 가능
• 하지만, 쓰기/삭제 속도가 느리고, 가격이 비싸며, 대용량 구현이 어려움
주요 용도:
• 펌웨어 저장 (BIOS, 부트로더)
• 실행 가능한 코드 저장 (MCU 프로그램 저장)
2) NAND Flash
• 연속적인 데이터 저장이 빠름 → 데이터 저장 장치로 적합
• 블록 단위 읽기/쓰기만 가능 → XIP 지원 불가, 실행하려면 RAM에 로드해야 함
• 높은 집적도, 저렴한 가격 → 대용량 저장 장치 구현에 유리
주요 용도:
• 스마트폰, SD 카드, SSD(솔리드 스테이트 드라이브)
• 임베디드 시스템에서 대용량 데이터 저장
<NOR vs. NAND Flash 비교>

⸻
4. Flash 메모리의 동작 원리
Flash 메모리는 Floating Gate MOSFET을 사용하여 데이터를 저장한다.
쓰기(Write) 과정
• 높은 전압을 가해 플로팅 게이트(Floating Gate)에 전자를 주입
• 전자가 주입된 상태(전하 존재) → 0으로 인식
• 전자가 없는 상태(전하 없음) → 1로 인식
지우기(Erase) 과정
• 블록 단위로 높은 전압을 가해 플로팅 게이트의 전자를 제거
• 모든 비트가 1(Erase 상태)로 초기화됨
• Flash 메모리는 바이트 단위로 데이터를 수정할 수 없으며, 수정하려면 블록을 먼저 지운 후 다시 써야 함
읽기(Read) 과정
• 플로팅 게이트의 전하 상태를 감지하여 0 또는 1을 판별
⸻
5. 임베디드 시스템에서 Flash 메모리 활용
임베디드 시스템에서는 Flash 메모리가 다양한 용도로 사용된다.
1) 펌웨어 저장 (NOR Flash)
• 마이크로컨트롤러(MCU)에서 실행되는 부트로더(Bootloader)와 펌웨어(Firmware)를 저장
• NOR Flash는 XIP(eXecute In Place) 기능을 지원하므로, 별도의 RAM 복사 없이 직접 실행 가능
2) 데이터 저장 (NAND Flash)
• 로그 데이터, 센서 데이터, 파일 시스템(FAT, ext4) 저장
• eMMC, SD 카드, USB 드라이브, SSD 등에 사용됨
3) 파일 시스템 기반 저장 (Flash 파일 시스템)
• Flash 메모리는 블록 단위로 데이터를 삭제해야 하므로, 일반적인 파일 시스템을 그대로 사용하기 어려움
• Flash 전용 파일 시스템(JFFS2, YAFFS, UBIFS, F2FS 등)을 사용하여 효율적으로 데이터 관리
⸻
6. Flash 메모리의 수명 연장 기법
Flash 메모리는 쓰기/지우기 횟수에 제한이 있으므로, 수명을 최대한 늘리기 위한 기법이 필요하다.
1) Wear Leveling (균등 마모 기법)
• 특정 블록만 반복적으로 사용하지 않고, 데이터를 여러 블록에 분산하여 기록
• Flash 파일 시스템(JFFS2, YAFFS, UBIFS 등)은 이 기능을 내장하고 있음
2) ECC (Error Correction Code)
• NAND Flash는 오류가 발생하기 쉬우므로, ECC를 사용하여 데이터 무결성을 보장
3) 캐싱(Cache) 및 RAM 활용
• 자주 변경되는 데이터는 RAM에 저장하고, 일정 주기마다 Flash에 기록하여 쓰기 횟수를 줄임
⸻
7. 결론
Flash 메모리는 빠른 읽기 속도와 대용량 저장이 가능한 비휘발성 메모리로, 임베디드 시스템에서 OS, 펌웨어, 데이터 저장 등에 널리 사용된다.
NOR Flash는 코드 실행(XIP)에 적합, NAND Flash는 대용량 데이터 저장에 유리하며, 각각의 특성에 맞게 활용해야 한다.
Flash 메모리는 쓰기/지우기 횟수 제한이 있으므로, Wear Leveling, ECC, 캐싱 기법을 사용하여 수명을 연장하는 것이 중요하다.
Flash 메모리는 성능과 내구성을 고려하여 적절하게 설계하고 관리해야 하는 중요한 저장 매체이다.
'임베디드' 카테고리의 다른 글
ARM Exception Level(EL) 알아보기(2): EL2(하이퍼바이저)와 EL3(보안 모드) (0) | 2025.03.19 |
---|---|
ARM Exception Level(EL) 알아보기(1): EL의 개념과 EL0~EL1 분석 (0) | 2025.03.18 |
EEPROM: 대표적인 비휘발성 메모리 (0) | 2025.03.15 |
UART (Universal Asynchronous Receiver/Transmitter) 통신의 이해 (2) | 2025.03.13 |
I²C (Inter-Integrated Circuit) 통신의 이해 (0) | 2025.03.12 |