GPU (AKA Graphic Card)

elecbug·2024년 6월 24일
post-thumbnail

Computer Architecture

학부생때 컴퓨터 구조 수업을 듣고 있으면 CPU, Memory, 여러 I/O 장치 및 System Bus와 Cache, Disk 까지를 포함하는 컴퓨터의 기본적인 Architecture에 대해 배우게 됩니다.

하지만 보통 Graphic Card에 대한 수업은 교수님이 개인적으로 진도를 나가거나 하지 않는 이상은 학사 과정에 잘 포함되지 않는데요. 오늘은 Graphic Card의 구조부터 시작해서 역할 및 변천사를 함께 알아보도록 하시죠. Go Go~

GPU

정식 명칭 GPU; Graphic Processing Unit은 흔히 Graphic Card로 불리는 컴퓨터의 부품입니다. 게임을 더 선명하고 빠르게 하고 싶을 때, 화려한 애니메이션을 끊김없이 보거나 작업하고 싶을 때, 그리고 근래에 들어서는 AI Deep-learning 모델을 학습하거나, 지금은 많이 사라졌지만 한 때 Bitcoin의 채굴 작업을 위해서도 Graphic Card가 사용 되었죠.

Graphic Card에 대해서 잘 모르는 일반인이 보기에는 위 작업들의 공통점을 잘 느끼기 어려울 수 있습니다. 아니 AI를 가르치는 것과, 영상을 처리하는 것, 그리고 Bitcoin을 캐는 것이 도대체 어떤 연관성이 있는 것일까요?

Parallelism

우선은 이야기를 시작하기 전에, 한가지 지식에 대해 짚고 넘어가야 합니다. 바로 Parallel, 한국어로는 병렬 처리입니다.

현대의 PC는 병렬적으로 일을 처리하는 것을 기본 전제로 깔고 설계되어 있습니다. 우리가 Chrome으로 Youtube를 보면서, Android Studio켜고, Android Emulator를 통해 가상 머신을 활성화 할 수 있는 것은 우리의 컴퓨터가 수많은 작업을 병렬로 처리하기 때문이죠. (예시를 생각해 봤는데 컴퓨터가 보일러가 되겠군요)

여기서 병렬은 동시(Concurrent)와는 개념이 조금 다릅니다. 동시란 시간적으로도 작업의 진행이 일치해야 하지만, 병렬적 실행은 각 작업을 쪼개어 돌아가면서 조금씩 진행해도 되기 때문이죠. 예를 들어 Task A, B, C가 있고, 이 작업들이 각각 A1~C5까지 15개로 쪼개질 수 있다면, 동시 실행은 아래 1과 같아야 하지만, 병렬 실행은 아래 2와 같이 실행해도 무관합니다. 즉 병렬성은 동시성의 상위집합입니다.

Figure 1. Concurrent

A1 -> A2 -> A3 -> A4 -------> A5
B1 -> B2 -------> B3 -> B4 -> B5
C1 -------> C2 -> C3 -> C4 -> C5

작업마다 걸리는 시간은 다를 수 있지만, 결국 N개의 작업을 동시에 처리하려면 N개의 Processor가 필요합니다.

Figure 2. Parallel

A1 -> B1 -> C1 -> A2 -> A3 -> B2 -> C2 -> C3 -> B3 …

단 하나의 Processor일지라도 작업을 순차적으로 번갈아 가며 실행함으로서 N개의 작업을 병렬적으로 처리할 수 있습니다.

위처럼 병렬적인 실행을 위해서 작업을 쪼개서 돌리는 일은 컴퓨터가 알아서 해주며, 전문 용어로는 CPU Scheduling이라고 합니다. 그리고 이러한 CPU Scheduling은 OS 개발사 측에서 이미 디자인 해놓아서 우리는 쉽게 사용할 수 있죠. 이렇게 우리는 LoL도 하고 Youtube도 보고 op.gg도 켤 수 있는 것이랍니다.

하지만 일을 병렬로 처리할 수 있는 능력이 있더라도 결국에는 동시에 진행할 수 있는 양이 많을 수록 컴퓨터가 빨라지는 것은 부정할 수 없는 사실입니다. 하나의 일을 맡아서 처리하는 CPU의 단위를 우리는 Core라고 부르고 예시를 위해 아래는 I사의 일부 CPU Model의 Core 개수입니다.

CPU ModelP Core(T)E Core(T)
i9-139008(16)16(16)
i7-137008(16)8(8)
i5-136006(12)8(8)
i3-131004(8)0(0)

P Core와 E Core의 차이는 자세히 설명하기는 어렵고, 간략히 말하자면 대략 더 P Core가 더 어렵고 중심적인 역할을 수행하며, E Core는 변두리에서 돌아가는 비교적 덜 중요한 역할을 수행하고 있다고 볼 수 있습니다.

뒤의 T는 Thread의 약자로 P Core는 Core 하나가 최대 2개의 작업 공정으로 분할 가능하고(그만큼 전력 소모 등이 크지만 Performance는 더 높아지겠죠?) E Core는 하나당 1개의 Thread가 존재한다는 의미랍니다.

좋아요. CPU 얘기가 길어졌네요. 하지만 GPU를 이해하기 위해서는 꼭 필요한 얘기입니다. 이제 위의 이야기를 조금 되짚어 볼까요? 작업 이야기를 많이 했는데, 컴퓨터 입장에서 "작업"이란건 어떤걸까요?

Task

계산을 하고 프로그램을 구동하는 걸 생각하실텐데요. 물론 그러한 것들도 작업이 맞고, 한 두 세대 전까지만 해도 그게 작업의 전부였습니다. 그러던 중 PC에 대 격변이 일어나죠. 바로 GUI(Graphic User Interface)의 등장입니다.

화면을 그리는 것 역시 컴퓨터에게는 하나의 작업입니다. 문제는 DOS 세대에서 넘어온 기존의 컴퓨터에는 화면을 그리기 적합한 부품이 따로 존재하지 않았다는 것이죠. 그저 화면에 글자 몇 자 출력하는 것이 전부였던 Command Line 환경에서 GUI로 전환하며, 그 과도기에는 CPU가 화면을 그리는 일까지 도맡았습니다.

어쩌면 "그냥 CPU로 그리면 안될까요?"라고 생각하실지 모르겠습니다. 정답은 "가능은 하다."인데요. 전문가를 생각해봅시다. 아주 어려운 수학 논리를 증명하고 연구하는 연구자를 16명 갖고 있습니다. 이 사람들한테 덧셈만 계속 시키는 거죠. 언젠가 다 하기야 하겠지만 굉장히 비효율적이라는 생각이 듭니다. 연구자들은 더 어려운 연구가 쌓여있는데, 불필요한 더하기를 직접 하고 있으니까요. 더하기는 초등학생들도 할 수 있잖아요?

GPU의 핵심 아이디어는 그겁니다. 연구자 16명보다, 덧셈 무더기는 그냥 초등학생을 1000명씩 쓰면 어떨까?

위의 예시에서 수학에서 덧셈과 같이 간단한 작업에는 컴퓨터에서는 화면 출력이 있습니다. 화면을 표시한다는 것은 그저 모니터의 해상도만큼 신호를 처리하는 일 뿐이니까요. 소수점을 계산한다든가(컴퓨터에서 소수점의 계산은 굉장히 어려운 작업입니다) 프로그램을 실행하는 작업보다야 훨씬 간단하거든요.

그래서 우리는 초등학생 1000명과 같은 일종의 "초등학생 Core"를 1000개씩 붙여 새 부품을 만들고 컴퓨터에 추가로 꽂아 넣기로 합니다. 이게 바로 GPU, Graphic Card의 시작이죠.

실제로 N사의 모델 RTX 3060의 Core 갯수는 3000개가 넘는데 이러한 3000개의 Core는 CPU의 메인 Core랑은 역할이 다른, 단순한 작업을 빠르게 동시에 처리하는 Core이기에 이렇게 갯수가 많이 필요한 것이랍니다.

Graphic과 AI

그럼 화면을 출력하는데 Graphic Card가 중요하다는 사실은 알겠죠? AI 학습에도 마찬가지랍니다. AI는 학습을 위해 수십만장에서 많게는 억단위에 이르는 사진이나 자료를 학습하게 되는데, 이러한 작업은 CPU로 하나하나 계산하기에는 너무나 비효율적이죠. 물론 CPU로 할 수 있기도 하지만, 근래에 대부분 이 역할은 GPU로 넘어갔답니다.

여담이지만 TPU; Tensor Processing Unit이라고 불리는 AI 전용 Chip이 등장하며 아예 GPU 대신 AI 학습을 위한 병렬 계산 및 행렬 계산에 최적화 된 반도체 부품이 등장하고 있답니다. GPU가 그랬던 것 처럼 미래에는 우리 컴퓨터마다 TPU가 하나씩 꽂혀서 필수 부품처럼 자리할 수도 있을 것 같다는 생각이 드는데, 여러분은 어떠신가요?

Bitcoin?

마지막으로, Bitcoin의 채굴이 있는데요. 채굴이라는 작업은 쉽게 말해서 Bitcoin 서버에서 제시한 문제를 푸는겁니다. 이 문제를 아주 간략하게 설명하자면 숫자를 넣으면 다른 숫자가 나오는 상자가 있다고 생각해봅시다. 어떤 숫자가 나올지는 아무도 모르고, 서로 다른 숫자는 상자를 통과하면 서로 다른 숫자를 뱉어냅니다. (많이 생략되었지만, 보안에서는 이 상자를 Hash Funtion이라고 부릅니다)

이제 마술사가 숫자를 공개합니다. 만약 32라면, 당신이 가장 먼저 어떤 숫자를 상자안에 넣어서 32보다 작은 숫자를 만드는 어떤 숫자를 찾으면 이기는 게임입니다. 쉽죠? 그렇게 어려운 문제가 아니고, 한번에 여러 숫자를 상자에 많이 넣을 수 있을수록 더 유리한 게임입니다. 그렇기에 채굴 역시 GPU가 동시에 처리하기에 제격이었고, 한참 Bitcoin이 유행하던 시기에 채굴이 유행하며 Graphic Card 대란이 일어났던 것이죠.

일해라 GPU

GPU가 실제로 활용되는 모습이 보고 싶다면 작업관리자를 켜보세요. 성능 탭에 들어가보면 GPU의 사용률을 볼 수 있습니다. 이제 바탕화면에 마우스를 누른채로 드래그를 정신사납게 흔들어보세요. 화면의 갱신이 잦아지며 GPU의 사용률이 올라가는 재미있는 광경을 볼 수 있답니다.

GPU는 이렇듯 우리 생활과 아주 밀접하게 관련이 있음에도, Computer Architecture 상으로 꼭 필요하지 않은 부품이라서 직접 찾아보지 않는 한 자세히 알기 힘든 영역이기도 합니다. 다들 지금 사용하시는 Graphic Card에는 어떤 제품이 있나요?

Have a Good day!

재미있고 유용하셨다면 다음에도 찾아주세요! 그럼 안녕~

profile
Hello, world!

0개의 댓글