● throughput 시대에 맞춘 아키텍처 연구

원래는 throughput 컴퓨팅 시대가 온다고 하는 예측으로부터 시작되었다.


「우선 우리는 CPU 아키텍처에 throughput 시대가 온다고 예측했다. 그리고 그 시대를 향해서 가장 파워 효율이 높고, 가장 밀도의 높은 throughput 엔진을 개발하기로 했다. 그것도 싱글 스레드 퍼포먼스에 대해 타협하지 않고. 그 때문에 CPU의 작업 부담량을 연구하여 각 작업의 부담량이 시스템 중에서 어떻게 행동하는지를 연구했다」(Moore씨).


PC용 CPU의 발전은 긴 기간 싱글 스레드의 성능 향상이라고 하는 주박에 묶여 있었다. 그러나 AMD는 2002~2004년 정도에(Moore씨가 AMD에 참가한 전후)에서 향후는 throughput가 최대 중요 요소가 된다고 판단했다. 거기서 스레드의 병렬 처리로 고 throughput를 얻을 수 있고 게다가 필요한 트랜지스터 카운트가 적은 고효율로 고밀도의 아키텍처를 연구하기 시작한 것 같다.


일반적으로 CPU 코어를 심플하게 하면 면적 당 코어 수가 증가하여 throughput는 높아진다. 그러나 그 경우 싱글 스레드 퍼포먼스가 떨어져 버린다. AMD는 싱글 스레드 성능을 떨어뜨리지 않고 끝내는 것도 최대 중요 포인트로서 잡았다. 거기서 작업 부담량을 분석하여 싱글 스레드 성능을 유지하면서 고 throughput를 달성할 수 있는 CPU 아키텍처를 찾았다. 그것이 Bulldozer의 출발점이었다.



● Busy인 것은 정수 유닛으로 부동 소수점 유닛은 잠시

AMD는 Analyst Day의 프레젠테이션 중 작업 부담량 연구 결과가 어떻게 되었는지를 다음과 같이 설명했다.


「우리는 모든 어플리케이션의 작업의 부담량을 조사했다. 그 결과 프로세서 중에서 가장 자주 사용하고 있는 부분은 정수 연산 유닛이며 부동 소수점 연산 유닛은 아닌 것을 알 수 있었다. 부동 소수점 연산 유닛도 사용되지만 대다수(의 명령)는 정수 연산 유닛에 간다」(Chekib Akrout씨(General Manager, Technology Group)).


부동 소수점 연산 유닛은 실은 99%의 시간은 사용되지 않았다. 수치 연산은 매우 보기 드물었다」(Patrick Patla씨(Vice President and General Manager, AMD Server Business)).


즉 CPU 코어 중에서 사용 빈도 높은 부분과 낮은 부분이 있으며 붐비는 부분이 성능의 열쇠가 되는 것을 AMD는 인식했다. 그리고 빈도가 높은 것이 정수 연산부이며 빈도가 낮았던 것은 부동 소수점 연산부라고 하는 것이다. 특히 Patla씨가 담당하는 서버 시장의 경우는 하이 퍼포먼스 컴퓨팅(HPC)이외에서는 부동 소수점 연산은 거의 사용되지 않을 것이다.


거기서 AMD는 클러스터 아키텍처 Bulldozer를 선택하게 된다. CPU 코어 안을 분할하여 정수 연산부 등을 스레드 전용의 자원으로 하는 한편으로 부동 소수점 연산부를 스레드 공유 자원으로 했다.


「우리는 Bulldozer 모듈 안에 2개의 정수 연산 유닛과 2개의 정수 스케쥴러를 분리하여 구현했다. 이 2개의 정수 연산 코어는 각각이 1 스레드를 완전하게 독립하게 병렬로 실행 할 수 있다. 그 때문에 최고 퍼포먼스를 달성할 수 있다」(Akrout씨).

Bulldozer의 아키텍쳐



스레드 간 간섭이 없는 정수 연산 클러스터

Moore씨에 의하면 이 아키텍처 선택은 싱글 스레드 퍼포먼스를 떨어뜨리지 않고, 효율을 올리기 위한 선택이었다고 한다.


「우리는 2개의 완전하게 분리된 완전한 정수 연산 부품을 갖추는 것이 바람직하다고 깨달았다. 2개의 분리한 정수 코어는 각각이 정수 오퍼레이션에서는 풀 기능을 갖춘다. 1개의 정수 코어가 다른 정수 코어와 실행 시에 간섭하는 것이 없다. 또 분리된 데이터 캐쉬, 분리된 스케쥴러를 갖춘다. 그 때문에 양쪽 모두의 정수 연산 코어가 동시에 사용되고 있는 경우에서도 싱글 스 레드 퍼포먼스는 매우 좋은 것이 된다. 그것이 열쇠였다」.


AMD의 판단은 Hyper-Threading과 같은 SMT 기술에서는 정수 연산 자원이 충분하지 않으면 자원의 경합이 발생하고 성능이 억제되어 버린다고 하는 것이었다. 그것보다 사용 빈도가 높은 정수 연산 파이프는 각각의 스레드마다 분리한 클러스터 베이스 멀티 스레딩이 퍼포먼스를 올린다.


한편 스레드 간 경합 하는 빈도가 낮다고 예상되는 부동 소수점 연산 유닛은 공유로 했다.


「통상은 부동 소수점 연산 유닛은 별로 사용되지 않는다. 그러니까 공유는 완벽하게 자연스러운 일이다」라고 Moore씨는 설명하고 있다.

부동 소수점 유닛을 공유하는 Bulldozer

 

 

 

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

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