그래픽 처리 장치
그래픽 처리 장치( - 處理裝置) 또는 GPU()는 메모리를 빠르게 처리하고 바꾸어 화면으로 출력할 프레임 버퍼 안의 영상 생성을 가속하도록 설계된, 전문화된 전자 회로이다. VPU(visual processing unit)라고도 한다. GPU는 임베디드 시스템, 휴대 전화, 개인용 컴퓨터, 워크스테이션, 비디오 게임 콘솔에 사용된다. 현대의 GPU는 컴퓨터 그래픽과 영상 처리를 매우 효과적으로 처리하며, 고도의 병행 구조는 큰 덩어리의 영상 데이터가 병행 처리되는 알고리즘에 다용도 CPU보다 능률적이다. 개인 컴퓨터에서 GPU는 그래픽 카드에 부착되고, 메인보드나 CPU에 따라서는 다이에 포함되기도 한다.
'GPU'의 용어는 1999년 엔비디아에서 지포스 256을 '세계 최초의 GPU'로 판매하면서 널리 알려졌다. 지포스 256은 단일 칩 프로세서와 통합된 TCL(Transform, clipping, and lighting), 초당 1천만 개 이상의 폴리곤(다각형)을 처리할 수 있는 렌더링 엔진을 갖추고 있었다. 라이벌인 ATI 테크놀로지스는 2002년 라데온 9700을 발매하면서 'VPU'(영상 처리 장치)라는 용어를 사용하였다.
GPU는 그래픽과 관련된 연산을 할 때에 CPU의 부담을 크게 줄일 수 있다.
OS X은 10.6부터 최초로 운영 체제 수준에서 GPU를 사용하기 시작했다.
1983년에 인텔에서 제조한 iSBX 275 그래픽 컨트롤러 멀티모듈 보드는 82720 그래픽 디스플레이 컨트롤러에 기반하여 제작되었으며 직선, 곡선, 사각형과 캐릭터 비트맵들에 대하여 가속기능을 지원했다. 1990년대를 지나며 2D 그래픽 가속기능은 계속 발전하기 시작하였다. 제작 성능이 좋아짐에 따라 추가적인 API들(마이크로소프트 WinG, 윈도 3.X를 위한 그래픽 라이브러리, 윈도 98을 지원하는 DirectDraw 등)도 많이 개발되기 시작하였다. 1990년대 초중반에는 CPU가 실시간 3D그래픽을 구현해 냈지만 게임의 수요가 높아짐에 따라 그래픽 카드의 3D처리가 요구되었다. 따라서 3D API프로그램들이 등장하기 시작했는데 OpenGL, DirectX 등이 그것이라고 할 수 있겠다. 이런 API 프로그램들이 등장하면서 자연스레 전문가용 3D 그래픽카드가 등장하였지만, 주목할만한 일반 사용자용 3D 그래픽 카드는 엔비디아 지포스 256(NV10 이라고도 알려짐) 이라고 할 수있다. 2000년대에 들어서는 GPGPU등 여러가지 기능이 추가되어 CPU의 기능도 일부 담당할 수 있게 되었다
아케이드 기판에서는 1970년대 이후로 특화된 그래픽 칩을 사용하고 있었다. 초기 비디오 게임의 하드웨어를 이해하는 실마리는 프레임 버퍼에 사용되는 램이 매우 비쌌기에 비디오 칩은 화면이 모니터에 주사되어 출력되고 있을 때에 데이터를 모아 합성했다.
후지쯔의 MB14241 영상 표시 제어기는 다양한 1970년대의 아케이드 게임에서 스프라이트 그래픽의 출력 속도를 가속화하기 위해 사용되었으며, 다이토와 미드웨이 게임스의 '건 파이트'(1975), '씨울프'(1976), 스페이스 인베이더(1978) 등이 그 예이다.
그래픽 처리 장치는 부동 소수점 명령을 계산하는 그래픽 카드에 부착된 처리 장치이다. 그래픽 가속기는 그래픽 렌더링에 흔히 쓰이는 특별한 수학 명령을 포함하는 맞춤식 마이크로칩을 갖추고 있다. 이러한 마이크로칩이 효율적으로 동작하면 그래픽 가속기 또한 효율적으로 처리된다. 이들은 주로 3차원 게임이나 고사양 3차원 렌더링에 주로 쓰인다. 그래픽 처리 장치는 수많은 그래픽 기본 기하 명령을 담고 있어 호스트 CPU를 통해 화면에 표시하는 것보다 훨씬 더 빠르게 그리기를 처리할 수 있다.
초기 2차원 컴퓨터 그래픽스에 가장 흔히 쓰이는 명령들은 비트 블릿 명령, 또 RasterOp(블리터라 불리는 특수한 하드웨어에 일반적으로 쓰임)를 사용하는 여러 개의 비트맵 패턴 혼합 명령이었는데, 이 명령들은 텍스처 매핑에 주로 사용되었다. 또한 사각형, 삼각형, 원형, 호 등의 도형을 그리는 명령도 포함하였다. 이후의 그래픽 처리 장치들은 3차원 컴퓨터 그래픽스의 처리를 지원하기 위해 도형의 회전, 평행이동, 좌표 변환 등의 기하학적 명령이 추가되었다.
최신 그래픽 처리 장치들은 픽셀 셰이더, 버텍스 셰이더, 수퍼샘플링, 색 공간 변환 등의 복잡하고 다양한 명령을 지원하며, 디지털 영상의 재생을 가속하는 기능도 포함하고 있다. 이 명령의 많은 부분은 개발자가 직접 다룰 수 있도록 프로그래밍 가능한 인터페이스를 가진다.
또한 그래픽 처리 장치는 대량의 행렬과 벡터를 다루는 데 뛰어난 성능을 발휘하므로, 이러한 연산을 많이 사용하는 응용 프로그램들은 그래픽 처리와 관련 없는 작업에도 그래픽 처리 하드웨어를 이용하기도 한다.
그래픽카드의 저전력 및 소형화는 주요 그래픽 처리에 특화된 여러 하드웨어의 구성물로 이루어진 파이프라인을 프로그램이 가능한 추상화되고 통합된 로직 처리의 그래픽스 파이프라인으로 전환하는것으로 실현되었다.
이것은 스마트폰에 사용되는 이매지네이션 테크놀로지의 파워VR처럼 PC에서 사용되는 손바닥만한 크기의 하드웨어를 스마트폰에서 사용되는 손톱크기의 물리적인 사이즈로 전환을 가능하게 하고있는데 이러한 초 소형화와 DC 5V 전후의 초 저전력사용에 필수적인 역할을 하였다.
주요 그래픽 처리 영역들
개인용 컴퓨터에서 GPU의 주요 형태는 2가지가 있으며, 각기 수많은 동의어가 있다:
내장 그래픽스는 칩셋의 일부로서 메인보드에 내장할 수 있으며, 아니면 AMD APU, 인텔 HD 그래픽스처럼 CPU와 동일한 다이에 장착될 수 있다. 특정 메인보드에서 AMD의 IGP는 전용 사이드포트 메모리를 사용할 수 있다.
이 새로운 계열의 GPU는 로우엔드 데스크톱 및 노트북 시장의 내장 그래픽과 경쟁한다. 가장 일반화된 구현체는 ATI의 하이퍼메모리와 엔비디아의 터보캐시이다.
외부 GPU는 컴퓨터 밖에 위치시킨 그래픽스 처리 장치이다. 외부 그래픽스 프로세서는 노트북 컴퓨터와 함께 종종 사용된다. 노트북은 충분한 양의 RAM과 충분히 강력한 중앙 처리 장치(CPU)가 있을 수 있으나 강력한 그래픽스 처리 장치가 없고 에너지에 더 효율적이면서 성능이 더 낮은 온보드 그래픽스 칩을 장착한 경우가 있다. 온보드 그래픽스는 최신 게임을 플레이하는데, 또 영상 편집처럼 그래픽에 크게 의존하는 작업에 충분히 강력하지 않은 경우가 있다.
그러므로 노트북의 일부 외부 버스에 GPU를 장착하는 것이 선호될 수 있다. PCI 익스프레스는 이러한 목적을 위해 흔히 사용되는 유일한 버스이다.
외부 GPU는 벤더 차원에서 비공식 지원이 적을 수 있으나 수많은 열정가들이 eGPU 설정을 구현하고 있다.