기술(Tech, IT)/컴퓨터 그래픽스 (Computer Graphics)

[CG] CPU - Graphics Rendering

Daniel803 2023. 10. 13. 09:50

CPU가 rendring 과정을 초기화하고 기획하는 이유를 자세히 살펴보자.

 

  • 디자인 철학
    (1) CPU (Central Processing Unit, 중앙 처리 장치)
    : CPU는 범용 프로세서로 설계됐다. task switching, branch prediction, 다양한 연산 처리에 최적화돼 있다. 컴퓨터의 '두뇌'로서 파일 입출력, 시스템 작동, 네트워키, 게임 로직 등 다양한 작업을 관리한다.
    (2) GPU (Graphics Processing Unit, 그래픽 처리 장치)
    : 반면 GPU는 병렬 처리를 위해 설계됐다. 대량의 데이터에 대해 동시에 동일한 연산을 수행하는데 탁월하므로, ㅇ례를 들어 수백만 개의 pixel이나 vertex에 대해 동일한 연산을 수행해야 하는 그래픽 작업에 적합하다.

  • 역사적 맥락
    : 컴퓨터 그래픽 초장기에는 대부분의 그래픽 작업을 CPU가 수행했다. 더 복잡한 그래픽에 대한 수요가 증가함에 따라 이러한 작업을 덜어주고 가속화하기 위해 전용 그래픽 하드웨어 (GPU) 가 발전했다. 시간이 지남에 따라 GPU는 더욱 프로그래밍이 가능하고 강력해졌지만, 그래픽 프로세스 시작을 비롯한 시스템 작업의 중앙 관리자는 여전히 CPU다.

  • 복잡한 의사 결정
    : 무엇을 어떤 순서로, 어떤 설정으로 렌더링할지 결정하고 더 광범위한 게임 또는 애플리케이션 로직을 처리하는 것은 복잡한 의사 결정 프로세스를 수반하는 작업이다. branching (분기), looping(루프, 반복) 및 condition-checking (조건 확인) 이 필요한 작업은 CPU에 더 적합하다.

  • 데이터 준비
    : rendering을 수행하기 전에 데이터를 디스크에서 로드하고, 압축을 풀거나 처리하고, 정리한 다음 GPU 전달해야 하는 경우가 많다. 이러한 작업은 일반적으로 CPU에서 관리한다.

  • 시스템 통합
    : Graphics Rendering은 컴퓨터나 게임 콘솔에서 일어나는 일의 일부에 불과하다. 처리해야 할 입력, 오디오 작업, 네트워킹, AI 계산, 물리 시뮬레이션 등이 있는데 이러한 모든 작업은 CPU에 의해 조정되며, CPU는 rendering을 위해 언제, 무엇을 GPU로 전송할지 결정한다.

  • 유연성 및 제어
    : 지휘자 (기획자) 로서의 CPU의 역할은 개발자에게 rendering 과정에 대한 더 많은 유연성과 제어 기능을 제공한다. 개발자는 게임 로직, 사용자 입력 및 기타 요소를 기반으로 높은 수준의 결정을 내린 다음 특정 작업을 GPU로 보낼 수 있다.

  • 다른 시스템과의 통신
    : I/O, 네트워크, 스토리지 등 많은 다른 시스템이 CPU와 통신한다. CPU는 이러한 다양한 시스템의 데이터를 수집, 통합하고 이를 기반으로 의사 결정을 내린 후 GPU에 특정 rendering 작업을 할당하는 중심점이 된다.

본질적으로 GPU는 rendering이라는 특정 잡어에 매우 능숙한 전문가와 같지만, CPU는 전체 프로세스를 관리하고 의사 결정을 내리며 컴퓨터의 다양한 시스템과의 창구가 되는 Generalist다. 이러한 분업을 통해 각 하드웨어가 각자의 강점에 맞게 사용되므로 보다 효율적이고 효과적인 컴퓨팅 환경을 구축할 수 있다.