거대화되는 인텔의 GPU코어

인텔은 스카이레이크에서 CPU코어를 확장했다. 스카이레이크의 다이(반도체 본체)을 같은 14nm공정의 브로드웰과 비교하면 CPU코어 자체의 사이즈는 스카이레이크에서 많이 커지고 있음을 잘 알수 있다. 그러나 스카이레이크 세대에서도 CPU의 다이 위에 큰 면적을 취하는 것은 GPU코어다.

      

왼쪽은 4+2(4 CPU코어+GT2 GPU코어)의 스카이레이크 다이. 오른쪽은 2+2(2 CPU코어+GT2 GPU코어)의 브로드웰 다이


인텔, AMD도 현재는 GPU 코어를 강화하는 길로 가고 있다. 스카이레이크 세대에선 72 EU(execution unit)/576개의 유닛을 갖춘 거대 GPU코어 GT4 버전도 등장한다. 스카이레이크 세대에서 드디어 인텔의 GPU 코어 피크 연산 성능은 1TFLOPS를 넘어선다. 아래는 각 세대의 인텔 그래픽의 최대 구성 코어의 연산 유닛 구성도다. 샌디브릿지 세대부터 5세대까지 인텔의 그래픽이 거대해진 것으로 나타난다.

    

인텔 그래픽의 각 세대 최대 구성 코어의 연산 유닛 수와 구성
인텔 그래픽 각 세대의 최대 구성 코어 연산 유닛 수와 구성


CPU 제조 업체가 GPU 코어를 확장하는 큰 이유는 전력의 제약 속에서 성능을 높여야 하기 때문이다. 원래 CPU 코어의 시리얼 실행 성능을 전력 효율적으로 끌어올리기는 어렵다. 그러나 단순히 CPU 코어 수를 많이 늘리면 칩에서 동시에 켤 수 없는 다크 실리콘 지역이 커진다. 이들 문제를 해결하려면 CPU의 오프 로드보다 성능과 전력 효율이 좋은 코어를 탑재하는 것이다. 그래서 CPU 제조 업체는 GPU 코어의 강화에 힘쓰고 있다.


다른 하나의 요인은 GPU 코어를 대형화 할 경우 병목이 되는 메모리 대역 문제가 해결되고 있는 것이다. 인텔은 메모리 대역을 소비하는 GPU 코어에 데이터를 이송하기 때문에 Haswell세대에서 eDRAM을 CPU 패키지에 넣어 대역을 올렸다. 스카이레이크는 이 솔루션을 확장한다. 또 인텔은 JEDEC(반도체 표준화 단체)에서 광대역 메모리 규격 HBM(High Bandwidth Memory)의 책정으로 활동하고 있어 장기적으로는 더욱 광대역의 메모리를 CPU에 접속할 수 있게 될 전망이다.



 


더 작아진 스카이레이크의 연산 유닛

GPU 유닛의 다이(반도체 본체)지역을 보면 브로드웰 GT2보다 스카이레이크 GT2가 13% 정도 크다. 같은 GT2의 GPU 코어에서도 스카이레이크가 비대하다. 그런데 GPU 코어의 속을 들여다보면 GPU의 프로세서 코어가 대형화 된 것은 아니다. 대형화 된 것은 미디어 엔진 등의 부분이 더 많은 프로그래머블 프로세서로서 GPU코어 부분은 대형화되지 않았다.


     

스카이레이크와 브로드웰의 GPU 유닛 다이 비교


인텔 GPU코어에서 연산 프로세서로 레지스터 부분인 EU(execution unit)는 특징적인 패턴으로 다이상에서 쉽게 알아볼 수 있다. GPU코어에서 8개의 같은 형태의 유닛이 나란히 되어 있는 부분이 EU의 블록이다. EU 블럭에 묶여 있는 것이 텍스처 샘플러 및 캐시 등의 블록인 것으로 보인다.


인텔은 물리적 설계상에서도 각 유닛을 제대로 설계하여 거의 같은 물리 설계 블록을 복수로 늘어 놓는 것으로 슬라이스의 구성을 늘릴 수 있도록 하고 있다. 스카이레이크 GPU 코어 중 EU를 포함한 왼쪽 부분이 슬라이스라고 추측된다. 

 

명료하게 식별할 수 있는 8개의 EU 블록을 비교하면 스카이레이크와 브로드웰의 크기가 다름을 알 수 있다. 스카이레이크의 EU는 브로드웰의 EU에서 84% 정도로 축소된다. 기능적으로는 동등한 유닛이 이처럼 축소되면서 스카이레이크는 아키텍처적으로 개량이 가해진 것이 시사되고 있다. 실제 인텔은 스카이레이크로 GPU 코어의 실행 모드에 근본적인 변경이 가해진 것을 설명하고 있다. 아키텍처를 실제에 확인하면 이 부근의 배경이 보인다.

브로드웰 세대와 크게 다르지 않는 GPU 코어의 구성

스카이레이크 GPU 코어의 3D 그래픽 엔진 부분의 매크로 레벨에서의 마이크로 아키텍처는 사실 브로드웰 세대와 크게 다르지 않다. 전체 구성에서 본다면 특히 스카이레이크 세대에서 진화하지 않았다고 오해 될 정도다. 그 만큼 브로드웰과 스카이레이크의 GPU 코어의 구성은 비슷하다. 그러나 후술 하는 것처럼 내용은 크게 다르다.

 

인텔은 GPU 코어를 블록화하고 있다. 우선 크게 나누면 GPU 코어 전체에서 공유하는 언 슬라이스(Un-Slice)와 미디어 엔진군, GPU코어에서 확장이 가능한 병렬화하는 "슬라이스(Slice)"로 구분된다. 슬라이스 부분을 늘림으로써 GPU 코어의 규모를 대형화하는 구조다.



 

GPU 코어를 블록화


인텔 그래픽 연산 코어 EU(execution unit)는 내부 합계 8개의 32-bit 단 정밀도 부동 소수점적 주산 유닛을 갖춘다. 브로드웰 세대까지는 32-bit 단 정밀도로 4-way 유닛이 2개의 구성으로 되어 있었다. 이 기본은 스카이레이크도 변하지 않는 모양이다. 인텔 GPU의 EU는 원래 4-way의 단 정밀도적 주산 유닛과 슈퍼 펑션 유닛의 구성으로 슈퍼 펑션 유닛이 4-way의 주산 유닛으로서 사용할 수 있게 된 바 있다.

    

스카이레이크로 기본이 되는 GT2 구성의 GPU코어


8개의 연산 유닛을 갖춘 EU는 또 8개씩 세트로 서브 슬라이스를 구성하고 있다. 슬라이스에는 8개의 EU 외에 텍스처 페치&필터링 유닛 Texture Sampler/Media Sampler와 L1/L2 캐시가 포함되어 있다. 말하자면 서브 슬라이스가 미니 프로세서적인 구조다. EU와 텍스처 유닛의 비율은 8대 1이 되므로 이는 스카이레이크의 GT2/GT3/GT4코어에서 공통이다. 즉, 연산과 텍스처의 비율은 GPU의 규모에 관계 없이 고정되어 있다.

 

     

서브 슬라이스의 구성


슬라이스 단위로 스케일 업 하는 모듈러 아키텍처

서브 슬라이스는 3개가 한세트로 슬라이스를 구성한다. 슬라이스에는 서브 슬라이스 외에 픽셀 백엔드와 L3캐시 등이 부속된다. 이들은 슬라이스 커먼으로 불린다. GPU의 하류 처리에 필요한 블록을 모두 정리한 것이 슬라이스다.

 

    

스카이레이크 세대의 슬라이스 커먼


스카이레이크에서는 슬라이스의 픽셀 아웃풋은 8pixel/clk를 이루고 있어 각 클럭마다 8개의 픽셀 서두가 있다. 슬라이스의 EU수는 정해졌기 때문에 연산에 대한 픽셀 출력의 비율도 고정되어 있다. 픽셀 백엔드 필 레이트는 브로드웰 세대와 비교해 1.33배~2배로 개선됐다고 인텔은 설명했다.

 

슬라이스는 GPU 처리중 연산, 텍스처, 픽셀 백엔드를 담당한다. 이들 처리는 슬라이스로 확장 가능하게 늘릴 수 있는 아키텍처다. 반면 GPU을 제어하는 명령 프로세서나 지오 메트리/래스터 라이즈의 고정 기능 유닛은 언 슬라이스로 슬라이스로부터 독립하고 있다. 이들 언 슬라이스 유닛은 GPU전체에서 공유한다.



 

스카이레이크 GPU의 언 슬라이스


NVIDIA나 AMD의 디스크 리트(외장) GPU는 인텔의 언 슬라이스로 해당되는 지오 메트리 파이프 등의 고정 기능 유닛도 다수 갖춘다. NVIDIA나 AMD의 지오 메트리 고정 기능 유닛은 인텔의 슬라이스인 GPU 유닛에 부속되어 있다. 지오 메트리 처리 확장성을 추구했기 때문이며 인텔 그래픽은 현재 이런 아키텍처는 취하지 않는, 즉 지오 메트리가 병목이 되지 않다고 보는듯 하다.

 

GPU 전체에서 공유하는 유닛에는 언 슬라이스 지오 메트리 유닛 이외에 미디어 프로세싱 유닛이 있다. 비디오 코덱 Multi-Format Codec(MFX), 비디오 품질 처리 Video Quality Engine(VQE), 스케일러 & 포맷 변환기 Scaler and Format Converter(SFC) 등이다. 또, 디스플레이 엔진이 시스템 에이전트 측에 구비되어 있다.

 

여기까지 보면 스카이레이크 GPU 코어의 기본 부분은 브로드웰 세대와 다름없어 보이는데 실제로는 소프트웨어 실행 모델에서 스카이레이크는 크게 달라졌다.

벡터 프로세서의 2가지 실행 모델

기존의 인텔 그래픽의 큰 특징은 2가지의 다른 실행 모델을 실행할 수 있음에 있었다. 그러나 스카이레이크의 GPU 코어는 스칼라형 1종류의 실행 모델로 집약된다. 실행 모델은 GPU 프로세서의 근간이며 스카이레이크 GPU 코어는 근본적인 실행 아키텍처가 변경된 것이다.

 

GPU는 벡터 프로세서지만 그 실행 모델은 크게 2종류가 있다. 하나는 Array of Structures(AOS) 또는 팩드(Packed)라 불리는 방식. 다른 하나는 Structure of Arrays(SOA) 또는 스칼라(Scalar)라 불리는 방식이다.


AOS/Packed 형은 데이터를 일정 수준의 포장된 형태로 처리한다. SOA/Scalar형은 마치 일련의 처리를 여러개 묶은 형태로 처리한다. 인텔 CPU가 내장한 기존의 짧은 벡터 유닛 SSE/AVX는 기본적으로는 AOS/Packed형 실행 모델이다. 반면 현재의 NVIDIA나 AMD의 GPU는 SOA/Scalar형 실행 모델로 특화 되어 있다.


 

16개의 연산 유닛을 AOS와 SOA 각 실행 모델로 작동시켰을 경우의 예


전통적인 GPU는 기존 SSE/AVX 같은 AOS/Packed형 모델이었으나 NVIDIA가 GeForce 8800(G80)에서 SOA/Scalar형 모델로 전환한 것을 시작으로 점차 SOA/Scalar형으로 바뀌어 갔다.


AMD는 GCN(Graphics Core Next)의 이행에서 SOA/Scalar형으로 바뀌고 Imagination Technologies는 PowerVR Series6(Rogue)에서 SOA/Scalar형으로 바뀌었다.


AOS/Packed형 모델과 SOA/Scalar형 모델에는 각각 장점과 단점이 있다. 대충 말하면 데이터가 3~4개 등 정해진 수의 팩에 포장되어 있는 경우는 AOS/Packed형이 효율이 좋다. 그러나 데이터 타입이 다양한 경우는 SOA/Scalar형이 유연하게 대응하기 쉽다. 그래서 여러 종류의 데이터를 취급하는 GPU 컴퓨팅에서는 SOA/Scalar형이 유리하다. 다만 16-bit와 8-bit 같은 보다 작은 데이터를 취급하는 경우는 AOS/Packed형에서 그룹 분할하는 편이 효율을 올리기 쉽다.

스카이레이크로 송두리째 바뀐 실행 모델

실행 모델 전환은 GPU 아키텍처 근간의 변경이다. 보통 AOS/Packed형 모델의 프로세서는 SOA/Scalar형 모델을 지원하지 않는다. 그 반대로 SOA/Scalar형 모델의 프로세서는 기본적으로는 AOS/Packed형 모델을 지원하지 않는다. 그래서 어느 실행 모델을 취할지는 백터 프로세서 아키텍처의 큰 차이점이다.

 

그런데 인텔은 달랐다. 인텔 그래픽은 그동안 AOS/Packed형과 SOA/Scalar형 모델 모두 지원해 왔다. 이는 GPU로서는 이례적인 아키텍처로 인텔 그래픽의 큰 특징이었다. 그리고 역시 AOS/Packed형과 SOA/Scalar형 두 모델을 지원하는 프로세서에 인텔의 라라비(Larrabee) 프로젝트가 있었다. 인텔은 AOS/Packed와 SOA/Scalar의 양쪽을 지원하는 것을 중시한 것으로 보인다.



 

라라비의 AOS와 SOA 설명 슬라이드


그러나 스카이레이크는 이 아키텍처가 근본부터 바뀌었다. 스카이레이크의 그래픽 실행 모델에 대해서는 IDF에서 다음과 같이 설명했다.


"기존 EU는 짧은 벡터 모드(AOS/Packed형)와 순수 스칼라(SOA/Scalar형)모드 양쪽을 지원하고 있었다. 2계통 모드에서 SIMD4 x2, SIMD1 x8, SIMD1 x16, SIMD1 x32 등 다양한 포맷이 있었다. 그래픽 스코어 처리중 지오 메트리 처리는 짧은 벡터 모드를 쓰고 있었다. 픽셀 프로세싱과 GPGPU는 순수 스칼라 모드를 사용했다. 몇몇 미디어 프로세싱도 스칼라 방식이었다. 그러나 스카이레이크는 모든 것에 대해서 항상 스칼라 모드를 사용하게 되었다. 그래서 컴파일러 스택도 스카이레이크에서 완전히 변했다"

 

SIMD4 x2는 4-way의 AOS/Packed형 실행 모델에서 4개의 요소를 팩화하고 동시에 처리하는 것으로 4-way 팩 2개를 한 덩어리로 실행한다. SSE와 비슷한 실행 모델로 바꾸어 말할 수 있다. SIMD1 x8과 SIMD1 x16은 SOA/Scalar형 실행 모델로 하나의 요소를 Scalar형으로 실행하며 이를 8개 또는 16개씩 묶는 것이다. 현재 PC용 GPU의 주류 모드다.

 

인텔 그래픽은 이처럼 AOS/Packed형과 SOA/Scalar형 2개의 실행 모델에서 각각 여러 실행 포맷을 갖고, 각각 필요한 처리 사이클도 달라 벡터 폭도 달라진다는 복잡한 구조였다. 스카이레이크에서는 이 실행 모델이 뿌리채 바뀌어 NVIDIA나 AMD의 GPU와 비슷한 SOA/Scalar형 뿐이다.

 

실행 모델을 바꾸는 중요한 요소는 무엇인가? 인텔은 간소화와 효율화를 달성한 것이라고 설명한다. 종래에는 인텔 그래픽 하드웨어도 두 실행 모델에 대응하는 내부 아키텍처를 취했다. 이는 GPU 하드웨어를 복잡하게 만들 뿐 아니라 드라이버도 복잡화시켰다고 본다. 스카이레이크의 SOA/Scalar형으로의 전환은 인텔 GPU 코어의 제어 및 소프트웨어층의 간소화를 가져온 것이다. 그러고 보면 스카이레이크에 EU 블럭이 축소된 이유도 보인다.

 

SOA/Scalar형 실행 모델은 통상적으로 GPU 컴퓨팅 같은 사용에 적합하다고 말한다. AOS/Packed형은 기존의 GPU와 미디어 프로세서를 이끌었던 모델이다. 이번 스카이레이크 GPU 코어의 개혁은 GPU 코어를 더 범용적인 GPU 컴퓨팅에 적합한 설계로 바꾸었다고도 할 수 있다.

 


출처 - http://pc.watch.impress.co.jp/docs/column/kaigai/20151022_726778.html

랩터 인터내셔널 - http://raptor-hw.net

 

반응형
Posted by 랩터 인터내셔널