개요

GPU는 Rater based graphics에서 가속을 하기 위해서 등장하였다. GPU는 Turing complete이기 때문에 CPU가 할 수 있는 모든 일을 처리할 수는 있지만, 병렬 컴퓨팅이 아닌 환경에서는 CPU에 비해 매우매우 느리다. GPU는 단순한 계산의 병렬처리에 특화 되어 있기 때문에, 행렬 처리에 특화되어 있다고도 할 수 있다. 실리콘 다이에 있어서 CPU에 비해서 GPU는 ALU가 차지하는 면적이 훨씬 크게 차지하고 있다. 따라서 peak performance에서 GPU는 Order of Magnitude에 의해서 CPU보다 전력은 적게 먹으면서 더 많은 일을 처리할 수 있다.

  1. GPU는 명시적으로 병렬 처리를 지정함으로써, 연산 유닛에 불필요한 부분의 낭비를 줄여서 CPU대비 더 많은 ALU를 사용할 수 있다. 즉 CPU는 AVX나, prefetch, branch prediction과 같은 복잡한 구조를 사용함으로써 병렬화를 달성하지만 GPU는 이러한 부분을 최소화 하여 많은 면적을 병렬처리화 하여 더 많은 연산을 처리할 수 있도록 하였다.
  2. GPU는 소스코드의 Fetch, Decode와 같은 부분을 CPU처럼 모든 Core마다 다르게 처리하게 하지 않고 다수의 코어가 하나의 Fetch/Decode 영역을 공유하게 하여, 불필요한 에너지 낭비와 추가적인 Instruction을 줄였다.
  3. 여러개의 많은 ALU를 하나의 Core에 할당함으로써 Stall을 늦춘다.

GPU Memory Hierarchy

그래픽 처리 유닛

그래픽 처리 장치는 부동소수점 명령을 계산하는 그래픽 카드에 부착된 처리 장치이다. 그래픽 가속기는 그래픽 렌더링에 흔히 쓰이는 특별한 수학 명령을 포함하는 맞춤식 마이크로칩을 갖추고 있다. 이러한 마이크로칩이 효율적으로 동작하면 그래픽 가속기 또한 효율적으로 처리된다. 이들은 주로 3차원 게임이나 고사양 3차원 렌더링에 주로 쓰인다. 그래픽 처리 장치는 수많은 그래픽 기본 기하 명령을 담고 있어 호스트 CPU를 통해 화면에 표시하는 것보다 훨씬 더 빠르게 그리기를 처리할 수 있다.

초기 2차원 컴퓨터 그래픽스에 가장 흔히 쓰이는 명령들은 비트 블릿 명령, 또 RasterOp(블리터(blitter)라 불리는 특수한 하드웨어에 일반적으로 쓰임)를 사용하는 여러 개의 비트맵 패턴 혼합 명령이었는데, 이 명령들은 텍스처 매핑에 주로 사용되었다. 또한 사각형, 삼각형, 원형, 호 등의 도형을 그리는 명령도 포함하였다. 이후의 그래픽 처리 장치들은 3차원 컴퓨터 그래픽스의 처리를 지원하기 위해 도형의 회전, 평행이동, 좌표 변환 등의 기하학적 명령이 추가되었다.

최신 그래픽 처리 장치들은 픽셀 셰이더, 버텍스 셰이더, 수퍼샘플링, 색 공간 변환 등의 복잡하고 다양한 명령을 지원하며, 디지털 영상의 재생을 가속하는 기능도 포함하고 있다. 이 명령의 많은 부분은 개발자가 직접 다룰 수 있도록 프로그래밍 가능한 인터페이스를 가진다.

또한 그래픽 처리 장치는 대량의 행렬과 벡터를 다루는 데 뛰어난 성능을 발휘하므로, 이러한 연산을 많이 사용하는 응용 프로그램들은 그래픽 처리와 관련 없는 작업에도 그래픽 처리 하드웨어를 이용하기도 한다.