CXL 메모리, 데이터센터의 메모리 구조를 바꾸는 방식

CXL 메모리, 데이터센터의 메모리 구조를 바꾸는 방식

사무실마다 개인 창고를 하나씩 주면, 어떤 팀의 창고는 넘쳐나고 어떤 팀의 창고는 텅 비어 있기 마련입니다. 빈 공간이 있어도 다른 팀이 쓸 수 없으니 회사 전체로는 공간을 낭비하는 셈이죠. 그래서 많은 건물이 공용 창고나 공용 주차장을 두고, 필요한 만큼 나눠 쓰게 합니다.

CXL 메모리는 데이터센터의 메모리에 이 공용 창고 개념을 들여오는 기술입니다. 지금까지 메모리는 각 서버의 CPU 옆 슬롯에 묶여 있었지만, CXL을 쓰면 슬롯 밖에서 용량을 늘리거나 여러 서버가 메모리를 나눠 쓸 수 있죠. 이 글에서는 CXL의 동작 원리와 확장, 풀링, 공유의 차이, 그리고 남은 숙제를 정리합니다.

서버마다 남고 모자라는 메모리

서버의 메모리 용량은 CPU에 달린 메모리 채널 수와 채널마다 꽂을 수 있는 모듈 수로 정해집니다. 그런데 CPU의 코어 수는 빠르게 늘어난 반면 메모리 채널은 그만큼 늘리기 어려워서, 코어 하나가 쓸 수 있는 메모리 용량과 대역폭이 상대적으로 줄어드는 문제가 생겼죠.

반대 문제도 있습니다. 데이터센터의 서버들은 가장 큰 작업을 기준으로 메모리를 넉넉히 달아 두지만, 실제로는 많은 서버에서 메모리 일부가 쓰이지 않은 채 남습니다. 이렇게 한 서버에 묶여 다른 곳에서 쓸 수 없는 메모리를 좌초 메모리(Stranded Memory)라고 부르죠. 메모리는 서버 원가에서 큰 비중을 차지하므로, 이 낭비는 곧 비용입니다.

CXL, PCIe 위에 얹은 일관성 있는 연결

CXL(Compute Express Link)은 CPU와 가속기, 메모리 장치를 연결하는 개방형 표준입니다. 새 물리 배선을 만드는 대신 이미 널리 쓰이는 PCIe의 물리 계층을 그대로 활용하는데, CXL 1.x와 2.0은 PCIe 5.0, CXL 3.x는 PCIe 6.0의 물리 계층을 씁니다.

PCIe와 다른 점은 캐시 일관성(Cache Coherency)을 지원한다는 데 있습니다. CPU와 장치가 같은 메모리 주소를 서로 다르게 기억하는 일이 없도록 하드웨어가 맞춰 주므로, 장치의 메모리를 CPU가 자기 메모리처럼 읽고 쓸 수 있죠.

세 가지 프로토콜

CXL은 하나의 링크 위에서 세 가지 프로토콜을 섞어 씁니다. CXL.io는 PCIe와 비슷하게 장치 탐색과 설정, 일반적인 데이터 전송을 맡고, CXL.cache는 장치가 CPU의 메모리를 일관성을 유지하며 캐시에 담아 쓰게 합니다. CXL.mem은 반대로 CPU가 장치에 달린 메모리를 일반 메모리처럼 읽고 쓰는 통로죠.

세 가지 장치 유형

어떤 프로토콜을 조합하느냐에 따라 장치는 세 유형으로 나뉩니다. 자체 메모리 없이 CPU 메모리를 쓰는 스마트 네트워크 카드 같은 장치가 타입 1, 자체 메모리를 갖춘 GPU나 FPGA 같은 가속기가 타입 2입니다. 메모리 확장에 쓰이는 것은 CXL.io와 CXL.mem만 쓰는 타입 3 장치죠.

CXL 메모리 확장, 슬롯 밖에서 늘리는 용량

가장 먼저 쓰이기 시작한 방식은 CXL 메모리 확장입니다. D램과 CXL 컨트롤러를 묶은 타입 3 장치를 PCIe 슬롯이나 전용 베이에 꽂으면, CPU는 메모리 채널 밖에서 용량을 더 얻게 되죠.

운영체제는 이 메모리를 보통 CPU가 없는 별도의 NUMA 노드로 인식합니다. 응용 프로그램을 고치지 않고도 일반 메모리처럼 쓸 수 있고, 메모리 채널과 별개의 길로 데이터가 오가므로 대역폭을 보태는 효과도 기대할 수 있습니다.

확장 장치 안의 D램은 반드시 CPU가 직접 지원하는 종류일 필요가 없다는 점도 흥미롭습니다. CXL 컨트롤러가 중간에서 변환해 주므로, 이전 세대 D램 모듈을 재활용하는 방안도 논의되죠.

풀링과 공유, 여러 서버가 메모리를 나눠 쓰다

CXL 2.0은 스위치를 도입해 여러 서버가 하나의 메모리 장치 묶음에 연결될 수 있게 했습니다. 이를 바탕으로 한 메모리 풀링(Memory Pooling)은 공용 창고처럼 필요한 서버에 필요한 만큼 메모리를 나눠 주는 방식이죠.

CXL 메모리 풀링의 동작 흐름

  1. 여러 서버를 CXL 스위치에 연결하고, 스위치 뒤에 메모리 장치 묶음을 둡니다.
  2. 관리 소프트웨어가 작업량을 보고 각 서버에 메모리 구역을 할당합니다.
  3. 각 서버는 할당받은 구역을 자기 메모리처럼 씁니다.
  4. 작업이 끝나면 구역을 반납하고, 다른 서버가 그 용량을 다시 할당받습니다.

풀링에서는 한 구역을 한 번에 한 서버만 씁니다. CXL 3.x는 여기서 한 걸음 더 나가, 여러 서버가 같은 메모리 구역을 동시에 일관성을 유지하며 함께 쓰는 메모리 공유(Memory Sharing)를 지원하죠. 여러 단계의 스위치로 더 큰 연결망, 곧 패브릭을 꾸리는 기능도 3.x에서 더해졌습니다.

흔히 풀링과 공유를 같은 말로 쓰지만 둘은 다릅니다. 풀링은 창고의 칸을 나눠 빌려주는 것이고, 공유는 한 칸을 여러 팀이 함께 열어 보는 것이라 데이터를 일관되게 맞추는 부담이 훨씬 크죠.

지연 시간과 소프트웨어라는 숙제

CXL 메모리에는 분명한 대가가 있습니다. 데이터가 CPU의 메모리 컨트롤러에서 바로 오지 않고 PCIe 링크와 CXL 컨트롤러, 때로는 스위치까지 거치므로 지연 시간이 로컬 DRAM보다 깁니다. 흔히 다른 CPU 소켓에 달린 메모리에 접근하는 것과 비슷한 수준으로 설명되고, 스위치를 거치면 더 늘어나죠.

그래서 CXL 메모리는 로컬 DRAM을 대체하기보다 그 아래 한 층을 더하는 메모리 계층화(Memory Tiering)로 쓰입니다. 자주 쓰는 데이터는 로컬 DRAM에, 덜 쓰는 데이터는 CXL 메모리에 두도록 운영체제나 응용 프로그램이 데이터를 옮겨야 하죠. CXL 3.2에는 자주 접근하는 페이지를 찾아내는 기능이 규격에 들어가는 등, 이 계층 관리를 돕는 방향으로 표준이 발전하고 있습니다.

풀링과 공유는 장애 처리와 보안도 숙제로 남깁니다. 메모리 장치 하나가 고장 나면 여러 서버가 함께 영향을 받을 수 있고, 여러 서버가 같은 장치를 쓰는 만큼 구역을 엄격하게 나누는 관리가 필요하죠.

데이터센터에 생길 변화

CXL 메모리가 바꾸려는 것은 서버라는 상자의 경계입니다. CPU와 메모리를 한 상자에 고정해서 사는 대신, 연산과 메모리를 따로 늘리고 줄이는 분리형 구조(Disaggregation)로 가는 첫걸음이죠.

이렇게 되면 서버마다 최대 작업을 기준으로 메모리를 과하게 달 필요가 줄어 좌초 메모리를 줄일 수 있습니다. 메모리가 많이 필요한 데이터베이스나 AI 추론 작업에는 용량을 크게 붙이고, 연산 위주 작업에는 적게 붙이는 식으로 자원을 유연하게 배분할 수 있죠.

다만 실제 도입 속도는 CPU와 스위치, 메모리 장치의 지원, 운영 소프트웨어의 성숙도, 지연 시간을 감수할 만한 비용 이득이 있는지에 따라 달라집니다. 그래서 확장 용도에서 먼저 쓰이고, 풀링과 공유는 단계적으로 넓어지는 흐름으로 보는 시각이 많습니다.

CXL 메모리 연결 방식 비교 표

구분로컬 DRAMCXL 메모리 확장CXL 메모리 풀링CXL 메모리 공유
연결 위치CPU 메모리 채널CPU에 직접 연결된 CXL 장치스위치 뒤 메모리 묶음스위치 뒤 메모리 묶음
사용 주체한 서버한 서버여러 서버가 구역을 나눠 사용여러 서버가 같은 구역을 함께 사용
관련 규격DDR 표준CXL 1.x부터CXL 2.0부터CXL 3.x부터
장점가장 짧은 지연 시간채널 수와 무관한 용량 증설좌초 메모리 감소, 유연한 배분서버 간 데이터 복사 감소
과제용량이 채널 수에 묶임로컬보다 긴 지연 시간스위치 지연, 할당 관리일관성 유지 부담, 장애·보안 관리

핵심 정리

CXL은 PCIe의 물리 계층 위에 캐시 일관성을 더한 연결 표준이고, CXL 메모리는 이를 이용해 CPU 메모리 채널 밖에서 용량을 늘리거나 여러 서버가 메모리를 나눠 쓰게 하는 기술입니다. 확장, 풀링, 공유로 갈수록 자원 활용은 좋아지지만 지연 시간과 관리의 부담도 커지죠.

사무실 개인 창고를 공용 창고로 바꾸면 공간은 아끼지만 오가는 시간이 조금 늘고 관리 규칙이 필요해지는 것과 같습니다. CXL 관련 소식을 볼 때는 어떤 방식의 연결인지, 지연 시간을 감추는 계층 관리가 함께 준비되었는지를 같이 살펴보면 흐름을 읽기 쉽습니다.

면접 대비 질문

면접 대비 질문CXL 메모리가 데이터센터에서 해결하려는 문제와, CXL 메모리를 쓸 때 감수해야 하는 한계를 설명해 보세요.

[답변 포인트] CPU의 메모리 채널 수가 코어 증가를 따라가지 못해 코어당 용량과 대역폭이 부족해지는 문제, 서버마다 메모리가 남아도 다른 서버가 쓸 수 없는 좌초 메모리 문제를 먼저 짚습니다. CXL은 PCIe 물리 계층 위에서 CXL.mem 프로토콜로 타입 3 메모리 장치를 연결해 용량을 확장하고, 2.0의 스위치 기반 풀링과 3.x의 공유로 여러 서버가 메모리를 나눠 쓰게 한다고 설명합니다. 한계로는 로컬 DRAM보다 긴 지연 시간 때문에 메모리 계층화가 필요하다는 점과, 풀링·공유에서의 장애와 보안 관리 부담을 함께 언급하면 좋습니다.