이 글에서는 매니지드 NAND 플래시 메모리의 역사를 간략하게 되짚어보고 최근 고성능 SD 카드 및 e.MMC 장비의 설계 시 고려하여야 하는 사항에 대해 알아보고자 한다.

플래시 메모리의 간략한 역사
플래시 메모리는 1980년대 말, EPROM의 대안으로 처음 제품화 되었다. 플래시 메모리는 시스템 내에서 데이터의 삭제 및 재프로그래밍이 가능하다. 또한 EPROM에 비해 집적도가 높으며, 비용은 낮다는 장점이 있다. 초창기 플래시 메모리에서 가장 흔히 나타났던 타입이 NOR 플래시로, 이는 어떠한 주소로 접속해도 랜덤 읽기 및 쓰기 기능을 지원했다. 

NAND의 개발로 좀 더 높은 집적도의 어레이가 개발되며 비용이 절감되었지만, 한 번에 한 페이지만 접근이 가능했다. 이것은 스토리지 용도로서는 이상적인 특성을 충족시키지만, 코드를 한번에 한 페이지씩RAM에 로드한 다음 CPU로 실행하기 때문에 직접 코드를 실행하는 경우에는 효율성이 떨어진다. NAND 플래시 메모리는 오래지 않아 고밀도 솔리드 스테이트 스토리지(SSD)의 업계 표준으로 자리잡게 된다.

NAND 플래시 메모리의 특성 상 프로그래밍(또는 쓰기) 작업을 실시하기 전, 메모리를 한 번에 한 블록씩 지워야 한다. 이것은 호스트가 데이터를 블록으로 관리하여야 한다는 것을 의미하며, 이러한 블록을 이리저리 움직여 필요 시 공간을 확보해야 한다는 것을 의미한다. 

플래시 메모리 블록은 쓰기와 읽기를 반복하는 과정에서 마모(wear)가 일어나게 되며, 결과적으로 더 이상 안심하고 데이터를 저장할 수 없게 된다. 플래시 메모리 파일 시스템은 쓰기와 지우기 동작을 관리하기 위해 개발 되었으며 웨어 레벨링(wear leveling), 에러 수정 코드 (error-correcting code, ECC), 배드 블록 관리 (bad block management) 같은 기술을 이용해 메모리의 수명을 연장 시킬 수 있게 되었다.

왜 매니지드 NAND인가?
만일 일반 NAND(raw NAND) 메모리를 사용하게 되면 호스트 콘트롤러가 직접 ECC 및 기타 플래시 메모리 관리 기능을 관리해야 한다. SD 카드, e.MMC와 같은 메모리 디바이스들은 이런 기능들을 자체적으로 지원한다. 

따라서 메모리를 기존의 전통적인 저장 장치처럼 사용하는 것이 가능한 것이다. 장비의 내부에는 소형 컨트롤러, 펌웨어, 하나 이상의 NAND 다이(die)가 포함되어 있다. 호스트(SoC- 시스템온칩) 콘트롤러는 SD 또는 e.MMC 버스에 대한 인터페이스, 카드 특성에 최적화 된 파일 시스템 및 드라이버만 필요로 한다.

NAND메모리의 집적도는 높아지고 셀의 크기는 점차 줄어들게 되면서 점점 더 고성능의 ECC 및 관리 기술이 요구되었다. 대부분의 SoC 설계자들에게 NAND의 관리 부하를 메모리에 결합된 컨트롤러에 떠넘겨 버리는 일이 점점 더 간편해 졌다. SD 카드는 GHz 대의 코어를 여러 대 가동하는 주OS 및 애플리케이션에 대응하기에는 성능이 미진해 e.MMC 인터페이스가 보드 상 관리 NAND와의 인터페이싱을 위한 JEDEC 표준으로 지정되었다. 최근 e.MMC 5.0 인터페이스의 구동 속도는 400MB/sec에 달한다. 

SD 및 e.MMC 사용 시의 유의점
인터페이스의 표준화는 이루어졌으나 서로 다른 매니지드 메모리 디바이스 간에는 아직도 내부적인 운영 상에서 차이점이 존재한다. 또한 호스트 역시 이러한 차이점을 고려해 시스템의 성능 및 수명을 최적화 할 필요성이 제기된다.  

성능
사용자의 입장에서 이들 기기 간에 가장 먼저 와 닿는 차이점은 바로 성능, 그리고 마모 수명에서의 차이가 될 것이다. 이들 기기 내에서 사용될 수 있는 NAND 플래시 메모리의 형식은 여러 가지가 존재한다. 예를 들어 셀 플래시 메모리 당 2-bit(MLC) 방식이나, 3-bit(TLC) 방식을 사용할 수가 있다. 

SLC 영역 및 캐시를 통해설정이 가능한 기기도 다수가 존재하며, 다수의 메모리 장비, 또는 메모리 '플레인(planes)'을 병렬적으로 접근해 좀 더 높은 성능을 구현하는 것도 가능하다. 읽기 및 쓰기 처리 지연 시간은 기기마다 차이가 존재할 것이며 호스트 측면에서는 이를 고려하여야 한다(예를 들어 만일 연속된 데이터 기록하고자 한다면, 호스트쪽RAM 에 충분한 크기의 버퍼를 확보하여 매니지드 NAND 기기에서 발생 가능한 최악의 쓰기 처리 지연에 대비하여야 한다). 

SD 카드의 경우, 속도 등급(Speed Class)은 SDA에서 정의한 쓰기 패턴을 기준으로 최소 지속 쓰기 속도를 의미하는 것이다.(SDA 멤버를 대상으로, SD 사양서에서 이러한 쓰기 패턴에 대한 좀 더 자세한 설명을 제공하고 있다). 

만일 쓰기 패턴이 SDA 사양과 상당한 차이를 보이는 경우, 성능에 있어서도 눈에 띄는 수준의 차이가 발생할 것이다. 최대 쓰기 속도는 또한 SD 카드 및 e.MMC 기기의 데이터 시트 상에서도 확인할 수가 있다. 그러나 이는 호스트 측 시스템 구성에 따라 차이가 있을 수 있다.

쓰기 가중치 및 쓰기 내구도(Write Amplification and Write Endurance)
또 다른 주요한 고려 사항은 쓰기 가중치(write amplification)이다. 호스트가 메모리 기기 내에서 하나 혹은 그 이상의 페이지를 쓰는 경우 매니지드 NAND 내부적으로 메모리에 추가적으로 쓰기 작업이 일어난다(관리 오버헤드). 페이지 경계를 따라 정렬된 대규모의 순차적 쓰기 작업은 통상적으로 최소한의 가중치만 발생을 시킨다(잘 디자인된 시스템의 경우, 이러한 가중치는 최대 1.1을 넘지 않는다). 

소규모의 랜덤 쓰기 작업에서는 가장 큰 규모로 가중치가 발생하는 것이 일반적이다(설계가 제대로 이루어지지 못한 경우, 가중치가 2 배를 넘는다). 이는 메모리 기기의 수명과 관련하여 매우 중요한 고려 사항이 된다. 아래의 예시를 살펴보자.

사용자의 쓰기 로그파일의 확보를 통해서 특정 기기의 쓰기 가중치를 파악하고 이를 통해 제품의 수명을 예상 수 있다. 경우에 따라서는 TLC 제품이라도 설계상 수요에 충분히 대응할 수 있는 경우가 있다. 따라서 이를 통해 비용 절감에 기여할 수가 있다. 

SLC 캐싱 및 기타 관리 기법으로 인하여 업체들은 신규 기기의 평가 시 순수한 사이클 숫자에서 테라바이트 쓰기 (TBW)로 평가의 기준을 바꾸고 있다. 이것은 기기의 수명을 실질적으로 나타내 준다는 장점이 있다. 

읽기 내구도
메모리 셀 간의 거리가 가까워짐에 따라 하나의 셀로부터 데이터를 읽어 들일 때 이로 인해 인접한 셀에 영향이 발생하기도 한다. 만일 동일한 셀에서 데이터를 여러 번 반복 읽기를 하여 주변 셀들이 더 이상 읽기가 불가능한 지경이 되어 버린다면, 이로 인해 UECC(uncorrectable ECC)가 발생하게 된다. 

이러한 사태가 중요한 고려 사항이 되지 않은 애플리케이션도 많다. 왜냐하면 쓰기 작업 시 웨어 레벨링(wear leveling)이 발생하게 되며 이를 통해 가장 적게 사용되는 데이터가 메모리 내의 다른 잘 사용되지 않는 장소에 다시 쓰여지기 때문에 셀을 리프레시하게 된다. 

그러나 데이터를 기기에 쓰는 빈도가 극히 낮지만 동일한 영역으로부터 읽기가 반복적으로 일어나는 경우 호스트 측에 리프레시 기술이 도입되어야 할 수가 있다. 그래야 읽기 내구 한도에 도달하는 사태를 방지할 수 있기 때문이다. 

만일 이러한 문제가 염려가 될 경우 메모리 업체 측의 애플리케이션 엔지니어링 팀과 접근 패턴을 논의하여 이러한 현상을 좀 더 분명하게 이해하여야 한다. 가장 간단한 리프레시 기법은 단순히 메모리를 정기적으로 순환해 가며, 매 페이지를 읽고, 다시 쓰는 작업을 반복하는 것이다. 

데이터 보존 (data retention)
데이터의 보존 연한은 온도 및 메모리 기기의 사이클 수명에 따라 달라지게 된다. JEDEC 표준은 플레쉬 메모리(일반적으로 쓰기 지우기 동작이 정의된 수명의 10% 이내만 발생한 메모리)에 대해 55도에서 10년으로 데이터 보존 연한을 정하고 있다. 

데이터 보존성은 온도와 선형의 관계를 구성하지는 않는다. 데이터의 보존성이 고려의 대상이 되는지를 파악하기 위한 첫 번째 단계는 해당 제품에서 발생할 수 있는 최악의 일일 온도 조건을 상정하는 것이다. 이것이 일단 확보되면, 메모리 업체가 고객을 도와 기대 수명을 산출할 수 있도록 해 준다. 데이터 보존 기간은 '데이터를 리프레시' 하는 것으로 쉽게 늘일 수 있다. 즉 동일한 데이터를 다른 메모리 위치에 다시 쓰면 된다.

그리고 경우에 따라서는 호스트 측에서 이러한 작업을 정기적으로 진행하는 것이 도움이 될 수도 있다(여기서 다시 한 번, 기기에 데이터를 쓰는 양이 일정 수준을 넘게 되면 표준 웨어 레벨링 기능이 자동으로 이러한 불균형을 해소해 준다. 따라서 가장 큰 문제가 되는 환경은 쓰기의 양이 많이 발생하지 않는 환경이 된다).  

고 신뢰도 애플리케이션
대부분의 표준 애플리케이션에서는 UECC율이 1/1x10^15(읽기) 정도면 무난하다. 손실이 발생하는 데이터의 종류에 따라 호스트가 데이터를 복구(리부트) 및 리로드하는 것이 가능하다. 이 보다 한 단계 더 높은 수준의 보호 기능을 구현하기 위해 저널 파일 시스템(journalled file system)을 사용하기도 한다. 

일반적으로 중요도가 가장 높은 데이터는 내부 플래시 메모리 관리 테이블, 부트 파티션, 그리고 호스트 OS 커널 등이 있다. 메모리 업체들은 내부 메모리 관리 테이블을 백업하여 UECC 읽기 발생 시 이를 복구할 수가 있도록 하고 있다.

추가적으로, 부트 파티션은 SLC 구역 내에 위치하는 것이 일반적으로, 추가적인 신뢰성 확보를 위해 여분의 사본을 마련해 두고 있다. 호스트 OS 커널의 백업 카피 및 기타 중요 데이터는 추가 복구용으로 사용자 구역 내에 위치시키는 것이 가능하다. 이것은 통상적으로 OS 업체가 관리하는 영역이다.  

오퍼레이션 타임아웃(Operation Time Out)
플래시 메모리에 읽기 또는 쓰기 작업을 진행하는 도중, 오퍼레이션 타임아웃이 발생할 수가 있다. 이것은 호스트 드라이버가 읽기 및 쓰기 작업 시 권장 최대 시간제한을 준수하지 않아 발생하는 것이 일반적이다. 호스트 측에서는 에러 발생 시 이를 처리하기 위한 설계를 고려하여야 하며, 필요시에는 작업을 재시도 할 수 있도록 해야 한다.  

전력 문제 방지(Power Immunity)
호스트 측에서 고려하여야 하는 또 하나의 요소가 바로 플래시 메모리 작업 중 전원이 차단되는 경우이다. 다수의 e.MMC 및 일부 SD 카드 제품에서는 읽기/쓰기 작업 중 전원이 차단되더라도 어느 정도 회복력을 보인다. 

호스트는 읽기 작업 진행 중 전원이 차단되더라도 단순히 플래시 메모리 장치를 리셋하고 읽기를 다시 시작함으로써 복구가 가능하다(이마저도 안되면 재부팅 하면 된다). 쓰기 작업일 시, 만일 호스트 상에 데이터가 아직 존재한다면, 쓰기를 다시 시도할 수 있다. 

최악의 상황은 플래시 메모리의 내부 '정리(housekeeping)' 작업이 이루어지는 도중 전원이 차단되는 것이다. 만일 내부 관리 테이블 또는 포인터에 손상이 발생하는 경우 데이터의 복구가 불가능해 질 수가 있다. 전력 문제 방지 하드웨어 또는 소프트웨어를 통해 이러한 사태에 대하여 다양한 수준의 보호 조치를 제공할 수가 있다. 그러나 신뢰성을 높이는 가장 좋은 방법은 충분한 전력 공급 콘덴서나 빠른 전력 사이클링의 지양처럼 호스트 측의 전원 공급 장치 설계 시 신뢰도를 높이는 것이다. 

레이아웃 시 고려 사항
e.MMC 장치는 고속 버스 상에서 작동한다. 따라서 호스트 설계 시에는 신호 레이아웃에 대한 업체의 권고 사항을 준수하는 것이 필요하다. BGA 상의 라우팅은 NC 볼을 사용해 이루어질 수가 있다. 이를 통해 보드 레이어의 수 및 왜곡을 최소화 하는 것이 가능해 진다. 여기서 다시 한 번 호스트 설계자는 업체에 특정 레이아웃에 대한 가이드라인을 확인하여야 한다. 

SD 카드 역시 다양한 인터페이스 모드에서 작동이 가능하다. SDA에서는 이와 같은 인터페이스 설계 시의 권고안을 제공하고 있으므로 이 역시 면밀한 검토가 필요하다. 특히 이는 고속의 UHS-104 버스나 UHS -II 버스를 사용하는 경우에는 더욱 중요하다. 

프로그래밍
e.MMC 장치는 대다수가 서피스 마운트(surface mount, SMT) 전에 이미 프로그래밍이 되어 있다. 그러나 NAND가 기하학적 축소를 겪게 되면서 기기의 사전 프로그래밍이 어떻게 되어 있는 가에 대해 면밀한 검토가 필요할 수가 있으며 경우에 따라서 SMT 후 호스트 보드 상에서 데이터를 다운로드 하거나 점검하는 과정이 필요할 수가 있다.  여기서 다시 한 번, 플래시 메모리 업체와 상담하여 여러분이 사용하는 특정한 기기에 대한 권장 지침을 확인하여야 한다. 

요약
NAND 플래시 메모리는 복잡한 기술이며 장치의 크기가 축소됨에 따라 점점 더 복잡해지고 있어 복잡한 플래시 메모리 관리 기법이 태생적으로 요구된다. 최신 고성능 SD 카드나 e.MMC 장비를 설계할 때 이 글에서 제시한 필수 고려사항을 적절히 반영하게 되면 제품의 수명과 성능의 최적화에 도움이 될 수 있다. 

 


자료제공: 샌디스크 (www.sandisk.com)

이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지