이번 포스팅에서는 AI 반도체 기초라는 시리즈의 첫 글로 CPU GPU 차이와 구조적 특징 그리고 GPU가 왜 필요한지에 대해서 정리해보았습니다.
참고로 본 포스팅은 “AI 반도체 기초”라는 시리즈로 아래와 같이 2가지 포스팅으로 구성하였습니다.
AI 반도체 기초 (1) CPU GPU 차이와 구조, GPU 필요한 이유 (이번 포스팅)
AI 반도체 기초 (2) 합성곱 연산이란, GPU NPU 차이
최근 인공지능 산업이 빠르게 성장하고 있으며 이러한 인공지능 전용 칩의 생산과 판매도 많아지고 있습니다.
하지만 인공지능 개발에 어느 정도 역량이 있는 사람조차도 CPU GPU 차이 또는 TPU NPU의 용어에 대해 명확히 이해하지 못하는 경우가 있습니다.
이번 포스팅에서는 우선 CPU와 GPU를 정의하고 GPU가 필요한 이유에 대해 알아볼 예정입니다. 그리고 마지막으로 GPU 구조에 대해서 간단히 정리해보았습니다.
CPU란, CPU의 계산 구조
CPU는 Centralized Processing Unit의 약자로, 우리말로는 중앙처리장치라고 불리며, 컴퓨터에서 가장 기본적인 기억, 해석, 연산, 제어라는 4가지의 주요 기능을 관할하는 가장 기본적인 장치 입니다.
대부분의 CPU는 폰노이만 구조를 기반으로 하고 있습니다.
애니악과 폰 노이만
폰노이만 구조란 존 폰 노이만이 제안한 컴퓨터 구조로 명령어 입력 순서대로 미리 데이터를 가져와서 내부 캐시 메모리에 임시로 저장한 다음에 하나씩 처리하는 특징이 있습니다.
참고로 유명한 폰 노이만 구조에 대한 최초의 보고서는 여기 링크(영문) – “First Draft of a Report on the EDVAC” 과 같습니다.
예를 들어,
간단한 구조의 ISA(Instruction Set Architecture, 명령어 모음)를 통해
- CPU 내부 레지스터로 데이터 “1” 가져오기(로드)
- CPU 내부 레지스터로 데이터 “4” 가져오기(로드)
- 두 개의 레지스터 데이터 값을 더해서 결과를 다른 레지스터에 저장
- 결과 값을 메모리 주소를 지정하여 내보냄
라는 4개의 클럭이 지나야 순차적으로 계산이 완료되어 메모리에 결과값이 저장됩니다.
즉, 여기서 발생되는 문제점은 폰노이만 병목현상으로 메모리 값을 읽고 쓰기 때문에 기억장치에 병목 현상이 생긴다는 점 입니다.
항상 한번에 하나의 트랜잭션만 순차적으로 처리하는 구조로 클럭을 높여서 처리 속도가 빨라지더라도 높아진 클럭 만큼의 계산만 더 할 수 있습니다.
하지만 클럭의 개선은 발열 이슈 등으로 한계에 다다르게 되었고 결국 코어의 개수를 늘리는 방향으로 이루어지고 있습니다.
GPU란, GPU가 필요한 이유
GPU는 Graphics Processing Unit의 약자로 처음에는 그래픽 처리를 위한 대량 연산을 수행하기 위한 목적으로 시작되었습니다.
그래픽 처리를 위해서는 엄청난 양의 텍스쳐 연산과 픽셀 렌더링을 위해 엄청난 양의 부동소수점 곱셈 연산이 발생하는데요,(참고로 부동 소수점 곱셈 연산이란 정수간의 곱셈이 아닌 소수점이 있는 실수 간의 곱셈을 의미합니다.)
이렇게 엄청난 대량의 부동소수점 곱셈 연산이 CPU에서 진행이 불가능한 건 아니지만,
폰노이만 병목현상으로 순차처리 방식이기 때문에 한번에 하나씩 순차적으로 처리되기 때문에 정작 중요한 프로그램 구동이 단순 연산을 수행하기 위해 대기하게 되는 경우가 발생됩니다.
CPU GPU 차이와 GPU 구조
CPU GPU 차이는 이렇게 GPU의 대량의 부동 소수점 연산에 최적화된 구조를 알면 이해가 쉽습니다.
GPU는 그래픽 처리에 필요한 계산에 중점을 맞춰서 복잡한 명령어 세트나 많은 수의 레지스터 확보 또는 복잡한 캐시 구조가 아닌 그저 동일한 형태의 부동 소수점 곱셈 대량 수행에 최적화된 형태입니다.
수백~수천개의 코어를 탑재한 대신 내부 캐시 메모지 비중이 크지 않아 처리 속도는 느린 편이고 다만 단순한 명령어를 동시에 병렬 연산이 가능한 특징이 존재합니다.
CPU는 복잡한 명령어세트를 실행하기 위한 정교한 아키텍처를 가지고 있기 때문에 어떠한 형태의 프로그램이라도 수행이 가능합니다.
그러나 이러한 능력 만큼 계산당 비용이 커지는데요, CPU도 부동소수점 연산이 가능하지만 그 시간에 다른 복잡한 일을 하는 것이 더 효율적입니다.
GPU는 단순한 형태로 만들어진 대량의 계산을 CPU로부터 독립시키기 위해 설계된 Co-Processor로 CPU 코어의 복잡한 구조를 최대한 심플하게 하여 개별 계산당 비용을 최대한 낮춘 다음, 단순한 형태의 코어를 대량으로 집적하여 단순 연산을 병렬로 수행할 수 있도록 구성되었습니다.
즉 CPU GPU 차이, GPU의 특징은 그래픽 처리에 필요한 대량의 부동소수점 연산을 저비용으로 수행할 수 있는 특징이라고 할 수 있습니다.
물론 GPU가 단순히 빠르게 화면에 그래픽스 작업 = 부동 소수점 계산을 수행하는 동안 CPU는 보다 중요한 복잡한 일을 수행하게 됩니다.
이번 포스팅에서는 CPU와 GPU를 정의하고 GPU가 필요한 이유와 CPU GPU 차이 그리고 마지막으로 GPU 구조에 대해서 간단히 정리해보았습니다.
다음 포스팅에서는 좀 더 합성곱 연산이 무엇이고 어떤 의미가 있는지 알아보고 요즘 자주 언론 매체 등에서 자주 등장하는 NPU와 GPU 차이에 대해 정리해볼 예정입니다.
참고로 본 포스팅은 “AI 반도체 기초”라는 시리즈로 아래와 같이 2가지 포스팅으로 구성하였습니다.
AI 반도체 기초 (1) CPU GPU 차이와 구조, GPU 필요한 이유 (이번 포스팅)