AMD 파이어스트림

**AMD 파이어스트림**(AMD FireStream)은 AMD의 슈퍼컴퓨터에서 스트림 프로세싱 및 GPGPU를 목표로 하는 라데온 기반 제품군의 브랜드 이름이었다. 원래 ATI 테크놀로지스가 2006년 라데온 X1900 XTX를 기반으로 개발했으며, 이 제품군은 이전에 **ATI FireSTREAM** 및 **AMD 스트림 프로세서**로 모두 브랜드화되었다. AMD 파이어스트림은 Torrenza 이니셔티브의 일부인 CPU 계산 오프로드를 위한 부동소수점 코프로세서로도 사용할 수 있다. 파이어스트림 제품군은 GPGPU 워크로드가 AMD 파이어프로 제품군에 완전히 통합된 2012년부터 단종되었다.

## 개요
파이어스트림 제품군은 2006년부터 2010년까지 출시된 애드온 확장 카드 시리즈로, 표준 라데온 GPU를 기반으로 하지만 3D 그래픽을 렌더링하고 출력하는 대신 범용 코프로세서 역할을 하도록 설계되었다. 파이어GL/파이어프로 제품군과 마찬가지로 더 많은 메모리와 메모리 대역폭을 부여받았지만, 파이어스트림 카드는 반드시 비디오 출력 포트를 가지고 있지는 않다. 모든 제품은 32비트 단정밀도 부동소수점을 지원하며, 첫 출시 제품을 제외한 모든 제품은 64비트 배정밀도를 지원한다. 이 제품군은 기존 OpenGL 및 Direct3D 셰이더 API가 제공할 수 있는 것보다 더 높은 성능을 제공하기 위해 새로운 API와 협력했으며, 클로즈 투 메탈로 시작하여 OpenCL 및 스트림 컴퓨팅 SDK로 이어졌고, 결국 APP SDK에 통합되었다.

고도로 병렬적인 부동소수점 수학 워크로드의 경우, 이 카드는 대규모 계산을 10배 이상 가속화할 수 있다. GPGPU의 초기이자 가장 눈에 띄는 사용자 중 하나인 Folding@Home은 CPU 성능의 20-40배를 달성했다. 각 픽셀 및 정점 셰이더 또는 이후 모델의 통합 셰이더는 임의의 부동소수점 계산을 수행할 수 있다.

## 역사
라데온 R520 및 지포스 G70 GPU 코어가 프로그래밍 가능한 셰이더와 함께 출시된 후, 대규모 부동소수점 처리량은 비그래픽 작업에 이를 사용하려는 학계 및 상업 그룹의 주목을 받았다. 이러한 관심은 ATI(및 엔비디아)가 전통적으로 CPU 및 특수 부동소수점 수학 코프로세서에서 수행되던 무거운 계산을 처리하기 위해 대규모 병렬 방식으로 범용 수학 공식을 계산할 수 있는 GPGPU 제품을 만들게 했다. GPGPU는 당시의 멀티 소켓 CPU 전용 계산과 비교하여 즉각적인 성능 향상이 10배 이상일 것으로 예상되었다.

고성능 X1900 XFX의 개발이 거의 완료되면서, ATI는 첫 번째 스트림 프로세서 설계를 기반으로 하여 SIGGRAPH 2006에서 새로운 클로즈 투 메탈 API와 함께 곧 출시될 **ATI FireSTREAM**을 발표했다. 코어 자체는 파이어GL V7350과 유사하게 온보드 메모리와 대역폭을 두 배로 늘린 것을 제외하고는 거의 변경되지 않았으며, 새로운 드라이버 및 소프트웨어 지원이 대부분의 차이점을 만들었다. Folding@home은 ATI 카탈리스트 드라이버 버전 6.5의 사전 출시를 사용하여 X1900을 범용 컴퓨팅에 사용하기 시작했으며, GPU에서 CPU 대비 20-40배의 향상을 보고했다. 첫 번째 제품은 2006년 말에 출시되었으며, AMD와의 합병 후 **AMD 스트림 프로세서**로 브랜드 변경되었다.

이 브랜드는 2007년 RV650 칩을 기반으로 한 새로운 통합 셰이더와 배정밀도 지원을 갖춘 2세대 스트림 프로세서와 함께 **AMD 파이어스트림**이 되었다. 비동기식 DMA도 CPU의 도움 없이 더 큰 메모리 풀을 허용하여 성능을 향상시켰다. 9170이라는 한 모델이 초기 가격 1999달러에 출시되었다. 2008년까지 노트북 컴퓨팅을 위한 MXM 모듈에 스트림 프로세서를 개발하는 계획이 포함되었지만, 결코 출시되지 않았다.

3세대는 2008년에 RV770 코어의 엄청난 성능 향상과 함께 빠르게 이어졌다. 9250은 9170의 거의 두 배에 달하는 성능을 보였고, 가격은 1000달러 미만으로 떨어졌음에도 불구하고 최초의 단일 칩 테라플롭스 프로세서가 되었다. 더 빠른 모델인 9270은 곧 1999달러에 출시되었다.

2010년에는 마지막 세대의 파이어스트림인 9350 및 9370 카드가 HD 5800에 탑재된 Cypress 칩을 기반으로 출시되었다. 이 세대는 이전 세대에 비해 성능을 다시 두 배로 높여 9350은 2 테라플롭스, 9370은 2.6 테라플롭스를 달성했으며, OpenCL을 위해 처음부터 완전히 설계된 유일한 제품이었다. 이 세대는 또한 완전히 수동 냉각을 특징으로 한 유일한 제품이었으며, 능동 냉각은 제공되지 않았다.

Northern 및 Southern Islands 세대는 건너뛰었으며, 2012년 AMD는 새로운 그래픽스 코어 넥스트 아키텍처를 기반으로 하는 새로운 FirePro W(워크스테이션) 및 S(서버) 시리즈가 파이어스트림 카드를 대체할 것이라고 발표했다.

## 모델
* 파이어스트림 9170에는 Direct3D 10.1, OpenGL 3.3 및 APP 스트림이 포함된다.
* 파이어스트림 92x0에는 Direct3D 10.1, OpenGL 3.3 및 OpenCL 1.0이 포함된다.
* 파이어스트림 93x0에는 Direct3D 11, OpenGL 4.3 및 OpenCL 1.2(최신 드라이버 업데이트 포함)가 포함된다.

## 소프트웨어

AMD 파이어스트림은 광범위한 소프트웨어 플랫폼 지원과 함께 출시되었다. 지원하는 회사 중 하나는 2007년 6월 구글에 인수된 PeakStream으로, CTM 및 AMD 파이어스트림뿐만 아니라 x86 및 셀(셀 브로드밴드 엔진) 프로세서를 지원하는 소프트웨어의 오픈 베타 버전을 최초로 제공했다. 파이어스트림은 PeakStream의 소프트웨어를 실행한 후 일반 CPU보다 일반적인 응용 프로그램에서 20배 더 빠르다고 주장되었다. RapidMind도 ATI 및 엔비디아와 함께 셀 프로세서와 호환되는 스트림 처리 소프트웨어를 제공했다.

### 소프트웨어 개발 키트
잠시 사용된 클로즈 투 메탈 API를 포기한 후, AMD는 OpenCL에 집중했다. AMD는 2007년 12월 AMD EULA에 따라 윈도우 XP에서 실행되는 스트림 컴퓨팅 SDK (v1.0)를 처음 출시했다. SDK에는 스탠포드 대학교에서 개발한 Brook 언어의 AMD 하드웨어 최적화 버전인 "Brook+"가 포함되어 있으며, 이는 ANSI C (C 언어)의 변형으로, 오픈 소스이며 스트림 컴퓨팅에 최적화되어 있다. AMD 파이어스트림에 최적화된 AMD 코어 수학 라이브러리 (ACML) 및 AMD 성능 라이브러리 (APL)와 비디오 트랜스코딩 가속을 위한 COBRA 비디오 라이브러리 (나중에 "가속 비디오 트랜스코딩" 또는 AVT로 이름 변경)도 포함될 예정이다. SDK의 또 다른 중요한 부분인 CAL(Compute Abstraction Layer)은 CTM 하드웨어 인터페이스를 통해 GPU 아키텍처에 대한 저수준 액세스를 목표로 하는 소프트웨어 개발 레이어로, 다양한 고급 프로그래밍 언어로 작성된 소프트웨어의 성능 튜닝을 위한 것이다.

2011년 8월, AMD는 ATI APP 소프트웨어 개발 키트 버전 2.5를 출시했으며, 여기에는 크로노스 그룹이 개발한 병렬 컴퓨팅 언어인 OpenCL 1.1 지원이 포함된다. 마이크로소프트의 차세대 API인 DirectX 11에 있는 공식적으로 DirectCompute라고 불리는 컴퓨트 셰이더 개념은 이미 DirectX 11을 지원하는 그래픽 드라이버에 포함되어 있다.

#### AMD APP SDK

## 벤치마크
두 개의 듀얼 코어 AMD 옵테론 프로세서와 마이크로소프트 윈도우 XP 프로페셔널에서 실행되는 두 개의 라데온 R600 GPU 코어를 사용한 AMD 시연 시스템에 따르면, 범용 MADD 계산을 통해 1 테라플롭 (TFLOP)을 달성할 수 있다. 이에 비해 당시 인텔 코어 2 쿼드 Q9650 3.0&nbsp;GHz 프로세서는 48&nbsp;GFLOPS를 달성할 수 있었다.

2007년 AMD 스트림 프로세서에 최적화된 카스퍼스키 세이프스트림 바이러스 검사 시연에서는 R670 기반 가속을 통해 옵테론에서 완전히 실행되는 검색보다 21배 빠른 검사를 할 수 있었다.

## 제한 사항
* 재귀 함수는 컴파일 시 모든 함수 호출이 인라인되므로 Brook+에서 지원되지 않는다. CAL을 사용하면 함수(재귀 또는 기타)가 32단계까지 지원된다.
* 이중 선형 텍스처 필터링만 지원된다. 밉맵 텍스처 및 비등방성 필터링은 지원되지 않는다.
* 함수는 가변 인수를 가질 수 없다. 재귀 함수에도 동일한 문제가 발생한다.
* GPU에서 부동소수점 숫자를 정수로 변환하는 방식은 x86 CPU와 다르다. 이는 완전히 IEEE-754를 준수하지 않는다.
* GPU에서 "글로벌 동기화"를 수행하는 것은 매우 효율적이지 않아, GPU가 커널을 분할하고 CPU에서 동기화를 수행하도록 강제한다. 멀티프로세서의 가변 개수 및 기타 요인을 고려할 때 이 문제에 대한 완벽한 해결책은 없을 수 있다.
* CPU와 GPU 간의 버스 대역폭 및 지연 시간이 병목 현상이 될 수 있다.

## 같이 보기
* 스트림 프로세싱
* ROCm
* 이기종 시스템 아키텍처
* 엔비디아 테슬라 엔비디아의 유사 솔루션
* 인텔 제온 파이 인텔의 유사 솔루션
* OpenCL – 산업 표준
* CUDA - 엔비디아 전용 솔루션
* AMD 그래픽 처리 장치 목록

## 각주

## 외부 링크
* ATI 스트림 기술 FAQ 
* ATI 스트림 게시 논문 및 발표 자료
* ATI 스트림 SDK
* 아난드텍 분산 컴퓨팅 기사
* AMD 중간 언어 참조 가이드 (CAL) v2.0 2009년 2월

분류:AMD 제품
분류:ATI 테크놀로지스
분류:GPGPU