맨틀 (API)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Mantle은 CPU 병목 현상을 완화하여 성능 향상을 목표로 AMD가 개발한 API(Application Programming Interface)이다. API 명령 처리 오버헤드를 줄이고, 멀티 코어 CPU 활용도를 높여 CPU 성능을 개선하며, 셰이더 컴파일 오버헤드를 감소시키는 특징이 있다. 2014년에 발표되었으며, AMD의 그래픽 카드 및 APU에서 지원되었다. Mantle API는 DirectX 12 및 Vulkan과 유사한 목표를 가지면서, Vulkan API 개발에 기여하고 2015년에 개발이 중단되었다.

맨틀 (API) - [IT 관련 정보]에 관한 문서
일반 정보
이름맨틀
로마자 표기Maenteul
종류렌더링API
개발자AMD, DICE
운영 체제윈도우, 리눅스 (발표됨)
플랫폼x86 및 x86-64
라이선스프로프라이어터리 소프트웨어 및 프리웨어
기술 정보
상태베타
대체Vulkan
출시 정보
출시일2013년 9월 25일
최신 버전1.0
중단 여부
기타
웹사이트AMD 맨틀 웹사이트
📚 더 읽어볼만한 페이지
  • AMD 소프트웨어 - GPUOpen
    GPUOpen은 AMD가 개발한 오픈 소스 미들웨어 스택으로, 게임, CGI, 전문 컴퓨팅 분야 개발자들에게 다양한 도구와 라이브러리를 제공하며 소프트웨어 이식성을 향상시키는 것을 목표로 한다.
  • AMD 소프트웨어 - ROCm
    ROCm은 AMD가 개발한 개방형 소프트웨어 스택으로, GPU를 활용한 컴퓨팅을 지원하며, HIP를 통해 CUDA 코드를 사용할 수 있도록 지원하고 머신 러닝, 슈퍼컴퓨팅 등 다양한 분야에서 활용된다.
  • 3차원 그래픽스 API - WebGL
    WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다.
  • 3차원 그래픽스 API - Direct3D
    Direct3D는 마이크로소프트가 개발한 3차원 그래픽스 API로, 그래픽 하드웨어 가속을 지원하며 렌더링 파이프라인을 통해 데이터를 화면의 이미지로 변환하며, 윈도우 운영체제 및 다른 플랫폼에서도 사용 가능하다.
  • API - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • API - ASIO
    ASIO는 독일 스타인버그에서 개발한 오디오 입출력 API 규격으로, 낮은 지연 시간과 멀티 채널 I/O를 지원하며 윈도우 운영체제에서 주로 사용된다.

2. 역사적 배경

Mantle이 개발된 배경에는 기존 PC용 실시간 3차원 컴퓨터 그래픽스 API로 사용되던 Direct3DOpenGL이 콘솔(게임 전용기) 환경과 달리 추상화, 공통화, 표준화가 중시되면서 API 호출 오버헤드가 크고 렌더링에 멀티 코어 CPU를 최대한 활용할 수 없다는 문제점을 안고 있었던 점이 꼽힌다. 이러한 문제점은 특히 AAA급 타이틀의 게임 소프트웨어처럼 엄격한 최적화가 요구되는 경우에 큰 악영향을 미쳤다.

Mantle의 드로우 콜 개선으로 인해 CPU가 병목 현상이 되는 상황이 완화되었다. Mantle의 설계 목표는 게임 및 애플리케이션이 CPU와 GPU를 효과적으로 이용하고 API에 의한 명령어 평가, 검증(Validation)의 오버헤드를 줄이고 멀티 코어 CPU에서의 확장성을 향상시켜 CPU 병목 현상을 해소하는 것, 더욱 빠른 렌더링 루틴을 제공하는 것, 그리고 Direct3DOpenGL이 가진 하드웨어 추상화의 일부를 제거하여 더욱 상세한 그래픽스 파이프라인 제어를 가능하게 하는 것이다.

3. 주요 특징

Mantle은 CPU 병목 현상을 완화하고 성능을 향상시키기 위해 다음과 같은 특징을 가지고 있다.

* API 명령의 낮은 오버헤드 검증 및 처리
* 명시적인 명령 버퍼 제어
* 여러 CPU 코어에서 명령 버퍼 재정렬을 통해 선형에 가까운 성능 확장
* 런타임 셰이더 컴파일 오버헤드 감소
* AMD는 Mantle이 CPU 오버헤드를 줄여 동급 API보다 초당 최대 9배 더 많은 드로우 콜을 생성할 수 있다고 주장한다.
* 최소 8개의 코어에 대한 멀티 스레드 병렬 CPU 렌더링 지원
* 모놀리식 파이프라인
* 파이프라인 저장 및 로드
* 하이브리드 리소스 모델
* 일반화된 리소스
* 리소스 준비 제어
* CPU 개입 없이 동적 흐름 제어
* 직접적인 GPU 제어
* 하드웨어에 대한 더 나은 제어
* "모든 하드웨어 기능은 API를 통해 노출됩니다."

GDC 14에서 Oxide Games의 직원인 Dan Baker는 Mantle이 기존 API의 개조로는 해결할 수 없는 근본적인 개발 과제를 해결할 것이라고 언급했다. 그래픽 장치 드라이버에 대한 최적화는 어렵다.

2013년 11월 AMD 개발자 서밋(APU)에서 DICE의 Frostbite 엔진 기술 디렉터인 Johan Andersson은 Mantle이 개발을 더 쉽게 만들고 개발자가 혁신할 수 있도록 해준다고 칭찬했다.

Mantle의 등장 이후 로우 레벨을 지향하는 신세대 그래픽스 API로 애플의 Metal, 마이크로소프트의 DirectX 12, 그리고 Khronos의 Vulkan이 잇따라 발표되었다. DirectX 12는 Mantle에 영감을 받아 개발이 시작된 것으로 알려져 있으며, Vulkan 또한 Mantle의 기술을 요소로 포함한 것으로 발표되면서, Mantle은 신세대 로우 레벨 API의 선구자 역할을 수행했다.

3.1. CPU 성능 개선

Mantle은 CPU 병목 현상을 완화하고 성능을 개선하기 위해 설계되었다. 주요 특징은 다음과 같다:

* API 명령 검증 및 처리 오버헤드 감소
* 명시적인 명령 버퍼 제어
* 여러 CPU 코어에서 명령 버퍼 재정렬을 통한 선형에 가까운 성능 확장
* 런타임 셰이더 컴파일 오버헤드 감소
* AMD는 Mantle이 동급 API보다 초당 최대 9배 더 많은 드로우 콜을 생성할 수 있다고 주장한다.
* 최소 8개 코어에 대한 멀티 스레드 병렬 CPU 렌더링 지원
* 멀티 코어 CPU 가동률 향상에 따른 성능 향상

Mantle은 기존 PC용 실시간 3차원 컴퓨터 그래픽스 API인 Direct3DOpenGL이 콘솔 환경과 달리 추상화, 공통화, 표준화가 중시되어 API 호출 오버헤드가 크고 렌더링에 멀티 코어 CPU를 최대한 활용할 수 없다는 문제점을 해결하고자 했다.

3.2. GPU 성능 개선

Mantle은 GPU 제한적인 성능을 개선하기 위해 여러 내장 기능을 제공한다. 이러한 개선은 게임 엔진이 Mantle의 기능과 최적화를 얼마나 잘 활용하는지에 따라 달라진다. Mantle의 주요 기능은 다음과 같다:

👆
좌우로 밀어서 보기
Mantle의 GPU 성능 개선 기능
기능설명
명령 버퍼 제출 감소CPU와 GPU 간 통신 효율성을 높여 병목 현상을 줄인다.
리소스 압축, 확장 및 동기화에 대한 명시적 제어GPU 메모리 사용을 최적화하고 리소스 관리를 세밀하게 제어할 수 있다.
그래픽 엔진과 독립적인 데이터 업로드를 위한 비동기 DMA 큐데이터 전송을 그래픽 처리와 병렬로 처리하여 성능을 향상시킨다.
컴퓨팅 및 그래픽 작업 부하의 중첩을 위한 비동기 컴퓨팅 큐컴퓨팅 작업과 그래픽 작업을 동시에 처리하여 GPU 활용도를 극대화한다.
유연한 버퍼/이미지 액세스를 통한 데이터 형식 최적화데이터 형식을 최적화하여 메모리 대역폭 사용량을 줄이고 성능을 향상시킨다.
MSAA/EQAA 최적화를 위한 고급 안티 앨리어싱 기능MSAA/EQAA와 같은 안티 앨리어싱 기술을 최적화하여 화질을 개선하고 성능 저하를 최소화한다.
네이티브 멀티 GPU 지원여러 개의 GPU를 효율적으로 사용하여 성능을 향상시킨다.


Mantle은 고해상도 및 "최대 세부 설정"과 같이 GPU 리소스를 많이 사용하는 환경에서도 성능 개선을 목표로 설계되었지만, 이러한 환경에서는 API 수준의 개선만으로는 한계가 있다.

4. 지원

Mantle API는 19.5.1 이전에는 AMD 카탈리스트의 일부로만 제공되었으며, 마이크로소프트 윈도우에서 사용할 수 있었다. AMD는 자사의 그래픽 코어 넥스트 마이크로아키텍처 기반의 그래픽 카드 및 APU에 대해서만 Mantle API를 지원한다고 발표했으며, 테라스케일 마이크로아키텍처 기반의 구형 제품은 지원하지 않았다.

Mantle은 원래 Windows 외에도 리눅스를 포함한 다른 플랫폼에서도 출시될 예정이었지만, 실현되지 않았다.

이 API는 공식적으로 중단되었지만, 2020년 중반에 GRVK라는 Mantle에서 Vulkan으로의 번역 레이어가 시작되었다. 이를 통해 API와 궁극적으로 게임은 Mantle이 그래픽 드라이버를 지원하지 않더라도 계속해서 작동할 수 있게 되었다.

마이크로소프트 윈도우용 드라이버 "AMD 카탈리스트"에서만 지원되며, 대상 하드웨어는 GCN(Graphics Core Next) 아키텍처를 채용한 APU 및 그래픽 카드에 한정된다.

지원되는 하드웨어는 다음과 같다.

👆
좌우로 밀어서 보기
종류제품군
그래픽 카드
APU

5. 지원 게임 엔진

다음은 Mantle을 지원하는 게임 엔진 목록이다.

👆
좌우로 밀어서 보기
엔진 이름개발사비고
CryEngine크라이텍
Frostbite 3DICE
NitrousOxide Games
언리얼 엔진 3 (수정판)Thief에 사용
LORECivilization: Beyond Earth에 사용
AsuraSniper Elite III에 사용

6. 지원 게임

다음은 맨틀을 지원하는 게임 목록이다.

* 배틀필드 4
* 배틀필드 하드라인
* 괴도
* 플랜츠 vs. 좀비: 가든 워페어
* 시드 마이어의 문명: 비욘드 어스
* 드래곤 에이지: 인퀴지션
* 스나이퍼 엘리트 3
* 스타 시티즌

프로스트바이트 엔진을 사용하는 다른 게임들(15개)도 맨틀을 지원할 예정이었다. 니드 포 스피드: 라이벌, 매스 이펙트: 안드로메다, 미러스 엣지: 카탈리스트, 심즈 4, 스타워즈 배틀프론트 (2015) 등이 그 예시이다.

콜 오브 듀티: 어드밴스드 워페어, 다잉 라이트, 그랜드 테프트 오토 V, 라이즈 오브 더 툼 레이더 등도 맨틀을 지원할 수 있다는 소문이 있었으나, 확인되지는 않았다.

7. 유사 기술

* AZDO (Approaching Zero Driver Overhead): OpenGL의 기능 확장으로 드라이버 오버헤드를 줄이는 접근 방식이다. 엔비디아는 드라이버 오버헤드를 더욱 줄이는 여러 기능으로 OpenGL을 확장했다.
* DirectX 12: 마이크로소프트의 로우 레벨 API이다. Mantle에 영감을 받아 개발되었으며, Mantle에서 DirectX 12로 포팅하는 것이 Direct3D 11에서 DirectX 12로 포팅하는 것보다 더 쉽다고 알려져 있다.
* Vulkan: 크로노스 그룹의 로우 레벨 API이다. Mantle의 기술을 기반으로 개발되었다.
* Metal: 애플의 로우 레벨 API이다.

8. 개발 중단 및 영향

AMD는 DirectX 12 및 Vulkan(glNext에서 이름 변경)의 등장으로 인해 Mantle을 게임 API로 중단했다. AMD는 Mantle API를 Khronos 그룹에 기증했으며, 이 그룹은 이를 Vulkan API로 개발했다.

Mantle의 등장 이후, 애플의 Metal, 마이크로소프트의 DirectX 12, 그리고 Khronos의 Vulkan과 같이 로우 레벨을 지향하는 신세대 그래픽스 API가 잇따라 발표되었다. DirectX 12는 Mantle에 영감을 받아 개발이 시작된 것으로 알려져 있으며, Vulkan 또한 Mantle의 기술을 요소로 포함한 것으로 발표되면서, Mantle은 신세대 로우 레벨 API의 선구자 역할을 수행했다.