익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT위키
검색
GPGPU
편집하기 (부분)
IT위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
== GPGPU 개념의 등장 배경 == 초기 [[컴퓨터]]는 CPU가 화면에 출력할 정보를 계산하는 것은 물론 [[디스플레이]]에 보낼 전기 신호까지도 직접 생성했으며, 이 때문에 화면 출력을 하는 것 자체가 CPU의 연산을 소모하는 행동이었다. 이 때는 아예 CPU가 연동된 시스템 클럭이 디스플레이와의 통신 [[프로토콜]]과 연동되어 있을 정도로 얽혀 있었다. 이후 1980년대에 [[16비트]] 컴퓨터의 시대가 오면서 화면 출력의 역할은 메인보드 안에 있는 디스플레이 전용 회로를 거쳐 별도로 판매되는 [[그래픽 카드]]가 전담하게 되었지만, 이때까지도 그래픽 카드의 역할은 [[RAM|메모리]]에 표현된 이미지를 화면으로 옮기는 역할에 지나지 않았다. 이 시대의 모든 디스플레이는 순수하게 글자만 표시하는 문자 모드 아니면 2D 화면을 표시하는 그래픽 모드, 두 가지였기 때문에, 화면에 표시되는 정보가 담긴 RAM의 주소가 하드웨어에 예약 되어있었고, 그래픽 카드는 직접 RAM의 해당 구간을 읽어 디스플레이하는 역할을 담당했다. 그래픽 카드의 역할이 본격적으로 커지기 시작한 것은 슈퍼 VGA(SVGA)의 등장과 3D 그래픽의 부상과 맞물려 있다. [[VGA]] 그래픽 시절까지는 화면 전체를 표시하기 위한 메모리 용량이 기본적으로 시스템의 하드웨어 기본 메모리인 1MB의 일부를 예약해서 쓰는 것만으로 충분했지만, 해상도와 색상 가짓수가 늘어나면서 화면을 담기 위한 메모리 공간이 기하급수적으로 늘어나기 시작했다. 그래픽 카드 제조사들은 자신들이 제조하는 카드 안에 보조 메모리를 집어넣고 그 사용법을 프로그래머들에게 배포하기 시작했다. 이때부터 내부 메모리를 제어하는 등 그래픽 카드 안에 점점 복잡한 처리 회로가 추가되기 시작했다. 흔히 잘 알려지지 않은 당시 SVGA들의 특화기능으로, '2D 가속기능' 이 있다. 이것은 [[GUI]] 프로그램들이 점점 많아지고 [[Windows|윈도우]] 그래픽 환경에서 구동되는 사무, 전문 프로그램들이 늘어나자 2D 윈도우의 화면 처리 속도를 높이기 위한 기능이었다. 실제로 그 이전까지 [[비디오 게임]]이 아닌 사무에서 2D 그래픽의 속도는 중요하게 취급되지 않았지만, 윈도우에서는 사용자의 입력이나 데이터 처리 표시 등이 모두 그래픽으로 즉각 반응해야 했기 때문에 화면의 속도도 중요하게 취급되었다. 486부터 펜티엄까지 시절의 그래픽 카드에선 화면 출력 속도가 빠르다는 사실이 꽤 중요하게 사용된 마케팅 포인트였다. 이어 개인용 컴퓨터에서 3D 그래픽이 사용된 게임을 하게 되면서 그래픽 카드에 대한 요구가 더 증가했다. 컴퓨터는 특정 게임 하나만을 위해 제작된 기기가 아닌 만큼 3D 그래픽을 처리하기 위해서는 프로그램별로 3D 처리 기능을 내장시켜 줘야 했다. 초기의 프로그램들은 수학적으로 3차원 공간의 좌표를 직접 계산해서 처리했지만 이것은 수행하기 어려울 뿐만 아니라 성능이 낮다는 치명적인 단점이 있었다. 따라서 당시에도 이미 2D 가속 기능, SVGA 고해상도 처리 기능 등 사용자 니즈에 맞춰 제품과 그 사용 솔루션을 함께 개발해서 팔아오던 각 그래픽 카드 제조사들은 게임 개발자들을 위해 당시 많이 사용되던 3D 계산 기능들을 정리해 하드웨어에 내장시키고, 그것을 사용하기 위한 [[라이브러리]]를 프로그래머들에게 제공하기 시작했다. 이 때 등장한 것이 [[글라이드|GLIDE]]와 같은 하드웨어 가속 [[API]]였으며, [[OpenGL]], 윈도우 [[DirectX]] 등이 등장했다. 초기의 그래픽 API들과 그것을 지원하는 그래픽 카드 하드웨어의 기능들은 기껏해야 3차원 공간에서 점을 찍고, 점을 이어서 선을 그려주는 것에서 출발했다. 그러나 일단 선을 이어 삼각형 이상의 면을 만들게 되고 나자 이것에 색을 채워줄 필요성이 생겼다. 처음에는 각도에 따른 명암만 달리하는 정도였지만, 점차 하드웨어가 발달하고 고객들의 눈높이가 올라가면서 텍스처를 입히거나, 각도에 따라 조명의 비율에 따라 색의 계조를 넣어주는 등 점점 고도화된 계산이 적용되었다. 이것은 결국 픽셀 하나하나마다 그 위치의 텍스처 색상, 그 위치에 비치는 빛, 사용자 시점과의 각도 등을 계산하여 정확한 [[RGB]] 컬러를 계산해야 하는 단계까지 도달했고, 이것이 픽셀 [[셰이더]]의 시작이다. 이렇게 되자 그래픽 카드는 화면에 있는 모든 픽셀에 대한 거의 동일한 계산작업을 매 프레임마다 해야하는 상황이 되었고, 이러한 처리를 하기 위해서는 무식하게 처리속도만을 올려 작업을 반복하는 것보다 해당 처리회로의 갯수를 늘려 한꺼번에 여러 픽셀씩 해치우는 것이 보다 효과적인 상황이 되었다. 그래서 '''이 시기부터 그래픽 카드는 병렬처리 능력을 높여'''갔다. 2006년 [[엔비디아]]에서 [[GeForce 8|G80]] 아키텍처를 내놓으면서 시대의 흐름이 바뀌었다. 그 이전까지의 GPU 컴퓨팅이라는 것이 어디까지나 주 기능에 덧붙여진 보조적인 기능이었지만, 엔비디아 CEO [[젠슨 황]]은 아예 미래의 그래픽 카드는 '연산 전용 장치'로서 역할이 바뀔 것이라는 비전을 제시하고 아예 병렬 처리 기능을 중심에 놓고 그것을 확장해서 그래픽 연산기능을 제공하는 아키텍처를 출시했다. 이렇게 병렬 처리 전용으로 처음 제공된 API가 [[CUDA]]이며, 이 때부터 프로그래머들과 교류하면서 성능 및 편의성을 개선한 덕분에 아직까지 GPGPU API의 최강자 지위를 차지하고 있다. 후발주자들은 컨소시엄을 만들어 [[OpenCL]] 등으로 범용성을 추구하는 등으로 우회한 장점을 추구했지만 파편화로 인한 최적화 성능의 부족 및 개발자 친화성 부족 등이 발목을 잡아 밀리고 있는 실정이다.
요약:
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
분류별 보기
일반 IT용어
프로젝트 관리
디지털 서비스
블록체인
인공지능
소프트웨어 공학
운영체제
컴퓨터 구조
자료 구조
데이터 과학
데이터베이스
네트워크
프로토콜
보안
컴플라이언스
개인정보보호
표준
경영학
기업 IT
조직/단체
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록