페르미(마이크로아키텍처)
Fermi (microarchitecture)![]() |
발매일 | 2010년 4월 |
---|---|
제조 프로세스 | 40 nm 및 28[citation needed] nm |
역사 | |
전임자 | 테슬라 2.0 |
후계자 | 케플러 |
Fermi는 Nvidia가 개발한 GPU(그래픽 처리 장치) 마이크로 아키텍처의 코드명으로, Tesla 마이크로 아키텍처의 후속 제품으로 2010년 4월에 처음 출시되었습니다.GeForce 400 시리즈 및 GeForce 500 시리즈에서 사용되는 주요 마이크로 아키텍처입니다.Kepler에 이어 GeForce 600 시리즈, GeForce 700 시리즈 및 GeForce 800 시리즈에서도 Kepler와 함께 사용되었으며, GeForce 800 시리즈는 모바일 GPU에서만 Kepler와 함께 사용되었습니다.워크스테이션 시장에서 Fermi는 Quadro x000 시리즈, Quadro NVS 모델 및 Nvidia Tesla 컴퓨팅 모듈에서 사용되었습니다.모든 데스크톱 Fermi GPU는 40nm, 모바일 Fermi GPU는 40nm 및 28nm로[citation needed] 제조되었습니다.Fermi는 Microsoft의 렌더링 API Direct3D 12 feature_level 11을 지원하는 NVIDIA의 가장 오래된 마이크로 아키텍처입니다.
이 건축물은 이탈리아의 물리학자 엔리코 페르미의 이름을 따서 지어졌다.
개요
페르미 그래픽 처리 장치(GPU)는 30억개의 트랜지스터를 특징으로 하며 도식은 그림 1에 스케치되어 있습니다.
- 스트리밍 멀티프로세서(SM): 32개의 CUDA 코어로 구성됩니다(스트리밍 멀티프로세서 및 CUDA 코어 섹션 참조).
- Giga Thread 글로벌스케줄러: SM 스레드스케줄러에 스레드블록을 배포하고 실행 중에 스레드 간의 컨텍스트스위치를 관리합니다(Warp Scheduling 섹션 참조).
- 호스트 인터페이스: PCI-Express v2 버스를 통해 GPU를 CPU에 연결합니다(피크 전송 속도는 8GB/s).
- DRAM: 64비트 어드레싱 기능을 통해 최대 6GB의 GDDR5 DRAM 메모리를 지원합니다(메모리 아키텍처 섹션 참조).
- 클럭 주파수: 1.5GHz(NVIDIA에서 출시되지 않았지만 Insight 64에서 추정).
- 피크 퍼포먼스: 1.5 TFlops.
- 글로벌 메모리 클럭: 2 GHz
- DRAM 대역폭: 192 GB/s
스트리밍 멀티프로세서
각 SM에는 32개의 단정도 CUDA 코어, 16개의 로드/스토어 유닛, 4개의 특수 기능 유닛(SFU), 64KB의 고속 온칩 메모리 블록(L1+공유 메모리 서브섹션 참조), 및 L2 캐시로의 인터페이스(L2 캐시 서브섹션 참조)가 있습니다.
유닛 로드/스토어
클럭당 16 스레드에 대해 송신원 및 수신처 주소를 계산할 수 있습니다.캐시 또는 DRAM에서 데이터를 로드 및 저장합니다.
특수 기능 유닛(SFU)
sin, cosine, 역수 및 제곱근과 같은 초월 명령을 실행합니다.각 SFU는 스레드당, 클럭당 1개의 명령을 실행하고 워프는 8클럭 이상을 실행합니다.SFU 파이프라인은 디스패치유닛에서 분리되므로 SFU가 점유되어 있는 동안 디스패치유닛을 다른 실행유닛에 발행할 수 있습니다.
CUDA 코어
정수 연산 로직 유닛(ALU): 표준 프로그래밍 언어 요건과 일치하는 모든 명령에 대해 32비트 정밀도를 지원합니다.또한 64비트 및 확장 정밀도 작업을 효율적으로 지원하도록 최적화되어 있습니다.
부동 소수점 단위(FPU)
새로운 IEEE 754-2008 부동소수점 표준을 구현하여 단정도 연산과 배정도 연산 모두에 대해 FMA(Fused Multi-Add) 명령을 제공합니다.SM당 [1]클럭당 최대 16개의 배 정밀 퓨즈를 통한 다중 추가 연산을 실행할 수 있습니다.
퓨전 다중 덧셈
FMA(Fused Multiply-add)는 곱셈과 덧셈(즉, A*B+C)을 1회의 최종 반올림 스텝으로 실행하며, 덧셈의 정밀도를 잃지 않는다.FMA는 개별적으로 작업을 수행하는 것보다 정확합니다.
워프 스케줄링
Fermi 아키텍처는 2레벨의 분산 스레드 스케줄러를 사용합니다.
각 SM은 그림 1에 나타낸 4개의 녹색 실행 컬럼 중 2개를 소비하는 명령을 발행할 수 있다.예를 들어 SM은 16개의 첫 번째 컬럼 코어에서 16개의 동작을 16개의 컬럼 코어에서 16개의 동작으로 혼합하거나 로드/스토어 유닛에서 16개의 동작을 SFU에서 4개의 동작으로 혼합하거나 기타 프로그램 사양을 조합할 수 있다.es.
64비트 부동소수점 연산은 처음 두 개의 실행 열을 모두 사용합니다.이는 SM이 한번에 최대 32개의 단정도(32비트) 부동소수점 연산 또는 16개의 2배정도(64비트) 부동소수점 연산을 발행할 수 있음을 의미합니다.
Giga Thread 엔진
Giga Thread 엔진은 스레드블록을 다양한 SM으로 스케줄 합니다.
듀얼 워프 스케줄러
SM 레벨에서는, 각 워프 스케줄러는 32 스레드의 워프를 그 실행 유닛에 분배합니다.스레드는 워프라고 불리는 32개의 스레드 그룹으로 스케줄 됩니다.각 SM은 2개의 워프 스케줄러와 2개의 명령 디스패치 유닛을 갖추고 있어 2개의 워프를 동시에 발행하여 실행할 수 있습니다.듀얼 워프 스케줄러는 2개의 워프를 선택하여 각 워프에서 16개의 코어, 16개의 로드/스토어 유닛 또는4개의 SFU로 구성된 그룹으로1개의 명령을 발행합니다.대부분의 명령은 2개의 정수 명령, 2개의 부동 명령 또는 정수, 부동 소수점, 부하, 저장 및 SFU 명령을 동시에 실행할 수 있습니다.2배의 정밀도 명령에서는 다른 [citation needed]조작과의 듀얼 디스패치는 지원되지 않습니다.
성능
GFLOPS에서 페르미 GPU의 이론적인 단정도 처리능력은 2(사이클당 CUDA 코어당 FMA 명령당 연산) × CUDA 코어 수 × 셰이더 클럭 속도(GHz)로 계산된다.이전 세대 Tesla는 CUDA 코어 및 SFU에 병렬로 MAD+MUL을 듀얼로 발행할 수 있었지만, Fermi는 SM당 사이클당 32개의 명령만 발행할 수 있어 32개의 CUDA 코어만 충분히 [2]활용할 수 있기 때문에 이 기능을 상실했습니다.따라서 SFU를 활용하여 사이클당 CUDA 코어당2회 이상의 동작에 도달할 수 없습니다.
Fermi GPU의 이론적인 배정도 처리능력은 GF100/110의 단정도 성능의 1/2입니다.그러나 실제로는 이 2배의 정밀도를 가진 전력은 전문가용 Quadro 및 Tesla 카드에서만 사용할 수 있으며, 소비자용 GeForce 카드는 1/[3]8로 제한됩니다.
기억
SM당 L1 캐시 및 모든 작업(로드, 저장 및 텍스처)에 서비스를 제공하는 통합 L2 캐시.
레지스터
각 SM에는 32K의 32비트 레지스터가 있습니다.각 스레드는 다른 스레드의 레지스터가 아닌 자체 레지스터에 액세스할 수 있습니다.CUDA 커널에서 사용할 수 있는 레지스터의 최대 수는 63입니다.사용 가능한 레지스터의 수는 워크로드(및 리소스 요건)가 스레드 수만큼 증가함에 따라 63개에서 21개로 크게 감소합니다.레지스터의 대역폭은 약 8,000GB/s로 매우 높습니다.
개별 스레드의 데이터 캐시(레지스터 스필링/L1 캐시) 및/또는 여러 스레드 간의 데이터 공유(공유 메모리)에 사용할 수 있는 온칩 메모리.이 64KB 메모리는 L1 캐시가 16KB인 공유 메모리 48KB 또는 L1 캐시가 48KB인 공유 메모리 16KB 중 하나로 구성할 수 있습니다.공유 메모리를 사용하면, 같은 스레드 블록내의 스레드가 제휴해, 온칩 데이터의 광범위한 재사용을 용이하게 해, 오프칩 트래픽을 큰폭으로 삭감할 수 있습니다.공유 메모리는 동일한 스레드 블록의 스레드에서 액세스할 수 있습니다.레이텐시가 낮고(10~20사이클) 대역폭이 매우 높아 적당한 양의 데이터(일련의 계산 결과, 매트릭스 연산을 위한 1행 또는 열 데이터, 비디오 라인 등)를 얻을 수 있습니다.David Patterson은 이 공유 메모리는 로컬 스크래치[4] 패드의 아이디어를 사용한다고 말합니다.
로컬 메모리
로컬 메모리는 "스필" 레지스터를 유지하는 데 사용되는 메모리 위치입니다.레지스터 유출은 스레드블록이 SM에서 사용할 수 있는 것보다 더 많은 레지스터 스토리지를 필요로 할 때 발생합니다.로컬 메모리는 일부 자동 변수(__device__, __shared_ 또는 __constant__ 수식자 없이 디바이스 코드로 선언됨)에만 사용됩니다.일반적으로 자동변수는 다음을 제외하고 레지스터에 존재합니다. (1) 컴파일러가 판단할 수 없는 배열은 일정한 양으로 인덱싱됩니다. (2) 너무 많은 레지스터 공간을 소비하는 대규모 구조 또는 배열. 커널이 사용 가능한 것보다 더 많은 레지스터를 사용할 때 컴파일러가 로컬 메모리에 흘리기로 결정하는 변수입니다.SM에 기대세요.
L2 캐시
CPU 호스트와의 카피를 포함한 글로벌 메모리와의 모든 로드 및 저장, 텍스처 요구를 처리하는768 KB Unified L2 캐시.또한 L2 캐시 서브시스템은 스레드 블록 또는 커널 간에 공유해야 하는 데이터에 대한 액세스를 관리하는 데 사용되는 원자적인 작업을 구현합니다.
글로벌 메모리
호스트(CPU)뿐만 아니라 모든 스레드에서도 액세스 가능.대기 시간이 길다(400-800 사이클).
비디오 압축 해제/압축
Nvidia NVDEC(구 NVCUVID) 및 Nvidia PureVideo를 참조하십시오.
Nvidia NVENC 기술은 아직 제공되지 않았지만, 후속 버전인 케플러에 도입되었습니다.
페르미 칩
- GF100
- GF104
- GF106
- GF108
- GF110
- GF114
- GF116
- GF118
- GF119
- GF117
「 」를 참조해 주세요.
- Nvidia 그래픽스 처리 장치 목록
- 쿠다
- 스케일러블 링크 인터페이스(SLI)
- 퀄컴 아드레노
레퍼런스
- ^ "NVIDIA's Next Generation CUDA Compute Architecture: Fermi" (PDF). 2009. Retrieved December 7, 2015.
- ^ Glaskowsky, Peter N. (September 2009). "NVIDIA's Fermi: The First Complete GPU Computing Architecture" (PDF). p. 22. Retrieved December 6, 2015.
A total of 32 instructions from one or two warps can be dispatched in each cycle to any two of the four execution blocks within a Fermi SM
- ^ Smith, Ryan (March 26, 2010). "NVIDIA's GeForce GTX 480 and GTX 470: 6 Months Late, Was It Worth the Wait?". AnandTech. p. 6. Retrieved December 6, 2015.
the GTX 400 series' FP64 performance is capped at 1/8th (12.5%) of its FP32 performance, as opposed to what the hardware natively can do of 1/2 (50%) FP32
- ^ Patterson, David (September 30, 2009). "The Top 10 Innovations in the New NVIDIA Fermi Architecture, and the Top 3 Next Challenges" (PDF). Parallel Computing Research Laboratory & NVIDIA. Retrieved October 3, 2013.
일반
- N. Brookwood, "NVIDIA, GPU 컴퓨팅 퍼즐을 해결하다"
- P.N. 글래스코프스키, "NVIDIA의 페르미: 최초의 완전한 GPU 컴퓨팅 아키텍처"
- N. Whitehead, A. Fit-Florea, "정밀도와 퍼포먼스: 부동소수점 및 IEEE 754 준거 (NVIDIA GPU용), 2011.
- Oberman, S.F.; Siu, M.Y. (2005). "A High-Performance Area-Efficient Multifunction Interpolator". 17th IEEE Symposium on Computer Arithmetic (ARITH'05). pp. 272–279. doi:10.1109/arith.2005.7. ISBN 0-7695-2366-8. S2CID 14975421.
- R. Farber, "CUDA Application Design and Development", Morgan Kaufmann, 2011.
- NVIDIA 어플리케이션 노트 "Fermi용 CUDA 어플리케이션 조정"