|
CPU와 GPU는 서로 다른 아키텍처로 발전

일반적으로 CPU는 분기 예측과 랜덤 메모리 액세스 등의 범용 컴퓨팅 즉, 시리얼 명령에 최적화되어 다양한 연산을 해줄 수 있는 프로세서이며, GPU는 부동소수점 연산을 이용하여 병렬 명령 처리에 최적화되고 그래픽 처리와 같은 특정 연산에 강점을 보이는 프로세서다.
이러한 결과 CPU와 GPU의 아키텍처는 서로에 강점을 가진 분야에서 연산 성능을 증가시키면서 서로 다른 방향으로 발전해왔다.
하지만, GPU는 특정 연산에 최적화된 프로세서이기 때문에 CPU와 같은 범용 컴퓨팅에 활용도는 크게 떨어질 수밖에 없는 구조를 가진다. 반대로 CPU는 여러 가지 연산에는 유용하게 사용될 수 있지만, 그래픽연산 등에서는 상대적으로 떨어지는 성능을 제공한다. 그러나, 최근 GPGPU 기술을 통해 GPU들은 CPU와 협력하여 서로 부족한 부분을 보완할 수 있게 바뀌고 있다.
CPU와 다른 GPU 아키텍처

GPU는 CPU와 비교하여 명령 실행 및 제어가 보다 간단하다. GPU는 엄연히
이야기해서 CPU에 해당하는 코어 이미 수백개씩 가지고 있는데, CPU의 코어단위에 속하는 GPU의 코어는 엄연히 스트림 프로세서 또는 쉐이더 프로세서로 불리고 있다. GPU는 보통 여러 개의 스트림 프로세서를 일정 단위로 묶어 (클러스터, SIMD 엔진) 연산을 처리하도록 구성되고 있다.
HD 5800 시리즈를 예로들면, 20/ 18개의 SIMD 엔진 (16 스레드 프로세서 내부에 5개의 스트림 코어가 내장 (16 x 5 = 80)되며, 20/ 18 SIMD 엔진을 구성하여 1600/ 1440개의 스트림 프로세서를 제공)으로 구성된다. 이 클러스터들에 포함된 스트림 프로세서들은 같은 명령을 처리하도록 설계되고 있다. GPGPU를 이용한 GPU 병렬 컴퓨팅이 확대되고 있지만, GPU는 어디까지나 많은 데이터의 동일한 처리에 최적화된 병렬 프로세서다.
현재의 GPU들은 클러스터 전체가 1개의 명령으로 여러 개의 데이터를 처리하는 SIMD (Single Instruction Multiple Data) 구조로 만들어지며, NVIDIA GT300의 경우 MIMD (Multiple Instruction Multiple Data)의 새로운 아키텍처가 적용될 것으로 알려지고 있다.
CPU는 GPU보다 복잡하다
반면, CPU는 명령 실행 및 제어하는 구조가 GPU보다 복잡하다. 현재의 CPU들은 명령 실행 유닛이 GPU보다 많은 편이며, 이에 따라 서로 다른 명령을 병렬로 실행할 수 있는 구조를 갖고 있다. 예를들어 명령 1과 2를 실행함과 동시에 또다른 명령 3을 실행하는 유닛을 동작하도록할 수 있다.
멀티코어 CPU들은 각각의 CPU 코어들이 각각의 실행 유닛에 서로 다른 명령을 실행할 수도 있고 같은 명령에 대해 서로 협력하여 더 높은 성능을 제공할 수 있는 구조를 갖추고 있다. 이는 CPU가 명령을 유연하게 실행할 수 있다는 것을 말해주며, GPU는 일정한 데이터에 대해서 같은 명령을 실행하여 유연성이 떨어지는 모습을 보여준다.
또, CPU는 동시에 다수의 명령을 실행할 수 있는 명령 스케쥴러가 제공되지만, GPU는 복잡한 명령 스케쥴러를 제공하지 않고 소프트웨어를 이용한 스케쥴링이 진행된다. 그만큼 GPU는 소프트웨어의 최적화도 중요하다.
CPU는 GPU에 비교해 실행유닛 비율 떨어져
그러나, CPU는 GPU와 비교하여 명령 제어 관련 유닛이 복잡해지고 더욱 커져 실질적인 실행 유닛의 비율이 줄어드는 문제를 갖고 있다. 그와 비교해 GPU는 명령 제어 유닛이 차지하는 비율이 CPU보다 상대적으로 적기 때문에 실질적인 실행 유닛인 스트림 프로세서를 GPU 내부에 더 많이 포함할 수 있다. 이는 GPU가 CPU보다 다이 면적 당 연산 성능이 높을 수밖에 없는 이유다.
일반적으로 GPU에 캐쉬가 탑재되지 않을 경우 코어 간의 메모리 지연시간도 없으며, 내부 버스도 간단해진다. 이로 인해 프로세서를 마음껏 탑재가 가능하여 CPU보다 연산 성능이 크게 증가된다.
하지만, GPU는 프로그램에 조건 분기명령이 포함될 경우 처리 성능이 크게 떨어지는 경우가 있으며, 이는 GPU를 범용 컴퓨팅이 가능해진 현재에도 GPU로 실행할 수 있는 어플리케이션들에 제약이 있다는 것을 말해준다. 결과적으로
현재 GPU 아키텍처로는 CPU가 할 수 있는 일들을 모두 대체하기는 힘들다는 것을 의미한다.
이론적으로 효율적인 것은 하나의 프로세서에 하나의 분기처리가 가능해야 하지만,
이는 현실적으로는 어렵고, 명령 제어 관련 유닛이 복잡해지면 오히려 그만큼 실적인 실행유닛이 줄어 성능저하를 가져오게 된다.
이에따라 현재의 GPU들은 분기명령 처리 향상을 위해 GPU를 개선하는 방향으로 나가고 있으며, 기존보다 범용적인 작업들에 GPU를 활용할 수 있도록 GPGPU에 보다 최적화된 모습도 보여준다.
멀티코어화 되는 CPU와 GPU

CPU는 현재 멀티코어화가 진행되고 있다. CPU는 과거에는 클럭을 높이고 내부 연산 성능을 높이는 방법이 주로 사용되어 왔다. 그런데 최근에는 미세공정 적용이 더디어지고 클럭 향상 및 내부 연산 성능 개선의 한계에 다다르자 코어 수를 직접적으로 늘려 처리 성능을 높이는 멀티코어화가 대안으로 떠올랐다.
이 결과 현재는 듀얼코어를 넘어 쿼드코어, 그리고 얼마 있으면 6코어 프로세서도 데스크탑 시장에 등장할 것으로 알려지고 있다. 이처럼 CPU의 멀티코어화는 과거부터 사용해온 성능 향상 방법이 한계에 다다르자 이를 해결하기 위해 적용되기 시작한 방법이다. 현재의 멀티코어 CPU는 서로 독립된 코어로 구성되지만, 공동으로 하나의 작업을 빠르고 효율적으로 처리하는 것도 가능하고 서로 다른 작업을 각각 처리할 수도 있다.
GPU는 싱글 GPU들도 CPU 관점에서 볼 경우 CPU의 코어에 해당하는 스트림 프로세서를 이미 크게 늘려놓고 있는 상황이기 때문에
이미 멀티코어인 제품이라 할 수 있다. 하지만, CPU와 달리 GPU의 멀티코어화는 GPU가 CPU보다 상대적으로 복잡하지 않은 제어부를 갖고
있어 보다 빠르게 스트림 프로세서를 늘려 성능을 증가시킬 수 있었기 때문이며 오히려 공정 등으로 인해 더 많은 트랜지스터를 집적하지 못하는
것이 성능 확장의 걸림돌이 되기도 했다. 즉, CPU와 달리 일정 수준의 성능 향상을 위해 트랜지스터 집적률을 높여 연산 성능 향상이 가능한 스트림 프로세서를 크게 늘리는 것이 일반적인 GPU의 멀티코어화라고 볼 수 있다.
GPU는 현재 상황에 맞는 일정 성능을 제공하기 위해 제한된 면적에 트랜지스터를 더 많이 집적해야 하는데 이는 어려운 작업이며, 미세공정이 뒷받침되어야 더욱 효과를 볼 수 있다. 이 결과 많은 수의 스트림 프로세서를 병렬로 연결하여 배치함으로써 이전 세대의 GPU보다 높은 처리 성능을 얻을 수 있게 되었고 이는 AMD ATI와 NVIDIA 모두 같은 방법을 사용하고 있다. 이처럼 GPU의 멀티코어화는 CPU처럼 처리 성능을 높이는 관점에서는 목적이 같으나 근본적인 연산 처리 방법은 크게 달라지지 않았다고 볼 수 있다.
AMD와 NVIDIA의 서로 다른 GPU 발전방향

AMD는 중간 공략이 먼저, 최고성능은 그다음
AMD ATI의 GPU 개발 전략은 잘 알려져 있듯이 일정 수준의 성능을 가진 GPU를 만들고 고성능을 위한 듀얼 GPU나 성능을 줄인 GPU를 만들어 경쟁사보다 빠른 시장 출시 및 대응이 가능한 스윗스팟 전략이다. 물론, 이전 세대보다 성능이 더 높아지는 것은 당연한 부분이다.
또한, GPU는 본업인 그래픽처리에 집중하면서 연산 성능을 개선하고 성능 저하를 가져오는 복잡한 부분들을 제거해나가는 방식이다. 이는 결과적으로 경쟁사보다 더 빠르게 시장에 GPU들을 내놓을 수 있었고 여기에는 경쟁사보다 빠르게 적용된 미세공정의 덕도 톡톡히 보고 있다. 그리고 그래픽 처리에 특화된 기능의 확장에 많은 수의 트랜지스터를 할당하여 처리 효율 및 성능을 높이는 것도 포함된다. 결과적으로 최근에 등장한 HD 5800 시리즈는 HD 4800 시리즈의 800개의 스트림 프로세서보다 2배 가량 더 늘어난 1600/ 1440개의 스트림 프로세서를 제공할 수 있게 된 것도 AMD ATI의 GPU 전략 덕분이다.
NVIDIA는 단일 GPU 최고 성능이 목표
NVIDIA는 AMD ATI와는 약간 다른 GPU 개발 전략을 갖고 있다. 우선 단일 GPU로 최고 성능을 제공하는 GPU를 개발한 후 고성능 듀얼 GPU나 하위 제품들을 만드는 방식이다. 이 방식의 장점은 높은 성능을 제공하는 것이지만, 그에 따른 여러 가지 단점들도 갖게 된다.
단일 GPU로 최고 성능을 목표로 하다보니 GPU 내부 연산 성능개선과 명령 제어부가 이전보다 복잡해지며, 범용성에도 중점을 두고 개발되다보니 다이 사이즈가 경쟁사보다 커지는 것은 물론 이에 따른 발열이나 소비전력도 크게 늘어난다. DX11 GPU로 알려진 GT300 역시 HD 5800 시리즈에 사용된 RV870보다 더 커질 것으로 알려지고 있으며, 제조 공정은 40nm로 서로 같으나 비교적 최근까지 AMD ATI보다 한 단계씩 느린 공정이 적용되곤 했다.
또, 다이 사이즈가 커지면서 실리콘 웨이퍼 당 생산할 수 있는 GPU의 수가 크게 줄어 칩의 생산과 제조에 드는 비용이 경쟁사보다 크게 늘어난다는 것도 문제가 된다.
최근에는 이런점들에대한 지연 때문에 개발 시간도 느려져 경쟁사보다 느리게 시장에 제품을 내놓는 문제도 발생되고 있다.
전략에 따라 효율도 달라
AMD ATI와 NVIDIA의 GPU 개발 전략의 차이에 따라 각 GPU의 효율도 다르다. 일반적으로 NVIDIA GPU 아키텍처는 어떤 프로그램이라도 효율적으로 실행이 가능한 장점을 가지지만, 명령 제어 유닛이 상대적으로 커져 GPU 다이 사이즈가 커지는 문제를 가진다.
AMD ATI의 GPU 아키텍처는 그래픽 연산 처리의 효율이 높은 장점을 갖게 되지만, 그 외의 프로그램에서의 성능 차가 나타날 가능성이 높은 단점을 동시에 갖는다. 그러나, 명령 제어 유닛이 NVIDIA GPU들보다 상대적으로 적기 때문에 실질적인 연산 실행유닛의 수는 크게 증가되며, 이에 따라 AMD ATI GPU들이 트랜지스터 당 성능 효율이 높다.
최근 AMD ATI와 NVIDIA 양사는 그래픽 연산처리 능력을 향상시키기 위해 GPU를 개선하고 있는 것과 동시에 GPU의 병렬 컴퓨팅 즉, GPGPU 기술 지원에도 힘을 쏟아 이에 보다 최적화된 GPU 구조를 도입하고 있다.
GPU의 듀얼코어화 역시 AMD ATI가 경쟁사인 NVIDIA보다 빠르게 이루어져 각사의 전략에 따른 차이가 드러나고 있다.
|