NAND 플래시 원리, SLC부터 QLC까지 비트를 담는 법

NAND 플래시 원리, SLC부터 QLC까지 비트를 담는 법

투명한 컵 하나로 정보를 전하는 놀이를 해 본다고 생각해 보세요. 비었는지 찼는지만 구분하면 실수할 일이 거의 없지만, 물 높이를 네 단계, 여덟 단계, 열여섯 단계로 나눠 읽기 시작하면 이야기가 달라집니다. 눈금 사이가 좁아질수록 물을 붓는 손은 조심스러워지고, 읽는 사람도 더 오래 들여다봐야 하죠.

NAND 플래시 원리가 바로 이 컵과 같습니다. 셀에 가둔 전자의 양으로 트랜지스터의 문턱 전압을 여러 높이로 맞추고, 그 높이를 읽어 비트를 알아내죠. 이 글에서는 셀 하나가 전자를 담고 빼고 읽는 과정을 따라간 뒤, 한 셀에 몇 비트를 담느냐에 따라 SLC, MLC, TLC, QLC가 어떻게 달라지는지 정리합니다.

NAND 플래시 원리의 출발점, 문턱 전압

NAND 플래시의 셀은 기본적으로 MOSFET입니다. 다른 점은 게이트와 채널 사이에 전자를 가둘 수 있는 저장층이 하나 더 있다는 것이죠. 채널과 저장층 사이에는 얇은 터널 산화막(Tunnel Oxide)이, 저장층과 위쪽 제어 게이트 사이에는 또 다른 절연막이 있습니다.

저장층에 전자가 갇히면 그 음전하가 게이트의 전기장을 일부 상쇄합니다. 그래서 트랜지스터를 켜려면 게이트에 더 높은 전압이 필요해지죠. 즉 저장한 전자의 양이 문턱 전압(Vth)을 바꾸고, 이 문턱 전압의 높이가 곧 저장된 데이터가 됩니다.

전자를 거의 빼낸 소거 상태는 문턱 전압이 낮고, 전자를 채운 프로그램 상태는 높습니다. 한 셀에 1비트를 담는 경우 관례적으로 소거 상태를 1, 프로그램 상태를 0으로 읽죠. 전원을 꺼도 절연막에 둘러싸인 전자가 그대로 남기 때문에 비휘발성 메모리가 됩니다.

플로팅 게이트와 전하 트랩

NAND 플래시 원리는 같아도 저장층을 무엇으로 만드느냐에 따라 두 방식으로 나뉩니다. 플로팅 게이트(Floating Gate)는 절연막에 둘러싸인 다결정 실리콘, 즉 도체에 전자를 저장하죠. 도체이므로 들어온 전자가 저장층 전체에 고르게 퍼집니다.

이 성질은 약점이 되기도 합니다. 터널 산화막에 결함 하나만 생겨도 도체 전체의 전자가 그 통로로 빠져나갈 수 있고, 셀 간격이 좁아지면 이웃 플로팅 게이트끼리 전기적으로 간섭하죠. 평면 NAND의 미세화가 한계에 가까워진 이유 가운데 하나입니다.

전하 트랩(CTF, Charge Trap Flash) 방식은 실리콘 질화막 같은 절연체 안의 트랩에 전자를 붙잡아 둡니다. 절연체라 전자가 제자리에 머물러서, 결함 하나로 모든 전하를 잃을 위험이 작고 저장층을 얇게 만들 수 있죠. 세로로 뚫은 구멍 벽에 막을 차례로 입혀 셀을 만드는 3D NAND와 잘 맞아, 3D NAND는 주로 이 방식을 씁니다.

스트링, 페이지, 블록의 구조

NAND라는 이름은 셀 연결 방식에서 왔습니다. 여러 개의 셀을 직렬로 이어 하나의 스트링(String)을 만들고, 양 끝에 선택 트랜지스터를 두어 비트 라인과 공통 소스에 연결하죠. 직렬로 이어진 모양이 NAND 논리 게이트의 트랜지스터 배치와 닮아 이런 이름이 붙었습니다.

같은 높이의 셀들은 워드 라인 하나를 공유합니다. 하나의 워드 라인에 연결된 셀 묶음이 프로그램과 읽기의 기본 단위인 페이지(Page)가 되고, 같은 워드 라인 묶음을 공유하는 여러 스트링 전체가 소거 단위인 블록(Block)이 되죠. 페이지는 블록보다 훨씬 작아서, 한 블록 안에 수많은 페이지가 들어 있습니다.

직렬 구조는 셀마다 배선 접점을 둘 필요가 없어 집적도가 높다는 큰 장점이 있습니다. 대신 원하는 셀 하나만 골라 읽으려면 같은 스트링의 나머지 셀을 모두 켜 둬야 해서, 읽기와 쓰기에 독특한 전압 조건이 필요하죠.

프로그램, FN 터널링과 ISPP

프로그램은 선택한 워드 라인에 높은 전압을 걸고 채널은 0 V 가까이 두는 방식으로 합니다. 터널 산화막에 아주 강한 전기장이 걸리면 채널의 전자가 양자역학적으로 산화막을 통과해 저장층으로 들어가는데, 이를 FN 터널링(Fowler-Nordheim Tunneling)이라고 하죠.

같은 워드 라인에 있지만 프로그램하지 않을 셀도 있습니다. 이 셀들은 비트 라인에 전압을 걸어 선택 트랜지스터를 꺼지게 만들고, 채널을 떠 있는 상태로 둡니다. 그러면 워드 라인 전압에 끌려 채널 전압도 함께 올라가 산화막에 걸리는 전기장이 약해지죠. 이를 채널 부스팅(Self-Boosting)이라고 합니다.

문턱 전압을 원하는 높이에 정확히 맞추기 위해 ISPP(Incremental Step Pulse Programming)를 씁니다. 짧은 프로그램 펄스를 주고, 문턱 전압이 목표에 도달했는지 검증하고, 아직이면 전압을 조금 올려 다시 펄스를 주는 과정을 반복하죠. 목표에 도달한 셀은 그다음 펄스부터 금지 상태로 바뀌어 더 올라가지 않습니다.

ISPP의 전압 계단을 잘게 나눌수록 문턱 전압 분포가 좁고 정확해지지만, 반복 횟수가 늘어 프로그램 시간이 길어집니다. 컵에 물을 조금씩 부어 가며 눈금을 확인하는 것과 같아서, 눈금이 촘촘할수록 시간이 더 걸리죠.

소거는 블록 단위로

소거는 프로그램의 반대입니다. 셀이 놓인 웰이나 채널 쪽에 높은 전압을 걸고 워드 라인은 0 V 가까이 두어, 저장층의 전자를 빼내거나 전하 트랩 구조에서는 정공을 넣어 전하를 상쇄하죠. 3D NAND에서는 채널에 정공을 공급하기 위해 선택 트랜지스터 근처에서 GIDL 현상을 이용하는 방식도 쓰입니다.

이 높은 전압이 블록 전체가 공유하는 영역에 걸리기 때문에 소거는 블록 단위로만 할 수 있습니다. 그래서 NAND는 이미 쓴 페이지를 그 자리에서 덮어쓰지 못하고, 새 데이터를 빈 페이지에 쓴 뒤 옛 페이지를 무효로 표시하는 방식으로 동작하죠. 무효 페이지가 쌓인 블록에서 유효한 데이터만 옮기고 블록을 지우는 가비지 컬렉션이 SSD 컨트롤러의 핵심 업무가 되는 이유입니다.

읽기, 기준 전압과 비교하기

읽기는 선택한 워드 라인에 기준이 되는 읽기 전압을 걸고, 같은 스트링의 나머지 워드 라인에는 저장 상태와 관계없이 셀을 확실히 켜는 패스 전압을 겁니다. 선택한 셀의 문턱 전압이 기준보다 낮으면 셀이 켜져 스트링에 전류가 흐르고, 높으면 꺼져 전류가 흐르지 않죠.

비트 라인에 연결된 감지 회로는 이 전류가 흐르는지, 또는 미리 충전한 비트 라인 전압이 빠르게 떨어지는지를 보고 셀이 기준보다 위인지 아래인지 판단합니다. 결국 NAND의 읽기는 문턱 전압이 기준선의 어느 쪽에 있는가라는 예, 아니오 질문을 던지는 일이죠.

상태가 두 개라면 기준선 하나로 충분합니다. 상태가 많아지면 기준선을 여러 번 바꿔 가며 질문을 반복해야 하므로 읽기 시간이 늘어나죠. 실제 제품은 비트 배치를 영리하게 정해 페이지마다 필요한 기준선 수를 줄이지만, 셀 전체로 보면 상태 수가 늘수록 읽기 부담이 커지는 것은 피할 수 없습니다.

셀당 비트 수와 상태 수

셀 하나에 n비트를 담으려면 문턱 전압 상태가 2의 n제곱 개 필요합니다. SLC는 1비트에 2개, MLC는 2비트에 4개, TLC는 3비트에 8개, QLC는 4비트에 16개의 상태를 구분해야 하죠. 상태 사이를 가르는 기준선은 상태 수보다 하나 적어서 각각 1개, 3개, 7개, 15개가 됩니다.

문제는 문턱 전압을 움직일 수 있는 전체 폭이 셀 구조와 절연막의 한계로 크게 늘어나지 않는다는 점입니다. 같은 폭 안에 상태를 더 많이 넣으면 상태 사이의 여유가 줄어들고, 각 상태의 분포도 더 좁게 만들어야 하죠. 그래서 ISPP 계단은 더 잘게, 검증은 더 자주 해야 하므로 프로그램이 느려집니다.

여유가 좁으면 작은 변화에도 오류가 납니다. 시간이 지나며 전자가 조금 새거나, 이웃 셀을 프로그램할 때 전기적 간섭을 받거나, P/E 사이클로 절연막이 닳아 분포가 퍼지면 이웃 상태와 쉽게 겹치죠. 그래서 셀당 비트 수가 늘수록 견딜 수 있는 쓰기 횟수와 보관 기간의 여유가 줄어드는 경향이 있고, 더 강한 오류 정정이 필요해집니다.

흔히 QLC는 셀을 더 작게 만들어 용량을 늘린 것으로 생각하지만, 같은 셀에 더 많은 상태를 구분해 넣은 것입니다. 이득은 점점 줄어드는데, SLC에서 MLC로 가면 같은 셀 수로 용량이 2배가 되지만, MLC에서 TLC는 1.5배, TLC에서 QLC는 약 1.33배에 그치죠. 반면 구분해야 할 상태 수는 매번 두 배로 늘어납니다.

실제 SSD는 이 차이를 섞어서 씁니다. TLC나 QLC 제품도 일부 영역을 SLC처럼 한 비트만 담는 방식으로 운용해, 들어오는 데이터를 빠르게 받아 둔 뒤 나중에 여러 비트 셀로 옮겨 적는 SLC 캐시를 흔히 쓰죠. 내구성과 보관 수명의 구체적인 수치는 함께 읽으면 좋은 글에서 따로 다루었습니다.

SLC MLC TLC QLC 비교 표

구분SLCMLCTLCQLC
셀당 비트 수1234
문턱 전압 상태 수24816
상태를 가르는 기준선 수13715
이전 방식 대비 용량 증가기준2배1.5배약 1.33배
상태 사이 여유가장 넓음넓음좁음가장 좁음
쓰기·읽기 속도 경향가장 빠름빠름느림가장 느림
내구성 경향가장 높음높음낮음가장 낮음
주로 쓰이는 곳산업용, 캐시 영역고내구성 제품일반 소비자·데이터센터 SSD대용량, 읽기 위주 저장

핵심 정리

NAND 플래시 원리는 저장층에 가둔 전자로 문턱 전압을 바꾸고, 그 높이를 기준 전압과 비교해 읽는 것입니다. 프로그램은 FN 터널링과 ISPP로 페이지 단위로, 소거는 블록 단위로 이루어지며, 이 비대칭이 덮어쓰기 불가와 가비지 컬렉션 같은 시스템 특성을 만들죠.

SLC에서 QLC로 갈수록 한 컵에 그어야 할 눈금이 2개, 4개, 8개, 16개로 늘어나, 붓는 손은 느려지고 읽는 눈은 바빠지며 작은 흔들림에도 눈금이 헷갈립니다. 새로운 NAND 기술을 볼 때는 그것이 전체 전압 폭을 넓히려는 것인지, 분포를 좁히려는 것인지, 흐트러진 분포를 오류 정정으로 메우려는 것인지 나눠서 보면 이해가 빨라집니다.

면접 대비 질문

면접 대비 질문NAND 플래시가 페이지 단위로 쓰고 블록 단위로 지우는 이유를 설명하고, 이것이 SSD 동작에 어떤 영향을 주는지 말해 보세요.

[답변 포인트] 프로그램은 선택한 워드 라인에 높은 전압을 걸어 그 페이지의 셀에만 FN 터널링을 일으킬 수 있지만, 소거는 블록이 공유하는 웰이나 채널 쪽에 높은 전압을 걸어야 해서 블록 전체가 함께 지워진다는 구조적 이유를 먼저 설명합니다. 그 결과 제자리 덮어쓰기가 불가능해 새 데이터는 빈 페이지에 쓰고 옛 페이지는 무효 처리하며, 컨트롤러가 논리 주소와 물리 주소를 연결하는 매핑과 가비지 컬렉션을 맡는다고 연결합니다. 가비지 컬렉션 중 유효 데이터를 옮기며 생기는 추가 쓰기가 성능과 수명에 영향을 주므로, 웨어 레벨링과 여유 공간 확보로 이를 관리한다는 점을 덧붙이면 좋습니다.