플래시 메모리 - 4. 플래시 메모리의 동작 방식 및 관리 기법 (4.1 쓰기와 지우기의 한계)

2025. 2. 23. 16:19정보기술/하드웨어

4.1 쓰기와 지우기의 한계

플래시 메모리는 쓰기(Program)와 삭제(Erase)의 동작 방식이 기존의 자기 저장장치(HDD)와 다르며, 특정한 한계를 가진다.
특히 랜덤 액세스(Random Access)와 블록 단위 삭제(Block Erase)의 제약은 플래시 메모리를 효율적으로 관리하기 위한 기술(웨어 레벨링, 가비지 컬렉션 등)의 필요성을 만든다.


4.1.1 랜덤 액세스(Random Access) 한계

① 플래시 메모리의 랜덤 액세스란?

  • 랜덤 액세스(Random Access)란 임의의 위치에서 데이터를 즉시 읽거나 쓰는 기능을 의미함.
  • DRAM과 같은 휘발성 메모리는 개별 바이트(Byte) 단위의 자유로운 접근이 가능하지만,
    플래시 메모리는 페이지(Page) 단위로만 쓰기 가능하므로 랜덤 액세스에 제약이 있음.
  • 즉, 기존 데이터를 덮어쓰는 방식이 불가능하며, 덮어쓰려면 새로운 위치에 데이터를 쓰고, 기존 데이터는 삭제해야 함.

② NAND 플래시에서의 랜덤 액세스 한계

  • NAND 플래시는 페이지 단위 쓰기(Program), 블록 단위 삭제(Erase) 방식을 사용하므로, 기존 데이터를 수정할 때 랜덤 액세스 방식처럼 개별적으로 변경하는 것이 불가능함.
  • 따라서, 일부 데이터만 수정하려 해도 새로운 페이지에 다시 기록하고, 기존 페이지는 무효화(Invalid)됨.
  • 이로 인해 가비지 컬렉션(Garbage Collection) 및 웨어 레벨링(Wear Leveling) 기법이 필수적으로 사용됨.

③ NOR 플래시에서의 랜덤 액세스 특징

  • NOR 플래시는 병렬(Parallel) 구조를 사용하여 랜덤 액세스가 가능하지만, 쓰기 속도가 느리고 저장 용량이 작아 대용량 저장장치로는 부적합함.
  • 보통 부팅 펌웨어(UEFI, BIOS)처럼 읽기 성능이 중요한 환경에서 사용됨.

④ 랜덤 액세스 성능 비교

비교 항목 NAND 플래시 NOR 플래시 DRAM
랜덤 읽기 속도 보통 빠름 매우 빠름
랜덤 쓰기 가능 여부 불가능(새로운 페이지에 쓰기) 가능(바이트 단위 쓰기) 가능(바이트 단위 쓰기)
삭제 단위 블록 단위 블록 단위 N/A
사용 용도 SSD, USB, SD 카드 펌웨어 저장, MCU 메인 메모리(RAM)

⑤ 랜덤 액세스의 영향

  • 파일 시스템 설계에 영향 → SSD는 순차 쓰기가 더 효율적이므로, 운영체제에서 파일 쓰기 방식을 최적화해야 함.
  • 플래시 메모리 컨트롤러의 역할 중요 → 랜덤 액세스 성능을 개선하기 위해 SSD 컨트롤러가 캐싱(Cache) 및 매핑(Mapping) 기법을 사용함.

4.1.2 블록 단위 삭제의 필요성

① 플래시 메모리에서 데이터 삭제 방식

  • HDD나 RAM은 개별 바이트(Byte) 또는 섹터(Sector) 단위로 데이터를 수정할 수 있지만,
    플래시 메모리는 블록(Block) 단위로만 삭제 가능함.
  • 즉, 기존 데이터를 수정하려면 새로운 블록에 기록한 후, 기존 블록을 삭제하는 방식이 필요함.
  • 이 때문에 쓰기 작업이 많을수록 성능 저하와 수명 감소로 이어질 수 있음.

② 블록 단위 삭제가 필요한 이유

  • 플래시 메모리는 Floating-Gate Transistor 또는 Charge Trap 구조를 사용하여 데이터를 저장함.
  • 기존 데이터가 있는 상태에서 덮어쓰기하려면, 기존 전자를 제거해야 하는데,
    이 과정이 개별 셀이 아닌 블록 단위에서만 가능함.
  • 따라서, 삭제(Erase)는 블록 단위로만 수행할 수 있으며, 기존 데이터를 수정하려면 새로운 블록을 사용해야 함.

③ 블록 단위 삭제 과정

  1. 새로운 데이터를 저장할 공간이 필요하면, 컨트롤러는 기존 블록을 삭제 후보로 지정.
  2. 블록 내 사용 중인 데이터를 새로운 블록으로 이동(가비지 컬렉션 과정).
  3. 원래 블록의 데이터를 삭제(Erase)하여 빈 공간(Free Space)으로 만듦.
  4. 새로운 데이터가 기록될 수 있도록 준비됨.

④ 블록 단위 삭제로 인한 성능 저하

  • 삭제가 필요할 때마다 새로운 블록에 데이터를 재배치하는 과정이 필요함.
  • 데이터가 많아질수록 삭제 및 재배치 작업이 많아져 성능이 저하됨.
  • SSD의 수명(P/E 사이클)에도 영향을 줌, 즉 쓰기 작업이 많을수록 SSD의 수명이 단축됨.

⑤ 블록 단위 삭제의 해결 방법

웨어 레벨링(Wear Leveling) → 특정 블록이 집중적으로 사용되지 않도록 쓰기 위치를 균등하게 분배.
가비지 컬렉션(Garbage Collection) → 사용하지 않는 데이터를 정리하여 새로운 데이터를 쓸 공간을 확보.
TRIM 명령어 → 운영체제가 더 이상 필요 없는 데이터를 미리 삭제하여 성능 저하 방지.
SLC 캐싱 기술 → 고속 SLC 메모리를 캐시로 활용하여 쓰기 속도 향상.


4.1.3 블록 단위 삭제와 성능 최적화 기술 비교

기술 목적  동작 방식 장점
웨어 레벨링 특정 블록의 과도한 사용 방지 쓰기 위치를 분산시켜 고르게 사용 수명 연장
가비지 컬렉션 불필요한 데이터 정리 사용하지 않는 블록을 정리하여 공간 확보 성능 유지
TRIM 명령어 불필요한 데이터 사전 삭제 OS가 SSD에 삭제할 데이터 정보 전달 쓰기 성능 향상
SLC 캐싱 쓰기 성능 최적화 고속 SLC 셀을 임시 캐시로 사용 쓰기 속도 증가

정리

  • 랜덤 액세스 한계: NAND 플래시는 페이지 단위 쓰기만 가능하고, 개별 데이터 수정(덮어쓰기)이 불가능함.
  • 블록 단위 삭제 필요성: 데이터를 삭제하려면 반드시 블록 단위로 지워야 하며, 이로 인해 쓰기 성능 저하 및 수명 단축이 발생할 수 있음.
  • 해결 방법: 웨어 레벨링, 가비지 컬렉션, TRIM 명령어 등 다양한 최적화 기술을 적용하여 성능과 수명을 개선함.