핵심 인사이트 (3줄 요약)
- SSD가 제 속도를 내려면 "어떤 데이터가 몇 번 물리 블록에 있는지"를 기록한 거대한 번역 장부(Mapping Table)를 SSD 칩 내부에 있는 **별도의 전용 DRAM(캐시)**에 올려두어야 한다.
- 단가를 낮추기 위해 이 DRAM 칩을 빼버린 디램리스(DRAM-less) SSD는 장부를 굼벵이 같은 낸드 플래시에서 직접 읽어야 하므로, 파일을 많이 쓸 때 컴퓨터가 멈추는 듯한 극심한 프리징(Freezing)을 유발한다.
- HMB (Host Memory Buffer) 기술은 이 문제를 해결하기 위해, SSD가 PCIe 버스를 타고 호스트 컴퓨터의 빵빵한 메인 메모리(시스템 RAM) 중 약 64MB 정도를 자신의 장부 보관용 캐시로 훔쳐(빌려) 쓰는 영리한 기술이다.
Ⅰ. DRAM-less SSD의 끔찍한 병목
SSD 안에는 낸드 플래시(데이터 창고)와 컨트롤러(두뇌) 외에도, 보통 1TB당 1GB 크기의 DRAM 칩이 꽂혀 있습니다.
이 DRAM의 용도는 데이터 보관이 아닙니다. 가상 주소 A = 물리 블록 105번이라는 **맵핑 테이블(번역 장부)**을 띄워두는 용도입니다. 장부를 1나노초 만에 찾을 수 있어야 디스크 속도가 빨라집니다.
디램리스(DRAM-less) SSD의 비극: 원가 절감을 위해 이 DRAM 칩을 떼버리면, 맵핑 테이블(장부)을 느려터진 낸드 플래시에 넣어둬야 합니다.
- CPU가 "데이터 가져와!" 하면,
- SSD 컨트롤러가 낸드 플래시를 뒤져서 장부를 찾고(지연 1),
- 장부에서 주소를 읽은 뒤에 다시 낸드 플래시로 가서 진짜 데이터를 퍼옵니다(지연 2).
읽기/쓰기를 할 때마다 디스크를 두 번씩 뒤져야 하므로(I/O Amplification), 용량이 꽉 차갈수록 옛날 하드디스크보다도 못한 끔찍한 속도가 나옵니다.
📢 섹션 요약 비유: 사서가 도서관 책 위치를 외우지 못해(DRAM 없음), 책을 찾을 때마다 창고 맨 끝에 있는 무거운 백과사전(낸드 플래시)을 힘겹게 펼쳐서 위치를 확인한 뒤에야 책을 가지러 가는 답답한 상황입니다.
Ⅱ. HMB의 마법: 호스트 램 빌려 쓰기
NVMe 1.2 규격부터 도입된 **HMB (Host Memory Buffer)**는 기가 막힌 꼼수입니다.
"내 칩 안에는 비싼 RAM이 없지만, 어차피 나랑 연결된 메인보드(호스트)에는 16GB, 32GB짜리 거대한 시스템 RAM이 남아돌잖아? 그걸 좀 빌려 쓰자!"
- 메모리 할당 요청: 윈도우 10/11이 켜질 때, 디램리스 SSD는 OS에게 "저기, 시스템 RAM 중에서 딱 64MB만 내 전용 캐시로 떼어주실 수 있나요?"라고 부탁(HMB Request)합니다.
- DMA 직통 연결: OS가 허락하고 RAM에 구역을 그어주면, SSD 컨트롤러는 PCIe 버스를 통해 그 64MB 공간에 자신의 맵핑 테이블(장부)을 쫙 깔아둡니다.
- 성능 폭발: 이제 SSD는 장부를 찾을 때 느린 낸드 플래시로 가지 않고, PCIe 버스를 타고 메인보드의 RAM에서 빛의 속도로 장부를 스캔합니다. 그 결과, 원가가 싼 디램리스 SSD임에도 불구하고 비싼 DRAM 탑재 SSD와 거의 맞먹는 속도를 내게 됩니다.
HMB 데이터 흐름 (ASCII)
┌────────── 컴퓨터 메인보드 ──────────┐
│ │
│ [ 시스템 RAM (16GB) ] │
│ ┌─────────────────────┐ │
│ │ HMB 구역 (64MB 할당) │ ◀──┐ │
│ │ (SSD의 맵핑 장부 보관)│ │ │
│ └─────────────────────┘ │ │
└─────────────────────────────┼───────┘
│ (PCIe 버스로 직통 DMA 접근)
┌──────── 디램리스 SSD ───────┼───────┐
│ │ │
│ [ 컨트롤러 ] ──────────────┘ │
│ │ │
│ ▼ │
│ [ 낸드 플래시 (느림) ] │
└─────────────────────────────────────┘
📢 섹션 요약 비유: 가난해서 자기 책상(DRAM)을 못 산 신입사원(디램리스 SSD)이, 옆에 있는 부장님의 으리으리한 책상(시스템 RAM) 귀퉁이를 살짝 빌려서 자기 수첩(장부)을 올려놓고 일을 엄청나게 빨리 처리하는 모습입니다.
Ⅲ. HMB의 한계
HMB는 완벽해 보이지만 물리적 거리를 극복할 수는 없습니다.
- SSD 기판에 직접 붙어있는 RAM보다는, PCIe 선을 타고 메인보드까지 가야 하므로 **미세한 지연(Latency)**이 더 발생합니다.
- 빌려 쓸 수 있는 용량도 보통 16MB ~ 64MB 정도로 한정되어 있어, 수 테라바이트급의 방대한 데이터를 쉴 새 없이 긁어모으는 최고급 작업(영상 편집, 대형 DB 서버)에서는 캐시가 금방 바닥나 결국 원래의 느린 속도로 추락하게 됩니다. (엔터프라이즈 서버에는 HMB를 절대 쓰지 않는 이유입니다.)