초기 SSD 에서는 SLC 방식의 낸드 플래시 메모리(이하 SLC)를 사용하였고, 요즘은 주로 MLC 방식의 낸드 플래시 메모리(이하 MLC)를 사용하고 있습니다. 하지만 최근엔 점차 SSD 에서도 TLC 방식의 낸드 플래시 메모리(이하 TLC)를 사용하는 경우도 하나 둘 늘어나고 있는 상황입니다. 그런데 SSD 에서 TLC 를 사용하는 경우엔 꽤 많은 논란을 일으키게 됩니다. 특히나 작년 삼성에서 새롭게 출시한 SSD 인 840 Series 에서 TLC 를 사용해 한참 논란이 되었죠.
논란의 핵심은 "과연 SSD 에서 TLC 를 사용해도 수명과 신뢰성에 아무런 문제가 없는가?" 입니다. 그렇다면 무엇 때문에 TLC 를 사용한 것이 수명과 신뢰성 논란을 불러 일으키는 것일까요? 아니 SLC, MLC, TLC 는 어떻게 다를까요? 그보다도 도대체 낸드 플래시 메모리란 무엇일까요?
그래서 이번 글에서는 SSD 에서 사용하는 낸드 플래시 메모리의 간단한 구조와 특성, 그리고 이러한 낸드 플래시 메모리의 종류인 SLC, MLC, TLC 에 대해서 간략하게 알아보도록 하겠습니다.
낸드 플래시 메모리(NAND Flash Memory)의 구조와 특성
1. 플래시 메모리 셀의 데이터 저장 구조
아래는 플래시 메모리에서 데이터를 저장하는 최소 단위인 셀(Cell)을 구성하는 Floating-gate transistor(Floating-gate memory) 의 구조입니다. [제가 관련 전공자가 아니기 때문에 여러분들께 100% 완벽한 설명을 드리진 못하겠지만, 그래도 제가 이해한 것을 바탕으로 간략하게 하지만 열심히 설명해보도록 하겠습니다. 참고로 이미지는 전도 채널(N 채널)을 미리 제조하는 Depletion 형을 기준으로 하였습니다.]
Floating-gate transistor 의 구조
기본적으로 플래시 메모리의 셀은 위 그림의 플로팅 게이트(FG)에 전자를 채우고 비우는 방식으로 데이터를 기록하고 지우게 됩니다. 일단 먼저 알아두셔야 할 것은 이러한 플로팅 게이트는 절연체인 산화막으로 둘러 쌓여 있기 때문에 기본적으로 전자가 이동하지 못하고 닫힌 상태를 유지한다는 것입니다.
좀 더 편한 설명을 위해 위의 이미지를 아래와 같이 약간 변형해 보았습니다. 이 상태의 셀을 비어 있는(Empty) 셀이라고 합니다.
비어 있는 셀의 모습
이제 이 상태에서 컨트롤 게이트(CG)로 충분히 큰 전압을 인가해주면 그에 따라 발생하는 강력한 전기장의 영향으로 소스에서 드레인으로 이동하던 전자의 일부가 절연체인 산화막을 통과하여 플로팅 게이트로 끌려 들어오게 됩니다. 이를 터널 효과라고 하며, 이렇게 플로팅 게이트에 전자를 채우는 것을 터널 주입이라고 합니다. 이 후 컨트롤 게이트에 인가했던 전압을 끊으면 터널 효과는 사라지고, 결국 플로팅 게이트로 이동했던 전자들은 절연체인 산화막에 의해 플로팅 게이트 안에 갇히게 됩니다. 이 과정을 그림으로 표현하면 아래와 같습니다.
이것이 바로 플래시 메모리 셀의 쓰기(Write, Program) 작업에 해당합니다. 보신 것과 같이 플로팅 게이트 안으로 들어간 전자는 절연체인 산화막에 의해 갇히게 되고, 이러한 상태는 전기가 공급되지 않더라도 그대로 유지가 됩니다. 즉, 이러한 특성으로 플래시 메모리 셀은 비휘발성 저장 매체로써 사용될 수 있는 것이죠. 보통 이렇게 플로팅 게이트에 갇힌 전자는 셀의 방식에 따라 최소 5년에서 최대 10년까지 유지가 된다고 합니다.
이번엔 반대로 P 층에 충분히 큰 전압을 인가하면 해당 방향에서 발생한 전기장의 영향에 의해 역으로 플로팅 게이트에 갇혀 있던 전자들이 절연층인 산화막을 통과하여 밖으로 빠져 나가게 되고, 결론적으로 플로팅 게이트 안의 전자는 비워지게 됩니다. 이러한 과정을 터널 릴리즈라고 하며, 이를 간단하게 그림으로 표현하면 아래와 같습니다.
이것이 바로 플래시 메모리 셀의 지우기(Erase) 작업에 해당합니다. 이러한 지우기 작업을 거쳐 셀은 다시 원래대로 비어 있는(Empty) 상태로 되돌아가고, 다시 새로운 쓰기 작업을 진행할 수 있도록 준비가 되는 것이죠.
마지막으로 읽기(Read) 작업에 대해서 알아보도록 하겠습니다. 읽기 작업은 컨트롤 게이트에 터널 효과가 발생하지 않을 약한 전압을 걸어주고, 소스에서 드레인으로 전압을 걸어줘 전하를 이동시키는 작업으로 이루어집니다. 먼저 컨트롤 게이트에 약하지만 전압을 걸어줬죠? 그럼 컨트롤 게이트에서 발생하는 전기장의 영향으로 P 층의 정공(+)들이 밀려나게 되고, 이는 N 채널의 전도폭이 늘어나는 효과를 가져옵니다. 만약에 전기장의 세기가 더 크다면 더 많은 정공들이 밀려나고, 전기장의 세기가 약하다면 정공들이 덜 밀려나는 거죠. 즉, 컨트롤 게이트에서 발생한 전기장의 세기에 따라 N 채널의 전도폭이 결정되는 겁니다.
그런데 플로팅 게이트에 채워진 전자가 이러한 전기장에 간섭을 일으키게 됩니다. 플로팅 게이트에 더 많은 전자가 채워져 있다면 간섭도 그만큼 커지는 식이죠. 이러한 간섭의 영향으로 N 채널에 도달하는 전기장의 세기가 변하게 됩니다. 즉, 컨트롤 게이트에 동일한 전압을 걸었을 때 플로팅 게이트에 채워진 전자의 양에 따라 N 채널의 전도폭이 달라지는 겁니다.
결론적으로 읽기 작업을 수행할 때 플로팅 게이트에 채워진 전자의 양에 따라 N 채널의 전도폭이 변하게 되고, 이로 인해 소스에서 드레인으로 이동하는 전하량에(전류값에) 차이가 발생하게 됩니다. 이를 그림으로 간단하게 보면 아래와 같습니다.
즉, 위와 같은 상황에서 소스에서 드레인으로 이동하는 전류값을 분석하면, 플로팅 게이트에 채워진 전자의 양을 파악할 수 있는 거죠. [플로팅 게이트가 비워져 있는지 (얼마나) 채워져 있는지] 간단하게 (SLC 방식을 기준으로) 플로팅 게이트가 비워져 있으면 1, 채워져 있으면 0 과 같은 식으로[또는 그 반대로] 해당 셀에 기록된 데이터가 무엇인지 읽을 수 있는 겁니다.
정리하자면 플래시 메모리의 셀은 이렇게 터널 효과가 발생할 정도로 높은 전압을 인가하여 플로팅 게이트에 전자를 채우고 비우는 방식으로, 데이터를 기록하고 삭제합니다. 그리고 이렇게 기록된 데이터는 비트 라인을 통해(Source -> Drain) 플로팅 게이트의 전하량을 측정, 분석하는 방식으로 데이터를 읽습니다.
* 플로팅 게이트에 전자를 채워 넣으면 쓰기 작업 - Write
* 플로팅 게이트의 전자를 비우면 지우기 작업 - Erase
* 플로팅 게이트에 채워진 전자(전하량)을 측정하면 읽기 작업 - Read
* 플로팅 게이트의 전자를 비우면 지우기 작업 - Erase
* 플로팅 게이트에 채워진 전자(전하량)을 측정하면 읽기 작업 - Read
이것을 아주 쉽게 생각하려면 플로팅 게이트를 컵으로, 전자를 물로 바꿔 생각하시면 됩니다. 즉, 컵에 물을 따라서 채우면 쓰기 작업이 되는 것이고, 컵의 물을 버리면 지우기 작업이 되는 것이죠. 그리고 컵에 물이 채워져 있는지 아닌지를 눈으로 관찰하면 그게 읽기 작업이 되는 겁니다. 간단하죠? 이렇듯 복잡한 것 다 걷어 치우고 그 구조 자체만을 놓고 보면 플래시 메모리 셀은 매우 단순한 구조입니다.
플래시 메모리 셀의 구조는 컵에 물을 채우고 비우는 것과 같다.
참고로 이러한 셀의 쓰기, 지우기 구조로 인해서 플래시 메모리에서는 덮어쓰기(Overwrite) 작업을 진행할 수 없습니다. 이것도 간단하게 생각하시면 됩니다. 이미 채워져 있는 컵에 다시 물을 따르면 어떻게 될까요? 원래 의도했던 만큼의 물이 담기지 않겠죠? 이는 비정상적인 기록 작업이 되는 것입니다. 그래서 플래시 메모리는 반드시 셀을 비운 후에 다시 기록을 해야 하는 겁니다. (Erase → Write)
※ NOR Flash Memory 와 NAND Flash Memory
플래시 메모리에는 셀을 연결한 논리 구조에 따라 여러 가지 종류가 있습니다. 대표적으로 셀을 병렬 구조로 연결한 것이 NOR Flash Memory(노어 플래시 메모리)이고, 셀을 직렬 구조로 연결한 것이 바로 NAND Flash Memory(낸드 플래시 메모리) 입니다. 이러한 노어 플래시 메모리와 낸드 플래시 메모리는 전체적인 구조 등에서도 많은 차이가 있지만, 가장 큰 차이는 셀을 병렬로 연결하였으냐, 직렬로 연결하였느냐에 있습니다.
이 중에서 비교적 그 구조가 단순하여 고집적화에 알맞은 낸드 플래시 메모리가 SSD 와 USB 플래시 메모리와 같은 데이터 저장 용도로 사용되고 있습니다.
플래시 메모리에는 셀을 연결한 논리 구조에 따라 여러 가지 종류가 있습니다. 대표적으로 셀을 병렬 구조로 연결한 것이 NOR Flash Memory(노어 플래시 메모리)이고, 셀을 직렬 구조로 연결한 것이 바로 NAND Flash Memory(낸드 플래시 메모리) 입니다. 이러한 노어 플래시 메모리와 낸드 플래시 메모리는 전체적인 구조 등에서도 많은 차이가 있지만, 가장 큰 차이는 셀을 병렬로 연결하였으냐, 직렬로 연결하였느냐에 있습니다.
이 중에서 비교적 그 구조가 단순하여 고집적화에 알맞은 낸드 플래시 메모리가 SSD 와 USB 플래시 메모리와 같은 데이터 저장 용도로 사용되고 있습니다.
2. 직렬 구조의 낸드 플래시 메모리
SSD 나 CF, SD, USB 플래시 메모리와 같은 저장 매체에서 사용하는 플래시 메모리의 종류는 낸드 플래시 메모리입니다. 이러한 낸드 플래시 메모리는 위에서 이야기한 데이터를 저장하는 셀을 직렬 구조로 연결시킨 것입니다.
낸드 플래시 메모리
글에서 사용한 셀 이미지를 통해 보면 아래와 같은 거죠. [아래의 이미지는 단순히 구조의 이해를 위한 것으로 정확하지 않습니다.]
낸드 플래시 메모리
이렇게 셀을 직렬로 구성하여 운용하고, 이러한 셀들을 일정하게 그룹화한 것이(Page, Block) 바로 낸드 플래시 메모리입니다. [마찬가지로 아래의 이미지도 단순히 구조의 이해를 위한 겁니다.]
낸드 플래시 메모리의 구조 - 페이지와 블록
이렇듯 낸드 플래시 메모리는 구조적으로 셀들이 일정 단위 직렬로 연결되어 있고, 주소 라인이 없는 특성으로 라인에 맞춰 읽기 및 쓰기, 지우기 작업을 진행하게 됩니다. 결론적으로 낸드 플래시 메모리는 [읽기 - 페이지 단위], [쓰기 - 페이지 단위], [지우기 - 블록 단위]로만 작업을 할 수 있습니다.
* 읽기 - 페이지 단위로 작업
* 쓰기 - 페이지 단위로 작업
* 지우기 - 블록 단위로 작업
* 쓰기 - 페이지 단위로 작업
* 지우기 - 블록 단위로 작업
이렇게 낸드 플래시 메모리는 페이지 단위로 읽기 작업을 진행하기 때문에 단 1Byte 의 데이터를 읽고자 할 지라도 우선 해당 데이터가 포함된 페이지 전체를 통채로 읽은 후, 필요한 데이터를 따로 추출하는 방식을 사용합니다.
또한 이러한 작업 구조와 덮어쓰기가 불가능한 셀의 특성으로 인해 단 한 1Byte 의 데이터를 바꾸는 경우라도 먼저 블록 전체를 지우고, 해당 블록 내의 모든 페이지를 다시 써야만 하는 문제가 발생하게 됩니다. 이것은 특히나 문제가 되는데, SSD 에서는 이러한 문제를 해결하기 위해 플래시 변환 계층(FTL)을 통한 웨어 레벨링(Wear Leveling)을 통해 이 문제에 대처하게 됩니다. 이에 대한 내용은 아래의 글을 참고하시길 바랍니다.
낸드 플래시 메모리에 대해서는 이정도만 알면 될 것 같습니다. 그럼 이제 낸드 플래시 메모리에서 사용되는 셀의 종류에 대해서 알아보도록 하겠습니다.
낸드 플래시 메모리의 세 가지 방식 SLC, MLC, TLC 의 차이와 특성
1. SLC, MLC, TLC 의 차이
SSD 나 USB 플래시 메모리와 같이 낸드 플래시 메모리를 사용한 저장 매체를 보면 SLC, MLC, TLC 와 같은 단어를 접할 수 있습니다. 이는 플래시 메모리에서 데이터를 저장하는 최소 단위인 셀(Cell)에 데이터를 저장하는 방식에 따라 그 종류를 나눈 것입니다.
SLC [Single Level Cell] | 하나의 셀에 1bit(2) 의 정보를 저장 | 0, 1 |
---|---|---|
MLC [Multi Level Cell] | 하나의 셀에 2bit(4) 의 정보를 저장 | 00, 01, 10, 11 |
TLC [Triple Level Cell] | 하나의 셀에 3bit(8) 의 정보를 저장 | 000, 001, 010, 011, 100, 101, 110, 111 |
이러한 SLC, MLC, TLC 의 특징은 간단하게 아래와 같습니다.
SLC | MLC | TLC | |
---|---|---|---|
bpc (bit/cell) | 1 | 2 | 3 |
재기록 가능 횟수 (P/E Cycles) | 100,000 | 10,000 ~ 3,000 | 1,000 |
읽기 성능 (Read Time) | 25㎲ | 50㎲ | ~75㎲ |
쓰기 성능 (Write Time) | 200㎲~300㎲ | 600㎲~900㎲ | ~900㎲~1350㎲ |
지우기 성능 (Erase Time) | 1.5ms~2ms | 3ms | ~4.5ms |
참고로 미리 말하자면 플래시 메모리의 셀은 일정한 횟수만 재기록이 가능하며, 이후부터는 재기록이 불가능해지는 특성이 있습니다. 즉, 재기록 가능 횟수가 10,000 번이라면 해당 플래시 메모리 셀은 만 번의 재기록(Erase -> Write)이 가능하며, 이후부터는 더이상 재기록이 불가능하고 단순히 읽기만 가능하다는 의미입니다. 고로 플래시 메모리 셀의 수명은 영구적이지 않습니다. 사실 데이터 저장 용도로는 정말 처참한 수준이라고 할 수 있죠. [그래서 처음 플래시 메모리가 나왔을 때 그딴 쓰레기를 어디에 쓰냐는 말이 나왔다고 합니다. 근데 지금은...]
아무튼, 성능과 수명은 SLC 가 가장 좋고, 그 다음으로 MLC 와 TLC 순으로 점차 성능과 수명이 떨어지게 됩니다. 특히나 수명(재기록 가능 횟수)의 경우 TLC 는 SLC 의 1/100 수준에 불과합니다. 성능이 좀 떨어지는 것은 그렇다고 이해할 수 있을지라도 수명에 있어서 만큼은 TLC 는 SLC 에 비교하면 거의 쓰레기에 가까운 수준이죠.
그렇다면 왜 SLC 보다 성능이나 수명이 한참이나 떨어지는 MLC 나 TLC 가 사용될까요? 사실 별거 없습니다. 가격 때문에 그렇습니다. 먼저 알아두셔야 할 것이 SLC 와 MLC, TLC 를 구성하는 셀 자체에는 차이가 없다는 겁니다. 즉, 낸드 플래시 메모리를 구성하는 셀 자체는 셋 모두 같은 녀석이라는 거죠. 단지 그 셀을 어떻게 운용하느냐만 다릅니다. 아무튼, SLC 에는 1bit 의 정보만 저장이 가능하며, MLC 에는 2bit, TLC 에는 3bit 의 정보를 저장할 수 있습니다.
그래서 SLC, MLC, TLC 낸드 플래시 메모리가 서로 동일한 크기일 때, 이론적으로 SLC 에 비해 MLC 는 2 배의 용량을, TLC 는 3 배의 용량을 가집니다. 즉, 이는 같은 크기의 다이에서 셀의 방식에 따라 최대 3 배 더 큰 용량을 가지는 낸드 플래시 메모리의 제조가 가능하다는 이야기입니다. [반도체의 가격은 원자재인 반도체 다이의 크기에서 결정되죠.]
동일 크기일 때 SLC, MLC, TLC 방식에 따른 용량의 차이
이러한 차이로 용량당 가격은 TLC 가 가장 싸며, 그 다음으로 MLC, 마지막으로 SLC 가 가장 비쌀 수 밖에 없습니다. 가격 경쟁력에서 SLC 는 MLC 나 TLC 를 이길 수가 없습니다. 이게 요즘 SLC 보다 MLC 가 주로 사용되며, 저가형 저장 매체에서는 TLC 가 주로 사용되는 이유입니다. [페라리의 성능이 좋은 것은 모두가 알지만 우리는 주로 아방이를 타죠. 전 나이키를...]
그런데 사실 언뜻 잘 이해가 되지 않는 부분이 있습니다. SLC 나 MLC 나 TLC 나 낸드 플래시 메모리를 구성하는 셀 자체는 동일하다고 하였습니다. 즉, SLC 는 금가루 뿌린 고급 제품을 사용하고, TLC 는 쇳가루 뿌린 저급 제품을 사용해서 성능이나 수명에 차이가 나는 게 아니라, SLC 나 MLC 나 TLC 나 모두 다 똑같은 녀석인데 성능과 수명에서 차이가 난다는 겁니다. 아니 셋 모두 같은 녀석인데? 그럼 도대체 왜 SLC 와 MLC 와 TLC 의 성능이 특히나 수명이 그리도 심하게 차이가 나는 걸까요?
2. SLC, MLC, TLC 셀의 운용(데이터 저장) 방식
말했다시피 SLC 나 MLC 나 TLC 나 셀은 모두 동일합니다. 그런데 처음 단락에서 셀에 데이터를 저장하는 것을 설명할 때 컨트롤 게이트에 인가한 전압에 따라 플로팅 게이트로 주입되는 전자의 양이 달라진다고 했습니다. 그리고 플로팅 게이트에 채워진 전자의 양을 파악하는 것도 가능하다고 했죠.
컨트롤 게이트에 걸어주는 전압에 따라 플로팅 게이트로 주입되는 전자의 양에 차이가 난다.
MLC 와 TLC 는 바로 이 차이를 이용한 겁니다. 즉, SLC 는 단순히 플로팅 게이트에 전자를 채우고 비운다는 개념만을 가지고 셀을 운용했다면, MLC 와 TLC 는 "플로팅 게이트에 전자를 얼마만큼 채우면, 그건 어떤 데이터" 라는 개념으로 셀을 운용하는 것이죠.
SLC, MLC, TLC 셀의 운용(데이터 저장) 방식 차이
이를 매우 단순하게 설명하자면, 간단하게 다시 컵에 물을 따르는 것으로 비유를 하여 SLC 는 "컵에 물을 채워라~" "컵에 물을 비워라~" 이기 때문에 작업이 매우 단순하고 오류도 적습니다. 그래서 속도가 빠릅니다. 하지만 MLC 와 TLC 는 "컵에 물을 정확하게 얼마만큼 채워라" "컵에 물이 정확하게 얼마만큼 담겨 있는지 확인해라" 이기 때문에 보다 세밀하게 작업해야 하고, 그만큼 오류도 많기 때문에 속도가 느려지는 겁니다.
3. SLC, MLC, TLC 셀의 운용 방식에 따라 발생하는 차이의 이해
셀의 데이터 저장 방식은 "전자를 채우는 방식" 입니다. 그런데 문제는 현실 세계의 모든 것이 그러하듯 이 양이 항상 정확하게 딱 맞아 떨어지지는 않는다는 겁니다. 즉, 컨트롤 게이트에 10V 의 전압을 가하면 플로팅 게이트에 전자가 딱 100개 이렇게 정확하게 채워지는 게 아니라는 거죠. 쉽게 여러분에게 주전자를 주고 컵에 정확하게 물 1L 를 따르라면 그럴 수 있나요? 단 1ml 도 틀리지 않고? 현실에선 컵에 기준선인 눈금이 있다고 할지라도 여러 가지 상황적인 이유로 어쩔 수 없는 약간의 오차가 발생하게 되죠.
이는 셀에서도 마찬가지입니다. 그래서 실질적으로 컨트롤 게이트에 특정 전압을 걸어주면 플로팅 게이트에 "대충 범위를 두어 이 정도쯤?" 라는 식으로 전자가 채워지는 겁니다. 셀의 데이터를 읽는 것 역시 플로팅 게이트의 전하량이 "일정 범위 안에 있으면 어떤 데이터로 읽자" 와 같은 식으로 데이터를 읽는 것이고요. 즉, 데이터의 저장과 읽기에 오차 허용 범위를 두고 범위로 다루는 거죠. 이를 그림으로 표현하면 아래와 같은 식입니다. [그래프로 그리는 게 더 정확하지만 그냥 단순하게 그렸습니다. 제가 그래프를 못 그리거든요...]
컨트롤 게이트에 특정 전압을 걸었을 때 전자가 채워지는 범위의 모습
일단 설명을 시작하기 전 먼저 SLC 나 MLC, TLC 는 모두 전자를 담을 플로팅 게이트의 크기는 동일하고, 특정 전압에서 전자가 채워지는 양도 동일합니다. 그리고 잠시 위에서 플로팅 게이트에 전자를 채우고 비우고 하는 식의 작업은 잊어 버리시고, 셀에 데이터를 기록(쓰기, 지우기)하는 것을 다시 매우 단순하게 정의하면 해당 데이터에 맞게 설정된 전압을 인가해주는 방식으로 정의할 수 있습니다. 마지막으로 인가해줄 수 있는 전압에는 한계가 있습니다.
지금 이야기한 정의를 토대로 터널 효과가 발생하는 최소 전압을 1V, 컨트롤 게이트에 인가할 수 있는 한계 전압을 16V 로 놓고 그림을 그려보면 SLC 와 MLC, TLC 의 데이터 저장 구조는 각각 아래와 같은 식입니다. [이 때 전압은 임의로 설정한 것입니다.]
SLC - 0, 1
MLC - 00, 01, 10, 11
TLC - 000, 001, 010, 011, 100, 101, 110, 111
위의 그림을 가지고 두 가지를 동시에 설명하겠습니다.
먼저 하나의 그림 전체를 플로팅 게이트의 공간으로 생각을 해보시길 바랍니다. 그럼 SLC 는 각 데이터를 규정짓는 범위간의 간격이 굉장히 넓고, TLC 의 경우 이 간격이 매우 좁은 것을 알 수 있습니다. 사실 TLC 는 딱! 영역 간의 간섭이 일어나지 않을 정도로만 아슬아슬하게 셀을 운용하고 있다고 보시면 됩니다.
이러한 차이로 SLC 는 데이터를 저장하고 읽는데 오류가 적은 반면, MLC 나 TLC 는 데이터를 저장하고 읽는데 그 간격이 좁은 만큼 오류가 많이 발생하게 됩니다. 특히나 거의 한계까지 간격을 좁힌 TLC 는 굉장히 많은 오류가 발생하게 되죠. [001 데이터를 기록했는데 기록해놓고 보니까 이게 딱 001 이구나 하기에는 좀 뭔가 많이 애매하네?] 솔직하게 말해서 MLC 까지는 그렇다고 할 지라도 TLC 는 정말 데이터의 신뢰성이 개판이라고 할 수 있습니다.
그래서 낸드 플래시 메모리에서는 이러한 데이터의 오류를 검출하고 수정할 수 있도록 데이터와 함께 ECC 오류 검출 정보를 함께 저장합니다. 이렇게 함께 저장한 ECC 오류 검출 정보를 통해 일정 비트까지의 오류는 스스로 정정할 수 있고, 일정 비트 이상의 오류는 검출만 가능하죠. 만약 쓰기 작업 후 확인해보았는데 스스로 정정할 수 없는 오류가 발생했다면, 다시 써야죠. 간단하잖아요?
SLC 는 오류 발생 확률이 적기 때문에 이러한 ECC 코드도 매우 가볍게 구성되어 있습니다. 반면 MLC → TLC 로 갈 수록 오류 발생 빈도가 올라가기 때문에 그만큼 더 강력하고 복잡한 방식의 ECC 코드가 사용됩니다.
SLC → MLC → TLC 로 갈 수록 ECC 코드가 복잡해진다.
ECC 코드가 복잡하단 건 그 만큼 저장해야할 ECC 코드의 용량도 늘어나고, 또 해당 ECC 코드를 해석하기 위한 시간도 오래 걸린다는 이야기입니다. 즉, 전체적으로 데이터의 읽기, 쓰기, 지우기 작업이 느려진다는 거죠. 오류를 확인하기 위해 계산하는 것도 힘들어 죽겠는데 툭하면 오류가 발생하거든요. 이게 실질적으로 SLC → MLC → TLC 로 갈 수록 성능이 현저하게 떨어지게 되는 주된 원인입니다.
참고로 동일 크기일 때 이론적으로 TLC 가 SLC 보다 최대 3 배의 용량을 가진다고 했지만, 현실적으로는 TLC 는 SLC 보다 ECC 코드 영역으로 할당해야 할 용량이 굉장히 많아지기 때문에 딱 3 배 만큼의 용량은 나오지 않습니다. 스페어 영역 등도 생각을 해야 하고요. 뭐 물론 그렇다고 할 지라도 SLC 보다는 MLC 나 TLC 가 동일 저장 용량을 구성할 때 분명 좀 더 싸게 단가를 뽑아낼 수 있는 것은 분명한 사실입니다. 뭐 그냥 그렇다는 이야기입니다.
이번엔 처음에 이야기했던 데이터의 저장과 삭제 과정 중간에 발생하는 터널 효과에 대해서 다시 이야기를 해보죠. 셀에 데이터를 저장하고 지우면 전자가 절연체인 산화막을 통과하는 터널 효과가 발생한다고 하였습니다.
셀 쓰기와 지우기시 발생하는 터널 효과
그런데 여기에 한 가지 문제가 있는데 전자들이 산화막을 뛰어 넘는 과정에서 일부 전자들이 산화막에도 축적되는 현상이 발생합니다. 즉, 전자가 뛰어 넘다 말고 산화막에 눌러 앉아 버리는 거죠.
재기록 횟수가 늘어날 수록 점차 산화막에 축적되는 전자들
이게 왜 문제가 되냐면, 이렇게 산화막에 전자들이 축적되면 산화막의 저항값이 변하게 됩니다. 산화막의 저항값이 변한다는 것은 동일한 터널 효과(동일한 양의 전자 이동 효과)를 발생시키기 위해서 초기보다 더 높은 전압이 필요하다는 뜻이 됩니다. 즉, 셀에 쓰기와 지우기 작업이 반복될 수록 셀을 쓰고 지우기 위해 점점 보다 높은 전압을 인가해주어야 하는 것이죠. 그래서 플래시 메모리는 이 문제를 해결하기 위해 데이터를 기록하고 삭제하는데 인가하는 전압의 크기를 점차 조정하는 방식을 사용하게 됩니다.
그런데 작업에 인가해줄 수 있는 전압에는 한계가 있습니다. 우리의 컴퓨터는 피카츄가 아니거든요. 아무튼, 쓰기 및 지우기가 일정 횟수에 다다르면(P/E Cycles) 너무 커진 산화막의 저항값으로 인해 더이상 원하는 터널 효과를 발생시킬 수 없게 됩니다. 즉, 셀에 더이상 쓰기 및 지우기 작업을 수행할 수 없게 되는 거죠. 이것이 바로 플래시 메모리 셀의 수명입니다.
이 때 SLC 의 경우 각 상태별 전압끼리의 차이가 크고 여유 전압도 보다 넓게 구성할 수 있기 때문에 절연층인 산화막의 저항이 변하는 것에 그만큼 오랜 대응이 가능합니다. 하지만 MLC 나 TLC 의 경우 각 상태별 전압의 폭도 굉장히 좁고 여유 전압도 얼마 되지 않기 때문에 전압 조절을 통한 대응 방식이 금방 한계에 다다르게 됩니다.
셀 방식별 전압 여유 폭
이것이 바로 SLC 에서 MLC,TLC 로 갈수록 수명이 급격하게 줄어드는 원인입니다.
추가로 요즘은 플래시 메모리의 제조 공정이 굉장히 미세화되어 20nm 급의 제조 공정을 사용한 낸드 플래시 메모리가 주류를 이루고 있습니다. 공정이 미세화되었다는 것은 각 셀을 이루는 구성 요소들도 그만큼 작아졌다는 것을 의미하죠. 그리하여 동일 크기의 다이에서 보다 많은 용량을 가진 플래시 메모리의 제조가 가능해졌습니다. 가격이 싸진 거죠.
그런데 셀을 이루는 구성 요소들이 작아졌다는 것은 절연층인 산화막의 크기도 그만큼 작고 얇아졌다는 것이고, 이는 재기록시 산화막의 저항이 그만큼 더 빨리 변하게 된다는 것을 의미합니다. 그리하여 플래시 메모리는 제조 공정이 미세화될 수록 용량은 늘어나지만 반대급부로 수명은 줄어들게 됩니다. 일례로 MLC 방식의 경우 과거 50nm 제조 공정에서는 재기록 가능 횟수가 약 10,000 였던 것에 반해, 20nm 급인 요즘엔 약 3,000 회 정도로 급격히 떨어진 것을 볼 수 있습니다. [20nm 제조 공정에 TLC 라면?]
어떻게 낸드 플래시 메모리의 세 가지 방식인 SLC, MLC, TLC 가 무엇이고 왜 성능과 수명에서 차이가 발생하는지 잘 설명이 되었는지 모르겠네요. 그럼 글을 마무리하도록 하겠습니다.
마치며...
일부 SSD 들이 TLC 방식의 낸드 플래시 메모리를 사용한 것이 왜 수명과 신뢰성 논란을 일으키게 된 것인지 이해가 되셨나요?
참고로 반도체의 경우 같은 웨이퍼에서 생산된 제품이라고 할 지라도 웨이퍼의 중앙에서 생산된 제품이 가장 품질이 좋고, 가장자리로 갈 수록 품질이 나빠지게 되죠. [뽑기 운이 괜히 있는 게 아니죠. ^^;] 그래서 TLC 방식을 사용한 SSD 중 삼성 840 Series 는 중앙에서 생산된 고급 TLC 제품들을 선별하여 사용하였다고 합니다. 하지만 아무리 TLC 가 용을 써도 MLC 만큼의 성능과 수명은 나오지 않습니다. 그래서 삼성에서는 840 Pro Series 를 따로 고급 제품으로 출시한 것이고요.
아무튼, 많은 논란이 되고 있는 TLC 낸드 플래시이지만, SSD 와 같은 고용량의 제품에선 스페어 영역과 오버 프로비저닝 등으로 어느 정도 대응할 수 있는 여지가 충분히 있는 것도 사실입니다. 실제로 삼성 제품들만으로 놓고 보자면 과거 830 Series 나 현재 840 Pro Series 의 경우엔 따로 내부 오버 프로비저닝 공간이 마련되어 있지 않지만, 840 Series 의 경우 내부 오버 프로비저닝 공간이 마련된 것을 확인할 수 있습니다. 아무튼, 그래서 TLC 를 사용한 제품이라고 할 지라도 가정용이라면 그렇게까지 크게 걱정은 하지 않아도 될 듯 싶습니다. [제조사의 컨트롤러 제조 능력에 따라 다르겠지만] 그래서 시간이 흐를수록 점차 SSD 도 USB 플래시 메모리가 그랬던 것처럼 TLC 방식으로 시장이 재편될 것이라고 예상합니다.
마무리하자면 분명 SLC 가 좋긴 하지만 너무 비싸다는 게 문제입니다. 그리고 솔직하게 MLC 까지는 그렇다고 할지라도, TLC 는 아직까지는 그래도 좀 찝찝한 맛이 있긴 하고요. 그래도 이건 시간이 좀 흘러 관련 기술들이 더욱 축적 개선되면 지금의 인식도 충분히 해결이 될 것이라고 생각합니다. 과거 MLC 가 그랬던 것처럼요. 뭐 그냥 그렇다는 이야깁니다. 이번 글은 여기까지 하도록 하겠습니다. ^^
※ 참고로 글에서 플래시 메모리의 셀 설명은 Floating-gate transistor, 그 중에서도 N 채널을 미리 구성해놓는 Deplation 형을 기준으로 하였습니다. Deplation 외에도 Enhancement 종류도 있고, 플래시 메모리마다 사용하는 방식도 조금씩 다른 것으로 알고 있습니다. 아무튼, 처음에 말씀드린 것과 같이 제가 관련 전공자가 아니기 때문에 그림이나 설명은 큰 틀만을 가지고 매우 간단하게 설명하였습니다. 그래서 설명들이 100% 완벽하진 않고, 혹 오류가 있을 지도 모릅니다. 만약 관련 전공자께서 오류를 발견하신다면 꼭 알려주시길 바랍니다.
★ SSD 의 특성과 TRIM 기능의 이해, 자동 TRIM(트림) 기능의 작동 여부 확인과 설정 방법
★ SSD 의 이해 - 낸드 플래시 메모리의 구조와 SLC, MLC, TLC 방식의 차이
★ SSD 의 구조와 그에 따른 특성의 이해 - 플래시 변환 계층과 웨어 레벨링, 오버 프로비저닝
★ SSD 의 이해 - 낸드 플래시 메모리의 구조와 SLC, MLC, TLC 방식의 차이
★ SSD 의 구조와 그에 따른 특성의 이해 - 플래시 변환 계층과 웨어 레벨링, 오버 프로비저닝