CPU GPU 병렬처리 차이점 (1)

CPU GPU 병렬처리 차이점 을 알아 보기 위해 기본적으로 이해해야 하는 ALU, 다중 코어 CPU 그리고 멀티태스킹과 멀티스레딩을 이해하기 위한 프로세스와 스레드의 차이를 설명하고 CPU와 GPU의 연결 구조를 통해 같은 병렬처리 원리이지만 서로 목적이 다른 장치임을 설명하는 글입니다.

병렬처리 기본단위 ALU

다중 코어 CPU
다중 코어 CPU( 구글 바드 생성)

일반적으로 하나의 CPU 코어(core)에는 하나의 산술 논리 장치가 있습니다. 

ALU(산술 논리 장치)는 컴퓨터의 중앙 처리 장치(CPU)에 작은 반도체로 구현되어 내장된 회로입니다.

주로 두 가지 주요 구성 요소인 산술 장치와 논리 장치로 구성됩니다.

산술 장치는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 숫자 연산을 수행하며, 논리 장치는 논리 연산(AND, OR, NOT, XOR 등)을 수행합니다. 

ALU는 이러한 연산을 이진수로 처리하고, CPU의 계산을 담당하는 핵심 부분으로, 정보를 CPU 내부의 작은 메모리인 레지스터에 저장하고 연산을 수행한 후 결과를 다시 레지스터에 저장합니다.

이렇게 계산이 완료된 결과를 DRAM으로 구성된 메모리에 다시 저장하고 새로운 데이터를 메모리에서 가져와 다시 연산을 수행하는 일이 일반적으로 CPU 혹은 GPU 내부의 코어가 수행하는 일입니다. 

다중 코어 CPU

다중 코어 CPU 작업할당 방식
다중 코어 CPU 작업할당 방식

다중 코어 CPU는 여러개의 CPU 코어(core)를 하나의 칩안에 넣어 동시에 동작이 가능하도록 한 특별한 프로세서 칩입니다.

CPU에서 동작하는 운영체제(OS)가 도움을 주어 병렬 처리 지원, 스케줄링 및 자원 관리, 멀티스레딩 및 멀티태스킹등과 같은 병렬처리 작업을 수행합니다 

  • 병렬 처리 지원: Multi-core CPU의 각 코어가 독립적으로 작업을 수행할 수 있도록 하는 병렬 처리를 지원합니다.
  • 스케줄링 및 자원 관리: 다수의 코어 간 작업을 효율적으로 분배하고, 자원을 효율적으로 활용하기 위한 스케줄링 및 자원 관리 기능을 갖추고 있습니다.
  • 멀티스레딩 및 멀티태스킹: 멀티코어를 활용하여 멀티스레딩 및 멀티태스킹을 지원하여 여러 작업을 동시에 처리할 수 있습니다

병렬처리 이해를 위한 프로세스와 스레드의 차이점

멀티태스킹과 멀티스레딩을 이해하기 위해서는 프로세스와 스레드의 차이점을 이해해야 합니다.

프로세스

프로세스는 프로그램을 실행할 때 운영체제로부터 자원을 할당받는 작업의 단위입니다.

각 프로세스는 독립된 메모리 영역을 가지며, 다른 프로세스와는 독립적으로 실행됩니다.

프로세스 간 정보를 교환하기 위해서는 정보를 공유할 수 있는 방법이 없으므로 별도의 매커니즘(예: IPC)이 필요합니다.

비정상적인 이유로 프로그램이 동작을 멈출때에도 문제가 발생한 프로세스만 동작이 멈춥니다.

스레드

스레드는 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원을 공유합니다.

실행의 흐름이란 프로그램이 실행 되면서 어떤 일이 수행될 때, 다른 일이 그 일의 진행상태에 상관없이 독립적으로 다른일을 수행하는 구현 방식을 말합니다.

보통 멀티 코어를 사용하는 경우  프로그래머가 직접 특정 코어에서 특정 코어에서 수행될 일을 고려하여 프로그램을 하기도 합니다.

스레드 간 통신은 프로세스 간 통신에 비해 더욱 간단합니다.

멀티스레딩은 프로그래머가 스레드에서 수행되어야 할 코드가 어떤 코어에서 동작 할지에 따라 지정될 수도 있습니다. 아울러 스레드는 프로그램 자체 내부에서 시작시점과 종료시점을 고려해서 프로그래머가 직접 만들어야 합니다. 이에 반해 멀티태스킹은 운영체제가 알아서 처리해주게 됩니다. 멀티 스레드는 하나의 프로그램을 여러 개의 기능으로 나누어 이를 동시에 실행 시킨다는 점입니다.

CPU GPU 병렬처리 차이점 – 같은 구조 하지만 다른 목적

엔비디아의 CUDA 구조
엔비디아의 CUDA 구조(By Tosaka – Own work, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=5140417)

CPU나 GPU 모두 다중 코어 CPU구조를 사용하고 있습니다.

CPU는 수학 계산 뿐만 아니라 인터넷 그리고 문서작성에 필요한 일반적인 기능을 고루 잘 수행할 수 있는 코어로 구성되어 있으며 코어의 개수 또한 수십개 정도로 구성되어 있습니다.

GPU는 주로 비디오를 처리하기 위한 수학연산을 위한 기능에 최적화된 코어로 구성되어 있으며 코어의 개수는 수천개로 구성되어 있어 그래픽 처리에 적합한 장치입니다.

최근 Machine learning/AI에 GPU가 많이 사용되는 이유는 Machine Learning/AI에 필요한 수학 계산과 그 계산의 크기가 GPU가 처리해온 비디오 처리와 매우 비슷하다는 점입니다. 

Similar Posts

Leave a Reply