벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] 결정된 헤테로지니어스 멀티코어에 대한 기류

tware 2006. 8. 18. 19:00

 

 

단일 코어에서 이기종 멀티 코어로

 컴퓨터용 CPU는 "이기종 (Heterogeneous : 이종 혼합) 멀티 코어 '로 향하고 있다. PLAYSTATION 3 (PS3)에 실리는 'Cell'이 그 방향을 결정하고 AMD CPU와 ATI GPU의 통합을 결정 지었다. 아마 향후 10년의 CPU 아키텍처의 방향은 이기종 멀티 코어가 된다.

 

Cell processor high level diagram

 


 AMD가 Cell과 유사한 방향으로 진행하는 것은 ATI 인수 발표 전에 이미 시사되고 있었다. AMD의 Phil Hester (필 헤스터) 씨 (Senior Vice President & Chief Technology Officer (CTO))는 5월에 다음과 같이 말했다.

 "우리의 작업은 범용 컴퓨팅이 주류로, 게임 플랫폼과 다른 스토리다. Cell은 게임 플랫폼을 위한 프로세서로 범용 컴퓨팅 (적용)은 어려울 것이다. 그러나 잠재적으로는 (강력한) 범용 프로세서에 Cell (의 SPE)을 첨부 할 수도 있다고 생각한다. 특정 워크로드는 Cell (의 SPE)에서 달리게 해 범용 워크로드는 강력한 (범용 코어에) 맡긴채 프로세서에서 달리게 하는 모양이다. "

 AMD의 범용 (General Purpose) CPU 코어에 ATI GPU의 연산 프로세서 "Programmable Shader"를 조합한 모습은 바로 이에 해당한다. Cell의 연산 프로세서 "SPE (Synergistic Processor ​​Element)"는 GPU의 Shader와 어느 정도 비슷한 성격을 가지기 때문이다. AMD가 GPU 코어에서 Shader를 추출하여 CPU와 밀접하게 통합시키는 방향을 선택하면, 그 구조는 점점 Cell과 흡사하게 된다.

 

 

AMD Processor transition?

 


슈퍼 스칼라부터 CPU 아키텍처의 큰 고비

 그렇지만 이기종형 CPU 코어의 구성 자체는 진귀한 것은 아니다. 오히려 임베디드 계 CPU에서는 제어용 코어, 연산용 코어라는 구성은 극히 보통으로, 컴퓨터용 CPU가 예외적 이었다. 어디까지나 컴퓨터용 CPU의 트렌드 변화이다.


 지금까지의 PC & 서버 전용 CPU는 단일 싱글 코어를 오로지 확장하는 방향으로 진행 되었다. 그것이 지난 1~2 년에 단일 아키텍처의 CPU 코어를 멀티화한 '호모 지니 어스 (Homogeneous : 균질) 멀티 코어'로 급선회하고, 다음 2~4 년의 단계에서는 이기종 멀티코어로 나아가려고 한다.

 AMD는 2008년 이후에는 적어도 PC 용 CPU를 헤테로지니어스 멀티 코어로 진화시킨다. 이기종 형태의 고성능 CPU의 선구 Cell을 사용한 PS3는 곧 시장에 등장한다. Intel은 리서치 프로젝트 "Many-core (매니 코어)"에서 이기종 멀티코어화를 내세우고 있으며, 아마도 제품 수준에서 향후 4년 정도 이와 비슷한 방식으로 진행될 것으로 예상된다.

 이 변화는 수십년에 한번 CPU 아키텍처의 큰 고비가 될 가능성이 높다. 그것은 이기종 멀티코어화는 CPU에게 다양한 근본적인 변화를 포함하기 때문이다. 그것은 다음과 같은 변화다.

벡터 프로세서의 통합을 통해 10배의 연산 성능 향상
명령어 병렬성에서 스레드 병렬성과 데이터 병렬성의 변화
심플 코어화에 의한 성능 효율 업
모듈화에 의한 CPU 개발 효율의 향상
"무료 점심 임종 "소프트웨어 개발의 노력이 증가

 

CPU Architecture Trends

 


벡터 프로세서로 10배의 연산 성능

 이기종 멀티 코어와 한마디로 말해도 여러 아키텍처가 생각나는데, AMD나 소니 / IBM / 도시바는 어느정도 방향이 비슷하다. 모두 범용 (General Purpose) CPU 코어와 SIMD (Single Instruction, Multiple Data) 형 연산에 초점을 맞춘 프로세서 코어를 결합 구성을 취했다. PC 및 게임 콘솔 등은 "벡터 프로세서"의 일종인 SIMD 형 프로세서가 통합되는 코어로서 타당하다고 판단된 것이다.

 Cell도 AMD CPU도 이기종 구성을 가지는 목적은 대략적으로 동일한 것으로 생각된다. 그것은 연산 성능을 비약적으로 향상시키는 것. Cell은 3.2GHz시 이론 값 200GFLOPS 이상 (8개의 SPE 경우 205GFLOPS)의 부동 소수점 연산 성능 (단 정밀도의 경우)을 자랑한다. AMD의 GPU 통합 CPU도 아마 수백 GFLOPS 클래스의 단 정밀도 부동 소수점 성능에 달할 것으로 보인다. Intel도 목표로 TFLOPS (테라 플롭스)를 내걸고 있다.

 단 정밀도에서 수십 GFLOPS 멈추는 종래의 PC용 CPU에서 연산 성능을 비약적으로 향상시키려는 것이 목적이다. 같은 공정세대, 같은 다이 사이즈 (반도체 본체의 면적)에 비교하면 10~20 배의 성능 향상이 될 것이다. 어떤 Cell 관계자는 "10배의 성능 향상이라면, 아키텍처의 변화를 받아들일 것이라고 생각한다"라고 말했다.

 간단히 말하면, "이기종 멀티 코어 = 수백 GFLOPS = 10배 성능 '으로 방향타를 돌렸다.

 


ILP 집중에서 TLP와 DLP 중시로 변화

 또한 이것은 CPU 아키텍처의 방향성 근원적인 변화와 파악할 수 있다. 지금까지의 범용 CPU는 명령어 수준의 병렬성 "ILP (Instruction-Level Parallelism)"를 추구해 왔다. 이를 위해 슈퍼 스칼라 구조에서 아웃 오브 오더 (out-of-order) 실행형 아키텍처를 개발했다.

 그러나 앞으로는 멀티코어화에 의한 쓰레드 수준 병렬성 "TLP (Thread-Level Parallelism)"를 높여 탑재하는 코어로 벡터 프로세서를 선택해 "DLP (Data-Level Parallelism)"를 높인다. 즉, ILP에 의한 성능 향상에서 TLP & DLP 의한 성능 향상으로 방향타를 돌린다. (CPU에서 ILP = 연산파이프 수를 늘려서 명령어 처리를 동시에 많이 할수 있게 하는 것. 쉽게 말하면 IPC를 올리는 것,TLP= 멀티코어,하이퍼쓰레딩,멀티코어+하이퍼쓰레딩. DLP = SIMD = SSE,AVX 등 SIMD 말 그대로 하나의 명령으로 다수의 데이터를 처리.)

 Intel도 AMD도 범용 CPU 코어의 성능 확장을 포기한 것은 아니다. Intel은 Core Microarchitecture에서 범용 CPU 코어의 ILP와 DLP를 끌어 올리고 AMD도 다음 Hound 세대 범용 CPU 코어 ILP와 DLP를 올린다. 그러나 더 이상 이전과 같은 속도로 범용 CPU 코어를 확장하지 않는다. 범용 CPU 코어의 확장은 둔화시키고 다이 사이즈 (반도체 본체의 면적)의 대부분은 TLP 및 하위 프로세서 코어의 DLP 향상에 쓰게될 것으로 추정된다.

 그러나 TLP & DLP 의해 어떻게 성능을 향상시킬 수 있는지에 대해서는 아직 각사의 방향성이 확실하지 않다. 예를 들어, Intel은 싱글 스레드 프로그램을 실시간으로 쓰레드로 분해하는 것으로, 멀티 스레드 CPU에서 싱글 스레드 성능을 끌어 올리는 "투기 멀티 스레딩 (Speculative multithreading) '을 심각하게 고려하고 있다. 타사는 투기 멀티 쓰레딩은 관망하고 있다.

 

CPU Architecture Trends and performance

 

 

심플 코어화로 폴락의 법칙을 깬다.

 "단순 코어화 '도 키워드 중 하나다. 이기종 형식은 하위의 연산 프로세서 코어를 보다 심플한 코어로 함으로써 다수의 CPU 코어의 탑재를 가능하게 한다. Cell의 경우 범용 CPU 코어인 'PPE (Power Processor ​​Element) "도 심플 코어로 총 9개의 CPU 코어를 탑재한다. 비교되는, Cell과 같은 크기의 PC 용 CPU는 듀얼 코어에 머문다. 일반적으로 말해, Cell 코어는 Intel의 범용 코어의 1 / 4의 단순 계산이다. AMD의 CPU + GPU에도 범용 CPU 코어 1개 분의 공간에 적어도 4개, 많으면 10개 이상의 벡터 프로세서 (Shader)를 실을 수 있다고 추측된다. 이쪽도 심플 코어다.

 심플 코어화를 통해 무어의 법칙에 따른 성능 향상을 달성할 수 있다. Cell 관계자는 "지금까지의 CPU는 무어의 법칙에 따른 성능 향상을 달성하지 못한"이라고 지적한다. 즉, 공정 세대마다 2배의 성능 향상은 못해 왔다. 이것은 CPU 코어를 확장해도 거기에 맞은 성능 향상을 얻지 못하기 때문이다.

 이 CPU 개발 경험법칙은 이전부터 알려져 있었지만, Intel은 "폴락의 법칙 '이라고 이름 붙였다. Intel Microprocessor ​​Research Labs (MRL)의 디렉터겸 Intel Fellow 였던 Fred Pollack (프레드 폴락) 씨의 발견을 딴 것이다. 그에 따르면, CPU의 다이 크기 (= 트랜지스터)를 두배로 늘려도 성능은 제곱근 (약 1.4 배) 정도 밖에 증가히자 않는다 한다.

 즉, CPU 코어는 성능을 증가함에 따라 점점 비효율적이 되어왔다. 따라서 CPU 코어의 복잡화를 중지하거나 반대로 심플 코어화 하면 CPU 전체의 성능 효율은 올라간다.CPU 코어를 심플하게 둔채로 코어 수를 늘려 가다 보면 이론적인 성능은 공정 세대마다 배로 뻗어 가게 된다. 즉, 무어의 법칙에 따른 향상을 얻을 수 있어 폴락의 법칙을 깰 수 있다.

 

 

 

모듈화로 CPU 개발 지옥을 탈출

 CPU를 비교적 간단한 CPU 코어의 집합체로 재편성해 CPU의 개발 효율을 향상시킨다. CPU 코어는 공정 기술의 발달과 함께 사용할 수있는 트랜지스터 수가 기하 급수적으로 늘고있다. 따라서 CPU 코어는 매우 복잡하고 그에 따라 버그도 개발 비용도 증가 성능 튜닝도 어려워지고 있다고 한다. 또한 개발 규모가 거대화 되면서 설계의 전체 형상을 파악하는 것도 어려워지고, 프로젝트 관리 자체가 어려워지고 있다고 한다.

 이 문제는 Intel의 전 설계자 (P6, Willamette)였던 Robert P. Colwell (로버트 콜웰) 씨가 자신의 저서 "The Pentium Chronicles : The People, Passion, and Politics Behind Intel 's Landmark Chips"(2005 / 12 , Wiley-IEEE Computer Society Press)에서 지적하고 있다.

 또한 레거시를 끌고 가는 IA-32 명령어 세트의 경우, 명령 세트의 복잡성 때문에 성능 튜닝도 어렵다고 한다. Colwell 씨는 2004년 2월 미국 스탠포드 대학에서 행한 강연 "Things CPU Architects Need To Think About"에서 이 점도 지적했다. 그는 IA-32의 성능 향상을, "코끼리를 가파른 비탈로 밀어 올리는 것 (Pushing Elephants up Steep Hills)"라고 표현. 무리한 고속화로 인해 아키텍처 상의 취약성이 증가하고 있다고 설명했다.

 이러한 문제도 멀티 코어화로 억제 할수 있다. 범용 CPU 코어의 확장을 억제하며, 설계가 쉬운 심플 코어에 연산 프로세서를 추가한다면, 전체 디자인은 훨씬 쉽게된다. 연산 프로세서를 범용 CPU 코어의 1 / 4 규모라면 복잡성도 1 / 4이 된다. 다음은 각 코어 요소를 복사해 정렬할 뿐이다. CPU 전체 중 절반 이상을 복사한 회로가 차지한다면 실제 설계해야 하는 지역은 절반이 된다. 그만큼 개발 기간도 단축할수 있다.

 


메모리 대역폭이 최대의 장벽이 된다.

 이기종 멀티 코어화는 시스템 구성에 변화를 가져와 메모리의 중요성도 증가한다. CPU에 메모리 대역폭이 매우 중요하기 때문이다.

 연산 성능, 특히 벡터코어에 의한 스트리밍 유형의 프로세싱 성능이 증가하면 그에 맞는 메모리 대역폭이 CPU에 필요하다. 200GFLOPS 수준의 Cell이 25.6GB/sec의 메모리 대역을 사용한다. 단순히 생각하면, PC 용 이기종 멀티 코어가 500GFLOPS 수준에 도달했을 때는, 50GB/sec의 메모리 대역폭이 필요하다. 이것은 듀얼 채널 DDR3-1600의 2배의 메모리 대역폭이다.

 메모리 기술적으로는 DDR의 두배 빠른 GDDR이 있지만, 컴퓨터는 모듈에 의한 메모리 증설은 필수적이다. 현재 상황에서는 이러한 조건을 채우는 것은 Rambus의 XDR DRAM 계 메모리 기술 뿐이다. CPU 측의 변화는 메모리 아키텍처에도 큰 영향을 미칠 것으로 예상된다. 다른 코어가 서로 다른 메모리 액세스 동작을 취하는 것도 문제가 될 것이다.

 소프트웨어 측이 이기종 멀티 코어에 적응해 가면 소프트웨어의 확장성이 높아진다. 멀티 쓰레드 성능을 내기 쉽게 하기 때문에 멀티 코어뿐만 아니라 멀티 프로세서에서도 성능이 오르기 쉬워진다. 멀티 프로세서 구성도 호모지니어스가 아니라 헤테로지니어스가 가능하다. 예를 들면, AMD의 CPU + GPU에 비디오 카드를 추가하여 외부 GPU 칩에 처리를 분산하는 것이 가능하게 된다. 따라서 다양한 시스템 구성이 가능하게 된다. Cell과 같이 네트워크의 경유의 분산화도 아키텍처 단계에서 포함시키면 더 확장 가능한 전개도 보인다.

 


소프트웨어 무료 점심이 끝난

 그러나 이기종 멀티 코어로의 변화에​​는 고통이 따른다. 그것은 소프트웨어 측면이다. 이기종 멀티코어화에 따라 소프트웨어 개발 노력이 급증 할 가능성이 있기 때문이다. 이기종 멀티 코어 하드웨어 쪽의 고통을 소프트웨어 쪽으로 가져 오는 접근으로 생각할수 있다.

 

The First Slide Last


 이것은 "the free lunch is over (무료 점심은 끝났다)"라는 작년 (2005년) 미국에서 유명해진 말에 집약되어​​ 있다. 이것은 Microsoft의 Software Architect 인 Herb Sutter 씨가 칼럼 등에서 말하기 시작한 말이다. 프리 런치는 공짜 밥으로, 공짜 밥 먹기는 이제 할수 없다는 의미다.

 그동안 CPU는 싱글 코어의 성능을 높이는 방향으로 왔다. 그것은 소프트웨어에 입장에서 공짜 밥 먹는 것과 같았다. 즉, 소프트웨어 측은 아무것도 안해도 CPU가 진화하면 동일한 코드를 빨리 돌렸기 때문이다. 소프트웨어는 증가되는 (CPU) 성능을 자꾸 자꾸 먹으면 될뿐 이었다.

 그런데 CPU 벤더는 멀티 코어로 턴했기 때문에 상황이 바뀌었다. 범용 CPU 코어의 싱글 쓰레드 성능은 현재로서는 더 이상 급격히 증가해 가지 않는다. 대신 멀티 코어 화를 통해 멀티 쓰레드 성능이 급격히 올라 간다. 따라서 소프트웨어 개발자는 CPU의 성능을 살리려면 소프트웨어 측면을 근본적으로 전환해 가야한다.

 특히 이기종 멀티 코어가 되면 대응이 매우 중요하다. Cell과 AMD CPU + GPU의 경우 연산 코어이다 SPE 및 Shader에서 돌리는 코드를 쓰면 매우 높은 성능을 얻을 수 있지만, 그렇게 하지 ​​않으면 큰 성능 향상은 얻을 수 없다. 지금까지와 달리, 성능 향상은 공짜가 아니라 대가를 지불해야 한다. 무료 점심은 끝나 버린 셈이다.

 따라서 CPU 벤더는 소프트웨어 측면의 노력을 경감하기 위한 수단으로 점점 더 주력할 필요가 있다. 그것은 개발 환경이나, 라이브러리 및 로우레벨의 원시적인 것이다. AMD는 GPU 코어를 선택해 DirectX와 OpenGL의 넓은 소프트웨어 기반을 사용할 수 있지만 GPU 코어를 더 범용으로 쓰려고 하면 그것으론 부족하다. Cell도, 게임 개발이라는 비교적 닫힌 세계에서 퍼지기 위해서는 아직 개발 환경을 정돈해야 한다.

 이기종 멀티 코어화를 통해 소프트웨어의 부담이 늘어나는 만큼, CPU 벤더는 거기에 힘을 넣어야 한다. CPU 벤더의 역할은 하드 설계만이 아니라 소프트웨어 기반의 방향에 더욱 힘써야 한다. 그러나 Sutter 씨는 작년 (2005 년) Fall Processor ​​Forum의 키 노트 스피치에서 하드웨어 측면에는 소프트웨어 측면의 어려움에 대한 이해는 아직 적은 것이 아닐까 지적했다.

 문제는 여기에 있다.

 

 

 

2006년 8월 18일 기사 입니다.

 

 

 

[분석정보] AMD가 2009년의 CPU 코어와 통합 CPU의 개요를 발표

 

 

[분석정보] 메모리가 큰 벽이 되는 AMD의 퓨전 (FUSION) 프로세서

 

 

[분석정보] AMD가 확장판 K10 코어 기반의 APU Llano 를 첫 공개

 

 

[분석정보] 그리고 CPU는 DRAM 다이도 통합

 

 

[분석정보] Sandy Bridge와 Bulldozer 세대의 CPU 아키텍처

 

 

[분석정보] AMD의 차기 CPU 코어 "K9"는 2005 년에 등장인가?

 

 

[분석정보] K9는 DDR2 메모리와 차세대 HyperTransport에 대

 

 

[분석정보] K8 이후 크게 바뀐 AMD의 CPU 개발주기

 

 

[분석정보] AMD가 발표한 메인 스트림 APU Llano의 아키텍처