SSD 컨트롤러의 웨어 레벨링(Wear Leveling)과 가비지 컬렉션(Garbage Collection)

초고속 저장장치 SSD의 수명과 성능을 좌우하는 컨트롤러의 핵심 기능을 알려드리겠습니다. 낸드 플래시 셀의 편마모를 방지하는 웨어 레벨링 원리부터 지우기 단위 불일치를 해결하여 쓰기 속도를 유지해 주는 가비지 컬렉션 실무 기술을 확인해 보세요.


낸드 플래시의 쓰기 수명 한계를 극복하는 동적 및 정적 웨어 레벨링(Wear Leveling)

컴퓨터의 부팅 속도와 대용량 파일 전송 능력을 획기적으로 혁신한 솔리드 스테이트 드라이브, 즉 에스에스디(SSD)의 내부를 열어보면 데이터를 실제로 담아두는 낸드 플래시 메모리 칩들과 함께 그 옆에서 이 모든 칩들을 총괄 지휘하는 손톱만 한 크기의 메인 반도체 칩이 자리 잡고 있습니다. 이 칩이 바로 인간의 두뇌와 같은 역할을 도맡아 수행하는 에스에스디 컨트롤러(Controller)입니다. 컨트롤러의 지능적인 관리 능력이 뒷받침되지 않는다면 낸드 플래시는 아무리 성능이 뛰어나더라도 불과 수개월 만에 고장이 나거나 속도가 바닥으로 뚝 떨어져 버릴 수밖에 없습니다. 그 이유는 낸드 플래시라는 저장 매체가 태생적으로 지니고 있는 가혹한 물리적 수명 한계 때문입니다.

낸드 플래시의 쓰기 수명 한계를 극복하는 동적 및 정적 웨어 레벨링(Wear Leveling)
낸드 플래시의 쓰기 수명 한계를 극복하는 동적 및 정적 웨어 레벨링(Wear Leveling)

낸드 플래시 메모리의 기본 단위인 셀에 데이터를 기록하고 지울 때, 전자들은 원자 단위로 극도로 얇은 산화막 절연체 장벽을 높은 전압의 힘으로 억지로 뚫고 드나들어야 합니다. 이 과정이 수천 번에서 수만 번 이상 반복되면 얇은 절연막 벽에 미세한 물리적 균열과 결함이 차곡차곡 쌓이면서 결국 절연벽이 헐거워져 전자를 가두어 둘 수 없는 상태로 망가지게 됩니다. 이처럼 낸드 플래시의 셀 하나하나가 버텨낼 수 있는 최대 쓰기와 지우기 횟수 한계를 프로그램 이레이즈 사이클, 줄여서 피이(P/E) 사이클이라고 부릅니다. 만약 특정 위치의 셀에만 집중적으로 데이터를 계속해서 쓰고 지우기를 반복한다면, 그 구역의 절연막만 먼저 닳아 구멍이 뚫려버리며 칩 전체의 수명이 순식간에 끝나버리는 치명적인 편마모 고장이 발생하게 됩니다. 이러한 국소 부위의 조기 사망을 막고 에스에스디의 수명을 수년 이상 튼튼하게 연장하기 위해 컨트롤러가 밤낮없이 가동하는 가장 핵심적인 기술이 바로 웨어 레벨링(Wear Leveling), 즉 마모도 평준화 기술입니다. 웨어 레벨링의 기본 철학은 칩 내부에 존재하는 수십억 개의 셀들이 골고루 똑같은 횟수만큼 닳도록 데이터를 빈 도화지 전체에 분산시켜 기록하는 것입니다. 웨어 레벨링은 작동 방식에 따라 크게 동적(Dynamic) 방식과 정적(Static) 방식으로 나뉩니다. 먼저 동적 웨어 레벨링은 사용자가 새로운 파일을 저장하거나 기존 파일을 수정할 때 작동합니다. 컴퓨터 운영체제가 새로운 데이터를 에스에스디로 보내오면, 컨트롤러는 플래시 변환 계층(FTL)이라는 내부 지도 장부를 펼쳐 들고 전체 플래시 블록 중에서 지금까지 데이터를 지우고 쓴 횟수가 가장 적은, 즉 가장 덜 닳아 있는 깨끗하고 신선한 블록을 우선적으로 찾아냅니다. 그리고 그 가장 건강한 블록에 새로운 데이터를 기록하도록 유도합니다. 이렇게 하면 새로 들어오는 쓰기 작업들이 특정 구역에만 몰리지 않고 마모도가 낮은 블록들로 골고루 돌아가며 분산되므로 전반적인 셀 마모 속도를 균일하게 맞추어 나갈 수 있습니다. 하지만 동적 방식만으로는 한계가 존재합니다. 컴퓨터 안에는 윈도우와 같은 운영체제 핵심 시스템 파일이나 한 번 깔아두고 내용이 바뀌지 않는 대용량 게임 설치 파일, 옛날 사진과 영상처럼 몇 년 동안 지워지지 않고 가만히 자리를 차지하고 있는 고정 데이터들이 많습니다. 이 고정 데이터들이 차지하고 있는 블록들은 데이터가 수정되지 않기 때문에 쓰기 횟수 카운트가 0에 가깝게 멈추어 있게 됩니다. 반면에 나머지 비어 있는 좁은 구역의 블록들만 남아서 사용자의 새로운 쓰기 작업들을 도맡아 처리하느라 훨씬 더 가파르게 닳아 없어지는 새로운 편마모 불균형이 생겨납니다. 이 사각지대마저 완벽하게 해소하기 위해 컨트롤러는 한 단계 더 고도화된 정적 웨어 레벨링을 수행합니다. 정적 웨어 레벨링은 컴퓨터가 쉬고 있는 유휴 시간에 컨트롤러가 스스로 낸드 플래시 전체를 스캔하여 오랫동안 가만히 잠자고 있던 고정 데이터 블록을 찾아냅니다. 그리고 그 고정 데이터를 마모 횟수가 이미 많이 누적되어 피로도가 높은 블록 쪽으로 일부러 자리를 옮겨 복사해 둡니다. 대신 원래 고정 데이터가 들어 있어 쓰기 횟수가 아주 적었던 가장 싱싱한 블록을 깨끗이 비워내어, 앞으로 새롭게 들어올 활발한 쓰기 작업을 받아낼 수 있는 새로운 작업 구역으로 전선에 투입합니다. 이러한 동적 및 정적 웨어 레벨링의 정교한 조합 덕분에 에스에스디 내부의 모든 셀들은 특정 구역만 먼저 파괴되는 일 없이, 수십억 개의 셀 전체가 오차 없이 평평하고 균일한 마모도를 유지하게 됩니다. 결과적으로 소비자가 에스에스디를 매일같이 가혹하게 사용하더라도 제조사가 보증하는 수십에서 수백 테라바이트에 달하는 총 쓰기 수명(TBW)을 단 1비트의 조기 결함도 없이 온전히 누릴 수 있게 만들어주는 가장 위대한 수명 연장 메커니즘입니다.


덮어쓰기 불가의 물리적 특성과 가비지 컬렉션(Garbage Collection)을 통한 여유 공간 확보

에스에스디 컨트롤러가 수행해야 하는 두 번째이자 일상적인 성능 유지에 가장 결정적인 핵심 임무는 바로 쓰레기 데이터를 청소하여 깨끗한 빈 공간을 미리미리 만들어두는 가비지 컬렉션(Garbage Collection) 동작입니다. 하드디스크 드라이브(HDD)와 같은 과거의 자기 기억장치는 자석의 극성을 바꾸기만 하면 기존에 데이터가 적혀 있던 자리 위에 새로운 데이터를 곧바로 덮어쓰는 오버라이트(Overwrite) 동작이 자유자재로 가능했습니다. 하지만 반도체 낸드 플래시 메모리는 물리적인 구조상 기존 데이터 위에 새로운 데이터를 곧바로 덧칠하듯 덮어쓰는 것이 완전히 불가능하다는 아주 까다로운 태생적 제약을 안고 있습니다. 낸드 플래시의 데이터 입출력 단위를 살펴보면 문제는 더욱 복잡해집니다. 낸드 플래시는 데이터를 읽고 쓰는 최소 단위인 페이지(Page)와, 데이터를 지우는 최소 단위인 블록(Block)의 크기가 완전히 다릅니다. 통상 1개의 블록 안에는 수십 개에서 수백 개에 달하는 페이지들이 묶여 있습니다. 즉 데이터를 쓸 때는 페이지 단위인 수 킬로바이트 단위로 작게 쪼개어 쓸 수 있지만, 한 번 기록된 데이터를 지울 때는 개별 페이지만 쏙 골라서 지울 수 없고 수 메가바이트 크기에 달하는 거대한 블록 전체를 통째로 지워야만 하는 구조적 불일치가 존재합니다.

덮어쓰기 불가의 물리적 특성과 가비지 컬렉션(Garbage Collection)을 통한 여유 공간 확보
덮어쓰기 불가의 물리적 특성과 가비지 컬렉션(Garbage Collection)을 통한 여유 공간 확보

사용자가 문서를 수정하거나 파일을 삭제할 때, 낸드 플래시는 기존 페이지에 있던 옛날 데이터를 그 자리에서 지우지 못합니다. 컨트롤러는 기존 데이터가 들어 있던 페이지에 그저 이 데이터는 더 이상 쓰지 않는 쓸모없는 쓰레기라는 의미로 무효(Invalid) 마크 깃발만 살짝 꽂아둡니다. 그리고 수정된 새로운 데이터는 완전히 비어 있는 엉뚱한 새로운 유효(Valid) 페이지를 찾아 그곳에 새롭게 기록합니다. 이러한 작업이 매일 수없이 반복되다 보면 낸드 플래시의 블록들마다 진짜 살아있는 유효 데이터 페이지와 이미 버려진 무효 쓰레기 페이지들이 마치 깨진 도자기 조각처럼 여기저기 흉측하게 뒤섞인 채로 가득 차게 됩니다. 이 상태가 지속되어 낸드 플래시에 완전히 비어 있는 깨끗한 빈 블록이 바닥나게 되면 치명적인 속도 저하 재앙이 들이닥칩니다. 사용자가 새로운 동영상을 다운로드하려 할 때, 컨트롤러는 덮어쓸 수 있는 빈 페이지가 없기 때문에 쓰기 동작을 즉시 멈추어야 합니다. 그리고 쓰레기가 섞여 있는 블록을 골라내어 그 안의 유효한 데이터들을 임시 공간으로 대피시킨 뒤, 블록 전체를 0으로 깨끗이 밀어버리는 블록 지우기 작업을 수행하고 나서야 비로소 새로운 데이터를 쓸 수 있습니다. 데이터를 쓰려고 할 때마다 느려터진 블록 지우기 작업이 먼저 실행되어야 하므로, 에스에스디의 쓰기 속도가 정상 속도의 수십 분의 1 수준으로 곤두박질치며 컴퓨터가 뚝뚝 끊기는 극심한 프리징 현상이 발생하게 됩니다. 이러한 성능 병목을 사전에 완벽히 방어하기 위해 컨트롤러가 뒤편에서 쉼 없이 가동하는 청소 작업이 바로 가비지 컬렉션(Garbage Collection)입니다. 가비지 컬렉션의 동작 메커니즘은 매우 영리한 이사 정리 작업과 같습니다. 첫 번째로 컨트롤러는 무효 데이터가 가장 많이 쌓여 있어 청소 효율이 가장 높은 오염된 희생 블록들을 우선적으로 지목합니다. 두 번째로 그 희생 블록들 안에 아직 살아 숨 쉬고 있는 진짜 유효 데이터 페이지만을 골라내어, 완전히 비어 있는 새로운 프리 블록 쪽으로 조용히 복사하여 이사를 시킵니다. 세 번째로 진짜 데이터들의 이사가 안전하게 끝나면, 쓰레기 데이터만 덩그러니 남겨진 원래의 희생 블록 전체에 높은 전압을 걸어 통째로 시원하게 날려버리는 블록 소거(Erase)를 실행합니다. 이 청소 작업이 완료되는 순간, 무효 쓰레기들로 지저분하게 막혀 있던 블록은 언제든 새로운 데이터를 즉시 고속으로 쓸 수 있는 100퍼센트 순수한 빈 블록으로 완벽하게 환골탈태합니다. 컨트롤러는 컴퓨터가 작업을 멈춘 유휴 시간마다 이 가비지 컬렉션을 백그라운드에서 미리미리 수행해 둠으로써, 사용자가 대용량 파일을 갑자기 쏟아붓더라도 아무런 지체 없이 초고속으로 데이터를 받아낼 수 있는 깨끗한 빈 공간을 상시 확보해 둡니다. 여기에 더해 운영체제가 사용자가 삭제한 파일의 주소를 컨트롤러에게 실시간으로 알려주어 가비지 컬렉션의 청소 효율을 극대화해 주는 트림(TRIM) 명령어가 컨트롤러와 긴밀하게 연동됩니다. 하지만 가비지 컬렉션 과정에서 유효 데이터를 새로운 블록으로 옮겨 적는 추가적인 쓰기 작업이 발생하므로, 사용자가 실제로 기록한 데이터양보다 낸드 플래시에 실제로 쓰여진 데이터양이 더 많아지는 쓰기 증폭(WA, Write Amplification) 현상이 동반됩니다. 뛰어난 고성능 에스에스디 컨트롤러일수록 고도화된 지능형 알고리즘을 사용하여 불필요한 데이터 이동을 최소화하고 쓰기 증폭 비율을 1에 가깝게 낮춤으로써, 낸드 플래시의 수명 낭비를 최소화하면서도 365일 언제나 변함없는 초고속 읽기 쓰기 반응 속도를 유지해 냅니다. 에스에스디 컨트롤러는 셀의 고른 마모를 유도하는 웨어 레벨링을 통해 낸드 플래시의 물리적 수명 한계를 극복하고, 가비지 컬렉션을 통해 덮어쓰기 불가의 구조적 제약을 해결하여 일정한 초고속 성능을 유지해 주는 에스에스디의 절대적인 핵심 사령탑이며, 이러한 컨트롤러의 알고리즘 기술력을 이해하는 것은 고성능 저장장치의 신뢰성과 수명을 판별하는 가장 본질적이고 필수적인 공학 지식입니다.

댓글 쓰기

0 댓글