발전에도 불구하고 현대 GPU에는 여전히 고정 래스터 라이저가 있습니다. 프로그래밍 가능한 쉐이더를 통해 고도로 사용자 정의 가능하지만 완전히 프로그래밍 할 수는 없습니다.
왜 그런 겁니까?
래스터 라이저가 사용자가 제공 한 해당 장치의 소프트웨어 인 범용 컴퓨팅 장치를 갖춘 GPU가 단순히 병렬 병렬 장치가 될 수없는 이유는 무엇입니까?
고정 기능 하드웨어를 갖는 것이 성능면에서 유리한데 그러한 접근이 불가능한가?
발전에도 불구하고 현대 GPU에는 여전히 고정 래스터 라이저가 있습니다. 프로그래밍 가능한 쉐이더를 통해 고도로 사용자 정의 가능하지만 완전히 프로그래밍 할 수는 없습니다.
왜 그런 겁니까?
래스터 라이저가 사용자가 제공 한 해당 장치의 소프트웨어 인 범용 컴퓨팅 장치를 갖춘 GPU가 단순히 병렬 병렬 장치가 될 수없는 이유는 무엇입니까?
고정 기능 하드웨어를 갖는 것이 성능면에서 유리한데 그러한 접근이 불가능한가?
답변:
간단히 말해서 성능상의 이유로 프로그래밍 할 수없는 이유가 있습니다.
과거에는 부풀린 FPU 설계를 피하기 위해 정점 프로세서와 프래그먼트 프로세서를위한 별도의 코어가있었습니다. 예를 들어 프래그먼트 셰이더 코드에서만 수행 할 수있는 몇 가지 수학적 연산이있었습니다 (이는 대부분 프래그먼트 셰이더에만 관련되어 있기 때문입니다). 이로 인해 각 유형의 코어의 잠재력을 최대한 활용하지 못한 애플리케이션에 심각한 하드웨어 병목 현상이 발생합니다.
프로그래머블 쉐이더가 점점 대중화되면서 유니버설 유닛이 도입되었습니다. 스케일링을 돕기 위해 점점 더 많은 그래픽 파이프 라인 단계가 하드웨어로 구현되었습니다. 이 기간 동안 GPGPU도 인기를 얻었으므로 공급 업체는이 기능 중 일부를 통합해야했습니다. GPU 수입의 대부분은 여전히 비디오 게임이므로 성능을 방해 할 수는 없습니다.
결국 큰 플레이어 인 Intel은 Larrabee 아키텍처를 사용하여 프로그래밍 가능한 래스터 라이저에 투자하기로 결정했습니다 . 이 프로젝트는 획기적인 것이었지만 성능은 분명히 원하는 것보다 낮았습니다 . 종료되었으며 일부는 Xeon Phi 프로세서를 위해 회수되었습니다. 다른 벤더가이를 구현하지 않았다는 점은 주목할 가치가 있습니다.
소프트웨어를 통한 래스터 화 시도가 있었지만 모두 성능에 문제가있는 것 같습니다.
주목할만한 노력 중 하나 는 2011 년이 백서 에서 Nvidia 의 시도 였습니다 . 이것은 Larrabee가 종료 된 시점에 가까운 시점에 릴리스되었으므로 이에 대한 응답 일 가능성이 큽니다. 그럼에도 불구하고 여기에는 몇 가지 성능 수치가 있으며 대부분 하드웨어 래스터 라이저보다 성능이 여러 배 느립니다.
Nvidia 논문에는 많은 문제가있었습니다. 소프트웨어 래스터 라이저의 가장 중요한 문제는 다음과 같습니다.
보간 : 하드웨어 구현은 특수 하드웨어에서 보간 방정식을 생성합니다. 소프트웨어 렌더러는 프래그먼트 셰이더에서 수행되어야하므로 속도가 느립니다.
앤티 앨리어싱 : 앤티 앨리어싱 (특히 메모리)과 관련된 성능 문제도있었습니다. 서브 픽셀 샘플에 관한 정보는 온칩 메모리에 저장해야하며,이를 보유하기에는 충분하지 않습니다. Julien Guertault는 소프트웨어에서 텍스처 캐시 / 캐시가 느려질 수 있다고 지적했습니다. MSAA는 캐시 (텍스처가 아닌 캐시)를 오버플로하고 칩의 메모리로 들어가기 때문에 확실히 문제가 있습니다. 래스터 라이저는 해당 메모리에 저장된 데이터를 압축하여 성능을 향상시킵니다.
전력 소비 : Simon F는 전력 소비가 더 낮을 것이라고 지적했습니다. 이 논문은 커스텀 ALU가 래스터 라이저 (전력 소비를 줄일 수 있음)에 있다고 언급했으며, 과거에는 프래그먼트 및 버텍스 처리 장치가 커스텀 명령어 세트 (사용자 정의 ALU도 가능)를 가지고 있었기 때문에 이것은 의미가 있습니다. 많은 시스템 (예 : 모바일)에서는 병목 현상이 발생하지만 성능을 넘어서는 의미는 있습니다.
TL; DR : 소프트웨어 렌더링을 지나칠 수없는 비 효율성이 너무 많아서 이런 것들이 더해집니다. 특히 VRAM 대역폭, 동기화 문제 및 추가 계산을 처리 할 때 더 큰 제한이 있습니다.