eMMC 개념 및 핵심 특징 3가지
Table of Contents
최근 몇 년간 스마트폰, 태블릿, 그리고 여러 IoT 기기들이 대중화되면서, eMMC(embedded MultiMediaCard)라는 용어를 많이 들어보셨을 겁니다. eMMC는 NAND 플래시 메모리와 플래시 메모리 컨트롤러가 하나의 패키지로 결합된 스토리지 기술입니다.
eMMC는 모바일 및 임베디드 시스템을 위한 경제적이고 효율적인 저장 솔루션입니다. 소형화, 저전력 소비, 설계의 단순화 등의 장점 덕분에 다양한 분야에서 널리 사용되고 있습니다.

eMMC 의 구조
위의 그림은 eMMC의 주요 구성 요소와 신호 흐름을 시각적으로 나타낸 것입니다. 이 그림을 통해 eMMC 내부에서 컨트롤러와 NAND 플래시 메모리가 어떻게 상호작용하는지 이해할 수 있습니다.
1. eMMC의 주요 구성 요소
- MMC 컨트롤러: NAND 플래시 메모리를 관리하고, 외부 장치와의 인터페이스를 담당합니다.
- NAND 플래시 메모리: 데이터를 저장하는 비휘발성 메모리입니다.
- 레지스터 (Registers): 다양한 설정 및 상태 정보를 저장합니다.
2. MMC 컨트롤러
MMC 컨트롤러는 eMMC의 핵심 구성 요소로, 다양한 레지스터를 포함하고 있습니다. 주요 레지스터는 다음과 같습니다:
- OCR (Operating Conditions Register): 동작 조건을 저장합니다.
- CSD (Card-Specific Data): 카드의 특정 데이터를 저장합니다.
- RCA (Relative Card Address): 카드 주소를 저장합니다.
- CID (Card Identification): 카드 식별 정보를 저장합니다.
- ECSD (Extended CSD): 확장된 카드 데이터를 저장합니다.
- DSR (Driver Stage Register): 드라이버 상태 정보를 저장합니다.
3. 신호 흐름과 데이터 흐름
- 좌측신호
- DS: 데이터 스텀프 신호
- RST_n: 리셋 신호
- CMD: 명령 신호
- CLK: 클럭 신호
- V_DDIM: 전원 공급 신호
- 우측신호
- V_CCM: 컨트롤러 전원 공급
- V_CCQM: 컨트롤러 퀄리티모니터링 전원 공급
- DAT[7:0]: 데이터 신호
- V_SS: 접지 신호
- V_SSQ: 접지 퀄리티 모니터링 신호
MMC 컨트롤러와 NAND 플래시 메모리 간 데이터 흐름:
컨트롤러는 외부 장치로부터 명령과 데이터를 수신하여 NAND 플래시 메모리에 저장하거나, NAND 플래시 메모리에서 데이터를 읽어 외부 장치로 전송합니다.
이 과정에서 컨트롤러는 레지스터를 통해 필요한 정보를 관리하고, 신호를 주고받으며 데이터의 무결성과 정확성을 유지합니다.
eMMC의 동작원리 3가지
eMMC의 동작은 크게 세 가지 단계로 나누어 설명할 수 있습니다: 데이터 쓰기, 데이터 읽기, 데이터 삭제.
1. 데이터 쓰기(Write)
호스트로부터의 명령 수신: 외부 기기(예: 스마트폰의 프로세서)로부터 데이터 쓰기 명령을 수신합니다. 이 명령은 eMMC의 컨트롤러로 전달됩니다.
데이터 저장 위치 결정: 컨트롤러는 NAND 플래시 메모리의 적절한 블록과 페이지를 찾아 데이터를 저장할 위치를 결정합니다. 이 과정에서 컨트롤러는 메모리의 수명과 성능을 고려하여 데이터를 균등하게 분배하려고 노력합니다.
데이터 전송: 컨트롤러는 데이터를 NAND 플래시 메모리로 전송하고, 지정된 위치에 데이터를 저장하도록 명령합니다. NAND 플래시 메모리는 데이터를 셀에 저장하며, 이 과정에서 전압을 사용하여 비트를 기록합니다.
2. 데이터 읽기(Read)
호스트로부터의 명령 수신: 외부 기기로부터 데이터 읽기 명령을 수신합니다. 이 명령은 eMMC의 컨트롤러로 전달됩니다.
데이터 위치 확인: 컨트롤러는 필요한 데이터가 저장된 NAND 플래시 메모리의 블록과 페이지를 확인합니다.
데이터 읽기: 컨트롤러는 NAND 플래시 메모리에 데이터를 읽어오도록 명령합니다. NAND 플래시 메모리는 저장된 전압을 감지하여 데이터를 읽어들이고, 이를 컨트롤러로 전달합니다.
데이터 전송: 컨트롤러는 읽어들인 데이터를 외부 기기로 전송합니다. 데이터 읽기는 데이터 쓰기와 비슷한 과정을 거칩니다:
3. 데이터 삭제 (Erase)
호스트로부터의 명령 수신: 외부 기기로부터 데이터 삭제 명령을 수신합니다. 이 명령은 eMMC의 컨트롤러로 전달됩니다.
데이터 위치 확인: 컨트롤러는 삭제할 데이터가 저장된 NAND 플래시 메모리의 블록을 확인합니다.
데이터 삭제: 컨트롤러는 해당 블록을 ‘삭제 예정’으로 표시하고, 실제 삭제는 나중에 이루어집니다(쓰레기 수집 과정). NAND 플래시 메모리에서 데이터 삭제는 실제로 데이터를 삭제하는 것이 아니라, 해당 블록을 지우기 위한 준비 단계입니다.
eMMC 만의 독특한 특징 3가지
컨트롤러는 NAND 플래시 메모리의 데이터를 관리하면서 데이터 무결성을 유지하기 위해 다양한 오류 검출 및 수정 알고리즘을 사용합니다. 이는 다음과 같은 방식으로 이루어집니다
- ECC (Error Correction Code): 데이터를 읽거나 쓸 때 발생할 수 있는 오류를 검출하고 수정합니다.
- 웨어 레벨링: NAND 플래시 메모리의 수명을 연장하기 위해 데이터 쓰기를 균등하게 분배합니다.
- 배드 블록 관리: 사용 중 문제가 발생한 블록을 비활성화하고, 데이터 손실을 방지합니다.
1. ECC (Error Correction Code)
eMMC(embedded MultiMediaCard)는 데이터 저장의 신뢰성과 무결성을 보장하기 위해 다양한 오류 수정 코드(ECC, Error Correction Code) 기술을 사용합니다. ECC는 데이터 저장 및 전송 과정에서 발생할 수 있는 오류를 검출하고 수정하는 중요한 역할을 합니다.
1.1 ECC의 필요성과 기본 원리
NAND 플래시 메모리는 물리적 한계로 인해 데이터 저장 시 오류가 발생할 수 있습니다. 이러한 오류는 여러 가지 원인으로 발생할 수 있습니다:
- 셀의 물리적 손상
- 전력 공급 문제
- 노화로 인한 셀 마모
- 데이터 전송 중의 전자기 간섭
이러한 오류를 감지하고 수정하지 않으면 데이터 손실이나 손상이 발생할 수 있습니다. ECC는 이러한 문제를 해결하기 위해 필수적인 기술입니다.
ECC는 저장된 데이터와 함께 추가적인 패리티 비트(parity bits)를 생성하여 데이터의 무결성을 검증합니다. 데이터가 저장되거나 전송될 때, ECC 알고리즘은 다음과 같은 과정을 거칩니다:
- 데이터 인코딩: 원본 데이터를 일정한 크기의 블록으로 나누고, 각 블록에 대해 패리티 비트를 생성하여 추가합니다. 이는 저장된 데이터와 함께 저장됩니다.
- 데이터 저장: 인코딩된 데이터(원본 데이터 + 패리티 비트)를 NAND 플래시 메모리에 저장합니다.
- 데이터 읽기: 데이터를 읽을 때, 인코딩된 데이터와 패리티 비트를 함께 읽어옵니다.
- 오류 검출 및 수정: ECC 알고리즘을 사용하여 패리티 비트를 검토하고, 오류를 검출 및 수정합
1.2 eMMC 에서 사용되는 ECC 방식
eMMC에서 사용되는 대표적인 ECC 방식은 BCH(Bose-Chaudhuri-Hocquenghem) 코드와 LDPC(Low-Density Parity-Check) 코드입니다.
BCH 코드는 다중 비트 오류를 검출하고 수정할 수 있는 강력한 오류 수정 코드입니다. 복잡도가 낮아 하드웨어 구현이 비교적 간단합니다. 그러나 고속 데이터 전송 환경에서는 성능이 제한될 수 있습니다.
LDPC 코드는 매우 높은 오류 수정 능력을 제공하며, 최근 고성능 메모리 시스템에서 널리 사용됩니다. 높은 신뢰성과 빠른 데이터 전송 속도를 제공합니다. 그러나 구현 복잡도가 높아 하드웨어 요구사항이 큽니다.
1.3 ECC의 중요성
ECC는 데이터 저장 장치의 신뢰성을 크게 향상시키며, 데이터 손실을 방지합니다. 이는 특히 다음과 같은 경우에 중요합니다:
- 임베디드 시스템: 산업용 기기나 의료 기기에서 데이터 무결성은 매우 중요합니다.
- 모바일 기기: 스마트폰과 태블릿에서는 데이터 손실이 사용자 경험에 큰 영향을 미칩니다.
- 고성능 응용 프로그램: 빠른 데이터 전송과 높은 신뢰성이 요구되는 환경에서는 ECC가 필수적입니다.
2. 웨어레벨링 (Wear-Leveling)
NAND 플래시 메모리는 전력 효율적이고 비용 효율적인 비휘발성 저장 솔루션이지만, 반복적인 쓰기와 삭제 작업이 메모리 셀의 수명을 단축시킵니다. eMMC(embedded MultiMediaCard)에서는 이러한 문제를 해결하기 위해 ‘웨어 레벨링(Wear Leveling)’이라는 기술을 사용합니다.
2.1 웨어레벨링이란?
웨어 레벨링은 NAND 플래시 메모리의 수명을 연장하기 위해 모든 메모리 셀에 균등하게 쓰기 작업을 분배하는 기술입니다. 이 기술은 특정 셀에 반복적으로 쓰기 작업이 집중되지 않도록 하여, 전체 메모리 셀의 마모를 균등하게 분산시킵니다.
NAND 플래시 메모리 셀은 제한된 쓰기 및 삭제 사이클을 가지고 있습니다. 일반적으로 한 셀이 견딜 수 있는 쓰기/삭제 사이클 수는 수천에서 수만 번 정도입니다. 특정 셀에 반복적인 쓰기 작업이 집중되면, 그 셀은 빨리 마모되어 사용할 수 없게 됩니다. 웨어 레벨링을 통해 이러한 문제를 예방하고, 메모리 전체의 수명을 연장할 수 있습니다.
2.2 웨어레벨링의 동작 원리
웨어 레벨링은 주로 두 가지 방식인 정적 웨어 레벨링과 동적 웨어 레벨링 으로 구현됩니다:
동적 웨어 레벨링은 주로 쓰기 작업이 수행될 때마다 활성화됩니다. 새로운 데이터를 쓸 때, 컨트롤러는 현재 가장 적게 사용된 블록을 찾아 그곳에 데이터를 씁니다. 이를 통해 특정 블록에 쓰기 작업이 집중되지 않도록 합니다.
정적 웨어 레벨링은 주로 기기 유휴 시간에 실행됩니다. 자주 쓰이지 않는 데이터가 저장된 블록을 다른 위치로 옮기고, 해당 블록을 더 자주 사용되는 데이터 저장에 활용합니다. 이를 통해 메모리의 모든 블록이 고르게 사용되도록 합니다.
2.3 웨어레벨링의 장점과 실제 예
웨어 레벨링은 여러 가지 중요한 장점을 제공합니다:
- 수명 연장: 모든 메모리 셀에 균등하게 쓰기 작업을 분배하여, NAND 플래시 메모리의 전체 수명을 연장합니다.
- 신뢰성 향상: 특정 셀이 빨리 마모되어 발생할 수 있는 데이터 손실을 방지하여, 데이터 신뢰성을 높입니다.
- 성능 유지: 마모된 블록을 효과적으로 관리하여, 메모리 성능 저하를 최소화합니다.
웨어 레벨링은 eMMC뿐만 아니라 SSD(Solid State Drive), USB 플래시 드라이브, SD 카드 등 다양한 NAND 플래시 메모리 기반 저장 장치에서 널리 사용됩니다. 이러한 장치들은 모두 웨어 레벨링을 통해 데이터 저장의 신뢰성과 수명을 향상시키고 있습니다.
3. 베드 블록 관리 (Bad Block Management)
NAND 플래시 메모리를 사용하는 eMMC는 데이터 저장의 신뢰성을 유지하기 위해 여러 가지 기술을 사용합니다. 그 중 하나가 바로 베드 블록 관리(Bad Block Management)입니다.
3.1 베드 블록이란?
베드 블록(Bad Block)은 NAND 플래시 메모리에서 읽기, 쓰기, 또는 삭제가 불가능하거나 신뢰할 수 없는 블록을 의미합니다. 베드 블록은 정상적인 블록과 달리 데이터를 신뢰성 있게 저장하지 못하므로, 이를 적절히 관리하지 않으면 데이터 손실이나 손상이 발생할 수 있습니다. 이러한 블록은 제조 과정에서의 결함, 사용 중 발생한 불리적 손상, 셀의 노화로 인한 마모에 의해 발생할 수 있습니다
3.2 베드 블록 관리의 동작
데이터 쓰기: 컨트롤러가 데이터를 쓰기 전, 데이터를 저장할 블록이 정상 블록인지 확인합니다. 만약 블록이 베드 블록으로 식별되면, 컨트롤러는 다른 정상 블록을 찾아 데이터를 저장합니다.
데이터 읽기: 데이터를 읽을 때, 컨트롤러는 베드 블록 맵을 참조하여 데이터가 저장된 블록이 정상 블록인지 확인합니다. 만약 블록이 베드 블록으로 식별되면, 해당 블록에 저장된 데이터는 이미 재배치된 정상 블록에서 읽어옵니다.
블록 재배치: 주기적으로 또는 오류 발생 시 컨트롤러는 블록을 검사하여 베드 블록을 식별합니다. 식별된 베드 블록에 저장된 데이터를 ECC 기술을 사용하여 복구한 후, 정상 블록으로 재배치합니다. 베드 블록 맵을 업데이트하여 새로운 베드 블록 정보를 기록합니다.
eMMC 의 NAND는 왜 MLC 와 TLC 가 쓰이는가
eMMC의 저장 기술로는 NAND 플래시 메모리가 사용되는데, 이 NAND 플래시 메모리는 SLC(Single-Level Cell)보다는 MLC(Multi-Level Cell)와 TLC(Triple-Level Cell)가 더 많이 사용됩니다..
1. NAND 플래시 메모리의 종류
NAND 플래시 메모리는 셀당 저장할 수 있는 비트 수에 따라 다음과 같이 분류됩니다:
QLC (Quad-Level Cell): 셀 하나당 4비트 저장
SLC (Single-Level Cell): 셀 하나당 1비트 저장
MLC (Multi-Level Cell): 셀 하나당 2비트 저장
TLC (Triple-Level Cell): 셀 하나당 3비트 저장
2. SLC vs. MLC, TLC
SLC는 속도와 내구성이 뛰어나지만, 높은 비용과 낮은 저장 밀도 때문에 주로 산업용 또는 고성능 저장장치에서 사용됩니다. 반면, MLC와 TLC는 다음과 같은 장점 덕분에 소비자용 기기에서 더 많이 사용됩니다
비용 효율성: MLC와 TLC는 동일한 면적에 더 많은 데이터를 저장할 수 있어, 제조 비용이 SLC에 비해 낮습니다. 이는 eMMC와 같은 대량 생산이 필요한 소비자용 제품의 비용을 절감하는 데 큰 역할을 합니다.
저장 용량 증가: MLC와 TLC는 SLC보다 더 많은 데이터를 저장할 수 있습니다. 이는 더 큰 저장 용량을 필요로 하는 스마트폰이나 태블릿 등의 기기에서 매우 유리합니다. 작은 기기에서도 대용량 데이터를 저장할 수 있기 때문에 사용자 경험이 향상됩니다.
적절한 성능: MLC와 TLC는 SLC에 비해 성능이 떨어지지만, 일반적인 소비자용 기기에서는 충분한 성능을 제공합니다. eMMC가 사용되는 대부분의 기기에서는 극단적인 속도나 내구성이 필요하지 않기 때문에, MLC와 TLC의 성능으로도 충분히 좋은 사용자 경험을 제공할 수 있습니다.
3. eMMC에서 MLC 와 TLC 가 선택되는 이유
비용과 효율성이 가장 큰 이유입니다. eMMC는 비용에 민감한 소비자용 전자기기에 주로 사용되므로, 경제적인 MLC와 TLC가 더 적합합니다. 또한, 모바일 기기나 IoT 기기에서는 대용량 데이터를 저장할 필요가 있으므로, 높은 저장 밀도를 제공하는 MLC와 TLC가 유리합니다.
또한, 현재의 컨트롤러 기술이 발전함에 따라, MLC와 TLC의 내구성 및 성능이 지속적으로 개선되고 있습니다. 이는 MLC와 TLC가 eMMC와 같은 저장 솔루션에서 더욱 신뢰할 수 있는 선택이 되도록 합니다.