[AI] CPU vs GPU : CPU 동작 과정, GPU와 AI, CPU GPU 차이

Seohyun-kim·2022년 8월 10일
2

인공지능

목록 보기
6/7
post-thumbnail

CPU와 GPU는 뭐가 다를까??
왜 AI가 뜨면서 GPU가 주목받고 있는걸까??

이 두 가지 관점으로 한 번 살펴보고자 한다.

1. CPU

Central Processing Unit (중앙 처리 장치)

말 그대로 컴퓨터의 중심(Center)이다.
사람으로 비유하자면 뇌(brain)에 해당한다고 볼 수 있다.

PC의 여러 장치들의 연산과 제어를 관리하고 제어한다.



1.1 하드웨어 관점에서의 CPU

CPU는 수많은 트랜지스터(Transistor)의 집합이다.
M1 Max의 경우 무려 570억개의 트랜지스터가 들어있기도 하다...

이 트랜지스터의 기능은 크게 두가지가 있다.
바로 증폭(Amplification)스위칭(switching) 이다.

트랜지스터에 대한 자세한 내용은 이 주제에 대한 핵심이 아니므로 생략하고,
트랜지스터를 일종의 스위치라고 생각하면 (전류가 흐르면 1, 흐르지 않으면 0)

트랜지스터 2개를 병렬로 이을 경우, 논리(logic) 연산 중 OR에 해당하고
( 둘 중 하나만 ON 되면 전체 결과가 ON이므로)

2개를 직렬로 이을 경우, AND에 해당한다.
( 두 스위치가 모두 ON 되어야 전체가 ON 되므로)

이런 식으로 여러 개의 트랜지스터를 이용해 Logic gate를 만들 수 있다.
이러한 논리적인 회로를 통해 산술연산도 가능하게 끔 한다.



1.2 메모리와 CPU의 동작과정

  • 컴퓨터의 구성 요소를 보면 SSD와 HDD와 같은 보조기억장치가 있다.
    HDD에 비해 SSD가 훨씬 빠르긴 하지만, 그래도 CPU에 비하면 너무 느리다.

  • 그래서 Main Memory라 불리는 RAM(Random Access Memory)를 중간에 둔다.
    RAM도 종류가 많이 있는데, 보통 DRAM을 메인메모리로 쓴다.

  • 참고로 SSD, HDD와 같은 장치는 non-volatile, RAM은 volatile memory다.
    즉, 전원이 꺼지면 RAM은 모두 날라가고 보조기억장치는 남아있다.

  • 아 그리고, 동작 속도를 높이기 위해서
    자주 사용되는 data를 예측해서 Cache-memory라는 공간에 저장해두기도 한다.
    (얘도 사실 RAM의 일종이다, SRAM을 주로 씀!)

  • 우리가 작성한 소스코드, 즉 프로그램(Program)은 보조기억장치에 저장되어있다.
    이 프로그램을 실행시키고자하면 메인메모리에 올라가게 되는데,
    그 상태를 프로세스(process)라고 한다.

  • CPU는 이 RAM에 올라가있는 data를 가져오게 되는데,
    이 과정을 fetch라고 한다.

  • 그리고 나서 Control Unit이 명령어(command)를 decode(해석) 한다.

  • 해석 된 data를 ALU에서 연산을 하고, CPU내 레지스터에 연산 결과를 임시 저장한다.
    이 과정을 execute라고 한다.

  • fetch - decode - execute 이 세 과정을, Instruction cycle이라고 한다.

이러한 방식으로 CPU는 컴퓨터의 전반적인 동작을 지휘한다.



2. CPU와 GPU의 구조적 차이

  • CPU는 적은 양의 고성능 ALU,
    GPU는 많은 양의 단순한 연산을 처리할 수 있는 ALU를 가지고 있다.

  • 대충 비유를 해 보자면,
    CPU는 똑똑한 교수 1명(single core 기준),
    GPU는 초등학생이 엄청 많이 있다고 볼 수 있다.

  • 만약에, 교수에게 1+2, 3*4 와 같은 아주 간단한 사칙연산 1000개를 하라고 시키면 어떻게 될까?

    • 가능은 하다. 똑똑한 교수가 뭔들 못하겠으랴...
      근데 이 의미없고 간단한 연산 1000개를 풀다가,
      정작 중요한 동작을 못하게 될 수도 있다.. 굉장히 비효율적이란 소리
    • 그래서 이런 문제 같은 경우는,
      교수 1명에게 1000개를 순차적으로 시키는 것 보다
      초등학생 1000명에게 1문제 씩 풀라고 하는 것이 훠얼씬 효율적이다!

이게 바로 GPU를 쓰는 가장 큰 목적이다!!



3. CPU와 GPU 차이

아래 그림을 통해 그 차이를 조금 더 구체적으로 살펴보자.

  • CPU는 한 번에 하나씩 task를 순차적으로(sequential) 처리한다.(single core 기준)
    반면 GPU는 많은 양의 task를 한 번에 병렬적으로(parallel) 처리한다.

  • CPU는 프로세스의 속도(speed)를 높이기 위한 방향으로 설계되었으며,
    GPU는 처리량(throughput)을 늘리도록 설계가 되어있더.

  • CPU는 더 많고 다양한 instruction을 처리할 수 있는 것들이 내장되어있어
    복잡하고 어려운 연산을 할 수 있다.
    그래서 컴퓨터의 기본적인 산술, 논리, 제어, 입출력 등 다양한 연산이 가능하다.

  • 반면 GPU는 가능한 연산의 수가 제한적이다. (instruction set이 적음)
    그리고 embarrasingly parallel 한 task에 적합하다.
    ( 다른 task와 의존성이 거의 없는 task를 뜻함)

    • 예시로,
      video 게임이 초당 60프레임의 이미지를 화면에 보여주어야 한다고 생각해보자.
      디스플레이의 화소에 맞게 각 픽셀의 rgb값을 계산해서 보여줘야 할 것이다.
      그런데 이 각 픽셀은 독립적이라는 것이다!
      GPU는 이러한 연산에 훨씬 효과적이라는 소리다!


4. AI system에 있어서의 GPU

그러다면 왜 GPU가 AI시스템에서 선호가 되는걸까?

  • Deep learning은 위 그림과 같은 neural network를 사용한다.

  • 엄청나게 많은 data가 들어오고, 많은 연산이 요구된다..

  • 그런데 그 구조는 생각보다 단순하다!?!


  • 보통은 이러한 matrix 끼리의 곱 연산이 많이 필요하다.

  • 그런데 정작 까놓고 보면, 각 요소의 곱하기 와 더하기로 이루어진 단순한 연산이다.

  • 이러한 단순한 연산들이 어어어엄청나에 많은 data에 대해 이루어진다.

  • 즉, GPU에게 더 적합하단 소리다!

  • GPU는 원래 이름에서부터 유추할 수 있듯이 Graphic processing을 위해 만들어졌다.
    근데 이와 같이 general 한 목적으로 쓰이는 것을
    GPGPU(General Purpose computing on Graphics Processing Units)라고 부른다.




ref

each icons : https://www.flaticon.com/kr/
http://www.tcpschool.com/deep2018/deep2018_deeplearning_intro
https://www.youtube.com/watch?v=8IqQQg13Xbc
https://www.youtube.com/watch?v=tsB97IAejbk
https://www.youtube.com/watch?v=ZdITviTD3VM
https://www.youtube.com/watch?v=Fg00LN30Ezg

0개의 댓글