CPU, GPU, 그 다음

in #kr5 years ago (edited)

CPU와 GPU는 다르다.



당연. 그런데 무엇이 어떻게?

1. 이름 (ㅋㅋ)


2.존재 목적과 역할

CPU (Central Processing Unit)

: 입출력연산장치, 컴퓨터 탄생 시절부터 메인이 된 부품.

GPU (Graphics Processing Unit)

: 처음엔 할 일 많아 후달리는 CPU를 돕기 위해서 그의 업무 중 고차원 그래픽 처리를 전용 담당해 주기 위해 고안되었는데, 현재는 그래픽 처리 외의 태스킹도 범용적으로 돕고 있는 중요 부품이 되었다. 그러다 보니 GPGPU(General Purpose computing on Graphics Processing Units) 라는 것도 있다.

  • 참고로 둘의 공통 성능 지표는 크게 다음과 같다.

클럭 (1태스킹 속도)
코어 수(멀티태스킹 성능)
캐시 메모리 용량


3.구조

fgene-04-00266-g001.jpg
img src

기본적으로 CPU는 직렬 처리, GPU는 병렬 처리 방식이다.

CPU 는 명령어에 의해 데이터를 입력 받아, 기억 및 연산하여, 결과를 출력한다. 기본적으로 레지스터, ALU, 제어부(Control) 등으로 구성된다. 서로 다른 여러 작업들을 컨트롤해야 하므로 각 작업의 지연을 최소화하기 위해 캐시 메모리가 차지하는 영역이 넓고, 상대적으로 ALU(Arithmetic Logic Unit)가 차지하는 영역은 좁은 편이다. 고정소수점 데이터를 많이 사용하는 연산 작업들을 빠르게 수행할 수 있다.

연산 5단계 : 1)명령어 불러옴(Fetch) - 2)명령어 해독(Decode) - 3)연산(Execute) - 4)연산 결과 저장(Memory) - 5)연산 결과 레지스터에 다시 쓰기(Write Back)

( 3)의 연산 결과가 다음 명령어에 안 쓰이면 Memory로, 쓰이면 Write Back으로 간다.)


단일 작업을 멀티 쓰레드로(병렬이로) 수행할 수 있는 GPU 는 CPU에 비해 컨트롤 유닛이나 캐시 메모리가 많이 필요가 없다. 대신 ALU 개수가 훨씬 더 많고, 따라서 차지하는 자리도 넓다. 초당 수많은 폴리곤(Polygon)들을 병렬 연산하기 때문에, 3D 그래픽을 CPU보다 더 빠르게 정밀하게 이쁘게 처리할 수 있다. VPU (Visual Processing Unit)이라고도 불린다.


4.약간의 역사

GPU는 사실 콤퓨타의 탄생 때부터 존재한 것이 아니다. 처음에는 CPU만 있었다. 당시 CPU는 MPU(Main Processing Unit)이라 불리기도 했다. (CAD/CAM/CAE)

인텔(Intel)

1972년 4월, 최초의 8비트 CPU 8008를 개발한다.
이후...

1974년 : 인텔 8080 (8bit, 2Mhz(클럭 속도), 최대 64KB(메모리))
1978년 : 인텔 8086 (16bit, 4.77~10Mhz, 최대 1MB). x86-16 아키텍처.
1982년 : 인텔 80 286 (16bit, 6~20Mhz, 최대 16MB). 멀티태스킹 지원.
1985년 : 인텔 80 386 (32bit). IA-32 아키텍처(x86, i386).
1989년 : 인텔 i486 (80486에서 80 빼고 인텔의 i 사용 시작.)
1993년 : 인텔 i586 => 펜티엄(Pentium), AMD사의 분쟁 끝에 숫자를 상표로 사용할 수 없게 되어 자체 상표명을 만든 것이다.


아무튼, 이 90년대 초중반 까지만 해도, 컴퓨터에서 실시간 3D그래픽 역시 CPU가 처리할 몫이었다. 그런데 컴퓨터 게임의 수요가 급증하기 시작하여, 3D 그래픽 카드의 필요성이 생겨났다. 그리하여 최초의 일반 사용자용 GPU는 1999년 8월 31일 NVIDIA사의 지포스256(GeForce 256)로 발표되었다. (출시는 10월)

NVIDIA사는 GPU를 기술적으로 다음과 같이 정의한다, "통합된 변형, 조명, 트라이앵글 설정/자르기, 초당 최소 1000 만 다각형을 처리할 수 있는 렌더링 엔진이 통합된 단일칩 프로세서".

이후 GPU의 발전은 계속되어, 그래픽에 제한적이었던 기능이 범용으로 확장되었다(GPGPU). 이로써 그래픽 뿐만 아니라 데이터에도 스트림 프로세싱(단일 작업 병렬 처리를 위한 양식의 하나)을 사용할 수 있게 된다.


5.그리고 그 후...

TPU (Tensor Processing Unit)

살펴본 대로 지금까지 GPU의 병렬 처리 방식은 컴퓨터 성능 발전에 큰 영향을 끼쳐왔고 오늘날 없어선 안 될 필수 요소가 되었는데, 이 방식은 오늘날 딥러닝으로까지 연결된다. 대용량 벡터,행렬 연산을 요하는 딥러닝에는 병렬 처리 방식이 효율적이기 때문이다. 이러한 방향에서 진행된 것이 바로 2016년 5월 발표된 구글의 TPU(Tensor Processing Unit). 빅데이터 분석과 딥러닝 전용으로 만들어진 8비트 정수 연산 부품으로, 텐서(벡터,행렬)의 병렬 연산에 특화되어 있으며 엄청난 와트 전성비를 보여준다. 현재 버전 3.0까지 발표된 TPU는 아직 상용화되진 않았다고 한다.

TPU의 좋은 활용 예는 바로 알파고이다. 2016년 이세돌 9단과의 대결시 알파고는 48개의 TPU(+ CPU 1202개 + GPU 176개)를 사용했다고 한다. 이후 알파고 마스터(별명 마파고ㅋㅋ), 커파고(커제와 대결한 알파고)는 45TFLOPS 짜리 칩 4개로 구성된 TPU 2.0 을 단 1개 사용했다고. 이는 2017년 기준 가장 강력한 GPU(GTX 1080Ti)의 16배 정도 성능이라고 하니 엄청나다...

2017년 발표된 알파고 제로는 마파고에서 사용되었던 TPU를 4개 사용한다. (이걸 보니 이제 더이상 인공지능 학습에 슈퍼 컴퓨터까지 쓸 필요 없다는 엄청난 신호라.. 생각한다.) 기존 알파고들과 달리 가치망, 정책망 2개 신경망 중에서 새로운 버전의 신경망 1개만 사용한다는 점, 대용량 학습 데이터 없이 순수히 강화 학습만으로 훈련되었다는 (그러면서도 기존 버전들을 압도적으로 능가했다는) 것이 특징이다.

그 다음에 나온 것이 알파 제로. 더이상 '고'로 한정하지 않고 다른 게임, 다른 분야로까지 알고리즘을 일반화시킨다는 아이디어이다. 2017년 12월 발표된 논문에 따르면 알파 제로는 바둑, 쇼기, 체스를 학습했고, 기존 알고리즘을 또 한번 무섭게 능가했다고 한다.


여기 관련된 얘기와 정보를 하나하나 다 쓰면 무지 길고 아마 한 번에 다 못 쓸 것. 굵은 점만 최대한 추려 보았다.
아무튼 지금은 이렇게 학습용으로 제한적으로 쓰이고 있는 (Google 만의) TPU가, 미래 어느 시점에 상용화 되어 있을 때의 세상은 어떤 모습일지 상상하게 되는데... 그럼 이만. 땅큐!

Sort:  

일단, 두 번은 읽었습니다만, 백 번 읽어야 되는 거로~ 고생하심이 보입니다~^^

Posted using Partiko iOS

늘 많은 주의를 기울여 주셔서 제가 늘 정말 감사드립니다, 덕분에 많은 힘을 얻고 있습니다 😊

  • 글 초반 : 나도 알던 내용이구나..
  • 글 중반 : 아, 몰랐던 내용이구나..
  • 글 막판 : 정녕 알아야만 하는가?.. ㅠㅠ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
연어님 정리를 따라가며 저도 순차적으로 빵 터졌습니다

부끄럽습니다 (_ _ ;) ----- "아는게 힘이여."

헉 부끄럽다뇨 전혀;;;;;

Posted using Partiko iOS

구글이 자체 프로세서도 개발해서 쓰고 있군요! 역시 무서운 사람들이네요 ㅋㅋ

구글은 갈수록 넘사벽이 되고 있는 것 같아요..ㅋㅋ 일단 현재로선

Coin Marketplace

STEEM 0.27
TRX 0.11
JST 0.032
BTC 64579.45
ETH 3101.05
USDT 1.00
SBD 3.83