CPU
Central Processing Unit, 중앙처리장치라고 불리는 CPU는 컴퓨터의 두뇌를 담당하고 있다. CPU는 명령어 하나로 처리할 수 있는 기능이 많고 각종 제어처리를 위한 부분이 많다. 또한 다양한 작업을 빠르게 처리하기 위해서 복잡한 ALU 구조를 가지고 있다. 따라서 CPU는 직렬처리에 최적화 된 몇개의 코어로 구성되어 있다.
CPU는 코드 실행, 여러 디바이스(키보드, 하드디스크)들이랑 상호작용, 사용자들로 입력받은 명령어들을 해석, 연산 후 결과를 출력하는 역할을 한다.
GPU
Graphics Processing Unit, 그래픽처리장치라고 불리는 GPU는 픽셀로 이루어진 영상을 처리하는 용도로 탄생했다. GPU는 특화된 연산을 병렬적으로 나누어서 처리한다. 따라서 특화된 연산을 빠른 속도처리하기 위해 단순한 ALU 구조를 가지고 있다. 따라서 GPU는 병렬 처리용으로 설계된 수천 개의 작은 효율적인 코어로 구성되어 있다. 위에서 설명한 CPU가 GPU를 제어한다.
GPU는 AI 기계학습, 컴퓨터 그래픽 픽셀 연산, 3D 렌더링 등 에 사용된다.
CPU로는 GPU를 대체할 수 없는걸까?
기존 CPU는 1개의 코어로 1개의 작업밖에 할 수 없었다. 그래서 최근에는 MutiCore CPU라고해서 여러개의 코어를 가진 CPU가 등장하고 있다. intel core i9 extreme edition은 18개의 코어를 가지고 있으며 각 코어는 초당 30억 사이클을 실행할 수 있는 3.00GHZ의 속도를 가지고 있다. 그렇다면 더 이해를 할 수 없다... CPU에 코어를 많이 늘리면되지 않을까?? 라는 생각이 든다.
하지만 그 생각은 한계가 있다. CPU는 에너지 소모가 심하다. 이러한 CPU에 코어를 무작정 많이 늘린다면?? 우리의 전기세는 엄청나 질 것이다... GPU는 CPU보다 코어의 갯수가 많다고 했다. Nvidia Geforce RTX 3090을 예로 들면 해당 그래픽 카드는 10,496개의 코어를 가지고 있으며 각 코어 당 1.70GHZ의 속도를 가지고 있다. 코어의 갯수가 CPU랑 비교하면 어마무시하다. 이렇기 때문에 GPU가 인공지능 학습, 그래픽 픽셀 연산에 사용되는 이유이다. 이들은 간단한 계산들이지만 동시에 빠르게 연산되어야 할 필요가 있다. 쉽게 설명하면 여러분들이 게임을 할 때나 유튜브로 영상을 볼 때 화면이 부드럽게 넘어간다고 느끼는 것은 60fps 정도가 될 것이다. 이는 초당 60개의 프레임이 보여진다고 생각하면 된다. 초당 60개?? 별로 안되네 라고 생각하겠지만 여러분이 지금 이 글을 보고 있는 모니터를 생각해야한다. 요즘 보통 1920*1080 ~ 4096*2160 해상도를 가지고 있을 텐데 해당 숫자들이 하나의 픽셀이다. 여러분들이 부드럽게 이질감 없이 보이기 위해는 모든 픽셀들이 각 위치에 맞는 색깔들을 동시에 계산하고 화면에 보여져야한다. 만약에 여러분들의 4K(4096*2160) 모니터로 60fps 동영상을 보고있다면 초당 4096*2160*60 을 계산하면서 여러분들에게 보여주고 있는 것이다. 이런 동시에 빠르고 간단한 연산은 GPU가 최적일 수 밖에 없다.
TPU
Tensor Process Unit, 2016년 Google에서 발표한 장치이다. 기존 GPU보다 백터/행렬 연산의 병렬처리에 특화되어 있어 선형대수 연산 성능을 가속화하여 복잡합 대형 신경망 모델을 학습시킬 때 정확성 달성 시간을 최소화 시킬 수 있다. Google에서 적힌 설명으로는 GPU에서는 몇주가 걸리는 모델 학습이 몇 시간안에 학습이 된다고 적혀있기도 한다. 아직까지 특허를 내지 않고 정확하게 공개되지는 않았다.
용어정리
ALU : 산술 논리 장치, 산술연산(덧셈, 뺄셈 등등) 과 논리연산(논리합, 논리 곱)을 계산하는 디지털 회로
코어 : 이진법으로 표현된 정보의 저장을 위한 자성 물질