낸드 플래시 메모리는 1개의 메모리 셀에 여러 비트(bit)를 기록하는 멀티 레벨 셀 기술을 씁니다. 현재 상품화된 낸드 플래시 중 가장 많은 비트를 저장하는 기술은 1개의 메모리 셀에 4비트 데이터를 기록하는 QLC(quadruple level cell) 기술입니다. 이 기술을 채용한 제품의 양산은 올해 중반부터 시작됐습니다. 양산은 시작에 불과할 뿐, 아직 낸드 플래시 메모리의 주류 기술은 아닙니다.
현재 낸드 플래시 메모리의 주류 기술은 1개의 메모리 셀에 3비트 데이터를 저장하는 TLC(triple level cell) 기술입니다. 주 요 제품으론 메모리 셀의 적층 수가 64단인 3D 낸드 기술과 TLC를 결합해 1개의 다이에 512Gbit를 기록하는 대용량 플래시 메모리입니다. 이 기술 기반으로 만든 컷 다운 버전(실리콘 다이를 작게 줄인 버전)인 256Gbit 플래시 메모리도 주력 제품 중 하나입니다.
이러한 TLC 3D 낸드 플래시에서 QLC 3D 낸드 플래시로 전환은, 실리콘 다이 면적당 저장 밀도가 약 1.3배로 향상된다는 장점이 있습니다. 실리콘 다이 면적이 같다면 QLC 기술 도입만으로 저장 용량이 약 1.3배 늘어납니다. 실리콘 다이 면적은 생산 비용에 비례하므로, 제조 비용이 같다면 저장 용량이 1.3배인 플래시 메모리를 만들 수 있습니다.
실제 제품은 더 급진적입니다. 64단 3D 낸드 기술과 QLC 기술을 결합, 단일 다이에 1Tbit(1,024Gbit)을 저장하는 초 대용량 플래시 메모리를 인텔과 마이크론이 공동 개발해 실용화했습니다. 똑같은 64단 적층을 쓴 TLC 실리콘 다이에 비해 최대 저장 용량은 2배로 대폭 확대됐습니다. SSD, USB 메모리, UFS와 플래시 스토리지의 가격이 크게 인하될 것으로 기대됩니다.
물론 좋은 것만 있진 않습니다. 모든 기술에는 항상 장단점이 모두 있습니다. QLC 기술의 3D 낸드 플래시는 TLC 기술의 3D 낸드 플래시에 비해 쓰기 속도가 상당히 느리고, 읽기 속도는 조금 느려집니다. 재기록 횟수는 크게 줄어들고 데이터 보존 기간은 짧아집니다. 즉, 성능이 떨어집니다.
가격을 무기로 QLC SSD가 니어 라인/클라이언트 HDD를 잠식 https://gigglehd.com/gg/3801573 에서 언급한대로, QLC 방식의 3D 낸드 플래시를 내장하는 인텔 SSD 660p는 QLC 기술의 단점인 재기록 횟수 감소가 SSD 스펙에 상당한 악영향을 줍니다. 거의 같은 물리적 스펙을 지닌 TLC 3D 낸드 플래시를 쓰는 600p와 비교하면 660p는 재기록 횟수가 절반 이하로 떨어졌음을 알 수 있습니다.
SLC 기술의 낸드 플래시를 대용량 버퍼로 사용
성능 저하라는 단점을 줄이기 위해 QLC 낸드 플래시 스토리지에서 표준 도입할 것으로 보이는 기술이 SLC (single level cell) 기술의 낸드 플래시를 대용량 버퍼로 쓰는 겁니다.
SLC는 1개의 메모리 셀에 1비트 데이터를 저장합니다. DRAM/SRAM 등의 메모리와 다르게 낸드 플래시 메모리는 1개의 셀에 2비트 이상을 저장하는 기술이 보급되다보니, 이와 구별하기 위해 SLC라는 이름이 나중에 붙었습니다.
낸드 플래시 메모리의 저장 기술은 일반적으로 1개의 메모리 셀에 저장하는 비트 수가 증가하면 성능이 떨어집니다. 읽기/쓰기 속도도 느려집니다. 재기롯 횟수가 줄어들고 데이터 저장 기간이 짧아집니다. 그러니 성능만 놓고 보면 SLC가 거의 최강입니다. 가장 빠르고, 재기록 횟수도 많으며, 데이터 저장 기간도 가장 깁니다. 그러나 저장 용량은 작습니다. 앞서 소개한 QLC 기술의 1Tbit 플래시 메모리를 SLC로 바꾸면 저장 용량은 1/4, 256Gbit로 줄어듭니다.
SLC는 QLC로 만들 수 없지만, 그 반대는 어렵지 않음
낸드 플래시 메모리를 다른 방식의 멀티 레벨 셀로 실행하는 것 자체는 기술적으로 그리 어렵지 않습니다. 물론 SLC로 개발한 낸드 플래시 메모리를 TLC로 쓰기란 어렵습니다. 그러나 그 반대는 비교적 쉽습니다. 가장 간단한 방법은 주변 회로에서 저장 방식을 바꿀 수 있도록 구성하는 것입니다. 실제로 그런 낸드 플래시 메모리가 발표된 바 있습니다.
인텔과 마이크론이 공동 개발해 2013년 2월에 국제 학회 ISSCC에서 발표한 TLC 기술의 128Gbit 낸드 플래시가 여기에 해당됩니다. 20nm 세대의 평면형 낸드 플래시 메모리로, TLC 기술과 MLC(multi level cell, 2bit/셀) 기술, SLC 기술을 사용자가 입력한 명령에 따라 동적으로 전환합니다.
그 낸드 플래시의 성능이 TLC, MLC, SLC의 변경에 따라 어떻게 변화하는지도 공개했습니다. TLC/MLC/SLC 모드에서 삭제 시간은 3ms/2ms/2ms, 쓰기 시간은 2.3ms/1.4ms/0.45ms 읽기 시간은 90μs/90μs/55μs였습니다. 어느 경우건 SLC 모드의 성능이 가장 높고, 특히 쓰기 모드의 차이가 가장 크게 나타났음을 알 수 있습니다.
또 TLC/MLC/SLC 모드에서 쓰기 처리량(초당 데이터 량)은 7MB/11MB/36MB, 읽기 처리량(초당 데이터 량)은 182MB/182MB/297MB입니다. 쓰기 처리량은 TLC와 SLC가 5배 이상 차이납니다.
SLC 버퍼 기술의 진화와 그 세대
낸드 플래시 메모리 기술은 2D에서 3D로 전환하면서 TLC 기반 낸드 플래시 메모리의 성능이 향상됐습니다. 특히 낸드 플래시의 공통된 약점인 쓰기 성능이 향상해 SLC 버퍼 기술의 필요성은 평면형 기반보다 많이 떨어졌습니다. 하지만 QLC 기술의 낸드 플래시 메모리는 3D 낸드 기술보다 더 높은 성능 향상이 필요해졌습니다.
그래서 SLC 버퍼 기술을 도입해 쓰기 성능을 높이려 합니다. 다른 기술로는 오류 정정(ECC) 기술 강화가 있습니다. 제조 수율 향상과 장기 신뢰성의 저하를 막기 위해 필수적입니다. 그러나 오류 정정(ECC) 기술의 강화는 읽기 속도와 쓰기 속도가 떨어지는 문제점이 있습니다. ECC 기술의 문제점을 해결하기 위해서라도 SLC 버퍼 기술의 도입이 바람직합니다.
SLC 버퍼 기술은 크게 1세대와 2세대 기술이 존재합니다. 또 그 이전에 0세대라고도 부를 수 있는 원시적인 SLC 버퍼 기술이 개발됐습니다. 이런 기술의 주요 차이점은 SLC 버퍼 영역을 어디에 배치하는지, SLC 버퍼 영역의 저장 용량이 고정인지 가변인지에 따라 생깁니다. 0세대는 메모리 셀 어레이가 아닌 입출력 버퍼의 전체나 일부를 SLC 기술의 낸드 플래시 메모리로 쓰는 것으로, 저장 용량이 고정됐으며 그마저도 16~64KB로 매우 작습니다.
0세대 SLC 버퍼는 성능 향상보다는 DRAM 버퍼의 데이터 손실을 막는 의미가 강합니다. SSD를 비롯한 플래시 스토리지는 DRAM 컨트롤러를 외부에 넣어 버퍼로 쓰는 경우가 많습니다. DRAM 버퍼는 낸드 플래시보다 쓰기 속도가 훨씬 빠르지만, 갑작스레 전원이 끊기면 버퍼의 내용이 손실될 위험이 있습니다.
그 대책으로 DRAM 버퍼의 데이터를 낸드 플래시 메모리에 쓸 때까지 전원을 유지하기 위해 대용량 콘덴서를 탑재하는 방법을 실제로 사용 중입니다. 그러나 보드 구현과 장기 신뢰성이란 점에서 이 방법에는 문제가 있습니다. 우선 캐패시터를 넣어야 하니 그만큼 플래시 메모리가 들어갈 면적이 줄어들어, 스토리지의 용량을 늘리기 힘듭니다. 또 콘덴서는 전자 부품으로는 신뢰성이 다소 부족합니다.
따라서 콘덴서의 용량을 줄이기 위해 낸드 플래시 메모리의 입출력 버퍼를 SRAM 대신 SLC 기술의 낸드 플래시로 쓰는 방법이 나왔습니다. 평면형 대용량 낸드 플래시 메모리에서 실제로 사용되기도 했습니다.
QLC 낸드 플래시의 일부를 SLC 낸드 버퍼로 사용
1세대와 2세대 SLC 버퍼 기술은 QLC 낸드 플래시 메모리의 셀 어레이 일부를 SLC 낸드 플래시 메모리로 사용하는 겁니다. 1세대는 SLC 버퍼 저장 용량이 정해지고, 2세대는 SLC 버퍼의 저장 용량이 가변형이라는 차이가 있습니다. 모두 SLC 영역과 QLC를 메모리 셀 어레이에서 블럭 단위로 관리합니다.
1세대 SLC 버퍼 기술은 SLC 버퍼 저장 용량이 0세대보다 훨씬 크기 때문에 쓰기 성능이 대폭 향상됩니다. 또 대용량 SLC 버퍼럴 넣어 스토리지 컨트롤러 외부에 부착하는 DRAM 버퍼 메모리 용량을 줄이고, DRAM 버퍼 백업용 콘덴서를 줄일 수 있다는 장점도 있습니다.
1세대 SLC 버퍼 기술의 단점은 버퍼 용량을 얼마로 잡아야 할지를 정해야 하고, 사용자 데이터가 늘어나면서 버퍼와 충돌하면 어떻게 대처할지를 정해야 한다는 점입니다. 플래시 스토리지는 범용 제품이기에 어떤 가능성이던 염두에 둬야 합니다. 신품 수준이라면 높은 성능을 위해 버퍼 용량을 늘리는 게 좋습니다. 그러나 SLC 버퍼 용량이 크면 사용자가 쓸 수 있는 용량은 크게 줄어듭니다. 그러면 전체 스토리지에서 사용자 영역과 버퍼 영역이 충돌하게 됩니다. 그렇다고 SLC 버퍼를 안 쓰거나 용량을 줄이면 쓰기 성능이 떨어집니다.
IBM이 1세대 SLC 버퍼 기술을 검토한 사례. SLC 버퍼 용량의 변화에 따른 재기록 수명 개선을 나타냈습니다.
마이크론이 1세대 SLC 버퍼 기술(Intermediate Caching)을 검토한 사례. SLC 뿐만 아니라 MLC와 TLC도 QLC의 버퍼로 쓸 수 있습니다.
이에 비해 2세대 SLC 버퍼 기술은 스토리지 전체에서 차지하는 사용자 데이터의 비율을 항상 모니터링해 SLC 버퍼 용량을 동적으로 바꿉니다. 사용자 데이터가 낮다면 SLC 버퍼의 용량을 최대로 설정합니다. 사용자가 스토리지에 저장하는 데이터가 증가하면 SLC 버퍼 용량을 단계적으로 줄입니다. 사용자가 저장한 데이터가 줄어들면 SLC 메모리 용량을 단계적으로 늘립니다. 이렇게 하여 SLC 버퍼와 사용자 데이터의 충돌을 피하면서 스토리지 성능을 극대화합니다.
2세대 SLC 버퍼 기술에서 어려운 점은 사용자 데이터와 SLC 버퍼 용량의 비중을 어떻게 설정하냐는 것입니다. 우선 사용자 데이터와 SLC 버퍼의 용량이 스토리지 전체에서 얼마나 차지하는지를 결정해야 하며, 그 비율이 일정한지 아니면 사용자 데이터의 비율에 따라 변화하는지도 선택해야 합니다.
IBM이 2세대 SLC 버퍼 기술을 검토한 사례. SLC 버퍼 용량 변화에 의한 재기록 수명이 얼마나 늘어나는지를 검토했습니다.
마이크론의 2세대 SLC 버퍼 기술 사례.
QLC SSD는 2세대 SLC 버퍼를 채용
지금까지 SLC 버퍼를 QLC 낸드 플래시에 도입한 스토리지는 2가지가 있습니다. 하나는 인텔이 2018년 8월에 발표한 SSD 660p고, 다른 하나는 마이크론이 2018년 10월에 발표한 크루셜 P1입니다. 인텔 660p는 2세대 SLC 버퍼 기술을 사용했음이 밝혀졌습니다. 660p의 스펙을 보면 SLC 버퍼가 쓰기 성능 향상에 크게 기여하고 있음을 알 수 있습니다.
구체적인 성능을 봅시다. 기존의 TLC SSD인 600p와, QLC SSD인 660p의 읽기/쓰기 성능을 비교하면 읽기 성능은 크게 다르지 않지만, 쓰기 성능은 QLC SSD인 660p가 많이 앞섭니다. 순차 쓰기 처리량은 3배 이상, 랜덤 쓰기 IOPS는 2배가 살짝 안 됩니다.
인텔 QLC SSD 660p는 SLC 버퍼 용량을 어떻게 제어할까요? 사용자 데이터가 0일 경우 1TB 모델의 SLC 캐시 용량은 140GB입니다. 이를 QLC로 환산하면 4배, 즉 560GB에 달하는 메모리 셀 어레이를 SLC 버퍼에 할당됐다는 소리입니다. SSD의 저장 용량 1TB의 55%에 해당합니다. 전체 용량의 절반 이상이 버퍼라는 건 상당한 수준입니다.
660p는 사용자 데이터가 전체 SSD에서 차지하는 비중이 10%씩 늘어날 때마다 SLC 버퍼 용량을 조금씩 줄입니다. 사용자 데이터 비율이 75%를 넘어서면 SLC 버퍼 용량은 최소로 떨어집니다. SLC 버퍼가 0으로 떨어지진 않는 듯 합니다. 사용자 데이터가 SSD에서 차지하는 비중과 SLC 버퍼의 비중 변화를 보면 두 공간의 합이 전체의 80%가 되도록 항상 제어하고 있음을 알게 됩니다. 사용자 데이터 공간을 SSD 전체의 20% 정도 확보하며 SLC 버퍼를 관리합니다.
마이크론이 최근에 발표한 QLC SSD인 크루셜 P1을 봅시다. 여기에는 SLC 버퍼가 들어가지만 그 용량이 고정인지 가변인지는 아직 공개되지 않았습니다. 다만 SSD 전체의 44~55%로 큰 비중을 차지할 것으로 보입니다. 그리고 전체의 절반을 고정적으로 쓴다고 보기도 어렵습니다. 따라서 크루셜 P1의 버퍼 용량은 인텔과 마찬가지로 2세대 SLC를 쓸 가능성이 높습니다.
SLC 버퍼 기술을 도입하며 QLC SSD 성능은 향상됩니다. 그러나 그 제어는 매우 복잡하고 컨트롤러 부담은 큽니다. 오버 프로비저닝과 웨어 레벨링, 오류 정정 등은 SLC 버퍼 기술을 염두에 두고 조정과 변경하는 부분입니다. 낸드 플래시 메모리를 사용한 스토리지 개발은 지금도 진행 중이며, 컨트롤러의 설계는 갈수록 복잡해집니다. QLC 낸드 플래시의 등장은 컨트롤러 설계 작업을 더욱 복잡하고 어렵게 합니다. 그래도 그렇게 할 수밖에 없는 게 플래시 스토리지 개발의 어려운 점입니다.