벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] GDC 2009 드디어 소프트 개발자 정보도 나온 "Larrabee"

tware 2009. 3. 28. 21:18

 

 

 

 

Intel이 그래픽 분야에 크게 나서고 오려고하고있다. GDC09 마지막 날 " Larrabee "에 대한 소프트웨어 개발자 정보가 공개되었다.

원래, Larrabee는 무엇인가를 포함하여 복습 등을 겸해 가볍게 정리해두고 싶다.

우선 Larrabee는 다중 코어의 CPU아닌 GPU로 있다. Core 2 Duo와 Quad가 2코어와 4코어를 정리한 구성이 되어 있는데 비해, Larrabee는 코어를 수십개 담은 느낌의 CPU가 될 전망이다. 실제 제품으로 몇개 포장되는지는 알 수 없지만 이전 1TFLOPS을 달성했다고 했었을 때 구성에서는 80 코어를 집적한 것이므로 제품이 나올 때만큼의 코어가 실린것으로 해도 이상하지 않다.

많은 코어는 256KB 씩의 L2 캐시를 통해 링버스로 연결되어 있다. 있어도 이상 하지 않을 같은 공유 메모리 부분이나 3 차 캐시까지 제공되지 않은 것 같다.

 


Larrabee는 코어 당, x86 명령을 정상적으로 수행하는 스칼라 연산 유닛이 1개 있고, 512 비트폭 (32 비트 × 16)의 벡터 연산 유닛이 세트로 되어있다. 벡터 연산이라는 것은 여러 연산을 함께 할 것이다. 또한 각 연산 유닛은 동시에 최대 2 스레드씩 실행 가능하고 코어 당에서는 최대 4 스레드의 동시 발행이 가능으로 되어있다.

그런데, Intel의 x86 CPU에서 벡터 형식 연산기를 처음으로 탑재한 MMX에서는 64비트 레지스터에 데이터를 담아 단번에 연산 할 수 있었다. 당시는 음성 데이터 처리가 중심 이었기 때문에 16 비트 정수 연산을 4개 동시에 할 것으로 예상되고 있었다.
계속 SSE에서는 128 비트 레지스터가 채용되어 부동 소수점 연산에 대응한 것이되었다. 비트 수가 배가되면, 단번에 연산 할 수 있는 양이 증가하므로 단순히 연산 능력도 배가 된다고 생각해도 좋지만, SSE는 기존 클럭에서 연산되어 있던 것이 최소 2 클럭을 필요로 하게 것은 유감이었다.
향후 등장한다고 하는 AVX는 256 비트 레지스터에서 비슷한 일을 하지만, Larrabee는 갑자기 512 비트이다. 게다가 대부분의 명령을 1 클럭의 처리량에서 실행한다. 단순히 생각하여 매우 빠른 연산기가 틀림 없다.

Intel의 x86 코어 + 벡터 연산 유닛이라는 흐름에서 보면 정상 진화의 흐름이 갑자기 빨라졌다 라는 느낌이지만, 내용적으로 기존의 것과는 상당한 차이, 다분히 GPU를 의식한 내용이 되고 있다 .
GPU에 비해​​ 성능은 어떨 것이라고 생각하는 방향도 많다고 생각하기 때문에 연산 부분만 꺼내 모식적인 계산도 해보자.

Larrabee가 80 코어 × 16 벡터 × 2 명령어 1TFLOPS을 달성했다고 하면 대략 500MHz 미만 정도로 움직이고 있다가 된다.
GPU의 대표로서 240SP × 3 명령어 × 1296MHz에서 933MFLOPS (워크 스테이션에서는 1TFLOPS의 제품도 있다)의 GeForce GTX 280가 대체로 같은 정도의 연산 성능이라고 생각해도 좋을 것이다.

80개나 CPU를 담아 가격은 얼마인가?, 그런 것을 양산 할 수 있는가?, 원래 80개 인지 등의 문제는 일단 놓아 두자.

코어로 눈을 돌리면 각각 평상시 사용하고 있는 Core 2 Duo 등과 마찬가지로 x86 아키텍처의 CPU가 있다. 단순히 x86의 CPU이라면, 100개의 연결 200개 연결이 있어도 게임에는 거의 장점이 없어 보이지만 각각의 새로운 명령이 추가 되었다. 그 Larrabee New Instruction이 얼마나 강력한지 인지하는 것이 오늘의 주제이다.

 

(이거 아마도 80코어 말하는게 본래 라라비가 아니라.. 예전에 연구용으로 만든 80코어 짜리 제품을 헷갈리는거 같습니다. 예전 2006년 9월 IDF에서 언급하고 2007년 2월에 80코어로 단정밀도 1.81 TFLOS를 달성한 비x86 연구용 매니코어를 말하는게 아닌가 하네요.;)
 

 

 

 


간단한 연산 능력 이외에 원래 왜 512 비트인가? 16 개의 연산을 동시에 수행 할 수 있도록하는 것이 얼마나 중요한지 등이 이번 강연에서 말한것 이기 때문에 소개해 둔다.
참고로 강연을 했던 Michael Abrash 씨는 id Software에서 "Quake"의 개발에 참여하거나 Microsoft에서 Xbox 사업에 참여했던 게임 개발을 숙지한 프로그래머이다.

 


우선, 1 코어에 대한 이야기​​가 되는데, Larrabee는 CPU를 사용하여 만든 GPU와 같은 것이다. 3D 렌더링 처리 못하면 말이되지 않는다.
Larrabee에 탑재된 새로운 명령어는 그래픽 처리를 강하게 의식한 것으로 되어있다. 포맷 변환 명령이나 여러 점의 데이터를 정리해 가지고 오는 Gather 및 데이터를 여러개의 점으로 나누어 쓰는 Scatter 등 한번에 많은 것을 할수 있는 편리한 명령어가 많다. Gather는 DirectX 10.1 지원 GPU 이상에서 지원되는 것이지만, 그것이 4점을 정리해 가지고 오는 사양인데 비해, 16점의 일괄 샘플링이 가능한 것으로 되어있다.
벡터 부분은 기본 명령어 형태 자체도 x86과는 별개로, MIPS CPU와 같은 니모닉에 이어 3 피연산자 것으로 되어있다,

VMADPS V0, V1, V2; V0 = V1 × V2

와 같이 계산 결과를 저장하는 레지스터를 가장 먼저 지정 같은 사양의 명령 체계가 채용되고 있다. 물론 연산 결과를 어딘가에 저장할 때 1 명령 적다.
또한 새로 추가된 마스크 레지스터를 잘 사용하면, 여러가지 부분을 간소화 할 수있다.

 

적립 예. 3 피연산자 구성되어있다. 첫번째 V0가 목적지 레지스터 (저장 위치)가 된다

 

 

 

적화 연산의 (FMA)

 

 

이것도 적화 연산 (FMA) 이지만, 쓸 때 마스크 레지스터 (k1)의 비트 상태에서 필터링을 더하고있다

 

 

이것은 FP16 포맷을 FP32로 변환하면서 적화 연산을 (FMA) 실시하고있는 곳. 대상과 마찬가지로 마스크 레지스터를 이용하고있다

 

 

마스크 레지스터의 재미있는 사용법. 0 레지스터를 채워

 

 

꽤 위력을 발휘 할 것 같은 Gather 명령


사실, 대부분의 것들이 아주 잘 병렬화 할 수 있었다 ...... 래스터 이외는.

좌표 값으로 다각형(삼각형)을 화면에 표시되는 픽셀로 변환해 나가는 작업을 래스터 화라고 하는데 이 부분을 효율적으로 병렬화하는 것이 매우 어렵고, 성능이 전혀 오르지 않았던 것이라고 한다.

그래서 Abrash 교수는 화면을 4 × 4로 분할하여 가장자리에서 주사해 나가는 방법을 알아 냈다. (이제 와서는 그리운) 타일 기반의 처리에 가깝다. 4 × 4 부분으로 나누어 소 구간마다 래스터화를 진행시켜 나가는 것이다.
Larrabee는 화면을 4 × 4 1​​6 개로 분할하여 작업을 진행시켜 나가는 등 16개 단위로 작업을 진행하면 효율이 좋다. 16 분할된 각 영역에 다각형은 있는지, 있다면 영역을 더욱 16 분할하여 어디에 폴리곤이 있는지 1 픽셀이 될 때까지 반복한다. 이 방식은 예를 들어, 4096 × 4096 도트의 디스플레이를 사용하더라도 6 회 1 픽셀 단위까지 제한 할 수있다.

 

 

 

 

 

       
이 경우 그 구간이 다각형에 전혀 무관하거나 일부만 포함하는지 다각형 전체가 켜져 있는지, 반대로 다각형 속에 그 구간이 켜져 있는지 등 경우 분리하여 처리를 하고 있다.
우선 중요한 것은 난관이었던 래스터의 병렬화가 해결되고 (아직 성능에 만족하고 있지 않는것 같지만), Larrabee의 실용화에도 충분한 것 같다는 것이다. 언제 발표되는지, 얼마 정도 되는지 등 관심이 끊이지 않지만, 향후 Intel이 그래픽 분야에서 큰 움직임을 보이는 것은 틀림 없을 것이다.

 

 


참고로, Larrabee 신 명령에 대한 Unreal Engine의 아버지 Tim Sweeny 씨는 벡터 처리는 완벽 병렬화시 데이터 의존성이 없는 등 Larrabee 아키텍처를 극찬하고 있다. Abrash 씨도 프로그래머의 솜씨 나름으로 새로운 퍼포먼스를 꺼낼 수 있는 Larrabee를 좋아하는 것 같다.


글쎄, 어딘지 모르게 PS2와 Cell의 VPU에서 프로그래밍을 연상시키는 담론이지만, Larrabee의 경우는 저렇게까지 비인간적인 프로그램 관리는 요구되지 않는다고 생각한다. 그러나 일반 프로그래머는 어셈블러 코드를 구사하는 것보다 C + + 언어 나름으로 프로세서의 파워가 빼내오는 경우 만족하게 될 것이다. 그것에 대해 이미 Intel에 의해 Larrabee의 프로토 타입 라이브러리가 포함되어 있다.
다음의 PS3는 Larrabee를 사용하지 않을까 말하는 소문도 흐르는 정도 주목 받고 있는 제품이다. Intel의 움직임과 업체의 대응이 향후 게임에 미치는 영향이 큰 것이 예상되므로 향후에도 주목하고 싶은 기술이다.

 

 

 

 

 

 

 

 

 

 

 

[분석정보] 4만 8000개의 제온파이로 중국 톈허2 세계에서 가장 빠른 슈퍼 컴퓨터

 

 

[분석정보] TOP500 슈퍼컴퓨터 순위 2013년 6월

 

 

[제품뉴스] Intel Xeon Phi 새로운 폼 팩터 채용 포함 5모델 추가

 

 

[정보분석] 인텔 60코어 매니코어 "Xeon Phi" 정식발표

 

 

[분석정보] 인텔 슈퍼컴퓨터용 가속기 Xeon Phi 5110P 발표

 

 

[분석정보] Intel, HPC 전용 보조 프로세서 Xeon Phi 2013년 1월부터 일반용으로 출시

 

 

[분석정보] IDF 2012에서 주목한 한가지, 매니 코어 "Knights Corner"

 

 

[정보분석] 엔비디아 세계 최다 트렌지스터 칩 GK 110 공개

 

 

[정보분석] IDF 2011 Justin Rattner 기조연설 매니코어 시대가 다가옴 1/2부

 

 

[정보분석] IDF 2011 Justin Rattner 기조연설 매니코어 시대가 다가옴 2/2부

 

 

[정보분석] 같은 무렵에 시작된 Nehalem과 Larrabee와 Atom

 

 

[분석정보] Intel은 Larrabee 계획과 아키텍처를 어떻게 바꾸나?

 

 

[분석정보] 다시 처음부터 시작된 라라비 무엇이 문제였나?

 

 

[분석정보] 라라비 (Larrabee)의 비장의 카드 공유 가상 메모리

 

 

[분석정보] 인텔의 스칼라 CPU + 라라비의 이기종 CPU 비전

 

 

[분석정보] Larrabee는 SIMD와 MIMD의 균형 - Intel CTO가 말한다.

 

 

[정보분석](암달의 법칙) 2010년대 100 코어 CPU 시대를 향해서 달리는 CPU 제조사

 

 

[분석정보] 그래픽 및 DirectX 로드맵을 정리

 

 

[정보분석] Intel 힐스보로가 개발하는 CPU 아키텍처의 방향성

 

 

[정보분석] 팀스위니 미래의 게임 개발 기술. 소프트웨어 렌더링으로 회귀

 

 

[분석정보] 정식 발표된 라라비(Larrabee) 아키텍처

 

 

[아키텍처] 베일을 벗은 인텔 CPU & GPU 하이브리드 라라비(Larrabee)

 

 

[정보분석] 암달의 법칙(Amdahl's law)을 둘러싼 Intel과 AMD의 싸움

 

 

[정보분석] 모든 CPU는 멀티 스레드로, 명확하게 된 CPU의 방향