전산학
CPU 구조 및 원리, GPU와의 비교
mkdir
2021. 10. 28. 00:02
CPU
- 논리연산 + 산술연산을 수행하는 중앙처리장치
- DRAM(동적RAM), ALU(Arithmatic Logic Unit, 산술논리장치), Control(제어장치), Cache(캐시메모리)의 4종류로 이루어져 있음
- 명령어가 입력된 순서대로 처리하는 순차 처리 방식(Queue)에 특화되어있는 연산장치
- 명령이 복잡하고 어려운 계산에 적합합(ALU가 적고 Control이 큼)
구성요소
- DRAM
- 현재 실행중인 프로그램, 열려있는 데이터 등 CPU에서 처리될 데이터가 존재하는 위치
- DRAM과 비교되는 것으로 SRAM, NAND Flash가 있으나 더 깊게 들어가면 반도체 공학이 되어버리므로, 이러한 것이 있다고만 알고 넘어가도록 한다. 사실 본인도 인터넷에 쓰여진 것 이상은 모른다.
- Cache
- 가장 빠른 메모리중 하나로, CPU 에서 자주 사용하는 데이터를 보관
- DRAM과 비슷하지만, DRAM보다 가격이 싸고 훨씬 빠르며 결정적인 차이점은 DRAM의 위치가 항상 내부에 있는 것과는 별개로 Cache 메모리는 내부 및 외부에 모두 존재할 수 있음
- ALU
- 산술연산 및 논리연산을 처리하는 주체로, 일련의 작업을 병렬로 처리할 수 있게 해준다.
- 일반적으로 제어장치의 명령을 받으며 연산 결과의 일부를 Cache에 저장하고 다시 DRAM으로 결과를 리턴
- Control
- 제어장치로, 나머지 장치들을 올바르게 연산이 실행되도록 제어
CPU의 작동방식
- RAM이 입력장치에서 입력받은 데이터 또는 디스크에 저장된 프로그램을 read
- CPU는 프로그램을 실행하기 위해 RAM에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 disk에 저장하거나 출력장치로 보냄
- 제어장치가 이 과정중 명령어가 순서대로 실행되도록 제어
GPU
- CPU와 동작 및 하는 역할은 거의 유사하지만, ALU가 적어 고등 계산보다는 단순 계산을 주로 실행
- CPU에 비해 control이 굉장히 적으며, 소형의 ALU가 병렬로 다수 위치
- 데이터 처리를 위한 메모리 용량이 성능 지표
- CPU에 비해 집적도가 높고, 고속의 병렬 연산이 특징
GPU 사용시 발생하는 이슈
- 복잡한 알고리즘
- 2012년 DNN이 본격적으로 활성화되기 시작함(Large Scale Image Recognition Challenge 2012, AlexNet)
- 1차원적인 선형 연산에서 n차원 비선형 연산으로의 변화
- 차원이 늘어날수록 연산에 필요한 파라미터는 폭증하여, 2015년 우승 모델인 Resnet의 경우에는 110억개의 파라미터가 존재한다고 한다.
- 특정 순간에만 집적되는 사용률
- 모델 훈련의 경우에만 주로 사용됨
- 모델이 훈련되고있지 않을 경우 들이는 투자비용에 비해 유휴시간이 김
따라서, GPU Clustering의 요구 및 수요가 생기기 시작함
GPGPU
- CPU가 수행하던 작업을 GPU가 대신 수행하도록 하는 기술
- 복잡한 연산을 대량으로 처리해야하는 작업에 적합
- 가상화폐 채굴, ML/DL, 게임, 그래픽 프로세싱 등이 GPGPU를 요구하는 대표적인 기술
- CUDA, OpenCL이 대표적인 GPGPU 아키텍처
일반적인 GPGPU 동작방식
- CPU의 경우
- DRAM에 데이터 및 프로그램이 위치
- DRAM으로부터 데이터를 CPU로 옮겨 연산(Control 및 ALU)
- 연산의 일부를 캐싱하고 다시 DRAM으로 리턴
- GPGPU의 경우
- DRAM으로 리턴한 연산 결과를 다시 GDRAM으로 이동
- GPU로 데이터를 옮겨 연산
- 연산 결과를 GDRAM으로 리턴
- GDRAM의 데이터를 DRAM으로 리턴
GPGPU의 문제점
- 비효율적인 동선
- 비교적 가까운 위치의 DRAM-CPU는 그렇다 치더라도, DRAM과 GDRAM의 거리는 물리적으로나 전자적으로나 굉장히 먼 거리.
- 따라서 DRAM 및 GDRAM 사이의 데이터 이동은 유의미한 latency를 낳고, 이는 성능의 하락으로 이어짐
그래서 등장하게 된 GPGPU 아키텍처
- CUDA 및 OpenCL은 이러한 비효율적인 데이터 이동을 DRAM및 GDRAM의 통합으로 극복하려 함
- DRAM 및 GDRAM 사이의 간극을 줄이고, cpu에서 연산을 거치지 않고 cpu의 연산장치의 제어를 받는 채로 GPU의 ALU를 활용하여 연산
- RAM의 가상화 및 통합