듀얼 코어와 Hyper-Threading의 중간적인 Bulldozer
AMD는 지난주 개최한 "2009 Financial Analyst Day "에서 차세대 CPU 아키텍처"Bulldozer (불도저) "의 개요를 밝혔다. AMD 에게는 K7부터, CPU 아키텍처의 근본 체인지가 된다. (K8은 코어 아키텍처로 K7 확장이었다).
그 중에서도 중요한 것은 Bulldozer가 사용하는 클러스터 기반의 멀티 스레딩 기술이다. AMD는 2개의 CPU 코어를 밀접하게 결합시킨 프로세서 모듈에서 멀티 스레딩을 제공한다. AMD의 Chekib Akrout 씨 (General Manager, Technology Group)는 Analyst Day에서 다음과 같이 설명했다.
AMD CPU 아키텍처의 추이
"Bulldozer 코어라고 말하고 싶지만, 이것은 실제로는 모듈이다. 2개의 코어가 1개의 모듈에서 고도로 결합된 모듈의 2개의 코어는 최고의 컴퓨팅 밀도를 달성 할 수 있도록 주의 깊게 설계되어 있다. "
Bulldozer "모듈"은 2스레드를 병렬로 실행 가능한 프로세싱 요소이고, 다만 듀얼 코어와 Intel Hyper-Threading 코어와의 중간적인 존재이다. 듀얼 코어도 Hyper-Threading도 Bulldozer 모듈도 스레드의 병렬 실행 측면에서는 같지만, 코어 파티션이 크게 다르다.
아래는 PC 용 CPU에서 볼 수 있는 대표적인 멀티 스레딩 아키텍처를 비교한 그림이다. 상단은 일반 멀티 코어 아키텍처. AMD는 전통적으로 "CMP (Chip Multi-Processor)"라고 부르고 있다. 중앙이 이번 Bulldozer 아키텍처. AMD는 "클러스터 기반 (Cluster-based) 멀티 스레딩"라고 부르고 있으며, 클러스터드 아키텍처 라는 것도 있다. 하단은 SMT (Simultaneous Multithreading) 아키텍처로 Intel Hyper-Threading이 대표적이다.
이 3 가지 방법 모두 2 스레드를 병렬로 실행하는 것을 목적으로 하고 있다. 그러나 그 경우 코어의 얼마만큼 리소스를 2 스레드의 공유와, 얼마나 각 스레드의 점유로 하는가 파티셔닝이 크게 다르다.
멀티 스레딩 아키텍처의 비교
(2개의 스레드를 동시에 실행 할 수 있는 3가지 방식.
SMT는 그 이상의 동시 스레드 실행으로 만드는 것도 가능.
2코어와 SMT 비교시 가볍게 말하면 각각의 장점과 단점이 서로 반대.
2코어는 각각의 스레드를 완전히 1코어에 독립적으로 각각 실행이 장점.
SMT는 1코에를 완전히 공유해서 2 스레드를 동시에 처리하기 때문에, 1스레드만 처리하는 때에 2코어는 1코어가 완전히 놀지만 SMT는 1스레드 안에서 1코어를 최대한 다 쓰는게 가능. (SMT 자체가 코어를 풀 공유 함으로서 더 코어전체를 최대로 쓰기 때문에 이것보다는 당연히 못하지만..)
실행되는 관점으로 볼때만 입니다. 2코어는 크기도 2배라는 점 이런건 별개죠. 모든 프로그램이 8스레드,16스레드, 32스레드 등등 사용자가 8코어를 쓰던, 16코어를 쓰던 다 쓸수 있게 만들어 지지 않기 때문에.. 현실적인 관점으로 보면 SMT의 효율성은 더 올라가긴 합니다. 크기는 5% 증가로 성능은 30% 증가에다, 1코어 2스레드 제품으로 설명하면 1스레드만 쓰는 프로그램 사용시에도 손해보는게 별로 없죠. 반면에 2코어는 50%가 잉여. 코어를 늘려서 생각해도 마찬가지죠. 물론 2코어는 크기도 2배인 만큼 성능증가도 이론적으로만 보면 2배(실제로는 약간 안되지만). 다만 여기까지는 같은 수준의 코어를 비교시 인거지.. 코어의 성능 자체가 완전 차이나는 것과 비교 설명이 아닙니다.
성능차가 아주 나는 코어라면, 2코어의 크기가 1코어 2스레드 보다 무조건 크다고 할수도 없고, 성능도 무조건 더 좋다고 할수도 없죠.
불도저 방식은 이걸 적당히 섞었다 라는 느낌으로, 2코어 1FPU를 하나의 모듈에 넣어서, FPU 부분만 2코어가 서로 공유하는 형태가 됩니다. 물론 기타 L2 캐쉬같은 것도 공유 하지만, 보통 우리가 말하는 유닛들만 말하면 말이죠. 2코어 부분은 서로 독립적인 자원을 갖지만, FPU 부분만은 서로 나눠쓰기.)
리소스의 파티션이 다르다
상단의 CMP 형 듀얼 코어가 가장 단순하다. 단일 스레드에서만 실행 CPU 코어를 2개 묶을 뿐이다. 이 경우, 자원의 공유는 전혀 없거나 있어도 캐시 등 극히 일부에 한정된다. 따라서 각각의 CPU 코어가 전혀 방해되지 않고 각 스레드를 실행시킬 수 있다.
CMP는 성능은 높지만, 당연히 CPU 코어 2개 분의 리소스를 전부 구현해야 하기 때문에 구현 비용도 높다. 간단한 계산은 CPU 코어 1개분 100% 비용으로 100%의 성능 향상을 이론적으로 얻을 수 있게 된다. 듀얼 코어면 싱글 코어의 2배, 쿼드 코어면 4배 리소스가 필요하게 된다.
하단의 SMT는 발상으로는 1개의 CPU 코어를 확장하여 2 스레드를 실행시킬 수 있도록한다. 연산 리소스는 물론, 캐시, 스케쥴링 기구, 명령 페치 및 디코딩 등 대부분의 리소스를 2개의 스레드가 공유한다. Intel 예제에서는 레지스터와 버퍼와 같은 자원의 극히 일부만이 각 스레드 전용으로 되어있을 뿐이다.
SMT의 장점은 구현 비용이 비교적 작아도 된다 점. Intel은 SMT 자체를 위해 구현한 자원은 매우 적고 몇 %의 범위라고 설명해 왔다. 그러나 그 반면, 성능 향상도 제한된다. 필연적으로 스레드간에 리소스 경합이 일어나기 때문이다. 구현에 따라서도 다르지만, AMD는 Intel Hyper-Threading을 통한 성능 향상의 폭은 25% 정도 될 것이라고 주장하고있다. 그림의 성능은 일단 이 숫자를 사용하고 있지만, 실제로는 더 클지도 모른다.
그런 의미에서, SMT는 CPU 리소스의 빈 곳을 채우는 발상의 기술이고, 2 스레드 성능을 추구하는 기술이 아니라고 할 수있다. 그림의 비용은 Intel의 숫자를 사용하고 있지만 몇 %의 구현 비용과의 트레이드 오프로는 나쁘지 않아 보인다. 그러나 실제로는 더 클지도 모른다.
그것은 SMT에서 성능을 올리려고 하면 CPU 코어에 더 많은 연산 리소스나 더 넓은 윈도우의 명령 스케쥴링 등이 필요하며, 전체 CPU가 비대화 된다. AMD는 이전부터 성능에 비해 CPU 코어가 커지는 것이 문제라고 지적했다 (그러나 Intel의 Nehalem 설계자는 명령 스케줄링의 강화 등은 Hyper-Threading과 관계가 없다고 주장하고 있다). 현실적으로 CPU 코어의 비대화의 어느 정도가 SMT 때문인지를 판단하는 것은 어렵다.
어쨌든, AMD는 SMT 구현 비용이 Intel의 주장보다 큰 것이라고 추정하고 있으며, 따라서 SMT는 효율이 나쁘다고 생각하고 있는 것 같다.
높은 스루풋을 겨냥한 클러스터 기반 멀티 스레딩
그래서 AMD가 자사의 멀티 스레딩 기술로 내세워 오는 것이 한가운데의 클러스터 기반의 멀티 스레딩이다. 클러스터 기반 아키텍처의 발상은 듀얼 코어 모듈을 가장 효율적으로 만들 수 있다. 2개의 CPU 코어 중 공유해도 문제가 적은 부분은 공유 리소스로 공유하고, 성능에 영향이 큰 부분을 각각의 스레드 전용 리소스로 남긴다. 이를 통해 효율적인 듀얼 코어로 마무리 한다.
공유 리소스의 스레드끼리의 경합이 예상되므로 클러스터 기반 아키텍처는 CMP 듀얼 코어와 같은 전체 성능은 얻을 수 없다. 그러나 대부분의 경우는 각각의 스레드 점유 자원 (정수 연산 유닛과 정수 스케줄러 등)이 사용되기 때문에 높은 성능 향상은 얻을 수 있다고 한다. 별로 사용하지 않는 리소스 (부동 소수점 연산 유닛 등)를 공유하거나 공유하지 않으면 비효율적 (명령 디코더 등)을 공유함으로써 효율성을 도모 하기 때문이다.
이 기술은 AMD 고유의 것이 아니라 이전에도 비슷한 예는 몇 가지있다. 예를 들어, Oracle에 합병 작업중인 Sun Microsystems의 Niagara / Niagara2 (UltraSPARC T1 / UltraSPARC T2) 등이다. 특히 Niagara2의 구성은 각 코어 당 2개의 정수 연산 파이프와 1개의 부동 소수점 연산 파이프로 Bulldozer에 조금 비슷하다 (각 코어 8 스레드 실행. 나이아 가라는 동시 멀티스레딩이 (SMT) 아닙니다. Fine-grained 멀티스레딩으로 여러 스레드의 명령을 동시에 실행 할 수 없습니다. 나이아가라 각각의 코어는 스레드를 돌아가면서 실행합니다.)
Sun의 SPARC 아키텍처
자원을 부분적으로 공유화함으로써 클러스터 기반 멀티 스레딩에 필요한 자원은 CMP 듀얼 코어보다 훨씬 적어진다. AMD는 싱글 코어에 대해 50%의 자원 증가로 80%의 처리량 향상을 얻을 수 있다고 지금까지 설명해 왔다. 즉, 단순 계산으로는 듀얼 코어의 75%의 자원으로 듀얼 코어의 90%의 성능을 제공하게 된다.
구현 비용에 대해 얻을 수 있는 처리량 업이 크기 때문에 다이 면적당 컴퓨팅 밀도가 높아진다. 또한 리소스 경합으로 각 스레드의 실행 성능이 꺾이는 것이 적은 것도 장점이다. SMT의 경우에는 각 스레드의 성능이 오히려 떨어질 가능성도 있지만, 클러스터 기반의 경우 그 가능성이 낮아진다.
Bulldozer 아키텍처
Hyper-Threading을 따르지 않은 Bulldozer
AMD는 Bulldozer의 개발을 총괄한 Chuck Moore 씨 (Corporate Fellow and CTO Technology Development)가 AMD에 참가한 2004년 이후 클러스터드 아키텍처를 생각하고 있던 것 같다. 2005년경 부터 같은 기술에 대한 설명을 시작했기 때문이다. Intel의 구현을 보고 라기 보다는 멀티 스레딩 성능 향상을 쫓은 결과, 최상의 방법으로 클러스터 기반이 좋다고 결론에 도달한 것 같다.
실제로 Analyst Day에서도 서버를 담당하는 Patrick Patla 씨 (Vice President and General Manager, AMD Server Business)가 다음과 같이 말했다.
"몇몇은 "이것이 Hyper-Threading 대한 AMD의 대답인가" 라고 물어 오지만, 거의 모욕에 가깝다. 왜냐하면 우리가 원한 것을 깨달은 결과 이렇게 된 것이고 결코 다른 사람 구현을 쫓았기 때문이 아니기 때문이다. 이것은 (Bulldozer 아키텍처)은 멀티 스레딩이고 멀티 태스킹이며 멀티 코어 이기도 하다. 우리가 추구한 것은 Bulldozer 모듈에서 성능을 끌어내는 최상의 길이다. "
실제로, Bulldozer 모듈의 클러스터 기반 멀티 스레딩은 파티션의 비율이라는 점에서, SMT 보다 듀얼 코어에 가깝다. CMP 듀얼 코어와 비교해 어떻게 성능을 떨어 뜨리지 않고 효율화 도모를 생각하는 점에서도 듀얼 코어의 발상이다. 그리고 그 결과 얻어지는 것도, Hyper-Threading 과는 크게 다른 것이다.
2009년 11월 20일 기사 입니다.
앞으로 실제로는 어떻게 될지는 모르겠지만, 2015년 현재 소문으로 떠도는 말로는 차기 AMD CPU가 지금의 모듈형 아키텍처를 버리고 SMT를 (인텔식 이름 하이퍼스레딩) 쓴다고 하는데.... 나와 보면 알겠죠.
[분석정보] AMD 차기 아키텍처 Bulldozer 와 Bobcat 의 개요
[분석정보] AMD의 AVX 지원과 Bulldozer의 클러스터형 마이크로 아키텍처
[분석정보] CPU 아키텍처 시대의 전환점이 되는 AMD의 "Bulldozer"
[고전 2002.09.12] Hyper-Threading Technology를 지원하는 HTT Pentium 4 3.06GHz
[분석정보] intel의 듀얼 코어 CPU 1번타자 Montecito
[분석정보] 멀티 코어 + 멀티 스레드 + 동적 스케줄링으로 향하는 IA-64
[분석정보] CPU 고속화의 기본 수단 파이프라인 처리의 기본 1/2
[분석정보] CPU 고속화의 기본 수단 파이프라인 처리의 기본 2/2
[분석정보] 슈퍼 스칼라에 의한 고속화와 x86의 문제점은
[분석정보] 명령의 실행 순서를 바꿔 고속화 하는 아웃 오브 오더
[분석정보] x86을 고속화하는 조커기술 명령변환 구조
[분석정보] CPU와 메모리의 속도 차이를 해소하는 캐시의 기초지식
[분석정보] 캐쉬 구현 방식으로 보는 AMD와 인텔이 처한 상황
'벤치리뷰·뉴스·정보 > 아키텍처·정보분석' 카테고리의 다른 글
[분석정보] 다시 처음부터 시작된 라라비 무엇이 문제였나? (0) | 2009.12.09 |
---|---|
[분석정보] Intel 48 코어 IA 프로세서를 개발 (0) | 2009.12.03 |
[분석정보] 라라비 (Larrabee)의 비장의 카드 공유 가상 메모리 (0) | 2009.12.02 |
[분석정보] 인텔의 스칼라 CPU + 라라비의 이기종 CPU 비전 (0) | 2009.12.01 |
[분석정보] AMD 차기 아키텍처 Bulldozer 와 Bobcat 의 개요 (0) | 2009.11.12 |
[분석정보] Larrabee는 SIMD와 MIMD의 균형 - Intel CTO가 말한다. (0) | 2009.11.09 |
[분석정보] 가상화 시대의 네트워크? IDF 2009에서 해독 (0) | 2009.10.05 |
[분석정보] NVIDIA 차세대 GPU 아키텍처 Fermi를 발표 (0) | 2009.10.01 |