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

[분석정보] 카베리와 최근 인텔 AMD 칩의 부동소수점 피크 성능

tware 2014. 1. 25. 19:00



카베리 출시와 함께 몇몇 사람들은 HPC 프로그램에서 적합한 플렛폼인지 궁금했죠. 카베리의 fp64 성능은 분명하지 않았지만 amd에 공식 확인결과 fp32의 1/16 입니다. 아래의 표는 피크 계산치 입니다. 터보부스트로 인해 피크치 계산을 위한 클럭 결정이 어려운데, 멀티쓰레드와 이종 시나리오에서 터보가 어렵기 때문에 CPU는 기본클럭, GPU는 부스트 주파수를 사용 합니다.


피크 CPU성능은 코드와 컴파일의 SIMD ISA에 따라 다릅니다. 우리는 SSE, AVX(FMA 제외) , FMA + AVX 3가지 경우를 고려 합니다.


CPU 부동소수점 피크 성능
  플랫폼 카베리
트리니티 라노
하스웰
아이비
  칩
7850k
5800k
3870k
4770k
3770k
  CPU 클럭
3.7GHz
3.8GHz
3.0GHz
3.5GHz
3.5GHz
SSE fp32
(CPU의 사이클당
처리능력)
 16 16
32
32
32
  SSE fp64
(CPU의 사이클당
처리능력)
8
8
16
16
16
  AVX fp32
(CPU의 사이클당
처리능력)
 16  16 - 64  64
  AVX fp64
(CPU의 사이클당
처리능력)
 8  8 - 32
 32
  AVX FMA fp32
(CPU의 사이클당
처리능력)
 32  32 -
128
 -
  AVX FMA fp64
(CPU의 사이클당
처리능력)
 16  16 -
64  -
  SSE fp32
(gflops)
 59.2  60.8  96 112 112
SSE fp64
(gflops)
 29.6  30.4 48 56  56
  AVX fp32
(gflops)
 59.2  60.8 -
224
 224
  AVX fp64
(gflops)
 29.6  30.4 -
112  112
  AVX FMA fp32
(gflops)
 118.4  121.6 - 448  -
  AVX FMA fp64
(gflops)
 59.2  60.8 -
224  -


(표만 봐서 뭔지 잘 모르겠다면 아래의 설명을 보면 쉽습니다.


1. 카베리로 보면 SSE fp32이 사이클당 16 x cpu클럭 3.7GHz = 59.2 gflops가 되죠.


2. 이것은 CPU라는 제품의 모든 능력입니다.(1코어당이 아닙니다.)  즉 카베리,트리니티와 같이 불도저 아키텍처 기반의 제품은 1모듈에 2코어 + 1FPU로 되어 있으니까 4코어에 FPU 2개가 내는 총 능력 입니다. 2코어 1 FPU의 성능은 절반이 되겠죠. 라노,하스웰,아이비브릿지는 1코어마다 모두 FPU를 가지고 있습니다.


3. 그러나 FPU마다 구성이 다르기 때문에 성능이 당연히 다릅니다. 전에도 한번 얘기했지만, 명령을 처리할 수 있는 능력과 명령어 처리 성능은 다른 것 입니다. 마치 티코랑 람보르기니랑 둘다 똑같이 온로드용이고 바퀴4개 달렸고, 기타 기능 다 똑같은데 왜 람보르기니가 더 빠르냐? 람보르기니 조작아니냐? 라는 것과 같은거죠. 이것에 빠져서 같은 명령을 지원하는데....... 헤어나올 길이 없죠. 단순한 문제를 어렵게 끌고 가는 거죠. 헤어나오지도 못하구요. 이 제품이 떨어지는 이유는 뭔가 있어.. 뭔가.. 음모론속으로;;;;;;;;;;;;;;;;;;  (정치는 음모론이 꽤나 많이 맞는 경우가 있지만.. 이런건 음모론이 있을 필요가 없죠. 금방 다 밝혀질 건데요. 제품 정보는 기다리면 나오면 알게되고, 성능도 나오면 곧 알게되고.. 소프트웨어적인 것이라면 이 역시 분석을 통해서 알게되죠. 또는 소프트웨어가 음모론이 통하려면, 전세계 모든 개발자가 동참하고 입다물고 있어야 가능하겠죠.)


4. 불도저 아키텍처는 256bit(128+128) AVX+FMA 유닛이 1개이고, 하스웰은 이것이 2개 입니다. 즉 보통 말하는 코어수로 계산하면  8코어의 불도저는 동클럭 4코어 하스웰의 1/2 flops 능력을 갖게 됩니다. 8코어 불도저는 256bit(128+128) AVX+FMA 유닛이 총 4개, 하스웰은 8개가 되니까요. 즉 4코어의 카베리나, 리치랜드는 총 2개 이므로 1/4의 피크 성능을 갖습니다(동클럭). 라노는 128bit SSE 유닛이 2개씩 들어 있습니다.


5. 라로는 AVX 및 FMA를 아이비브릿지는 FMA를 지원하지 않습니다.


6. 이런 차이로 인해서.. 위의 flops 결과가 나오며, FPU구성이 다른 관계로 라노는 카베리,리치랜드보다 SSE에서는 성능이 더 높습니다. 즉 예전 프로그램은 라노가, 앞으로의 경우는 카베리나 리치랜드가 높은거죠. 128bit 단위로 계산하면 라노는 4코어니까 128bit 유닛이 8개,불도저 계열은 128+128= AVX+FMA 가 2코어당 1개. 128비트로 치면 카베리 리치랜드는 총 4개가 되겠죠. (물론 이건 피크치 성능이라 실제와는 당연히 다릅니다.)


7, 하드웨어적인 차이를 아니까 쉽게 알수가 있죠. 떠도는 무슨 인텔 최적화 그런 문제가 아닌 원초적인 하드웨어의 차이죠 ALU성능의 차이처럼 말이죠. 또는 인텔 컴파일러가 인텔은 최적화 해주고 AMD는 대충 만들어 낸다.그런것도 아니구요. 이건 전의 기사를 참조.


[벤치리뷰] 컴파일러에 따른 CPU 성능


8. 잘 모르는 분들은 오해가 생길수 있어서 추가하면, 256bit AVX 라고 해서 256bit의 정밀도로 연산하는 것이 아닙니다. 연산정밀도는 fp32(단정밀도)와 fp64(배정밀도)입니다.(큰게 더 정밀한 값을 계산할 수 있죠.) avx같은건 이런 32bt 데이터 8개를 한번에 처리하는 겁니다. fp64면 4개. 그래서 피크성능이 증가하는 것이죠. SSE나 AVX 같은걸 SIMD (Single Instruction Mutiple Data)라고 하죠. 말 그대로 하나의 명령어로 여러 데이터를 처리하는 겁니다. 위 설명대로면 라노의 경우 4코어에 총 128bit 연산기가 8개가 되는데 128 / 32 = 4. 4 x 8 = 32가 되죠. 그래서 라노의 fp32 성능은 32 x 클럭 = 96gflops가 나오는 겁니다.



가장 왼쪽의 불도저 계열과(카베리의 스팀롤러 코어는 여기서 디코더가 2중화 되지만.. 나머지는 대충 그림대로 보시면 됩니다.) 중간의 페넘2계열(라노 포함. 라노는 페넘2보다 약간 회로가 보강되지만 역시 대충)을 보시면 FPU의 차이를 쉽게 알수 있죠. 또 FPU는 아니지만, 코어별 유닛수를 보시면 왜 불도저가 전세대 보다 IPC가 떨어지는가 역시 알수 있을 겁니다. (물론 피크가 이렇다는 거지 실제는 ipc는 덜 차이 납니다. 불도저 계열에서도 파일드라이버, 스팀롤러로 가면서 조금씩 부분부분 개선을 통해서 조금씩 올랐구요)


AMD와 마찬가지로.. 이것들 역시 이것만 가지고 비교할수는 없긴 하지만.. 대충 그림으로 쉽게 차이를 알수 있을 겁니다. 이런 차이로 gflops 차이가 발생하고.. 다른부분들을 보면 역시 마이크로 아키텍처 마다 차이가 있어서 IPC 차이가 또 나는데.. 그림만으로 봐도 샌디브릿지(아이비브릿지)에 비해서 하스웰의 포트가 더 많이 늘어나 있는걸 알수 있죠. 쉽게 하스웰의 IPC가 증가된 것 역시 이것을 통해서 알 수 있습니다. FPU는 FMA 지원의 차이로 인해서 2배로 벌어지구요.(물론 피크성능)


그림으로 보니 더 쉽죠. 대충 이렇게 되어 있다고 보시면 됩니다.자세한 내용들은 각 아키텍처 별로 기사가 다 올려뒀으니 찾아서 보시면 되겠죠.


GPU 부동소수점 피크 성능
 플랫폼 카베리
트리니티
라노
하스웰
GT3e
하스웰
GT2
아이비
브릿지
 칩 7850k
5800k
3870k
4770R
4770k
3770k
 GPU 클럭
 720MHz 800MHz
600MHz
1.3GHz
1.25GHz
1.15GHz
 fp32  1024 768
800
640
320
256
 fp32
(Open CL)
 64 48 **
0
0
0
0
 fp64
(Direct3D)
 64 0?
0
160
80
64
fp32 gflops
 737.3 614
480
832
400
294.4
 fp64 gflops
(OpenCL)
46.1
38.4 **
0
0
0
0
 fp64 Gflops
(Direct3D)
 46.1 0?
0
208
100
73.6


(참고로 AMD  A10-7800의 내장 그래픽은 7850k와 같은 SP 512개 (새로운 AMD식 표현 8GPU 코어 = 8CU. 1CU = 현 아키텍처에서 64SP),


A10-7700k, A8-7600 의 내장 그래픽은  SP 384개 (6GPU 코어)로 720Mhz = 552.9 Gfops


A6-7400의 내장 그래픽은 SP 256개 (4GPU 코어) 756Mhz = 387 Gflops


인텔의 경우 GT3 가 EU 40개(1클럭당 640 flops) x 1.3Ghz =  832 Gflops

GT2가 EU 20개 (일부모델은 EU 16개) (1클럭당 320 flops) x 클럭 =

GT1인 셀러론,펜티엄의 경우 EU 10개 입니다.(1클럭당 160 flops)

인텔의 경우 같은 GT2를 달아도 CPU 모델마다 클럭이 다르니 클럭을 보시고 계산하면 되겠죠. 또 CPU 제품이 워낙 많아서 일일이 다 올릴수 없구요.


예: 인텔 1EU 당 16 Flops x 40EU x 1.3Ghz = 832 Gflops


AMD 예 : 1SP 당 2 Flops x 512 sp x 720Mhz = 737 Gflops)


GPU쪽 역시 계산방법은 같습니다. 카베리 fp32  1024 x GPU클럭 = 737.3 gflops가 나옵니다. 아무래도 기본 유닛이 더 많은 AMD쪽이 기본 처리량이 더 높습니다. 다만 인텔쪽은 대신 클럭이 높기 때문에 GT3 기준으로 보면 인텔이 fp32의 성능이 더 높습니다.


게임이야 보통 fp32 성능이 중요하니 그렇다고 치고 (인텔의 경우 텍스처 성능이 떨어지는게 게임에서 매우 떨어지지 않나 싶지만...), 과학 기술용도의 HPC 슈퍼컴 이런 용도라면 fp64가 중요하겠죠. (그래서 이런 용도에 따라서 일반 그래픽 카드는 fp32위주로 fp64성능은 1/16이나 1/24 라던가 1/8 이라던가 그렇고.. HPC용도로 슈퍼컴퓨터 등에 채용되는 테슬라, 제온파이 등은 fp32의 1/2 성능 입니다. 테슬라나 제온파이는 fp64 성능을 보통 얘기하고, 게임용 VGA들은 fp32를 얘기하니까 이렇게 액면가의 성능으로 연산이 누가 뛰어나다 라고 하면 안되겠죠. 단정밀도 성능인지 , 배정밀도 성능인지를 따져봐야 합니다.)


인텔의 fp64 성능는 1/4로 추정되며(fp32 대비) 다이렉트 퓨트는 fp64는 지원하지만 OpenCL fp64는 지원하지 않습니다. 트리니티 리치랜드는 OpenCL fp64표준이 아닌 독자적인 (cl_amd_fp64)로 가능합니다. 리치랜드 트리니티는 다이렉트 컴퓨터 fp64를 지원하지 않고 카베리가 모두 지원 합니다.


하스웰과 카베리를 fp64 성능을 비교하면 CPU와 GPU를 모두 포함해 카베리의 fp54 피크는 약 110 gflops 입니다. AVX와 FMA명령어로 코드를 최적화 하고 하스웰의 CPU코어에서 실행이 더 나을 것이다. 윈도우8을 사용하는 경우 C++ AMP를 통해 아이리스 프로를 사용할 수 있습니다. 전체적으로 카베리는 fp64 작업용에 의문이 듭니다.


이종연fp32의 성능은 카베리가 하스웰 gt2와 아이비브릿지를 능가하지만 하스웰 GT3e는 윈도우에서 더 강력합니다. 인텔 GPU는 리눅스에서 OpenCL을 지원하지 않지만 드라이버를 만들고 있습니다. 이에 이종연산 fp32는 리눅스에서는 카베리가 윈도우는 GT3e가 강하다.


(좀 제 글이 많이 추가가 됐는데.. 이 기사와 관계없이 원래 예전부터 CPU별 성능을 정리할려고 했다가 블로그도 제대로 못할때도 많고.. 시간도 없고, 또 누가 볼 사람이나 있나? (블로그를 보면 젤 인기 있는 글들은 거의 제품 리뷰쪽)아무튼 쭉 못하다 마침 관련 기사가 있어서 기사자료와 함께 설명을 조금 붙였습니다.


이 기사에서는 부동소수점 연산 부분만 설명하지만, 그게 아닌 일반적인 정수연산 부분도 마찬가지 입니다. 블로그에 각 CPU별 아키텍처 글들이 있는니, 관심이 있는 분들은 과거의 글부터 하나씩 보며 비교해 보셔도 될 것 입니다. 다만 AMD와 인텔의 내부의 구성이 똑같지 않기 때문에 AMD와 인텔을 1:1로 비교는 할수 없습니다. 기준을 세워서 상대적인 비교를 해보면 되겠죠. AMD는 K8을 기준으로 CPU 구성이 어떻게 되어있나? 인텔은 콘로를 기준으로 CPU 구성이 어떻게 되어있나?를 살펴 보고, 인텔은 그이후로 네할렘,샌디브릿지,하스웰로 오면서 어떻게 변화했나? AMD도 마찬가지로 K8에서 불도저의 경우를 보면 되겠죠. 그러면 왜 IPC가 변화하는지를 알수 있습니다. 콘로와 K8의 경우 콘로가 약 25% 정도 이상 동클럭에서 더 빠르고, 콘로가 약간 개선된 공정이전 버전인 울프(요크필드)와 K8의 개선버전이자 L3캐쉬 추가버전인 데네브2에 와서는 요크와 데네브가 거의 동급정도 되죠. 요기서 어떻게 변화했나를 보면 IPC가 왜 차이가 이렇게 나나를 알수 있습니다. 인텔은 계속 성능증가를 위한 확장에 확장을, 불도저는 8코어를 넣기위해서 1코를 오히려 축소.)


Optimizing Heterogeneous Computing for Intel® Processor Graphics


[벤치리뷰] 4세대 APU 카베리 성능과 전력



[벤치리뷰] 기가바이트 BRIX Pro(GB-BXi5-4570R)VS 카베리



[벤치리뷰] 아키텍처를 쇄신한 A10-7850K 벤치 마크 보고서



[분석정보] AMD의 차세대 APU Kaveri (카베리)는 아키텍처의 전환점



[CES 2014] AMD 차기 APU "Kaveri"의 개요 및 성과를 공개