×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,427,131명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
강현대 : 5000원(busyhuman)
익명 : 5000원(알고리즘 학습러)


CPU와 GPU의 차이





위의 동영상의 첫번째 로봇은 CPU로 이루어진 로봇, 두번째 로봇은 GPU로 이루어진 로봇이다.


CPU와 GPU의 차이는 위의 동영상에서 자세히 보여주기도 하지만 CPU가 GPU보다 별로라고 생각이 들 수 있다.


하지만 위의 동영상은 GPU 제작 회사에서 만든 동영상이기에 그런 것이지 실제로는 서로 특징과 장단점이 존재한다.



아래 그림을 통해 CPU와 GPU의 차이를 보자.





CPU, GPU와 같은 프로세서 내부는 크게 연산을 담당하는 산출연산처리장치(ALU)와 명령어를 해석·실행하는 컨트롤유닛(CU), 


각종 데이터를 담아두는 캐시로 나뉜다. CPU는 명령어가 입력된 순서대로 데이터를 처리하는 직렬(순차) 처리 방식에 특화된 구조를 

가지고 있다. 


이때 CPU는 한 번에 한 가지의 명령어만 처리하기 때문에 연산을 담당하는 ALU의 개수가 많을 필요가 없다. 


최근 출시된 옥타(8)코어 CPU에는 코어 당 1개씩, 총 8개의 ALU가 탑재돼 있다. 



CPU 특징


CPU 내부 면적의 절반 이상은 캐시 메모리로 채워져 있다. 캐시 메모리는 CPU와 램(RAM)과의 속도차이로 발행하는 병목현상을 막기 위한 장치다. 


CPU가 처리할 데이터를 미리 RAM에서 불러와 CPU 내부 캐시 메모리에 임시로 저장해 처리 속도를 높일 수 있다. 


CPU가 단일 명령어를 빠르게 처리할 수 있는 비결도 이 때문이다. 



GPU 특징


GPU는 여러 명령어를 동시에 처리하는 병렬 처리 방식을 가지고 있다. 


캐시 메모리 비중이 크지 않고 연산을 할 수 있는 ALU 개수가 많다1개의 코어에는 수백, 수천개의 ALU가 장착돼 있다. 


GPU는 동일하게 개별 스레드가 서로 다른 명령을 실행해도 병렬적이기에 성능에 부정적인 영향을 미치지 않는다.



CPU와 GPU 차이점


CPU


CPU는 입출력장치, 기억장치, 연산장치를 비롯한 컴퓨터 리소스를 이용하는 최상위 계층 장치인 ‘중앙처리장치’로서, 

컴퓨터의 두뇌와 같은 역할을 담당한다. 


따라서 데이터 처리와 더불어 프로그램에서 분석한 알고리즘에 따라 다음 행동을 결정하고 멀티태스킹을 위해 나눈 작업들에 우선순위를 지정하고 전환하며 가상 메모리를 관리하는 등 컴퓨터를 지휘하는 역할을 수행한다.

컴퓨터 프로그램의 대부분은 복잡한 순서를 가진 알고리즘을 가지고 작동하므로 CPU가 적합하다.


간단하고 많은 계산식은 GPU에 비해 오래걸린다.


하지만 단일 코어일 경우에는 다양한 계산식에 대해서는 CPU가 GPU보다 연산 속도가 빠르다.




GPU


CPU와 달리 GPU는 코어가 아주 많기 때문에 간단한 계산식을 병렬적으로 빠르게 처리가 가능하다.

(1000개의 덧셈식을 한번에 병렬로 처리가 가능하다.)


단점으로는 복잡한 식을 입력하면 도리어 CPU 연산 속도보다 느려질 수 있다. 즉, GPU는 자신이 할 수 있는 연산에 대해서만 빠르고 그 외의 복잡한 연산이 들어오면 오히려 느려질 수 있다.


그래서 GPU가 비트코인 채굴에서 CPU보다 더 강력하다는 이유이다.



비유해보자면 옥타코어 CPU는 속도가 빠른 8대의 비행기로 짐을 실어 나르는 것에 비유할 수 있고, GPU는 속도는 느리지만 1000대의 기차로 짐을 실어나르는 것에 비유할 수 있다. 


즉, 처리해야 할 명령어와 데이터의 성격에 따라 때로는 CPU, 때로는 GPU가 빠를 수가 있다


그리고 GPU는 아주 많은 수의 프로세싱 코어와 여러개의 ROP가 동시에 동작하므로 CPU보다 훨씬 높은 메모리 대역폭을 필요로 한다.





GPGPU

General-Purpose computing on GPU. 즉, 그래픽 작업이 아닌 CPU 작업을 할 때도 GPU를 이용해서 CPU 성능을 높이는 기술이다.

즉, 일반적으로 CPU가 맡았던 범용적인 계산을 GPU를 통해서 하는 것을 GPGPU라 한다.

GPGPU를 하려면, 즉 GPU에게 연산을 시키려면 두가지 하드웨어 요구사항이 있다:

프로그램 가능한 셰이더: 그래픽 카드가 기본 지원하지 않는 연산을 하기 위해 필요하다.
데이터 자료형의 추가: 그래픽스는 행렬만 사용한다.

특별한 그래픽카드가 필요한 것은 아니지만(최근 나오는 모든 그래픽카드는 이 두가지 요구조건을 충족한다.) 저러한 요구 사항이 충족되어야 GPGPU가 가능하다.

이러한 하드웨어 뿐만 아니라 이를 다룰 툴인 소프트웨어도 필요한데, CUDA, OpenCL와 DirectCompute 등이 대표적이다.