전산학

CPU 구조 및 원리, GPU와의 비교

mkdir 2021. 10. 28. 00:02

CPU

  • 논리연산 + 산술연산을 수행하는 중앙처리장치
  • DRAM(동적RAM), ALU(Arithmatic Logic Unit, 산술논리장치), Control(제어장치), Cache(캐시메모리)의 4종류로 이루어져 있음
  • 명령어가 입력된 순서대로 처리하는 순차 처리 방식(Queue)에 특화되어있는 연산장치
  • 명령이 복잡하고 어려운 계산에 적합합(ALU가 적고 Control이 큼)

구성요소

  1. DRAM
  • 현재 실행중인 프로그램, 열려있는 데이터 등 CPU에서 처리될 데이터가 존재하는 위치
  • DRAM과 비교되는 것으로 SRAM, NAND Flash가 있으나 더 깊게 들어가면 반도체 공학이 되어버리므로, 이러한 것이 있다고만 알고 넘어가도록 한다. 사실 본인도 인터넷에 쓰여진 것 이상은 모른다.
  1. Cache
  • 가장 빠른 메모리중 하나로, CPU 에서 자주 사용하는 데이터를 보관
  • DRAM과 비슷하지만, DRAM보다 가격이 싸고 훨씬 빠르며 결정적인 차이점은 DRAM의 위치가 항상 내부에 있는 것과는 별개로 Cache 메모리는 내부 및 외부에 모두 존재할 수 있음
  1. ALU
  • 산술연산 및 논리연산을 처리하는 주체로, 일련의 작업을 병렬로 처리할 수 있게 해준다.
  • 일반적으로 제어장치의 명령을 받으며 연산 결과의 일부를 Cache에 저장하고 다시 DRAM으로 결과를 리턴
  1. Control
  • 제어장치로, 나머지 장치들을 올바르게 연산이 실행되도록 제어

CPU의 작동방식

  1. RAM이 입력장치에서 입력받은 데이터 또는 디스크에 저장된 프로그램을 read
  2. CPU는 프로그램을 실행하기 위해 RAM에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 disk에 저장하거나 출력장치로 보냄
  3. 제어장치가 이 과정중 명령어가 순서대로 실행되도록 제어

GPU

  • CPU와 동작 및 하는 역할은 거의 유사하지만, ALU가 적어 고등 계산보다는 단순 계산을 주로 실행
  • CPU에 비해 control이 굉장히 적으며, 소형의 ALU가 병렬로 다수 위치
  • 데이터 처리를 위한 메모리 용량이 성능 지표
  • CPU에 비해 집적도가 높고, 고속의 병렬 연산이 특징

GPU 사용시 발생하는 이슈

  1. 복잡한 알고리즘
  • 2012년 DNN이 본격적으로 활성화되기 시작함(Large Scale Image Recognition Challenge 2012, AlexNet)
  • 1차원적인 선형 연산에서 n차원 비선형 연산으로의 변화
  • 차원이 늘어날수록 연산에 필요한 파라미터는 폭증하여, 2015년 우승 모델인 Resnet의 경우에는 110억개의 파라미터가 존재한다고 한다.
  1. 특정 순간에만 집적되는 사용률
  • 모델 훈련의 경우에만 주로 사용됨
  • 모델이 훈련되고있지 않을 경우 들이는 투자비용에 비해 유휴시간이 김

따라서, 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의 가상화 및 통합