부동 소수점 피크 성능 주장에 대한 이해
2014년 06월 07일
트위터로 보내기페이스북으로 보내기구글플러스로 보내기

07_altera_00.jpg

DSP, GPU 및 FPGA는 CPU 가속기로 동작하면서 성능은 물론 전력 효율을 향상시키는 이점을 제공한다. 다양한 종류의 컴퓨팅 아키텍처를 이용할 수 있으므로 설계자는 일관된 방법을 통해 성능과 전력 효율을 비교할 필요가 있다. 수용되는 방법은 초당 부동 소수점 연산(FLOPs)을 측정하는 것이다. 여기서 FLOPs는 IEEE 754 표준에 따른 단정밀도(32비트) 또는 배정밀도(64비트) 수의 덧셈 또는 곱셈으로 정의된다. 나눗셈, 제곱근, 삼각 함수 연산과 같은 고차 함수는 가산기와 곱셈기를 사용하여 구성할 수 있다. 이러한 연산 외에도 고속 푸리에 변환(FFT)과 행렬 연산과 같은 다른 일반적인 함수는 가산기와 곱셈기를 둘 다 필요로 하기 때문에 통상적으로 이러한 모든 아키텍처에서 1:1 비의 가산기와 곱셈기가 사용된다.

DSP, GPU, FPGA 성능 비교
우리는 최고 FLOPS 정격 수치를 기초로 DSP, GPU, FPGA 아키텍처의 성능을 비교한다. 최고 FLOPS 정격 수치는 가산기와 곱셈기의 합을 최대 동작 주파수로 곱하여 결정된다. 이것은 실제적으로는 결코 달성할 수 없는 계산 상의 이론적인 한계를 나타낸다. 일반적으로 모든 계산 유닛을 항상 가동할 수 있게 하는 유용한 알고리즘을 구현하는 것은 가능하지 않기 때문이다. 그러나 이 수치는 유용한 비교 척도를 제공한다.

DSP 피크 GFLOPs
먼저 TI(Texas Instruments)의 TMS320C667x DSP를 살펴본다. 이 DSP는 8개 DSP 코어를 포함하며, 각각의 코어는 2개의 프로세싱 서브시스템을 포함한다. 각 서브시스템은 4개의 단정밀도 부동 소수점 가산기와 4개의 단정밀도 부동 소수점 곱셈기를 포함한다. 전체로 64개 가산기와 64개 곱셈기가 있다. 현재 제공되는 가장 빠른 버전은 1.25GHz에서 실행하고, 최고 60기가플롭스(GFLOPs)를 제공한다.

07_altera_01.jpg

GPU 피크 GFLOPs
가장 강력한 GPU 중 하나는 NVIDIA의 테슬라 K20이다. 이 GPU는 CUDA 코어를 기반으로 하며, 각각의 코어는 단정밀도 부동 소수점 구성으로 클록 사이클당 하나의 명령어를 실행할 수 있는 단일 부동 소수점 다중-가산기 유닛을 탑재한다. 각 스트리밍 멀티프로세서(SMX) 프로세싱 엔진에는 192개 CUDA 코어가 있다. K20는 공정 수율 등의 문제로 단 13개만 사용할 수 있지만 실제로 15개 SMX를 포함하고 있다. 전체로는 2,496개의 사용 가능한 CUDA 코어를 제공하며, 클록 사이클당 2 FLOPs를 처리하고 최대 706MHz에서 실행한다. K20은 3,520 GFLOPs의 최고 단정밀도 부동 소수점 성능을 제공한다.

07_altera_02.jpg

FPGA 피크 GFLOPs
알테라는 현재 FPGA에 하드구현 부동 소수점 엔진을 제공하고 있다. 단정밀도 부동 소수점 곱셈기와 가산기가 프로그래머블 로직 구조 전체에 임베디드된 하드 DSP 블록에 통합되었다. 알테라의 중급 Arria® 10 FPGA 제품군으로 중간 크기의 FPGA는 10AX066이다. 이 디바이스는 각 블록에서 클록 사이클당 2 FLOPs를 실행할 수 있는 1,678개 DSP 블록을 탑재해, 전체로는 각 클록 사이클당 3,376 FLOPs를 제공한다. 450MHz의 정격 속도에서(이것은 부동 소수점의 수치이며, 고정 소수점 모드에서는 더 높다), 이 디바이스는 1,520 GFLOPs를 제공한다. 유사한 방식으로 계산하면 알테라는 하이 엔드 Stratix® 10 FPGA에서 10,000 GFLOPs 또는 10 TeraFLOPs의 단정밀도 성능을 제공한다고 말할 수 있다. 이것은 클록 속도의 증가와 훨씬 많은 DSP 컴퓨팅 리소스를 갖는 대형 디바이스의 결합으로 달성된 것이다.

07_altera_03.jpg

프로그래머블 로직을 사용하는 FPGA의 부동 소수점
부동 소수점은 FPGA의 프로그래머블 로직을 사용하는 FPGA에서 언제나 사용 가능했다. 더욱이 부동 소수점을 기반으로 하는 프로그래머블 로직의 경우 임의적인 정밀도 수준을 구현할 수 있으며, 산업 표준 단정밀도 및 배정밀도에 제한되지 않는다. 알테라는 7가지의 다양한 부동 소수점 정밀도 수준을 제공한다. 그러나 프로그래머블 로직 구현을 사용하는 특정 FPGA에 대한 최고 부동 소수점 성능을 결정하는 문제는 전혀 간단하지 않다. 따라서 알테라 FPGA의 최고 부동 소수점 정격 수치는 전적으로 하드구현 부동 소수점 엔진 성능을 기반으로 하며, 프로그래머블 로직은 부동 소수점에 사용되지 않는다고 가정한다. 프로그래머블 로직은 오히려 설계의 다른 부분인 데이터 제어와 스케줄링 회로, I/O 인터페이스, 내부 및 외부 메모리 인터페이스 및 기타 필요한 기능 등에 사용된다고 가정한다.

부동 소수점 성능을 결정하는 문제의 어려움
프로그래머블 로직을 사용하는 부동 소수점 성능의 계산을 매우 어렵게 만드는 몇 가지 요인들이 존재한다. 한 개의 단정밀도 부동 소수점 곱셈기와 가산기를 구성하는 로직의 크기는 FPGA 벤더의 부동 소수점 IP(intellectual property) 사용자 가이드를 참조하여 결정할 수 있다. 그러나 한 가지 핵심적인 정보는 사용자 가이드에 나와 있지 않은데, 그것은 필요한 라우팅 리소스이다. 부동 소수점을 구현하려면 엄청난 양의 프로그래머블 라우팅(프로그래머블 LE 간 인터커넥트)을 소비하는 대형 배럴 시프터가 필요하다.

모든 FPGA는 로직을 지원하는 일정한 양의 인터커넥트를 갖추고 있다. 이 크기는 일반적인 부동 소수점 FPGA 설계가 사용하는 양을 기초로 정한다. 그러나 유감스럽게도 부동 소수점은 대부분의 고정 소수점 설계보다 훨씬 높은 수준의 인터커넥트를 필요로 한다. 부동 소수점의 단일 인스턴스를 생성할 경우 이것은 사용되는 LE(logic element)의 일반 영역에서 라우팅 리소스를 가져올 수 있다. 그러나 다수의 부동 소수점 연산을 함께 결합하는 경우 라우팅 혼잡을 초래하며, 이는 비교 가능한 고정 소수점 FPGA 설계보다 훨씬 높은 로직 사용뿐 아니라 설계의 달성 가능한 클록 속도를 크게 낮추는 요인이 된다.

알테라는 이러한 문제를 “융합 데이터 경로(fused datapath)”라고 부르는 고유의 합성 기법으로 일정 수준으로 완화하고 로직 패브릭에서 매우 큰 부동 소수점 설계를 구현할 수 있게 하면서 단일 정밀도의 경우 27x27개 곱셈기와 배정밀도의 경우 54x54개를 이용한다.

또한 FPGA 로직은 100% 이용할 수 없다. 사용 가능한 로직 리소스의 많은 부분을 설계가 차지하고 있기 때문에 타이밍 클로저를 달성할 수 있는 클록 속도 또는 fMAX가 감소되며 결과적으로 타이밍 클로저를 전혀 달성할 수 없다. 통상적으로 로직의 70 - 90%를 실제로 사용할 수 있는데, 높은 밀도의 부동 소수점 설계에서는 이 범위가 더 낮아지는 경향이 있다.

부동 소수점 설계 벤치마킹
이러한 이유로 프로그래머블 로직으로 구현하는 경우 FPGA의 부동 소수점 성능을 계산하는 것은 거의 불가능하다. 대신, 최선의 방법은 타이밍 클로저 과정을 포함하는 벤치마크 부동 소수점 설계를 구성하는 것이다. 대안적인 방법으로 FPGA 벤더는 특정 FPGA에서 무엇이 가능한지를 평가하는 데 많은 도움을 줄 수 있는 이와 같은 설계를 제공할 수 있다.

알테라는 기본 설계뿐 아니라 복잡한 부동 소수점 설계를 포함하는 28nm FPGA 상에 벤치마크 설계를 제공한다. 발표된 결과에 의하면 28nm FPGA에서 FFT와 같은 단순한 알고리즘의 경우 수백 GFLOPs를 달성하고 QR과 콜레스키 분해(Cholesky decomposition)와 같은 복잡한 알고리즘의 경우에는 100을 약간 넘는 GFLOP를 달성할 수 있는 것으로 나타났다.

* 벤치 마크 결과에 대해서는 레이더 처리: FPGA 또는 GPU(PDF) 기술자료를 참조한다.

이 밖에 써드파티 기술 분석 회사인 버클리 디자인 테크놀로지(BDTI, Berkeley Design Technology, Inc.)는 알테라의 28nm FPGA 상에서 복잡한 고성능 부동 소수점 DSP 설계에 대한 독립적인 분석을 수행했다.

* 이 독립적인 분석에 대한 자세한 내용은 BDTI에서 작성한 알테라 28nm FPGA 상에서 BDTI가 수행한 부동 소수점 DSP 설계 흐름 및 성능에 대한 독립적 분석(PDF) 기술자료를 참조한다.

또한 다른 많은 부동 소수점 벤치마크 설계가 알테라의 28nm Stratix V FPGA 상에서 OpenCL™을 사용해 구현되었으며 요청 시 구입할 수 있다. 이들 설계는 하드구현 부동 소수점 DSP 블록 아키텍처로 인해 획기적인 성능 향상을 제공하는 Arria 10 FPGA로 이행하는 과정에 있다.

FPGA GFLOPs를 계산시 피해야 하는 방법
다시 반복하지만 부동 소수점은 주로 프로그래머블 로직으로 구현하면서 고정 소수점 곱셈기 리소스를 사용하는 FPGA에서 언제나 가능했다. 그러나 실제 성능과 처리 성능에 존재하는 일정한 모호함으로 인해 일부에서는 매우 공격적인 마케팅 주장을 내놓고 있다. 우리는 사례 연구로 자일링스(Xilinx)의 28nm 및 20nm FPGA를 사용하여 어떻게 그와 같은 인위적인 벤치마크를 구성할 수 있는지에 대한 실제 예를 제시한다.

자일링스가 28nm 공정에 구축한 Kintex-7 FPGA에 대한 단일 부동 소수점 기능 구성과 성능 결정에 사용된 리소스 정보에 대해서는 표 1을 참조한다.

** Virtex-7 디바이스는 Kintex-7 디바이스와 동일한 코어 아키텍처를 공유한다. 따라서 표 1의 수치는 아래의 예에 대한 기준으로 사용할 수 있다.

07_altera_t01.jpg

자일링스에서 제공하는 최대 로직 밀도 28nm 디바이스는 Virtex-7 XC7V2000T 디바이스로 18x25개 고정 소수점 곱셈기와 함께 1,954.56K 로직 셀(LC)과 2,160 DSP 슬라이스를 갖는다.

벤치마킹에 융합된 곱셈-덧셈 기능을 선택한다면 DSP 슬라이스가 부족해 단 1,440개 유닛만 구성할 수 있다. 또한 정격 속도는 최고 속도 디바이스에서 단일 인스턴스에 대해 438MHz이기 때문에 곱셈기-가산기 기능이 부동 소수점 아키텍처에 사용되는 표준 아키텍처이긴 하지만 최고 GFLOPs 주장으로는 빈약한 선택이다.

부동 소수점 정격 수치를 극대화하려면 최상의 선택은 덧셈/뺄셈 기능을 사용하는 것이다. 최고의 전략은 DSP48E 슬라이스를 완전히 소모할 때까지 가능한 많은 가산기를 구성하고 순수한 로직으로 나머지 가산기를 구성하는 것이다. DSP 리소스 가산기는 2개의 DSP 슬라이스와 354개 LUT-FF 쌍(또는 LC)을 필요로 하며 단일 인스턴스는 463MHz에서 동작할 수 있다. 로직 기반 가산기는 578개 LC를 사용하며 단일 인스턴스는 550MHz에서 실행할 수 있다.

우리는 100% 로직과 100% DSP 슬라이스를 사용한다고 가정하며, 이는 모든 로직을 사용하기 위해 충분한 라우팅을 제공해야 한다는 것을 의미한다.

07_altera_t02.jpg

이 방법을 사용해 자일링스는 1,996 GFLOPs의 단정밀도 부동 소수점 성능을 주장할 수 있었다.

이와 유사하게 20nm에서 자일링스에서 제공하는 최대 로직 밀도 디바이스는 UltraScale XCVU440 디바이스이다. 이것은 4,407.48K LC 및 2,880 DSP 슬라이스를 갖는다(이들 각각은 18x27개 고정 소수점 곱셈기를 지원한다). 표 1은 디바이스 코어 아키텍처가 매우 유사하기 때문에 20nm Ultrascale 디바이스에도 적용할 수 있다. 20nm 공정은 최대 주파수를 12% 정도 증가시킨다고 한다.

07_altera_t03.jpg

이 숫자는 자일링스가 주장하는 수치로, GFLOPs를 결정하는 데 사용되는 방법은 제공되지 않았다.

07_altera_04.jpg

이 계산에 사용된 가정은 다음과 같다.

• 부동 소수점 가산기만 사용되었고 부동 소수점 곱셈기는 전혀 사용되지 않았다.
• FPGA 로직의 100%가 사용되었다.
• 완벽한 설계를 위한 타이밍이 단일 부동 소수점 연산의 fMAX에서 클로징되었다.
• 메모리 인터페이싱, 제어 회로 등에 사용 가능한 로직 리소스가 전혀 없었다.
• 선택된 디바이스는 FPGA 제품군의 DSP가 풍부한 제품이 아니라 프로토타입 플랫폼으로 ASIC 로직을 에뮬레이팅하는 데 유용한 디바이스에 가깝다.

대부분의 컴퓨터 아키텍처에서 부동 소수점 곱셈기와 가산기의 1:1 비율을 유지하는 이유가 있다. 곱셈기를 사용하는 애플리케이션은 행렬 곱셈, FFT를 비롯해 제곱근, 삼각 함수와 같은 고차 수학 함수, 로그, 행렬 변환 및 기타 선형 대수 집중 설계를 포함한다. 모든 유용한 부동 소수점 애플리케이션은 많은 수의 부동 소수점 곱셈기를 필요로 한다. 따라서 이는 컴퓨터 아키텍처에서 동일한 수의 곱셈기와 가산기를 제공하는 실제적인 이유이다. 곱셈기 없이 부동 소수점 가산기만 사용하면서 높은 정격 수치를 주장할 수 있지만 그러한 설계는 애플리케이션 이점이 전혀 없다.

경험이 풍부한 모든 FPGA 설계자는 알고 있듯이 사용하는 로직의 비율이 높아질수록 설계 fMAX가 감소한다. 일반적으로 80% 이상의 로직 사용은 타이밍 클로저를 달성할 수 있는 클록 속도에서 상당한 성능 저하를 초래한다. 더욱이 다른 기능들을 위해 상당한 양의 로직이 필요하며, 이는 부동 소수점 계산을 위해 사용 가능한 로직을 더욱 감소시킨다.

또한 FPGA 제품군의 선택은 중요하다. 선택된 제품군은 매우 고가의 디바이스로서 일반적으로 디바이스 비용과 전력 소모가 중요한 요소가 아닌 ASIC 프로토타이핑 애플리케이션에 사용된다. DSP 애플리케이션에 최적화된 FPGA 제품군을 사용할 경우 GFLOPs 계산을 대폭 줄일 수 있다.

여기에서 다루지는 않지만 FPGA 벤더의 초기 소비전력 예측기(power estimator)를 사용할 수 있다. 표 3에 정의된 모든 리소스와 fMAX를 사용하면 수백 와트의 전력 소비가 나온다. 이 특정 FPGA는 클록 속도와 토클 속도가 낮은 ASIC 프로토타이핑 애플리케이션을 위해 만들어졌다. 높은 클록 속도와 토클 속도는 디바이스의 VCC 전류와 소모 전력 성능을 넘어 전력 소비를 크게 증가시킨다.

간단히 말하면 이것은 업계에서 인정하는 벤치마킹 방법이 아니다. 따라서 이러한 방법을 사용하여 얻은 수치는 다른 반도체 회사의 최고 부동 소수점 성능 주장과 비교하는 데 사용되어서는 안 된다. 최고 GFLOPs 수치는 특정 디바이스의 달성 가능한 성능을 나타내야 한다. 물론 거의 모든 알고리즘이 모든 계산 유닛에서 100% 듀티 사이클로 유용한 계산을 수행할 수 있는 것은 아니기 때문에 일부 디레이팅은 필요할 수 있다.

결론
현재 하드구현 부동 소수점 DSP 블록을 탑재한 FPGA를 구입할 수 있으며, 이들 FPGA는 중급 Arria 10 디바이스에서 160 ~ 1,500 GFLOPs, 하이 엔드 Stratix 10 디바이스에서는 최대 10,000 GFLOPs의 단정밀도 성능을 제공한다. 이 최고 GFLOPs 지표는 CPU, GPU, DSP에 사용되는 투명한 동일한 방법을 바탕으로 계산되었다.

이 방법은 설계자에게 디바이스의 최고 부동 소수점 컴퓨팅 성능과 매우 다른 아키텍처와 기본적인 비교를 위한 신뢰할 수 있는 기법을 제공한다. 다음 수준의 비교는 관심있는 플랫폼 상에서 구현되는 대표적인 벤치마크 설계를 기반으로 해야 한다.

하드 부동 소수점 회로가 없는 FPGA의 경우 벤더가 계산하는 이론적인 GFLOPs 수치를 사용하는 것은 매우 신뢰성이 떨어진다. 500 GFLOPs 이상에서 로직 구현을 기반으로 하는 모든 FPGA 부동 소수점 주장은 상당히 의심스러운 관점에서 바라보아야 한다. 이 경우 상대적인 판단을 하기 위해서는 대표적인 벤치마크 설계 구현이 필수적이다. 또한 달성된 클록 속도와 함께 로직, 메모리 및 기타 리소스를 보여주는 FPGA 컴파일 리포트가 제공되어야 한다. 그리고 이보다 더욱 바람직한 것은 특정 성능 수준을 주장하는 모든 업체는 컴파일된 설계 파일을 제공함으로써 결과를 재현할 수 있도록 해야 한다.

추가 정보
배경 설명: 업계 최초 부동 소수점 FPGA
기술자료: 레이더 처리: FPGA GPU
기술자료: 알테라 28nm FPGA 상에서 BDTI가 수행한 부동 소수점 DSP 설계 흐름 및 성능에 대한 독립적 분석

그래픽 / 영상
많이 본 뉴스