GPU 가상 메모리 관리 구조와 작동 원리
GPU 가상 메모리(Virtual GPU Memory)는 실제 물리적 VRAM을 추상화한 주소 공간이다.
이 구조 덕분에 대규모 리소스를 직접 전부 로드하지 않아도,
필요한 부분만 메모리에 매핑하여 사용할 수 있다.
CPU의 가상 메모리처럼 페이지 단위로 관리되며,
GPU는 해당 페이지가 로드될 때까지 기다리지 않고 다른 작업을 수행할 수 있다.
일반적으로 GPU는 “페이지 테이블(Page Table)”과 “페이지 디렉터리(Page Directory)”를 유지한다.
각 리소스는 여러 개의 페이지로 분할되고,
이 페이지가 메모리 또는 디스크의 어느 위치에 있는지 테이블이 기록한다.
게임 엔진은 이를 활용해 **디맨드 로딩(Demand Loading)** 방식을 구현한다.
즉, 실제로 화면에 보이는 리소스만 즉시 메모리에 적재하고,
보이지 않는 데이터는 로컬 디스크나 압축 캐시에 남겨둔다.
이 시스템은 대형 오픈월드 게임에서 특히 효과적이다.
예를 들어, 플레이어의 시야에 있는 지역만 로드하고,
보이지 않는 지역은 압축된 상태로 유지한다.
GPU가 필요한 페이지를 요청하면, 엔진은 압축 데이터를 해제해 VRAM에 매핑한다.
이러한 동적 로딩 구조 덕분에 8GB VRAM에서도 40~60GB 수준의 자산을 효율적으로 처리할 수 있다.
가상 메모리 관리의 핵심은 페이지 교체 정책이다.
GPU는 자주 사용하는 텍스처 페이지를 우선 보관하고,
덜 사용하는 페이지는 우선순위를 낮춰 교체한다.
이를 통해 프레임 중단 없이 리소스 로드와 렌더링이 병행된다.
리소스 압축 스트리밍의 구성과 작동 절차
리소스 압축 스트리밍(Resource Compression Streaming)은
대용량 데이터를 압축된 상태로 GPU로 전송하고,
GPU 또는 CPU에서 실시간으로 해제하는 기술이다.
데이터의 크기를 줄여 전송 대역폭을 절약하며,
디스크 I/O 병목을 완화한다.
대표적인 기술로는 “BCn 블록 압축”, “ASTC”, “Basis Universal” 등이 있다.
이들은 고정 블록 크기(4x4, 8x8 등)로 텍스처를 압축하고,
GPU가 직접 압축 데이터를 해석할 수 있도록 설계됐다.
덕분에 CPU가 별도로 해제 작업을 수행할 필요가 없다.
또한 엔진은 압축 스트리밍을 “멀티스레드 로더(Multithreaded Loader)”를 통해 관리한다.
디스크에서 데이터를 읽는 스레드, 압축 해제를 담당하는 스레드,
GPU 업로드를 수행하는 스레드가 병렬로 작동한다.
이렇게 분리된 작업 구조 덕분에 대용량 리소스도 프레임 단위 지연 없이 로딩된다.
압축 스트리밍의 효율은 “Prefetch Window”에 의해 좌우된다.
이는 GPU가 다음 프레임에서 사용할 가능성이 높은 리소스를
미리 큐에 요청하는 구간이다.
창의 크기가 너무 작으면 로딩이 지연되고,
너무 크면 불필요한 데이터가 로드된다.
최적의 윈도우 크기를 찾는 것이 스트리밍 성능의 핵심이다.
엔진은 사용자의 이동 속도, 카메라 시야,
GPU 점유율을 기반으로 Prefetch Window를 실시간 조정한다.
이 덕분에 리소스 로딩 중에도 프레임 드롭 없이
매끄러운 화면 전환이 가능하다.
텍스처 페이징 최적화와 프레임 안정화 기법
텍스처 페이징(Texture Paging)은 대용량 텍스처를 여러 페이지로 분할하고,
필요한 페이지만 GPU 메모리에 올리는 기법이다.
이 기술은 대형 환경 렌더링에서 VRAM 사용량을 획기적으로 줄인다.
페이징 시스템은 크게 세 단계로 구성된다.
① 페이지 매핑(Page Mapping): 텍스처를 페이지 단위로 분리해 관리한다.
② 페이지 요청(Page Request): GPU가 필요한 페이지를 요청한다.
③ 페이지 교체(Page Eviction): 오래된 페이지를 제거하고 새로운 페이지를 로드한다.
이 구조는 모든 페이지를 한 번에 로드하는 기존 방식보다
수십 배 높은 효율을 보여준다.
특히 오픈월드 게임에서는 “Tiled Texture Streaming” 방식을 사용한다.
이는 화면의 중심부에 가까운 타일만 고해상도로 유지하고,
멀리 있는 타일은 저해상도 버전으로 대체한다.
결과적으로 GPU 메모리 사용량은 최대 60% 감소한다.
GPU 페이징은 단순한 메모리 절감이 아니라
렌더링 일관성을 유지하는 핵심 기술이다.
페이징 시스템이 없다면,
카메라 이동 시 텍스처 교체로 인해 화면 깜빡임이나 지연이 발생할 수 있다.
그러나 동적 페이지 관리 덕분에
모든 전환이 GPU 내부에서 자연스럽게 이루어진다.
이 기술은 차세대 그래픽 API의 기본 요소로 자리 잡고 있으며,
DirectStorage와 함께 사용될 경우
초고속 NVMe SSD의 대역폭을 GPU가 직접 활용할 수 있다.
이로써 CPU 개입 없이도 텍스처 로드가 GPU 내부에서 즉시 처리된다.