강력한 부동 소수점 연산 유닛

AMD는 부동 소수점 연산 유닛을 공유화 하면서 효율을 높이기 위한 수단을 설명했다.


「우리는 부동 소수점 연산 유닛을 공유 자원으로 했다. 다만 유연한 방법으로 공유할 수 있다. 부동 소수점 연산 유닛의 일부씩을 2개의 정수 연산 유닛이 각각 동시에 사용할 수도 있다. 혹은 정수 연산 유닛의 다른 한쪽이 부동 소수점 연산 유닛을 점유 할 수도 있다」(Akrout씨).


부동 소수점 연산 유닛은 병렬적인 스레드 실행이 가능한 유닛이 되어 있는 것 같다. 그리고 AMD는 부동 소수점 연산 유닛 자체를 매우 파워 풀하게 만들었다.


「우리는 부동 소수점 연산 유닛을 가장 효율적인 공유 자원으로 하기 위해서 매우 사이즈가 큰 것으로 했다. 128-bit(SIMD)의 FMAC(부동 소수점적 일본 재래의 주산기)를2개 갖추고 있다. 사용되는 경우에는 매우 고속이고 효율적으로 되도록 했다」(Patla씨).


Bulldozer에서는 부동 소수점 연산 유닛은 공유가 되고 있지만 자원은 강력해서 사용되는 경우에는 높은 퍼포먼스를 발휘할 수 있다. AMD는 Bulldozer의 설명에서는 부동 소수점 연산 퍼포먼스가 성장하는 것을 강조해 왔지만 그 이유는 여기서 명쾌하게 나타나고 있다. 덧붙여서 AMD는 범용 CPU에 넣는 SIMD 유닛의 벡터 길이는 단정도로 4-way(128-bit)가 적절하다고 생각하고 있어 Intel과 같은 단정도로 8-way(256-bit)로 적극적으로 확장하려는 자세는 볼 수 없다.


여기서 재미있는 것은 정수 연산 클러스터가 두 개에 대해서 부동 소수점 연산 클러스터가 하나라고 하는 비율이 비교적 일반적인 것이다. 예를 들면 Sun Microsystems의 Niagara2(UltraSPARC T1/UltraSPARC T2)이나 Rock 등도 두 개의 정수 코어와 하나의 공유 부동 소수점 코어라고 하는 비율이다. 또 구 DEC/Compaq의 Alpha 프로세서의 「EV8」도 4-way의 SMT(Simultaneous Multithreading)로 8개의 정수 연산 유닛의 클러스터에 대해서 4개의 부동 소수점 연산 유닛 구성이었다. multi-thread 성능을 추구하는 CPU가 이 비율을 취하고 있는 것은 멀티 스레딩 시에 효율이 뛰어나는 것을 나타내고 있다고 보여진다. 덧붙여서 EV8의 아키텍터 였던 Joel Emer씨는 현재는 Intel에 재적하고 있다(Intel Fellow, Intel Architecture Group).



● Heterogeneous화로 강력한 데이터 병렬 컴퓨팅 기능도 통합

사용 빈도가 낮은 부동 소수점 연산 유닛을 공유화하는 Bulldozer의 아키텍처는 현재의 작업 부담량에서는 납득할 수 있다. 그러나 향후의 throughput 중시의 작업 부담량에서는 부동 소수점 연산을 자주 사용하는 애플리케이션이 급증할 것이다. AMD도 Intel도 그러한 비전을 내걸고 있다. Bulldozer 모듈로의 부동 소수점 연산 유닛의 공유화는 그러한 흐름에 역행하는 것처럼 보인다. 그러나 그렇지 않다고 한다.


「시간과 함께 Bulldozer코어는 APU(Accelerated Processing Unit)에도 사용되어 간다. APU SOC(System on a Chip)로서 매우 파워 풀한 데이터 병렬 엔진을 CPU 위에 대비하게 된다. (Bulldozer코어의)작은 부동 소수점 연산 유닛의 기능과 자꾸자꾸 증가해 가는 GPU의 데이터 병렬 부동 소수점 연산 기능이 흥미로운 점이다」(Moore씨).


「Bulldozer는 APU가 되는 능력을 가지고 있다. 즉 heterogeneous컴퓨팅 기능을 통합할 수 있다」(Akrout씨).


아마 AMD의 전략은 다음과 같은 것이다. 향후 작업 부담량으로 증가하는 것이 예상되는 부동 소수점 연산의 요구의 상당수는 CPU에 싣는 GPU와 같은 데이터 병렬형 엔진으로 흡수한다. 그 쪽이 효율적이기 때문이다. CPU 코어 측의 부동 소수점 연산 기능의 확장은 APU화를 전제로서 약간 조심스럽게 억제한다. Bulldozer 또 하나의 중요한 컨셉은 heterogeneous화에 있는 것을 생각하면 아키텍처의 선택을 납득할 수 있다.


이렇게 하여 Bulldozer의 컨셉을 개관 하면 AMD가 Bulldozer 모듈을 듀얼 코어라고 세는 이유도 잘 알 수 있다. AMD로서는 주로 사용되는 정수 연산 파이프에 대해서는 완전하게 코어를 나누어 스레드 당 성능을 유지하고 있다. 그 발상의 원점은 현재의 싱글 스레드의 성능에 대해서는 가능한 한 유지하는 것에 있다. 그러니까 듀얼 코어라고 부를 수 있는 것일 것이다.

 

 

출처 : http://pc.watch.impress.co.jp/docs/column/kaigai/20091126_331235.html

by 흥배 2009. 12. 18. 08:30