본문 바로가기
반도체

비휘발성 메모리의 SLC/MLC/TLC 동작

by 그니미니 2022. 10. 3.
반응형

 

<TLC 분포>

 

SLC/MLC/TLC

 

  Data가 Chip에 input 되면, 정보를 physical 셀에 저장하기 위하여 data를 data register에서 코딩 화한다. 코딩 시는 SLC/MLC/TLC에 따라 제각기 다른 코딩 방식이 적용되는데, 코딩되어 bit 묶음으로 변형된 data들은, 물리적인 주소가 지정되면, 해당 셀에 프로그램됨에 따라 SLC 용량에서 MLC는 2배로, TLC는 3배로 확장된다. Encoding 된 정보는 사전에 정해진 규칙에 따라 Floating Gate의 전자 충전 레벨이 정해지고, 프로그램 방식도 분포 형성의 복잡도로 인하여 제품별로 약간씩 다르게 적용된다. 셀 내에 프로그램된 data를 꺼낼 때는 data를 input 할 때와는 반대의 방향으로 진행한다. Data를 꺼댄다는 것은 SLC/MLC/TLC cell의 프로그램 상태를 읽어낸다는 것으로, 기준 전압 레벨 혹은 기준 전류량으로 판단한다. Data out 시에도 먼저 셀의 주소를 지정한 후, target 셀의 상태를 읽어내는데, read 한 전압/전류 레벨은 정해진 규칙에 따라 decoding 되어 필요한 data로 변환된다. 결국, 동일한 물리적 셀의 수이지만, input 시에는 n배 화 된 data가 encoding 되어 Floating Gate에 프로그램되었다가, output 시에는 decoding 방식에 따라서 다시 원래의 data로 복귀되어 출력된다. Floating Gate 내의 물리적인 level이 data로 원상복귀 된 후, chip 밖에서 기다리고 있는 host로 data가 전송된다.

  SLC는 셀 당 총 2개 레벨로서, 셀이 On인지 Off인지만을 구분하면 된다. 셀당 물리적인 셀의 density와 logic 한 셀의 density가 같은 SLC의 cell은, 물리적으로는 낸드 플래시 트랜지스터 1개를 의미하는 것이고, 셀 내의 data 실체는 Floating Gate 내에 전자가 충전되어 있는가 혹은 충전되어 있지 않은가의 차이를 뜻한다. Floating Gate의 물리적 상태는 직접적으로, data의 정보로 전환되며, 이를 분포로 나타내 보면 On 셀의 분포 혹은 Off 셀 분포로 구성된다. SLC의 동작을 이해하는 것은 MLC나 TLC에 비하면 쉽다. 왜냐하면, SLC에서는 physical 셀의 물리적인 현상과 logical 셀의 함수관계가 프로그램/지우기 동작에서 상호 1대1로 매칭된다. 즉, SLC 동작은 physical cell에 "0" 혹은 "1" 둘 중의 한 개의 상태를 넣어 구분하므로, Floating Gate 내에서 전자가 충전된 상태의 여부와 의도하는 data가 직접적으로 일치하게 된다. SLC에서는 먼저 해당하는 셀의 Floating Gate를 지운 상태로 둘 것인지 프로그램한 상태로 변환할 것인지를 결정한 다음, 프로그램해야 하는 셀만 골라서 주소를 입력하고, 1개의 레벨로 프로그램시키면, 나머지 셀은 지워진 상태이므로 결국 해당 page에 대한 전체 data가 완성된다.

  MLC의 physical 레벨의 옵션 개수는 4개로서, TLC의 제품화 방식과 유사하지만, SLC의 제품화 방식과는 다르다. 낸드 플래시가 출시된 초장기에 SLC로 낸드를 사용할 때는 MLC라는 제품은 불가능하다고 판단했다. 기술의 발전은 언제나 불가능하다는 한계를 뛰어넘으면서 발전해왔다. MLC는 SLC에서 한 단계 도약한 개념으로, 물리적인 셀의 density 대비 logic 한 셀의 density가 SLC의 방식에 비하여 2배가 되도록, 셀 내의 전자 충전 정도를 옵션 상태로 조절한 제품이다. MLC에서는 1개의 physical 셀이 2개의 logical bit을 포함한다. 기본 메커니즘은 MLC도 SLC와 같지만, MLC의 프로그램 경우, data를 어떻게 레벨을 구분해서 Floating Gate에 충전하여 충전된 상태가 SLC와 비교하면 2배의 data를 포함할 수 있도록 하느냐이고, 반대로 read인 경우 프로그램된 문턱 전압을 어떻게 구분하여, 2배로 save 된 data를 판독하느냐가 관건이다. 결론은 사전에 약속으로 정해 놓고 coding하고, 약속에 따라 decoding 해야 하는 것이다. Coding의 의미를 담아내어 분포를 만들 때, physically 정해지는 항목들은 분포 폭, 분포와 분포 사이 margin, fixed 분포 window 값 등이다. Logical density의 경우의 수는 프로그램된 문턱 전압 분포 레벨의 경우의 수와 같으므로, MLC인 경우 총 4개의 logical level이 필요하다.

  TLC에서는 7개가 되는 프로그램 분포로 인하여 분포와 연결된 고도의 다양한 통계적 기법이 요구된다. Floating Gate 내의 프로그램 상태는 mechanical 방식으로 측정 가능한 것이 아니므로 한정된 공간 속에 전자를 넣어보고 얼마나 충전되었나를, 전기적인 전압 혹은 전류를 이용하여 verification 해 봄으로써, 프로그램 진척도를 판단하는데, TLC는 프로그램 동작과 같이 read 동작에서도 7개의 프로그램 레벨을 구분해 내야 한다. 프로그램 시, Target에 미달되면, 프로그램 전읍을 올려서 반복적으로 프로그램을 진행한 후에, 연이어서 verification을 반복한다. 이런 방식으로 page 단위 기준일 경우 몇만 개 ~ 몇십만 개가 되는 셀을 다루어야 하므로, 통계를 이용하여 확률적으로 계산해낸 결과로 분포를 컨트롤할 수밖에 없다.

반응형

댓글