|
CPU의 멀티코어화와 다른 HD 5800 시리즈의 듀얼코어화
CPU와 GPU는 앞서 언급한 것처럼 처리 성능과 효율을 높이기 위해 멀티코어화되고 있지만, CPU와 GPU 각각의 프로세서들은 서로가 최적화된 분야가 정해져 있기 때문에 지향하는 방향도 다르다.
그러나, 최근에는 GPU를 범용 컴퓨팅에 이용하는 GPGPU 기술들이 데스크탑 시장에도 등장하여 CPU와 GPU의 경계가 서서히 무너지고 있는 것도 사실이다.
여기에서는 듀얼코어화가 진행된 HD 5800 시리즈를 통해 CPU의 멀티코어화와 다른 GPU의 멀티코어화에 대한 부분을 살펴보도록 할 것이다.
5800 시리즈의 듀얼코어화?
CPU의 멀티코어화는 이미 쿼드코어를 넘어 앞으로 등장할 것으로 예상되는 6코어 또는 그 이상의 코어들이 등장하면서 익숙한 부분이다. CPU에서의 멀티코어화는 앞서 언급된 것처럼 CPU의 클럭과 내부 연산 성능 및 효율 개선이 한계에 다다르자 이를 해결하기 위한 대안으로 등장한 것이다. GPU에서의 멀티코어화는 현재의 싱글 GPU들도 이미 연산 능력 향상을 위해 CPU의 코어에 해당하는 스트림 프로세서를 크게 늘리는 방법이 이미 오래전부터 시도되고 있다.
[HD 5800, 듀얼코어화된 (?) GPU]
[HD 4800, 싱글 GPU]
AMD ATI가 내놓은 HD 5800 시리즈는 DirectX 11과 더불어 또 하나의 주목받고 있는 것은 GPU의 듀얼코어화다. 이는 기존 싱글 GPU에서 CPU의 코어에 해당하는 스트림 프로세서만을 증가시켜 성능을 향상시켜오던 전통적인 방식과 달리 CPU의 멀티코어처럼 내부 구조가 개선되었기 때문이다.
HD 5800 시리즈는 CPU의 코어에 해당하는 스트림 프로세서를 2개의 큰 그룹으로 나누고 이들과 관계된 명령 관련 제어부를 2개로 분화하였다. 이로 인해 명령 제어부를 간소화할 수 있게 되었고 이를 통한 처리 성능과 효율을 높일 수 있게 되었다. 이 방법은 이전 세대의 GPU들에서는 사용되어오지 않은 것으로 HD 5800에서 시도되었다. 이는 CPU 제조사인 AMD와 그래픽카드 제조사인 ATI가 만났기 때문에 가능해진 것으로 소비전력 개선 부분 등도 이들의 합병을 통한 성과로 볼 수 있다.
HD 5800 시리즈가 시도한 듀얼코어화의 장점은 GPU 병목현상의 하나인 내부 버스 구성을 이전 세대보다 간결하게 만들 수 있고 이로 인하여 GPU 설계가 보다 간단해졌다. 또, 이로 인해 프로세서의 제어부도 이전보다 간단해진다.
CPU 멀티코어와는 또 다른 HD5800 듀얼코어화
[HD 5800 시리즈 GPU (좌)/ 애슬론64 X2 듀얼코어 (우)]
HD 5800 시리즈는 이전 세대와 달리 SIMD 코어를 2개의 큰 그룹으로 나누고 래스터라이저 2개, 두 그룹 코어 사이에 위치한 Data Request Bus, Shader Export (Crossbar Switch), 프로그램의 분기나 스레드 변환 등을 관리하는 스레드시퀀서 (Thread Sequencer)도 2개를 제공하여 명령 제어 유닛을 구성하는 방법도 CPU의 듀얼코어와 닮아있다.
이는 내부 버스와 명령 제어 유닛의 최소화를 통해 처리 효율을 높이는 방식으로 SIMD 코어 (스트림 프로세서)들 간의 로드 밸런싱을 유지하여 최적의 성능을 만들 수 있도록 개선되고 있다.
CPU에서 경쟁사보다 네이티브 듀얼코어를 먼저 구성했던 AMD 애슬론64 X2 듀얼코어 구조를 보면 HD 5800 시리즈와 유사한 모습을 하고 있는
것을 알 수 있다. 각 코어들에는 L2 캐쉬가 개별로 제공되고 System Request Interface를 통해 제어되며, 크로스바 스위치를 통해 메모리 컨트롤러와 HyperTransport 버스를 사용할 수 있게 만들어진다.
듀얼코어 구성에서는 System Request Interface와 크로스바 스위치를 통해 각 코어들 간에 별도의 버스없이 서로 데이터를 주고받을 수 있는 구조를 가지며, HD 5800 시리즈는 로컬 데이터 캐쉬와 전역 공유 데이터 캐쉬, 분화된 코어 등의 제공이 이와 비슷한 구조로 그룹화된 코어들 간의 데이터 교환을 효율적으로 진행할 수 있게 만들어졌다.
엄밀히 말하면 CPU 듀얼코어는 아니지만...
그러나, GPU의 듀얼코어화는 CPU가 GPU와 다른 연산에 최적화되고 있기 때문에 CPU에서 말하는 듀얼코어 방식과는 엄밀히 말하면 다르다. CPU는 각각의 CPU 코어들이 각각의 실행 유닛에 서로 다른 명령을 실행할 수도 있고 같은 명령에 대해 서로 협력하여 더 높은 성능을 제공할 수 있는 구조다. 하지만, GPU는 대량의 데이터에 대해 동일한 처리를 진행할 수 있도록 최적화된 병렬 프로세서이므로 처리 성능 향상은 같지만, 명령어 제어는 여전 기존 구조와 크게 차이가 없다. 결과적으로 CPU는 명령을 유연하게 실행할 수 있고 GPU는 일정한 데이터에 대해 같은 명령을 실행하여 유연성이 상대적으로 떨어지는 것이다.
그럼에도 불구하고 GPU의 CPU식 멀티코어화를 위한 노력이 CPU에서처럼 일어날 수밖에 없다고
필자는 판단하는데 이는 CPU가 그랬던 것처럼 하나의 SIMD 묶음으로 클럭과 IPC (클럭 당 명령어 처리 능력)를 높여 성능을 높이던 방식의 한계가 점점 다가오고 있기
때문이다. 그리고 CPU 코어에 해당하는 스트림 프로세서를 계속 늘리는 방식만으로는 더 많은 트랜지스터 집적의 한계가 따르게 되고 공정 적용 문제도 나타나고 있기 때문이다. 이런 문제들을 극복하기 위해
여러개의 SIMD 묶음 즉, 멀티코어 형태의 CPU들이 등장하고 있는 것과 같은 이치라고 볼 수 있다.
또한, HD 5800 시리즈의 CPU식 듀얼코어화는 같은 제품을 이전 세대나 경쟁사와 같은 방식으로 스트림 프로세서를 늘렸을 경우 명령 제어부 등이 복잡해진다. 이는 다이 사이즈 증가와 소비전력, 발열의 증가로 이어지고 생산 비용의 증대도 이루어질 수밖에 없다. 이전 세대에 시도하지 않았던 부분 역시 제조 공정의 한계로 다이 사이즈가 크게 증가되어 제조 비용 상승 등이 이어지므로 AMD ATI의 GPU 전략과도 상반되는 부분이었기 때문으로 볼 수 있다. 또한, 빠른 시장의 등장에도 걸림돌이 되었을 것이다.
물론, 이전 세대의 GPU보다 성능이 2배 넘게 향상되도록 만드는 일도 이제 점점 어려워지고 있기 때문에 GPU 효율과 성능 향상 등의 여러 가지 부분을 고려했을 때 멀티코어화는 CPU 뿐만 아니라 GPU가 가진 과제이기도 하다.
그런면에서 AMD ATI Radeon HD 5800 시리즈에서 시도된 듀얼코어화 방식은 기존보다 성능을 높이면서 소비전력이나 발열도 줄일 수 있고 내부 구성도 보다 간소화되는 등의 장점들을 얻을 수 있어 앞으로는 이런 방식의 시도가 보다 활발하게 이루어질 것으로 예상된다.
|