CPU GPU 병렬처리 차이점 (2)
CPU GPU 병렬처리 차이점 을 자세히 알기 위해 멀티 코어 병렬 처리 방식의 설계 목적과 시스템 구조와 CPU와 GPU를 구성하는 코어의 다른 특성에 대해 다루어 보도록 하겠습니다.
설계 목적 관점 에서의 CPU GPU 병렬처리 차이점

CPU (중앙처리장치)
- CPU는 다양한 목적의 컴퓨팅 작업을 위해 설계되었습니다.
- 일반적으로 강력한 코어 몇 개를 가지고 있으며
- 순차 처리와 운영 체제, 응용 프로그램, 백그라운드 프로세스 실행 등 다양한 작업 처리에 최적화되어 있습니다.
- 물론 이 코어들을 사용하여 목적에 따라 병렬처리 로도 사용이 가능합니다.
- CPU는 복잡한 의사 결정, 논리 연산, 빠른 메모리 접근이 필요한 작업에 적합합니다.
GPU(그래픽처리장치)
- GPU는 여러 작업을 동시에 병렬 처리하도록 설계되어 있습니다.
- 컴퓨터를 이용하여 풀어야 하는 문제가 많은 양의 계산을 필요로 하고
- 계산과정이 많은 양의 데이터를 동일한 방식으로 여러번 반복하는 경우에 유용합니다.
- 이런 계산의 대표적인 예는 그래픽 렌더링 작업입니다.
- 다수의 작고 효율적인 코어를 가지고 있으며 여러 작업을 병렬로 처리하도록 최적화되어 있습니다.
- GPU는 그래픽 렌더링, 머신 러닝, 과학 시뮬레이션과 같이 많은 작고 유사한 하위 작업으로 분할할 수 있는 작업에 이상적입니다.
CPU GPU 병렬처리 차이점 – 구성 코어의 특성

Intel x86 코어와 NVIDIA GPU 코어 간의 구조적 차이점 뿐만 아니라 각 CPU 코어에서 지원하는 명령어들도 성격이 다릅니다.
이러한 차이점은 각 프로세서 유형이 특정 유형의 계산 작업에서 어떻게 뛰어나게 수행되는지를 이해하는 데 중요합니다.
대표적인 CPU 코어 – 인텔 x86
인텔 x86 코어는 광범위한 영역의 응용프로그램을 위해 설계되었습니다.
아울러 병렬 처리가 아닌 단일 쓰레드의 소프트 웨어 실행을 최대의 성능으로 수행하기 위해서, 특별한 명령어들을 설계에 반영하였습니다.
이러한 특징적인 명령어들의 예는 명령 이행 순서 변경, 분기 예측, 추측 실행 등의 기능 등이 있습니다.
복잡한 과학 계산및 금융 모델 예측, 웹서버, 데이터베이스 관리 그리고 고사양의 게임등은 이런 특별한 명령어들이 효과적으로 사용되는 대표적인 응용 프로그램의 예입니다.
대표적인 GPU 코어 – NVIDIA
엔비디아 GPU는 처음부터 병렬 처리를 위해 완전히 새로운 설계로 제작되었습니다.
이 아키텍처는 전통적인 CPU 코어보다 수백, 수천 개에 이르는 더 작고 에너지 효율적인 코어로 구성되어 있습니다.
이러한 코어들은 스트리밍 멀티프로세서 (SM)라는 더 큰 단위로 그룹화되며, 각 SM은 동시에 수백 개의 스레드를 실행할 수 있습니다.
이 설계는 그래픽 렌더링, 과학 시뮬레이션, 딥 러닝과 같은 많은 작고 독립적인 작업으로 나눌 수 있는 작업 부하에 최적화되어 있습니다.
구성 코어 별 동작 특성

x86 코어는 조건 논리와 분기 등 다양한 컴퓨팅 작업을 처리할 수 있는 복잡한 명령어 세트를 지원합니다.
반면 NVIDIA GPU 코어는 단일 스레드 성능보다 처리량을 우선시하는 더 간단한 명령어 세트로 설계되었습니다. GPU는 SIMD(Single Instruction, Multiple Data) 또는 NVIDIA GPU의 경우 SIMT(Single Instruction, Multiple Threads)로 알려진 패러다임에서 뛰어난 성능을 지원하는 명령어들이 우선적으로 고려되었습니다.
SIMD/SIMT는 한번에 하나씩의 데이터를 처리하는 방식이 아니고 여러개의 데이터 뭉치를 한번에 처리하는 방식입니다.
이런 방식으로 데이터를 효과적으로 처리하기 위해서는 GPU가 처리해야 하는 데이터들이 비슷한 종류의 모임이어야 하며, 머신러닝 및 AI 개발시에 수행되는 신경망 계산이 바로 이러한 “한방에” 처리를 할 수 있는 아주 좋은 예입니다.
CPU GPU 병렬처리 차이점 – 시스템 구조적측면

지원되는 명령어의 성격이 다른 점 외에도 CPU와 GPU는 시스템의 구조 측면에서도 많은 차이를 가지고 있습니다.
CPU의 경우에는 각 코어들이 하나의 독립된 작업에서 최선의 성능을 낼 수 있도록 외부에서의 정보(예: 메모리)를 효과적으로 내부 연산 처리 장치에 전달하거나, 내부에서 처리가 완료된 정보를 외부로 내보내는 (예: 네트워크 장치 혹은 디스크 장치) 인터페이스가 효과적으로 설계되어 있습니다.
GPU의 경우는 각 코어들의 독립적인 계산을 하거나 다른 코어들에서 처리가 완료된 계산을 넘겨받아 새로운 처리를 할 수 있도록 캐시 메모리 구조가 CPU 대비 다른 구조로 되어 있습니다.
아울러 처리를 해야 하는 정보의 성격상 GPU는 전체 컴퓨터의 제어를 담당하기 보다는 일련의 계산을 넘겨받아 처리를 하고 계산의 결과를 돌려주는 인터페이스 부분이 CPU와는 시스템 구조적으로 다른 부분이라 할 수 있겠습니다.
마치며
최근의 변화추세에 대한 개인적인 견해입니다.
최근의 기술 트렌드는 CPU도 미세공정및 클럭의 한계로 인하여 점점 GPU와 비슷한 multi core구조로 진화하고 있습니다.
아울러 GPU는 GPU 내부의 수천개 core들의 연결 뿐만 아니라 다른 GPU내부의 core들간의 연결도 가능한 구조를 강화시켜 GPU들간의 연결로 구성된 데이터센터 및 자원을 서로 공유할 수 있는 이른바 풀링(pooling)구조로 진화되고 있습니다.
생성형 AI의 서비스가 텍스트를 넘어 이미지로 이제는 동영상까지 지원하는 수준까지 발전했습니다.
앞으로도 이러한 거대한 계산 용량이 필요한 AI 서비스는 지속적으로 등장할 것이며 이 수요에 대응하기 위한 CPU와 GPU도 발전해 나갈 것이라 예상합니다.
![A logo representing a calm, happy Sweden countryside village with only blue color palette [and has a minimalist and modern style] [incorporating elements of nature] [with a touch of Scandinavian design] [that reflects a sense of community]](https://raonstad.com/wp-content/uploads/2024/03/img-rsVXmvlyKd0umO7b2rMmaUnI.png)