NAND Bad Block 이 발생하는 이유
Contents Table
NAND 플래시 메모리는 데이터를 저장하는 작은 셀(셀들의 집합을 블록이라 부름)들로 구성되어 있습니다. 그런데 이 블록들 중에는 처음부터 불량인 경우(공장 출고 시 결함)도 있고, 사용하다 보면 여러 이유로 망가지는 블록들도 생깁니다. 이러한 “망가진” 블록을 가리켜 “Bad Block(배드 블록)”이라고 부르는 것이죠. 왜 이런 Bad Block이 생기는지 좀 더 쉽게 살펴보고자 합니다.
1. NAND 의 Cell, Page, Block 의 개념
NAND 플래시 메모리에서 “Block(블록)”은 데이터를 저장하는 기본적인 단위 중 하나입니다. 이 블록은 여러 개의 “Page(페이지)”가 모여서 만들어지며, 페이지 안에는 실제로 데이터를 담고 있는 셀(cell)들이 있습니다. 좀 더 구체적으로 말씀드리면 다음과 같은 구조가 있습니다.
- Cell(셀)
- 전자를 저장할 수 있는 아주 작은 단위입니다.
- 셀들이 모여서 “Page”를 형성합니다.
- Page(페이지)
- 여러 개의 셀이 모여 이루는 단위입니다.
- 데이터를 한 번에 쓰고 읽을 수 있는 최소 단위가 페이지입니다.
- 예를 들어, 한 페이지가 4KB 혹은 8KB 정도의 용량을 가질 수 있습니다(제품마다 다름).
- Block(블록)
- 여러 페이지가 모여서 “Block”이 됩니다.
- 블록은 주로 “지우기(Erase)”를 수행하는 최소 단위입니다.
- 즉, 데이터를 쓸 때는 페이지 단위로 쓰지만, 데이터를 지울 때(Erase)는 블록 단위로만 지울 수 있어요.
2. 왜 블록 (Block) 개념이 중요한가?
Bad Block(배드 블록) 관리
블록 중 일부가 불량이 되면(공장 출고 시 불량이 있거나, 사용 중에 손상되어 쓰기/읽기 에러가 잦아지면) “Bad Block”으로 표시하여 사용하지 않게 됩니다. 이렇게 하면 전체적으로 안정적으로 작동하도록 돕습니다.
쓰기/지우기 특성
NAND 플래시는 한 번에 페이지 단위로 데이터를 기록(Program)할 수 있지만, 데이터를 지울 때는 항상 블록 전체를 한꺼번에 지워야 해요. 예를 들어 4KB짜리 페이지 여러 개가 모여서 256KB짜리 블록을 이룬다면, 데이터를 지울 때는 그 256KB 전체를 지워야 하는 식입니다.
Wear(마모) 관리
NAND 플래시는 계속해서 쓰고 지우다 보면 내부 셀이 조금씩 손상되는데, 이를 “마모”라고 합니다. 블록 단위로 지우는 방식 때문에 마모가 특정 블록에 집중되지 않도록, 컨트롤러는 여러 블록에 골고루 데이터를 쓰려고 노력합니다(이를 Wear Leveling이라고 부름).
3. Bad Block 이 발생하는 이유
제조 공정에서의 미세 결함
- 제조 단계에서 불량
반도체 칩을 만들 때는 매우 미세한 공정이 사용됩니다. 칩 안에 수많은 셀이 만들어지는데, 이 과정에서 아주 작은 결함이 발생할 수 있어요.
예를 들어, 특정 셀의 구조가 제대로 만들어지지 않아서 전기적 특성이 나빠지는 경우가 있습니다.
이런 결함이 있는 블록은 처음부터 쓸 수 없거나 쓰더라도 오류가 많이 발생하므로 ‘Bad Block’으로 표시하고 사용하지 않도록 합니다.
반복 쓰기/지우기로 인한 마모(Wear)
- 기본 동작 방식
NAND 플래시는 데이터를 “쓸 때”와 “지울 때” 상당히 큰 전압을 걸어줘야 해요. 덕분에 많은 양의 데이터를 저장할 수 있지만, 계속해서 전압을 주고받으면서 셀이 조금씩 손상되기 쉬운 구조입니다. - 반복 사용에 따른 열화
똑같은 블록을 계속해서 쓰고 지우는 과정이 누적되면, 셀을 구성하는 산화막(절연막)에 미세 균열이 생기기도 하고, 내부 전자 흐름 특성이 변하게 됩니다.
이처럼 셀이 계속적인 물리적 스트레스에 노출되면 오류(데이터 손실, 전압 보존 실패 등)가 발생하기 쉬워지고, 결국 해당 블록이 사용할 수 없는 상태가 될 수 있습니다.
높은 온도, 전기적 노이즈, 외부 충격
- 주변 환경 영향
- 온도가 너무 높거나 낮으면 전자 부품이 정상적으로 동작하기 어려워져서, 셀이 빨리 마모되거나 에러가 날 확률이 증가해요.
- 읽기나 쓰기 도중 **정전기나 전기적 노이즈(잡음)**가 심하면 셀 내부 전압이 제대로 유지되지 못해서 셀이 손상될 수도 있습니다.
- 심한 물리적 충격도 미세 회로를 파손하여 블록을 망가뜨릴 수 있어요.
데이터 보정(에러 정정)과 Wear Leveling
- 에러 정정(ECC)
NAND 플래시는 작동 중 생길 수 있는 오류를 줄이기 위해, ECC(에러 정정 코드)라는 기법을 활용해요. 쓰고 읽을 때 약간의 오류는 ECC가 알아서 감지하고 보정해줍니다. 다만 오류가 너무 심해지면 ECC로도 해결이 안 되어서, 해당 블록이 ‘Bad Block’으로 판단될 수 있어요. - Wear Leveling(마모 분산)
특정 블록만 집중적으로 쓰면 그 블록이 빨리 망가질 테니, 전체 블록을 골고루 사용하도록 제어칩이 “Wear Leveling” 기능을 합니다. 이를 통해 Bad Block 발생을 최대한 늦추려 노력하는 것이죠.
4. 왜 Bad Block을 따로 관리할까?
- 사용 불가능한 블록을 미리 표시
Bad Block을 표시(마킹)해두면, 제어 칩이 그 블록을 더는 쓰지 않고 다른 블록에 데이터를 저장합니다.
이렇게 하면 실제 고장 난 블록을 피해서 데이터를 안전하게 보관할 수 있어요. - 정상 블록만 활용하여 성능과 수명을 보장
Bad Block을 초기부터 관리(출고 시)하고, 사용 중에도 발생하면 동적으로 관리함으로써, 전체 NAND의 성능 및 수명을 최대한 안정적으로 유지할 수 있습니다.
5. 마무리하며
결국 NAND 플래시 메모리의 Bad Block은 제조 공정에서 생긴 초기 불량이거나, 사용하면서 물리적·전기적 스트레스 때문에 손상되어 생기는 것입니다. 이런 특성 때문에 모든 NAND 메모리에는 어느 정도의 Bad Block이 존재할 수밖에 없고, 이를 관리하기 위한 여러 기술(에러 정정, Wear Leveling 등)이 함께 쓰여요.
쉽게 말해:
- 처음부터 불량인 블록(제조 시 결함)도 있고,
- 너무 많이 쓰고 지우다 보면 자연스럽게 망가지는 블록도 있다는 점이 핵심이라고 보시면 됩니다.
이렇게 발생한 Bad Block들은 저장장치에서 자동으로 감지하고, 재사용하지 않도록 막아주기 때문에 사용자는 보통 이를 크게 신경 쓸 필요는 없습니다. 그러나 전체 Block 수가 줄어들면서 SSD나 eMMC, USB 메모리 등 NAND 기반 장치의 수명이 점점 짧아질 수는 있으니, 중요한 데이터는 정기적으로 백업해두는 습관이 좋습니다.