GP100과 GP104 아키텍처의 차이가 나타내는 NVIDIA GPU의 진화


NVIDIA 파스칼 세대의 GPU 아키텍처에선 GPU 통합과 분화를 볼 수 있었습니다. 현재 NVIDIA는 GPU를 다양하게 나누는 한편 하나로 통합하려 합니다. 구체적으로는 같은 파스칼이라 해도 테슬라 P100(GP100)과 지포스 GTX 1080(GP104)은 GPU 마이크로 아키텍처, 메모리, 인터페이스까지 칩 아키텍처가 제각각입니다. AMD는 이렇게 GPU를 컴퓨팅과 그래픽에 맞춰 나누려고 하진 않습니다.

 

01.jpg

 


GP100의 TPC 구조
 

02.jpg

 


GP104의 SM(Streaming Multiprocessor) 구조

 

이전에는 전혀 다른 아키텍처였던 테그라 계열의 내장 GPU도 하나의 아키텍처로 통합됐습니다. 차세대 FinFET 프로세스 버전의 테그라는 파스칼 아키텍처의 GPU 코어를 갖고 있습니다. 아키텍처가 하나로 통합되지만, 한편으론 여럿으로 나뉘는 것이기도 합니다. 

 

구체적으로 GP100은 GP104와 비교해서 명령 유닛 당 레지스터 파일 공유, 메모리, Warp 가 강화되고 NVLink 인터페이스를 구현, HBM2 광대역 메모리를 지원합니다. 허나 GP100은 GP104에서 지원하는 Simultaneous Multi-Projection 사이뮬테니어스 멀티프로젝션이나 그래픽 태스크 등은 지원하지 않습니다.

 

02-1.jpg

 
Simultaneous Multi-Projection


이렇게 보면 NVIDIA의 GPU는 GPU 컴퓨팅에 최적화된 아키텍처와 그래픽에 최적화된 아키텍처로 나누는 것처럼 보입니다. 무엇보다 지금까지의 NVIDIA GPU는 GPU 컴퓨팅을위한 하이엔드 GPU와 그래픽을 주목적으로 한 하이/미들 GPU가 제품 구조에 차이가 있었습니다.

 

페르미 아키텍처도 최상위인 지포스 GTX 480(GF100) 계열과 미들 레인지인 지포스 GTX 460(GF104) 계열에서 SM 같은 GPU 내부의 연산 유닛 구성과 명령 발행 등 아키텍처의 기본 부분이 달랐습니다. 또 케플러 세대에서도 마지막 세대인 GK212는 마이크로 아키텍처가 달랐습니다.

 

"지금까지도 아키텍처의 차이는 있었습니다 .케플러의 마지막 제품인 GK210은 몇 가지 진화한 점이 있으며 SM(Streaming Multiprocessor)이 다릅니다 .GK210은 레지스터 파일 공유 메모리를 제공하며, 페므리도 다른 아키텍처를 사용했습니다." NVIDIA에서 GPU 개발의 지휘를 맡은 Jonah Alben(Senior Vice President, GPU Engineering, NVIDIA)의 설명입니다.

 

무엇보다 GK210에서 그래픽 용 GPU는 맥스웰 아키텍처로 진화했지만, HPC 전용의 FP64 성능이 높은 GPU의 진화가 남아 있었습니다. 따라서 HPC 전용으로 케플러를 수정할 필요가 있어 GK210 기반의 테슬라 K80을 내놓은 것이기도 합니다.

 

03.jpg

 


GPU의 다이 크기 변화

 


공통 아키텍처로 통합, 세분 구현은 분화


파스칼 세대에선 인터페이스를 비롯해 그 전보다 GPU의 차이가 더 커졌으며, 제품의 출시 시기도 근접해 있습니다. NVIDIA GPU 전체를 보면 마이크로 아키텍처가 각각의 시장에 수정되면서 칩 전체의 구조도 차이점이 나왔습니다.

 

반면 기본적인 마이크로 아키텍처는 공통화가 진행되면서 공통 아키텍처를 구현하는 시점이 같습니다. 그 결과 한 세대에서 GPU 컴퓨팅을 위한 테그라, 그래픽인 지포스, 모바일/임베디드인 테그라가 전부 하나의 GPU 아키텍처를 쓰도록 제작했습니다. Alben는 다음과 같이 설명합니다.

 

"이제서야 NVIDIA는 하나의 공통 아키텍처 모델에 도착했다. 그러나 공통 아키텍처라고해​도 성격이 다른 칩을 파생시키고 있습니다. 우리는 각각의 시장을 향해 다른 제품을 개발하고 있습니다. 코어 아키텍처는 같지만 균형이 다른 .FP64(64-bit) 배정밀도 부동 소수점 연산 유닛이나 레지스터 파일, 공유 메모리 등의 균형입니다.

 

테슬라는 이러한 기능을 강화한 균형이 필요로 했습니다. 이를 강화하면서 그만큼 자원을 소비했지요. 따라서 지포스는 이 부분을 줄인 다른 방향에서의 균형을 잡았습니다. 결과적으로 NVIDIA의 GPU는 일반적인 부분은 유지하지만, 각각의 칩은 이전보다 많은 차이를 갖게 됐습니다. 예를 들어 GP100의 NVLink가 있지요.

 

그래픽 기능을 더하는 것이 전부가 아닙니다. 우리는 GPU 컴퓨팅을 수용하고, GPU에 많은 컴퓨팅 기능을 도입했습니다. 동시에 그래픽에서도 VR(Virtual Reality)과 같은 새로운 기술이 나오면, 이러한 시장 변화에 따라 멋진 아이디어를 추가하고 있습니다."

 

04.jpg

 


GP100의 전체 구성
 

05.jpg

 


GP104의 전체 구성

 


딥 러닝을 위해 GP100에서 FP16의 성능을 개선
 

마이크로 아키텍처에서 매우 재미있는 것은 FP16(16-bit 반정밀도) 부동 소수점 연산의 구현입니다. GPU 컴퓨팅을 주목적으로 한 GP100에서 FP16(16-bit 반정밀도) 부동 소수점 연산 성능을 두배로 늘려주는 2-way SIMD(Single Instruction, Multiple Data) FP16을 구현했습니다. 이 기능 덕분에 GP100의 FP16의 최고 성능은 FP32(32-bit 단정밀도) 부동 소수점 연산의 2 배가 됐습니다.

 

06.jpg

 


GP100과 GP104의 스펙 비교 
 

07.jpg

 


GP100의 Packed FP16


그러나 GP100 이후에 개발된 GP104은 2-way Packed FP16을 구현하진 않았습니다. GP104의 FP16 성능은 FP32과 마찬가지입니다. 그런데 같은 2-way Packed FP16는 테그라 계열 GPU에서 구현됩니다. 테그라 버전 맥스웰 코어는 이 기능을 지원하며 이는 테그라에 속한 파스칼 코어도 마찬가지입니다. "우리는 PX2(테그라 기반 자동차용 임베디드 보드)에 GP100과 비슷한(FP16) 명령 세트를 도입합니다"라고 NVIDIA의 Alben는 말했습니다.

 

즉, NVIDIA의 GPU 계열에선 GPU 컴퓨팅 및 모바일 / 임베디드 시장을 위해 Packed FP16를 구현하여 FP16 성능을 향상했습니다. 그러나 PC 그래픽 분야에선 FP16 성능을 높이진 않았습니다. 단순히 내장 → PC 그래픽 → GPU 컴퓨팅으로 가면서 컴퓨팅 기능이 강화되는 것이 아니라, 시장마다 서로 다른 구현 방식을 썼음을 알 수 있습니다.

 

우선 GPU 컴퓨팅인 GP100에서 Packed FP16을 지원하는 건 딥 러닝을 위한 것입니다. "GP100은 딥 러닝을 트레이닝에 쓰이는 제품입니다. 따라서 딥 러닝에서 중요한 반정밀도 부동 소수점 연산 성능을 높일 필요가 있었습니다 라고 Alben은 말합니다.

 

딥 러닝에선 방대한 양의 신경망 연산 속도를 위해 데이터 용량을 줄입니다. 그래서 FP16으로도 충분한 정밀도를 얻을 수 있다는 것이 현재의 공통 인식이며 그래서 FP16을 많이 씁니다. GP100은 이러한 흐름에 맞춰 FP16의 성능을 두배로 높였습니다.

 

반면 PC 게임의 그래픽에선 FP16는 이제 더 이상 쓰지 않는다고 NVIDIA는 보고 있습니다. 픽셀 파이프에서도 FP32가 표준이기에 구태여 추가 지출을 들여서 이를 구현할 필요가 없다고 판단한 것 같습니다. "반정밀도 부동 소수점 연산은 PC 게임에서 중요하지 않다고 판단했습니다. 저가형 게임에서도 단정밀도 이상의 정밀도를 전제로 하고 있기 때문입니다 .지포스에서 이를 구현하지 않은 것도 그 때문이지요."(Alben)

 

 

임베디드인 테그라도 FP16 반정밀도를 강화


그런데 모바일과 임베디드라면 이야기가 달라집니다. 이러한 분야에서는 메모리 대역폭과 오프 칩 인터페이스의 전력 소비를 억제하기 위해 FP16가 여전히 쓰입니다. 여기에 맞춘 테그라는 "OpenGL ES에서도 낮은 정확도를 지원해 FP16 성능이 필요하다고 판단했다"(Alben)라고 합니다. 이것은 모바일 계열 GPU의 공통 인식으로 Imagination Technologies의 PowerVR Series6 (Rogue)도 처음에는 FP16을 만들지 않았으나 지금 FP16는 FP32의 두배 성능을 냅니다.

 

또한 FP16의 강화는 딥 러닝에서 중요한 측면입니다. 딥 러닝을 통한 인식 처리에 사용되는 사례가 앞으로 늘어날 것으로 예상되기 때문입니다. 딥 러닝은 방대한 컴퓨팅 자원으로 행하는 트레이닝 페이즈에서 신경망 모델을 구축. 그 모델을 사용하여 자동차 등의 기기에서 인식하는 추론 페이즈를 실현합니다. 학습은 데이터 센터에서 수행하나 추론은 임베디드 디바이스에서 수행합니다. 추론은 내장 GPU에서도 FP16 정도가 적당합니다.

 

08.jpg

 

딥 러닝의 2개 페이즈


NVIDIA는 이처럼 GPU 연산 경로의 마이크로 아키텍처를 변경했습니다. 그러나 프로그램에서 호환성을 유지했다고 강조합니다. 예를 들어 GP100에서 FP64(64-bit 정밀도) 부동 소수점 연산은 FP32의 1/2로 성능 비율이 높습니다. 이에 비해 GP104에서 FP64는 FP32의 1/3​​2로 효율이 조힌 않지만 그래도 명령어 셋트 수준의 호환성은 유지됩니다.

 

FP16도 컴파일러 수준에서 유지됩니다. NVIDIA GPU는 SIMT (Single Instruction, Multiple Thread) 아키텍처에서 32-way의 스레드가 각각 마스크 레지스터에 의한 프레디케이션으로 분기해 같이 취급이 가능합니다. 그러나 Packed FP16 부분은 프레디케이션이 적용되지 않습니다. 2개의 FP16 연산은 같은 스레드 내부에서 처리됩니다. 스레드의 명령 스트림에서 FP16를 컴파일시 팩 처리하는 방법이 일반적입니다.

 

 

GP104에서만 추가된 기능

 

그래픽 기능은 GP100에 GP104로 가며 기능이 추가됐습니다. GP104은 동시 멀티 프로젝션 표시나 그래픽 태스크 선점 처리, 동기식 컴퓨팅, 동적 로드 밸런싱 등 새로운 기능이 탑재됐습니다. 모두 그래픽 기능을 확장시키거나 그래픽과 컴퓨팅 처리를 섞을 경우 중요한 기능입니다. 이러한 차이는 제품 시장마다 전문적인 처리이기도 하나, 개발 시기의 차이도 영향을 줍니다.

 

09.jpg

 


동시 멀티 프로젝션은 GP104에서 처음 구현 
 

10.jpg

 


그래픽 태스크와 동적 로드 밸런싱은 GP104 만 
 

11.jpg

 


그래픽 태스크도 GP100에 없는 기능 


"동시 멀티 프로젝션이 GP100에서 구현되지 않은 건 단순히 GP100가 먼저 개발되서 그런 것도 있습니다. 우리는 일반적으로 GPU의 기능을 최대한 동일하게 유지하려 합니다. 그러나 사이뮬테니어스 멀티 프로젝션의 경우에는 개발시기의 차이도 있어 GP100에선 구현하지 못했습니다."(Alben)

 

사이뮬테니어스 멀티 프로젝션은 애플리케이션의 개발에 크게 영향을 주는 기능이기에 앞으로의 하이엔드 GPU에서 지원할 것으로 보입니다.

 

메모리도 GPU 컴퓨팅용인 GP100이 HBM2, 그래픽용인 GP104가 GDDR5X로 서로 다른데 이는 경제성 때문입니다.

 

"주의할 것은 우리가 모든(HBM 계열과 GDDR 계열) 메모리 기술을 원하고 있으며, 양쪽 모두에서 최신 기술을 사용하려 한다는 점입니다. GDDR5X는 GDDR5의 자연적인 진화로서 경제적으로 효율적인 메모리입니다. 이에 비해 HBM2는 경제적이진 않아도 최고의 메모리 대역을 실현합니다. HPC 분야에서 우리는 가능한 최고의 기술을 제공하려 합니다. 따라서 HBM 계열 메모리를 쓰고 싶습니다."(Alben)

 

HBM 계열 메모리는 DRAM 측 TSV(Through Silicon Via) 기술이 필요하며, 이외에 GPU 다이와 DRAM 스택의 아래에 실리콘 인터포저를 설치할 필요가 있습니다. 어셈블리가 들어가니 제조 비용이 상대적으로 높습니다. GDDR5X도 구현이 어려운 기술이지만 HBM2에 비해 비용면에서 저렴합니다. HBM2에서 얻을 수있는 대역폭과 저전력을 비용과 비교하면 하이-미들 GPU 이하에선 GDDR5X를 장착하게 됩니다.

 

12.jpg

 


DRAM의 대역폭과 전송 속도


인터페이스의 경우 NVLink도 GP100에만 들어간 기능입니다. NVIDIA는 GP104에 SLI 기능을 넣고 커넥터 SLI 브릿지도 바꿨습니다. 그러나 SLI 인터페이스에 NVLink은 쓰지 않습니다. Alben은 "NVLink는 칩 사이의 대역폭을 크게 확장시킵니다. 그러나 SLI 브릿지는 그만큼의 대역은 필요하지 않습니다."라고 설명합니다. 물론 매우 빠른 인터페이스인 NVLink에 브릿지를 쓴다는 것 자체가 어렵다는 관점도 있습니다.

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.