Ray Tracing의 진화, NVIDIA와 AMD에 어떤 영향을 미쳤습니까?

광선 추적 오프라인 애니메이션 세계에서 널리 사용되었지만 다음과 같은 실시간 환경에서 장면을 렌더링하는 알고리즘입니다. 비디오 게임 지금부터 등장하기 시작합니다. 이 기사에서는 과거, 현재 및 미래의 진화에 대해 이야기합니다. 하드웨어 에 관한 레이 트레이싱 우리가 기대할 수있는 것에 대한 아이디어를 얻을 수 있습니다.

처음에는 슈퍼 컴퓨터에서만 가능했던 래스터 화와 마찬가지로 워크 스테이션에서 그리고 나중에는 3D 카드가있는 가정용 컴퓨터에서 레이 트레이싱 또는 영어 이름 인 "Ray Tracing"으로 알려진 가정용 컴퓨터에서 동일한 발전을 이루었습니다. 매우 강력하고 값 비싼 시스템이 점점 더 모든 사람에게 제공되고 있습니다.

레이 트레이싱의 진화

Ray Tracing과 관련된 하드웨어의 진화

레이 트레이싱 빌딩

이것이 우리가 Ray Tracing에 관한 한 하드웨어의 진화를 보여주기 위해 회고전을하기로 결정한 이유입니다. 우리는이 진화를 다섯 단계로 나눴으며, 여기서는 과거의 방법뿐만 아니라 가까운 미래에 보게 될 방법에 대해서도 이야기 할 것이며, 따라서 미래 세대의 GPU에서 구현 될 것입니다. 그것은 우리의 PC를 갖추게 될 것입니다.

1 단계 : CPU를 통한 렌더링

Pila CPU

오랫동안 GPU가 래스터 화 알고리즘에 묶여 있었기 때문에 다른 알고리즘을 사용하는 Ray Tracing 기반 장면 렌더링에는 적합하지 않았 음을 고려해야합니다.

레이 트레이싱을 통해 장면을 렌더링하고 싶을 때 존재했던 솔루션은 무엇입니까? 멀티 코어 CPU를 가져오고 이것은 이미 역사의 일부이지만 인텔 약 86 년 전에 취소되고 실패한 Larrabee로 실행하기를 원했습니다. 이는 a와 매우 유사한 구성에서 여러 xXNUMX 코어에 불과했습니다. GPU.

데이터 센터

이 솔루션은 CPU가 실행 스레드 당 단일 작업으로 작동하도록 설계된 스칼라 시스템이고 GPU에 비해 ​​동시에 실행되는 스레드가 거의 없기 때문에 가장 비효율적 인 것으로 나타났습니다. 그렇지 않은 경우 수십 대의 슈퍼 컴퓨터를 만들어야합니다. 렌더링을위한 수백 개의 CPU.

2 단계 : 컴퓨팅 셰이더를 통한 GPU의 광선 추적

레이 트레이싱 Etapa 2

버전 11의 DirectX와 버전 4의 OpenGL부터 ​​시작하여 그래픽 파이프 라인의 단계와 관련이없는 Compute Shaders라는 새로운 유형의 GPU 용 셰이더 프로그램이 등장했습니다.

덕분에 GPU는 래스터 화를 넘어서 문제를 해결하는 데 전적으로 또는 부분적으로 전력을 집중할 수 있었고 그중에서도 실시간 렌더링을 허용하는 데 충분한 속도가 아닌 GPU에서 광선 추적을 구현할 수 있었지만 순서대로 가능했습니다. Compute Shader를 통해 연속 단계의 파이프 라인을 구현합니다.

그러나 각 특정 단계가 특히 이러한 단계 중 하나를 수행하는 Compute Shader 인 Ray Tracing을위한 완전한 렌더링 파이프 라인을 제안 할 수있게 된 것은 DirectX 12 이후였습니다.

에타 파스 DXR

이 파이프 라인은 2018 년에 DirectX Ray Tracing의 예비로 표준화되었으며 나중에 Vulkan에서도 채택한 파이프 라인입니다. 그러나 실시간 레이 트레이싱을위한 초기 GPU 구현은 성능 측면에서 충분하지 않았으며 기존 Compute Unit / SM에 대한 변경이 필요했습니다.

3 단계 : 교차 단위

교차 라요 삼각 망

하드웨어 설계에서 흔히 볼 수있는 것은 전체 프로세서보다 훨씬 낮은 면적과 에너지 비용으로 반복적이고 반복적 인 작업을 수행하는 가속기를 만드는 것입니다. 아이디어는 이러한 작업을 특수 프로세서에 언로드하는 것입니다.

이러한 유형의 단위는 GPU에서 일반적입니다. 예를 들어, 래스터 화에 관해서는 삼각형 래스터 화, 텍스처 필터링 등과 같은 작업을 수행하는 고정 기능을 가진 단위를 찾습니다. 이러한 단위는 연결되어 있으며 항상 주어진 입력 데이터에서 기능을 수행합니다. 고정 함수라고 부르는 이유는 함수를 변경할 수 없기 때문입니다. 즉, 프로그래밍 할 수 없습니다. 이 유형의 단위의 장점은 매우 작은 단위를 사용하여 매우 적은 소비로 완전히 병렬로 작동하는 특정 계산을 수행 할 수 있다는 것입니다.

Ray Tracing에서는 장면에서 생성 된 각 광선이 장면에있는 하나 이상의 오브젝트에 부딪 히므로이 계산을 지속적으로 반복적으로 수행해야하며 교차라고 부르는 것이 이상적인 프로세스입니다. 병렬로 작동하는 특수 유닛의 형태.

레이 트레이싱 Etapa 3

교차 유닛의 경우 GPU 내에서 컴퓨팅 유닛 / SM 내에서 발견됩니다. AMD / NVIDIA 그래픽 유닛 (어쨌든 우리는 두 경우 모두 동일한 유형의 유닛에 대해 이야기하고 있지만 다른 이름을 사용함)은 동일한 유닛 내의 데이터 캐시를 통해 셰이더 실행을 담당하는 ALU와 통신합니다.

4 단계 : BVH 나무 이동 유닛

BVH는 장면의 지오메트리를 정돈 된 방식으로 저장하는 공간 데이터 구조입니다. 교차 계산 프로세스의 속도를 높이기 위해 수행되는 작업은 픽셀 단위로 수행하는 대신 BVH 트리에서 수행하는 것입니다.

BVH 트리 탐색을 담당하는 유닛이 없으면 컴퓨 트 셰이더 프로그램을 사용하여 수행해야하지만 하드웨어 수준에서 구현 된 이러한 유닛을 사용하면이 프로세스를 수행해야하는 것을 잊어 버립니다.

즉, 경로 단위는 셰이더 프로그램의 참여없이 자동으로 BVH 트리를 통해 모든 광선과 경로를 생성하고 교차 단위와 상호 작용합니다. 프로세스가 끝나면 둘 다 결과를 다시 보냅니다.

DirectX 12 Ultimate의 현재 버전에서 이것은 최소 사양의 일부가 아니며 광선 생성 셰이더를 통해 다른 개체와 개체의 교차점에서 새로운 광선 생성을 제어해야한다는 점을 고려해야합니다. 따라서이 장치의 사용은 제한적입니다. 씬의 번개 밀도에 대해 잠시 게임 개발자에게 힘을주는 것이 선호되기 때문입니다.

5 단계 : 코히 런트 레이 트레이싱

레이 트레이싱을위한 GPU 진화의 다음 단계는 GPU에 일관성 유닛을 추가하는 것이지만, 우선 우리는 프로세서의 관점에서 메모리 일관성이 무엇을 의미하는지 이해해야합니다. 각 프로세서의 메모리 비전은 동일하며, 특히 최신 GPU에서는 동일합니다.

CPU GPU 캐시

메모리 일관성 문제를 이해하려면 다중 프로세서 시스템의 캐싱 메커니즘이 어떻게 작동하는지 이해해야합니다. CPU 또는 GPU.

  • 캐시는 RAM 자체가 아니라 RAM의 특정 부분 또는 더 높은 캐시 수준을 저장합니다.
  • 더 낮은 수준의 캐시와 가장 가까운 프로세서에는 더 높은 수준의 캐시에서 가져온 데이터 부분의 복사본이 포함됩니다.

따라서 일관된 시스템을 만들려면 GPU의 코어 또는 다른 장치가 데이터 값을 변경할 때 모든 캐시에서 해당 데이터를 참조하는 모든 사본도 변경되는 메커니즘을 만들어야합니다. 동시에 VRAM에서 방법.

그렇다면 GPU가 현재 직면하고있는 문제는 무엇입니까? BVH의 교차 및 순회 유닛이 Compute Unit / SM의 데이터 캐시에 액세스 할 수 있다고 언급하기 전에 일관성 메커니즘이 없기 때문에 Compute Unit / SM의 데이터가 변경되면 나머지 유닛은이를 인식하지 못하므로 다른 유닛에서 이미 수행 한 경우에도 교차 및 거리 계산의 좋은 부분이 반복됩니다.

레이 트레이싱 Etapa 5

일관성 단위는 캐시 내용의 변경 사항을 모든 컴퓨팅 단위 / SM에 알리는 하나 이상의 하드웨어 단위이므로 필요한 상호 통신의 양으로 인해 하드웨어를 구현하기가 어렵습니다.

CPU에서는 내부에 코어가 거의 없기 때문에 일관성이 쉽게 달성 될 수 있지만 GPU에서는 코어 수가 많을수록 일관성 시스템을 구현하기가 어렵습니다. 구현해야하는 데이터 경로의 수는 n입니다. 2 여기서 n은 서로 연결된 요소의 수입니다.

GPU가 칩렛으로 분할되는 중이기 때문에이 코 히어 런스 유닛이 칩렛 자체가되거나 서로 다른 부분을 통신하는 중앙 부분에있을 가능성이 높습니다. 어쨌든 우리는 아직이 지점에 도달하지 않았으며 아키텍처 수준의 변화가 2 년에서 5 년 사이에 일어나고 있다는 점을 감안할 때 여전히 조금 기다려야 할 것입니다.

Coherency Engine이 구현되는 곳은 Imagination의 PowerVR Wizard 아키텍처에 있습니다. 이는 해당 하드웨어에서 수년 동안 구현 되었기 때문에 NVIDIA와 AMD는 아직 GPU에서 구현하지 않았기 때문에 "작은 ”상상과는 다릅니다. 어쨌든 그것은 Ray Tracing의 다음 진화입니다.