CPU는 연산을 담당하는 ALU와 명령어를 해석하고 실행하는 컨트롤(control), 그리고 데이터를 담아 두는 캐시(cache)로 구성되어 있습니다. 따라서 CPU는 명령어가 입력되는 순서대로 데이터를 처리하는 직렬 처리 방식입니다. 즉, CPU는 한 번에 하나의 명령어만 처리하기 때문에 연산을 담당하는 ALU(Arithmetic Logic Unit)(산술 논리 장치) 개수가 많을 필요가 없습니다.
반면 GPU는 병렬 처리를 위해 개발되었습니다. 캐시 메모리 비중은 낮고, 연산을 수행하는 ALU 개수가 많아졌습니다. GPU는 서로 다른 명령어를 동시에 병렬적으로 처리하도록 설계되었기 때문에 성능에 부담이 없습니다. 즉, GPU는 연산을 수행하는 많은 ALU로 구성되어 있기 때문에 여러 명령을 동시에 처리하는 병렬 처리 방식에 특화되어 있습니다. 또한, 하나의 코어에 ALU 수백~수천 개가 장착되어 있기 때문에 CPU로는 시간이 많이 걸리는 3D 그래픽 작업 등을 빠르게 수행할 수 있습니다.
개별적 코어 속도는 CPU가 GPU보다 훨씬 빠릅니다. 예전보다 GPU 코어 속도가 빨라졌다고는 하지만 여전히 CPU만큼 성능을 내기는 어렵습니다. 달리 말하면 CPU가 적합한 분야가 따로 있고, GPU가 적합한 분야가 따로 있습니다. 구체적으로 딥러닝을 예로 들어 보겠습니다. 파이썬이나 매트랩(MATLAB)처럼 행렬 연산을 많이 사용하는 재귀 연산이 대표적인 ‘직렬’ 연산을 수행합니다. 즉, 3×3 행렬에서 A·B·C열이 있을 때 A열이 처리된 후에야 B열이 처리되고 C열이 처리되는 순차적 연산일 때는 CPU가 적합합니다.
▲ 그림 8-4 CPU와 GPU의 구조 비교