GPU에 여전히 래스터 라이저가있는 이유는 무엇입니까?


14

발전에도 불구하고 현대 GPU에는 여전히 고정 래스터 라이저가 있습니다. 프로그래밍 가능한 쉐이더를 통해 고도로 사용자 정의 가능하지만 완전히 프로그래밍 할 수는 없습니다.

왜 그런 겁니까?

래스터 라이저가 사용자가 제공 한 해당 장치의 소프트웨어 인 범용 컴퓨팅 장치를 갖춘 GPU가 단순히 병렬 병렬 장치가 될 수없는 이유는 무엇입니까?

고정 기능 하드웨어를 갖는 것이 성능면에서 유리한데 그러한 접근이 불가능한가?


1
"그래픽 처리 장치가 범용 처리 장치가 아닌 이유"가 궁금합니다.
Andreas

1
@Andreas 아니오, 내 질문은 게시물에 명시된 것과 같습니다. 래스터 라이저가 소프트웨어에서 수행 될 때 하드웨어 부분 인 이유는 무엇입니까 (사실 이미 OpenCL 또는 컴퓨팅 쉐이더로 수행 할 수 있음). 이 공통되지 않는 이유 질문은 ... 어쩌면 나도 몰라, 단순히 성능입니다, 그건 내가 부탁 해요 이유는 ...
mrpyo

래스터 화를 우회하고 최신 GPU에서 컴퓨팅 장치를 사용하여 자체 래스터 라이저를 구현할 수 있으며 실제로 특정 목적을 위해 사람들이 알고 있습니다.
JarkkoL

래스터 라이저는 벡터 폴리를 조명 가능한 여러 픽셀로 변환합니다. 더 이상 픽셀이 없거나 벡터 지오메트리 사용을 중지하면 더 이상 래스터 라이저가 필요하지 않습니다. 하루가 끝날 때 (또는 프레임) 파이프 라인의 나머지 모양이 어떻든간에 픽셀이 필요합니다. 래스터 라이저는 주어진 삼각형에 대해 어떤 픽셀이 걱정되는지 알려줍니다. 래스터 라이저에서 다른 출력을 원한다면 다른 삼각형을 보내십시오. 또는 컴퓨팅 셰이더에서 렌더 텍스처에 모든 것을 그리고 뷰 정렬 쿼드로 화면에 블리트합니다.
3Dave

답변:


15

간단히 말해서 성능상의 이유로 프로그래밍 할 수없는 이유가 있습니다.

역사와 시장

과거에는 부풀린 FPU 설계를 피하기 위해 정점 프로세서와 프래그먼트 프로세서를위한 별도의 코어가있었습니다. 예를 들어 프래그먼트 셰이더 코드에서만 수행 할 수있는 몇 가지 수학적 연산이있었습니다 (이는 대부분 프래그먼트 셰이더에만 관련되어 있기 때문입니다). 이로 인해 각 유형의 코어의 잠재력을 최대한 활용하지 못한 애플리케이션에 심각한 하드웨어 병목 현상이 발생합니다.

프로그래머블 쉐이더가 점점 대중화되면서 유니버설 유닛이 도입되었습니다. 스케일링을 돕기 위해 점점 더 많은 그래픽 파이프 라인 단계가 하드웨어로 구현되었습니다. 이 기간 동안 GPGPU도 인기를 얻었으므로 공급 업체는이 기능 중 일부를 통합해야했습니다. GPU 수입의 대부분은 여전히 ​​비디오 게임이므로 성능을 방해 할 수는 없습니다.

결국 큰 플레이어 인 Intel은 Larrabee 아키텍처를 사용하여 프로그래밍 가능한 래스터 라이저에 투자하기로 결정했습니다 . 이 프로젝트는 획기적인 것이었지만 성능은 분명히 원하는 것보다 낮았습니다 . 종료되었으며 일부는 Xeon Phi 프로세서를 위해 회수되었습니다. 다른 벤더가이를 구현하지 않았다는 점은 주목할 가치가 있습니다.

소프트웨어 래스터 라이저 시도

소프트웨어를 통한 래스터 화 시도가 있었지만 모두 성능에 문제가있는 것 같습니다.

주목할만한 노력 중 하나 는 2011 년이 백서 에서 Nvidia시도 였습니다 . 이것은 Larrabee가 종료 된 시점에 가까운 시점에 릴리스되었으므로 이에 대한 응답 일 가능성이 큽니다. 그럼에도 불구하고 여기에는 몇 가지 성능 수치가 있으며 대부분 하드웨어 래스터 라이저보다 성능이 여러 배 느립니다.

소프트웨어 래스터 화 관련 기술 문제

Nvidia 논문에는 많은 문제가있었습니다. 소프트웨어 래스터 라이저의 가장 중요한 문제는 다음과 같습니다.

주요 이슈

  • 보간 : 하드웨어 구현은 특수 하드웨어에서 보간 방정식을 생성합니다. 소프트웨어 렌더러는 프래그먼트 셰이더에서 수행되어야하므로 속도가 느립니다.

  • 앤티 앨리어싱 : 앤티 앨리어싱 (특히 메모리)과 관련된 성능 문제도있었습니다. 서브 픽셀 샘플에 관한 정보는 온칩 메모리에 저장해야하며,이를 보유하기에는 충분하지 않습니다. Julien Guertault는 소프트웨어에서 텍스처 캐시 / 캐시가 느려질 수 있다고 지적했습니다. MSAA는 캐시 (텍스처가 아닌 캐시)를 오버플로하고 칩의 메모리로 들어가기 때문에 확실히 문제가 있습니다. 래스터 라이저는 해당 메모리에 저장된 데이터를 압축하여 성능을 향상시킵니다.

  • 전력 소비 : Simon F는 전력 소비가 더 낮을 것이라고 지적했습니다. 이 논문은 커스텀 ALU가 래스터 라이저 (전력 소비를 줄일 수 있음)에 있다고 언급했으며, 과거에는 프래그먼트 및 버텍스 처리 장치가 커스텀 명령어 세트 (사용자 정의 ALU도 가능)를 가지고 있었기 때문에 이것은 의미가 있습니다. 많은 시스템 (예 : 모바일)에서는 병목 현상이 발생하지만 성능을 넘어서는 의미는 있습니다.

요약

TL; DR : 소프트웨어 렌더링을 지나칠 수없는 비 효율성이 너무 많아서 이런 것들이 더해집니다. 특히 VRAM 대역폭, 동기화 문제 및 추가 계산을 처리 할 때 더 큰 제한이 있습니다.


박스 필터링이 충분하면 평균을 실행할 수 있다면 서브 픽셀 샘플을 저장해야한다고 생각하지 않습니다.
joojaa

2
텍스처 샘플링과 캐시는 아마도 하드웨어 구현이 소프트웨어 구현으로는 불가능한 성능을 가능하게하는 영역 일 것입니다.
Julien Guertault

3
@aces 언급 할 가치가있는 또 다른 항목은 힘입니다. 전용 하드웨어는 일반적으로 전력 예산의 일부만으로 동일한 작업을 수행하며, 특히 모바일 장치에서 전력 조절 문제가 이미 문제가되면 완전히 프로그래밍 가능하게하면 크게 악화됩니다.
Simon F

@JulienGuertault 페어 포인트이지만 이것이 대부분 MSAA에 해당한다고 생각합니다. 테스트 결과에 따르면 온칩 메모리에 모든 것이 적합 할 때 이것이 큰 문제가 아님을 알 수 있습니다.
에이스

@SimonF 나는 그것이 좋은 지적이라고 생각합니다. 나는 그것을 대답에 포함시켰다.
에이스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.