하이브리드 렌더링의 보급이 목표인 NVIDIA
NVIDIA는 일반 소비자용 그래픽 카드에서 하이브리드 렌더링을 실현하는 지포스 RTX 제품군을 발표했습니다. 실시간 레이 트레이싱 기능과 딥 러닝 기능을 추가해 3D 그래픽 파이프 라인을 근본적으로 변화하는 NVIDIA 전략의 핵심 제품군입니다.
튜링 아키텍처 지포스 RTX 2080 Ti의 다이 스펙. 지포스 RTX는 NVIDIA가 시그래프에서 발표한 전문가용 GPU, 쿼드로 RTX와 같은 튜링 아키텍처입니다.
지포스 RTX의 3가지 SKU(Stock Keeping Unit). 상위 기종은 쿼드로 RTX와 같은 다이를 씁니다.
NVIDIA는 지포스 RTX를 499~999달러의 가격으로 출시합니다. 예약은 이미 시작돼 9월 20일에 출시됩니다.
튜링 아키텍처의 핵심은 GPU 렌더링 파이프 라인의 혁신입니다. PC용 3D GPU는 라스터 렌더링을 고정 기능으로 실현한 단순한 GPU에서 시작했습니다. DirectX 9에서 본격적인 프로그램 쉐이더를 탑재해 쉐이더 그래픽으로 전환했습니다. 여기서 파이프 라인이 크게 달라져, 오프라인 렌더링에서 쉐이더 그래픽의 실시간 렌더링으로 바뀌었습니다.
튜링의 하이브리드 렌더링은 쉐이더 그래픽의 도입 수준의 혁신입니다. 기존의 렌더링은 3D 모델을 가상의 시점에서 화면을 이루는 픽셀로 래스터라이저하는 방식입니다. 복잡한 빛의 물리적인 현상 표현은 쉐이더가 비슷하게 흉내내는데 그쳤습니다.
이에 비해 레이 트레이싱 렌더링은 빛의 물리적인 현상을 간단히 시뮬레이션해 물리적으로 더 정확한 3D 그래픽을 그려냅니다. NVIDIA의 젠슨 황(Founder and CEO, NVIDIA)는 독일 쾰른에서 개최한 지포스 RTX의 발표 이벤트 GeForce Gaming Celebration에서 레이 트레이싱을 "그래픽의 성배"라고 표현했습니다. 성배와도 같은 궁극의 목표라는 의미입니다.
현재 영화를 비롯한 오프라인 렌더링에서는 레이 트레이싱을 조합한 하이브리드 렌더링이 일반적입니다. NVIDIA는 튜링 아키텍처에서 이를 실시간 그래픽으로 가져오려 합니다. 쉐이더 그래픽을 GPU가 실시간으로 처리했을 때처럼 말입니다.
레이 트레이싱 기능은 지포스에도 탑재
NVIDIA는 튜링 아키텍처를 먼저 전문가용 쿼드로 RTX로 발표했습니다. 쿼드로 RTX의 가격은 최상위 쿼드로 RTX 8000이 10,000달러, 보급형인 쿼드로 RTX 5000이 2,300달러로 상당히 도전적입니다. 따라서 NVIDIA가 같은 다이를 써서 만든 지포스 RTX를 얼마에 팔 것인지, 기능은 어떻게 차이를 둘 것인지가 관건이었습니다. 쿼드로 RTX를 차별화하기 위해 지포스 RTX는 좀 싸게 내놓는 대신 기능 차이, 특히 레이 트레이싱 성능을 낮추는 게 아니냐는 우려가 있었습니다.
그러나 막상 뚜껑을 열고 보니 기존의 지포스 시리즈의 가격에서 벗어나지 않으며, 핵심인 레이 트레이싱 성능은 쿼드로 RTX 수준이었습니다. 최상위인 지포스 RTX 2080 Ti가 999달러, 2080이 699달러, 보급형인 2070이 499달러입니다. NVIDIA가 하이브리드 렌더링의 보급에 그만큼 진지하게 나섰음을 알 수 있는 가격 구성입니다.
최상위 999달러의 지포스 RTX 2080 Ti를 쿼드로 RTX 6000/8000과 비교하면, 쉡이더와 딥 러닝 성능은 지포스가 83%지만 레이 트레이싱 가속 성능은 100% 같습니다. 지포스 RTX 2080 Ti는 하이브리드 렌더링을 중시하는 구성입니다.
구체적으로는 기존의 쉐이더 그래픽을 위한 CUDA코어(FP32 연산 유닛)의 수는 쿼드로 RTX 8000이 4,608개, 지포스 RTX 2080 Ti는 4352개. SM(Streaming Multiprocessor)의 수는 볼타 아키텍처의 쿼드로가 72 SM< 지포스가 68 SM이었습니다. 클럭은 지포스 RTX 2080 Ti가 기본 1.35GHz, 부스트 1.55GHz. 1,199달러의 지포스 RTX 2080 Ti 파운더스 에디션은 오버클럭해서 1.635GHz입니다. 쿼드로 RTX 제품군의 최고 클럭은 1.75GHz입니다.
따라서 쉐이더 프로세싱 FP32 성능은 지포스 RTX 2080 Ti가 13.45TFLOPS, 쿼드로 RTX의 최고는 16.1TFLOPS니 약 83%가 됩니다. 딥 러닝을 위한 텐서 코어는 쉐이더 클러스터 SM 안에 있으니 이것도 비율은 83%입니다.
반면 레이 트레이싱 가속기인 RT 코어의 성능은 지포스 RTX 2080 Ti나 쿼드로 RTX 6000/8000 모두 10 Giga Rays/s로 같습니다. 지포스 RTX 2080 Ti는 레이 트레이싱을 중시하고 있다는 이야기입니다. SM 수가 줄었으나 레이 트레이싱 성능이 같은 이유는 RT 코어가 SM 안이 아닌 SM끼리 공유하는 유닛이기 때문으로 추측됩니다. 라스터라이저와 마찬가지로 GPC (Graphics Processing Cluster)마다 RT 코어가 배치됐을 가능성이 있습니다.
메모리 용량은 그대로인 지포스 RTX
지포스 RTX와 쿼드로 RTX의 큰 차이는 메모리 용량입니다. 쿼드로 RTX와 지포스 RTX는 모두 GDDR6 메모리를 씁니다. 그러나 쿼드로 RTX는 16Gbit의 DRAM 칩, 지포스 RTX는 8GBit 용량의 DRAM 칩을 장착해 메모리 용량에서 차이가 납니다.
또 메모리 인터페이스는 쿼드로 RTX 6000/8000이 384비트, 그에 비해 지포스 RTX 2080 Ti는 352비트로 1 DRAM 채널만큼 비활성화됐다는 계산입니다.
따라서 메모리 용량은 지포스 RTX 2080 Ti가 11GB로, 쿼드로 RTX 6000의 24GB, RTX 8000의 48GB보다 훨씬 적습니다. 지포스 RTX 2080과 지포스 RTX 2070은 메모리 인터페이스 256비트에 메모리 용량은 8GB입니다. 지포스 RTX와 쿼드로 RTX 모두 GDDR6 메모리의 전송 속도는 14Gbps. 따라서 메모리 대역은 쿼드로 RTX 6000/8000가 672GB/s, 지포스 RTX 2080 Ti는 616GB/s. 지포스 RTX 2080과 지포스 RTX 2070는 256비트에 대역폭은 448GB/s입니다.
쿼드로 RTX는 2링크 NVLink를 구현해 100GB/s로 2장의 카드를 연결, 고 대역으로 메모리 공유가 가능한 SLI 구성입니다. 지포스 RTX는 지포스 RTX 2080 Ti 및 지포스 RTX 2080가 모두 NVLink 기반 SLI가 가능합니다. 그러나 지포스 RTX 2070에서 SLI는 지원하지 않습니다.
다이를 키워 기능을 늘린 튜링 아키텍처
NVIDIA의 GPU 다이는 현재 GPU 컴퓨팅용 그래픽용의 2가지가 있습니다. 케플러까지는 같은 다이를 썼지만, 맥스웰은 그래픽용, 볼타가 GPU 컴퓨팅용으로 개발돼 2개로 분리됐습니다.
GPU 컴퓨팅을 위한 다이가 일부 하이엔드 그래픽에 탑재돼고, 그래픽을 위한 다이 일부도 GPU 컴퓨팅에 쓰였으니 완전히 나뉜 건 아닙니다. 하지만 아키텍처의 개발 흐름은 2가지입니다. 레이 트레이싱을 위한 RT 코어는 GPU 컴퓨팅에 필요하지 않으니, 튜링은 그래픽용 제품군입니다.
반도체 칩의 입장에서 지포스 RTX 세대를 보면, 성숙된 공정에서 다이 크기를 키워 트랜지스터 수를 늘린 그래픽용 GPU 다이입니다. 다이 크기는 하이엔드 지포스 RTX 2080 Ti가 754제곱mm, 트랜지스터 수는 186억개입니다. NVIDIA의 그래픽 전용 GPU 중에선 역대 최대 크기입니다. 기존의 GPU는 GPU 컴퓨팅을 위한 테슬라 V100(GV100)이 210억 개 트랜지스터에 815제곱mm였습니다.
NVIDIA의 GPU는 16nm 공정의 파스칼 세대에서 GPU 컴퓨팅을 위한 테슬라 P100(GP100)이 153억개 트랜지스터로 610제곱mm의 다이. 그래픽용인 지포스 GTX 1080 Ti (GP102)가 118억개 트랜지스터에 471제곱mm의 다이가 나왔습니다. GPU 컴퓨팅용과 그래픽용의 다이 크기 차이가 좁혀지고 있습니다.
지포스 GTX 1080 Ti(GP102)과 비교하면 이번 지포스 RTX 2080 Ti는 다이 크기가 60% 증가했습니다. 공정 기술은 지포스 GTX 1080 Ti가 16nm, 지포스 RTX 2080 Ti가 12n로, 프로세스 노드의 숫자는 줄었으나 실제 트랜지스터의 크기는 변하지 않았습니다. 무엇보다 트랜지스터 수가 58% 늘었습니다. 따라서 다이 크기를 키워 기능을 늘린 GPU가 지포스 RTX 2000 세대입니다.
무엇보다 12nm 프로세스는 16nm 프로세스를 기반으로 삼고 있기에 프로세스 성숙도가 높습니다. 따라서 수율도 16nm의 초기보다는 높아, 다이 크기가 늘어도 비용 증가는 어느 정도 억제될 것입니다. 또 병렬 프로세서인 GPU는 불량이 난 부분을 비활성화 코어 수를 줄인 하위 SKU를 만들어, 약간의 불량까지 상품화 가능합니다. 현재 최신 공정의 생산 비용과 마스크 비용이 급상승하고 있어, 성숙된 공정으로 거대한 다이를 만들겠다는 NVIDIA의 전략은 나름 합리적입니다. 그래도 750제곱mm 이상의 크기는 이례적인 것입니다.
그리고 NVIDIA는 늘어난 트랜지스터의 대부분을 레이 트레이싱과 딥 러닝에 쏟아 부었습니다. 지포스 GTX 1080 Ti의 CUDA 코어 수는 3,584코어, FP32 성능은 부스트시 11.3TFLOPS입니다. 지포스 RTX 2080 Ti는 CUDA 코어가 4,352개에 부스트 FP32 성능은 13.4TFLOPS입니다. 지난 세대에 비해 코어 수가 21% 늘었지만 쉐이더 프로세싱 성능은 19%만 올랐다는 이야기입니다. 나머지 트랜지스터는 딥 러닝 텐서 코어와 레이 트레이싱 RT 코어를 비롯한 다른 기능 확장에 사용된 것입니다.
지포스 RTX 2070과 지포스 GTX 1070/1070 Ti를 비교하면 CUDA 코어는 RTX 2070가 2,304개인데 지포스 GTX 1070는 1920, 지포스 GTX 1070 Ti은 2,432개입니다. 이 가격대에서 비교하면 FP32 성능은 GTX 1070 계열이 6.4~8.2TFLOPS, RTX 2070은 7.46TFLOPS로 비슷한 수준입니다. RTX 2070의 다이 크기는 아직 알려지지 않았습니다. 이 제품군들은 늘어난 트랜지스터 대부분이 하이브리드 렌더링을 위해 쓰였다는 결론이 나옵니다.
아직은 궁금한 점이 않은 튜링의 SM 구조
기존의 쉐이더 프로세싱 성능을 높이는 대신 레이 트레이싱과 딥 러닝에 트랜지스터를 배분, 이것이 NVIDIA 튜링 아키텍처의 큰 특징입니다.
쉐이더 클러스터인 SM의 아키텍처도 확장돼, 쉐이더 프로세싱 성능은 FLOPS 이상으로 올랐을 가능성이 있습니다. 여기서 중요한 점은 FP32 부동 소수점 연산 유닛과 정수 연산 유닛 모두를 병렬로 실행 가능하다는 겁니다.
사실 볼타 아키텍처에서도 FP32 부동 소수점 유닛과 정수 연산 유닛은 분리됐으며 명령 발행도 공유되지 않았습니다. 하지만 NVIDIA의 설명을 보면 튜링에서 처음으로 병렬 실행이 가능해진 것처럼 보입니다.
두 유닛의 병렬 실행이 가능하려면 몇 가지 조건이 있습니다. 우선 레지스터 파일이 두 유닛의 액세스에 맞춰 엑세스 포트를 갖춰야 합니다. 볼타 SM은 텐서 코어가 2유닛 병렬 실행되기에 레지스터 액세스 포트는 이미 갖췄을 가능성이 높습니다.
또 다른 문제는 명령의 병렬성 추출입니다. GPU는 인 오더 실행이기에 1개의 warp(32 스레드를 하나로 묶음)으로 명령을 선택한다면, 부동 소수점 연산과 정수 연산이 나란히 배치되야 합니다. 부동 소수점 연산은 좌표계를 비롯해 많은 장면에서쓰지만, 정수 연산은 텍스처 계열에서 주로 씁니다. 따라서 하나의 warp에서 부동소수점 연산과 정수 연산을 번갈아가며 추출하기란 매우 어렵습니다.
그러나 볼타의 SM 아키텍처라면 1개의 명령 유닛에 부동 소수점과 정수 연산 어레이를 16way씩, 2사이클에 거쳐 1개의 warp를 실행합니다. 따라서 듀 유닛에 다른 warp의 명령을 발행해 병렬 실행이 가능합니다.
최초로 그래픽 다이에 텐서 코어를 탑재
지포스 RTX 2080 Ti는 그래픽용 다이 최초로 딥 러닝을 위한 텐서 코어를 구현했습니다. 텐서 코어는 4x4 행렬 계산을 실행하는 전용 유닛입니다. 볼타 GV100에 구현된 텐서 코어는 FP16 연산 정밀도 유닛입니다.
이에 비해 튜링 아키텍처에 구현된 텐서 코어는 INT8/INT4의 정수도 지원합니다. INT8과 INT4는 텐서 코어에서 SIMD로 실행하기에 처리량은 FP16의 2배와 4배가 됩니다. 이는 추론 단계에서 쓰는 정밀도가 8비트, 4비트가 많아 그렇습니다.
작년부터 그래픽의 딥 러닝 활용이 진행됐습니다. NVIDIA는 레이 트레이싱을 노이즈 제거, 안티 엘리어싱 등의 분야에 응용하려 합니다. NVIDIA DLSS (Deep Learning Super Sampling)는 고화질 안티 앨리어싱을 실현하는 기술로, 지금까지 NVIDIA DLAA라고 불렀던 것입니다.
DLAA를 실현하는 프레임워크 NVIDIA NGX입니다.
NVIDIA DGX-2 같은 강력한 딥 러닝 고성능 컴퓨터에서 특정 이미지에 적합한 DLSS 모델을 만듭니다.
제작된 딥 러닝 모델을 다운로드해 DL 기반의 고화질 안티 엘리어싱을 실현합니다.
레이 트레이싱 RT 코어
지포스 RTX 2080 Ti는 메인스트림 사용 GPU로선 처음으로 레이 트레이싱 가속 기능이 탑재됐습니다. NVIDIA가 RT 코어라고 부르는 이 디바이스는 레이 트레이싱의 기본 알고리즘을 수행하는 하드웨어 유닛입니다.
레이 트레이싱에선 레이(광선)을 캐스팅해 이를 쬐어 나가며, 각 오브젝트와의 교차점을 구합니다. 교차하는 부분에서 반사된다면 레이를 오브젝트의 각도에 맞춰 반사시킵니다. 그래서 레이가 여럿 생성되거나 굴절되는 경우도 생깁니다.
RT 코어는 레이 스캐너의 탐색 과정에서 부하를 줄이기 위해 BVH(Bounding Volume Hierarchy Traversal)의 하드웨어 지원과, 오브젝트와의 교차점에서 Ray Triangles Intersection을 하드웨어 실행합니다. 지포스 RTX 2080 Ti는 RT 코어를 사용한 레이 트레이싱 성능이 10 Giga Rays/s라고 설명하합니다.
하드웨어 RT 코어의 성능을 쉐이더 프로세싱으로 환산하면 1GRay/s 당 10TFLOPS가 됩니다. 명령 단계의 수가 그만큼 늘어납니다. 10GRay / s의 스펙은 약 110TFLOPS에 해당됩니다. 즉 GPU의 레이 트레이싱 성능이 몇 세대 발전한 셈입니다. 튜링의 레이 트레이싱 성능인 499달러인 지포스 RTX 2070도 6Gray/s. 하이브리드 렌더링에 충분히 대응하는 성능으로 보입니다.
NVIDIA는 GDC (Game Developers Conference)에서 4개의 볼타 GV100 카드로 구성된 NVIDIA DGX에서 실행했던 스타워즈 데모가, 시그래프에선 튜링 아키텍처를 쓴 쿼드로 RTX 6000 한장으로 재현됐다고 밝혔습니다. 4개의 볼타 GV100에서 55ms가 걸리던 처리를 튜링 1개는 45ms로 실행합니다. 파스칼은 이런 처리에 308ms가 걸리니 실시간 처리는 불가능합니다.
하이브리드 렌더링의 라이브 데모를 공개
NVIDIA는 지포스 RTX 2080 Ti를 세계에서 두번째로 큰 게임 쇼인 게임스컴에서 발표했습니다. 관람객들에게 어필하기 위해 NVIDIA는 실제 게임 플레이 화면을 가지고 하이브리드 렌더링 데모도 마련했습니다.
그 중에서 가장 인상적이었던 건 배틀필드 V의 데모로, 폭발하는 화면이 실시간으로 사람의 눈에 반사되는 장면부터 시작, 불꽃이 자동차나 물웅덩이에 반사되는 모습을 보여주었습니다.
이 밖에 메트로 엑소더스의 데모는 실시간 글로벌 일루미네이션으로 반사된 빛이 실내의 어두운 부분을 비춰, 매우 자연스러운 그림자를 그렸습니다.
기존의 파라 메트릭 실시간 처리는 비슷하게 흉내낸 글로벌 일루미네이션을 쓰기에 모든 장면을 똑같이 밝게 비춥니다. 그러나 하이브리드 렌더링은 글로벌 일루미네이션의 간접 조명 색조를 더해 보다 자연스럽습니다.
또 쉐도우 오브 더 툼 레이더의 데모에선 레이 트레이싱으로 그림자를 만들어, 손에 들고 있는 불꽃의 점 광원에서 생겨난 그림자를 그려냈습니다.
새로운 성능 지표를 시도하는 NVIDIA
튜링 아키텍처에서 쉐이더 프로세싱의 투자를 억제하고, 하이브리드 렌더링에 초점을 맞췄습니다. 그래서 NVIDIA는 지포스 RTX 제품군을 기존의 쉐이더 프로세싱 성능을 평가하길 싫어합니다. 지포스 RTX는 하이브리드 렌더링 성능을 새로운 기준으로 설정하며, 여기에 맞춰 RTX-OPS라는 새로운 단위를 도입했습니다.
GPU | RTX-OPS 성능 |
---|---|
GeForce RTX 2080 Ti | 78T RTX-OPS |
GeForce RTX 2080 | 60T RTX-OPS |
GeForce RTX 2070 | 45T RTX-OPS |
RT 코어는 SM의 수에 좌우되지 않습니다. 따라서 SM의 밖으로 빠져 공유되는 장치로 보입니다. RT 유닛을 FP32 유닛과 병렬 실행하면, 1프레임을 렌더링할 동안 레이 트레이싱, 쉐이더 프로세싱의 부동소수점 연산과 텍스처의 정수 연산을 병렬 실행할 수 있습니다. 이로서 진정한 하이브리드 렌더링을 실현한다는 것이 NVIDIA의 주장입니다.
NVIDIA는 RTX-OPS로 비료한 값을 제시하며 지포스 RTX 2000이 큰 도약이라고 설명하나, 현재는 RTX-OPS의 계산에 대한 자세한 근거가 알려지지 않았습니다.