페르미(마이크로아키텍처)

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의 가장 오래된 마이크로 아키텍처입니다.

이 건축물은 이탈리아의 물리학자 엔리코 페르미의 이름을 따서 지어졌다.

개요

그림 1. NVIDIA 페르미 아키텍처
그림의 표기법: 주황색 - 스케줄링 및 디스패치, 녹색 - 실행, 연한 파란색 - 등록 및 캐시.
GeForce GTX 470 카드 내장 GF100 GPU 다이샷

페르미 그래픽 처리 장치(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+공유 메모리

개별 스레드의 데이터 캐시(레지스터 스필링/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

「 」를 참조해 주세요.

레퍼런스

  1. ^ "NVIDIA's Next Generation CUDA Compute Architecture: Fermi" (PDF). 2009. Retrieved December 7, 2015.
  2. ^ 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
  3. ^ 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
  4. ^ 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.

일반

외부 링크