Intel의 새로운 GPU

제가 자주 그렇게 하고 있습니다만, 이 글은 MPR의 기사와 몇몇 논문을 기반으로 하고 있습니다. 읽고 제 맘대로 쓰는 글이라 항상 그렇듯 모두 맞는 내용을 쓰고 있다는 보장은 없어요.



Intel이 새로운 UFO를 주워서 새로운 장난감을 만들었습니다 ^^; 사실 인텔에게 GPU는 생소한 분야가 아닙니다. 이미 GPU 분야에서 상당한 – 실제적으로는 모든 마켓을 고려했을 때는 가장 큰- 마켓 쉐어를 가지고 있으니까요.. (근데, 아직도 이런가요? 몇년전엔 맞는 이야기인데, 아직도 이런지는 확신이 없네요. )



돌아가는 상황


Intel이 x86 기반으로 데스크 탑과 서버 시장을 장악하고 있다는 것이야 다들 아는 사실이고, 예전에 예상했듯이 strongARM과 XScale 사업을 버린 이유가, x86기반으로 embedded 시장에 도전하려는 것이라는 것도 실제로 나타났지요. 오히려 예상보다 느린 행보라 약간 의아할 뿐입니다. 실제적으로 ARM과 불꽃 튀게 붙게 될 시점은 2010년 정도로 보고 있습니다. ARM에서 저전력을 가지고 이러니 저러니 해도 Intel은 아직 SoC를 만든 것이 아니라, mobile processor를 embedded 시장에 맞도록 한번 바꾼 정도라고 보시는 것이 맞을 것입니다. 즉, ARM에서 내세우는 저전력의 우세는 ARM에서 그러하듯이 intel이 대부분의 peripheral을 on-chip화 시켜 SoC를 만들어내는 2010년 정도에 따져볼 일입니다. 게다가 이전에 썼듯이 ARM의 Cortex-A9의 경우 기존의 A8과 비교하여 여전히 energy-efficient할 것인지 의문입니다. (물론, 2-way까지는 Instruction Level Parallelism 가 충분하므로 어느 정도 까지는 문제가 없겠지요 ^^;)




Intel의 새로운 GPU; Larrabee


이러한 상황에서 Intel이 새로 내놓은 GPU는 기존의 3D accelerator와 차이가 많습니다. 각core당 16-lane SIMD 와 4개의 thread를 지원하고, NoC를 기반으로 하여 필요에 따라 다수의 코어를 연결할 수 있는 형태의 범용성 높은 프로세서를 만든거죠. Larabee는 일종의 NoC 기반의 array/vector processor 형태를 취하고 있는 것으로 보시면 되겠습니다. GPU가 GPGPU를 내세우니, 그동안 잘 알려진 general processor형태로 GPU를 공략했다고 할까요 ^^;


이런 형태나 시도가 없었던 건 아니죠. 약간 모양이나 형태가 다르긴 합니다만, media processor도 이런 형태의 접근이죠. dedicated engine을 사용하지 않고, 범용성 높은 vector processing unit으로 시장을 공략했었던 것이지요. 단지, 그 당시에는 여러가지 이유로 이러한 시도가 실패했는데, 뭐 다들 짐작하시듯 전용 엔진이 범용 엔진보다 전력 소모, 효율 면에서 앞서기 때문이죠(게다가, 당시 3D accelerator는 rasterizer 부분에 포커싱 되어 있어서 범용성이 매우 떨어졌습니다). 그런데, 이번에 이런 시도는 어찌보면, GPU 가 이런 저런 기능을 GPU에 넣다보니, 파이프라인과 연산의 형태가 GPGPU를 시도할 만큼 범용성을 갖춘 시점이기 때문에 가능한 한번 싸워 볼만한 시점이 된 것이기 때문이라 보입니다. GPGPU를 하느니 첨부터 vector-array processing을 해서 programmability를 높이는 접근이 좋지 않냐..라는 거겠죠.


게다가, 명령어 셋을 x86 기반으로 가져가니, 어렵게 GPGPU를 위한 언어를 따로 쓸 필요도 없지요. (병렬 프로그래밍이나 컴파일 문제는 따로 이야기하더라도..). 이 부분은 기존에 이미 multiprocessor를 위하여 작성된 대부분의 x86 기반의 프로그램이 아주 잘 동작할 것이라는 것이고, multiprocessor를 위한 것이 아니라도 recompile이 필요하진 않을 거라는 거죠. 즉, 이미 잘 구성되어 있는 x86의 컴파일러들과 multicore를 위한 지원등을 그대로 이용할 수 있다는 아주 큰 장점을 지닙니다. (GPGPU의 가장 큰 진입 장벽이 새로운 renderer 명령을 배워서 써야 한다는 점을 생각하면 이해하기 쉽습니다.)



상황에 대한 이야기는 대충 된 것 같고, 전체 구조는 아래와 같습니다. (인터넷 찾으니 그림이 많군요 ^^; 원본 그림은 watermarking 된것 처럼 TECHARP.com에서 온 것 같습니다. google image검색에서 따 온거라 ^^;)




각 코어의 scalar/vector processing datapath의 그림은 위와 같구요. 위의 두 그림을 보고 알 수 있는 것은 dedicated L1의 형태를 지닌 vector 프로세서를 NoC(interprocessor ring network) 기반으로 array 형태로 배치한 것을 알 수 있습니다. 첫 그림을 보면 shared 형태의 L2처럼 보이는데, 실은 coherent L2 cache입니다. 코어의 수가 늘어나면 다수의 NoC를 배치한다고 하네요. 그래픽(visual computing)을 타켓으로 하다보니 dedicated accelerator와 몇몇 블록들이 존재 하구요.


형태상으로는 전반적으로 thread level parallelism과 data parallelism을 극대화시키기 위한 형태라고 생각됩니다. 흠.. 근데, snooping에 의한 traffic문제는 어떻게 할지 좀 궁금하긴 해요. NoC 에서 snooping에 의한 traffic이 만만치 않을 것 같은데, 주된 application이 vector processing이라 생각하면 그다지 많지 않을 것 같기도 하구요.



자세한 정보를 얻으실 분은 이 논문 을 읽어 보시는 것이 도움이 되실 것입니다.



요즘 흘러가는 것을 보면, 예전에 한번 실패했던 재미있는 테마들이 새로운 응용 분야, 기술의 발전에 힘입어 재미있게 융합되어 부활하는 것 같아서 흥미진진합니다.

ARM의 Cortex-A9 프로세서.

[wp]ARM[/wp]에서 Cortex-A9을 발표하였다고 합니다 [ZDNet 기사]. 일단 저에게 있어서는 한숨 쉬어지는 일이고(ARM의 행보가 점차 빨라지니, 저희같은 업체가 따라잡을 수 있는 여지가 줄어들고 있는 것이 사실이니 말입니다.), 업계에 있어서는 환영할 만한 일이겠습니다. Cortex-A9의 경우 4개 까지 MP로 구성이 가능하다고 하니(MP 구성을 따지는 것으로 보아, cache snooping이 고려된 SMP겠지요..), 대단한 성능을 기대할 수 있겠습니다.


여기서 재미있는 것이 Intel의 대응인데요. 기존에 ARM 기반의 프로세서를 만들다가 해당 부분을 과감히 정리하였지요. 근데, EETimes에 의하면 Intel이 ARC의 프로세서를 라이센스했다고 합니다[EETimes 기사]. ARM 기반을 정리할 때는 x86기반의 embedded processor쪽으로 무게를 둔다고 생각했는데, 범용쪽은 x86기반, 저전력이 요구되는 application specific한 부분은 configurable processor인 ARC쪽에 무게를 두는 느낌입니다. 그래도, x86기반에서도 충분히 configurable하게 만드는데 어려움이 없을 것인데.. 저전력을 위해서 이런 결정을 내린 것이 아닌가 하는 생각입니다.


이러한 행보에 맞추어 저희 회사에서는 Heterogeneous MPSoC쪽에 무게를 두고, 여기에 적합한 lightweight/low power processor와 interconnection에 무게를 두고 있습니다[네이버]. 몇 가지 재미있는 아키텍처적인 시도를 구상하고 있는데, 보도 자료에는 좀 이상하게 나간 느낌이 있습니다. 물론, 마케팅적인 측면을 위해서 빠른 프로세서를 만들어야 겠다는 생각은 변함이 없습니다만.. 실제로 MPSoC에서 중요한 것은 적절한 성능의 작은 footprint를 지닌  low power 프로세서들이니까요. (적절한 성능이란 것이 task에 따라 바뀌는 것이므로, 아주 강력한 프로세서를 개발해야 할 필요성도 있는 것이지요)


뭔가 흥미 진진해질 것 같아요.

Metal Gate로 더 빠르게..

ZDnet의 기사를 보니 메탈 게이트를 사용하는 트렌지스터가 상용화된다는 이야기가 써 있군요. 이 이야기는 하드웨어 리뷰 사이트들을 통해서 개략적으로 접하고 있었는데, ZDnet의 기사를 통해서 좀더 자세히 알게 되었습니다. (이번 MPR에도 잘 나와 있습니다만, 한글로 읽는 것이 더 편해서 ^^;)


사실 저는 반도체 물성과 같은 부분은 전공이 아니라 잘 모릅니다. 학부와 대학원때 과목을 들은 정도지요.. ^^ 간략하게나마 뭐가 어떻게 돌아가는 건지 설명드리자면, 우선 간단히 CMOS에 대해서 설명드리고 시작하는 것이 편할 것 같습니다.
트렌지스터라는 것이 일종의 스위치와 같은 것입니다. 버튼을 누르면 전류가 흐르고, 누르지 않으면 전류가 흐르지 않는 것이죠. CMOS 트렌지스터에서 이 버튼에 해당하는 부분이 바로 Gate라고 보시면 되겠습니다. 즉, Gate에 일정 전압이 가해지면 가로막혀 있던 부분이 열리는 그런 원리랄까요..


근데, CMOS transitor에는 문턱전압(Vth)이란 것이 있죠. Gate에서 어느 정도 전압이 가해져야 “문턱을 넘어서” 전류가 흐를 수 있는 것이냐는 것인데요.. 가끔 Gate에 전압이 가해지지 않더라도 문턱을 넘어가는 날랜 전자가 있습니다. 이런 넘들에 의해서 게이트의 상태에 변화가 없더라도 흐르는 전류가 바로 “leakage current”라고 보시면 됩니다. 말 그대로 줄줄 세는 거죠..
쉽게 생각해서, 문턱이 높으면 높을수록 게이트에서 전압이 없을때 필요없이 전류가 흐를 가능성이 낮아집니다. 근데, 문턱이 낮으면 낮을수록 게이트에서 전압이 공급되지 않더라도 문턱을 넘어가는 전자의 비율이 높아지죠. 반대로, 문턱이 높으면 높을 수록 Gate에 전압을 가해서 스위치를 켜는 시간이 오래 걸립니다.


이런 원리로 빠른 공정 = 낮은 문턱 전압 = 많은 leakage current로 연결됩니다. (뭐, 설명은 아주 대충했지만 말입니다.)
예전에 0.18um정도까지만 해도 leakage current를 신경쓰는 일은 거의 없었어요.. (사실 0.35um까지는 전혀, 0.18um부터는 조금.. ) 공정이 줄어들면서 문턱 자체를 구성하는 부분도 기껏해서 원자 수십개 수준으로 줄어들게 되었습니다(그것 보다 적나요? 정확하진 않네요.^^;). 그러다보니, 문턱전압도 낮아지고 leakage current라는 것이 동작할때 소모되는 것보다 더 많은 전력을 소모하게 된 거죠.


그래서, High-K라는 것이 나온 건데요.. K라는 것이 유전율(전자가 얼마나 빨리 흐를 수 있느냐)인데요.. K가 높아지면 문턱을 높인 다음에, 문턱을 약간만 내려도 그 좁은 길로 전자가 빨리 빨리 흘러갈 수 있다는 거죠. 좁은 대신 전자의 흐름 자체를 좋게 만들었으니까요.. (역시 쉽게 말하느라고 아주 정확한 표현은 아닙니다만..)


45nm에서 인텔에서는 그동안 사용하였던 poly silicon(지금까지 대부분의 공정은 silicon substrate위에 poly silicon으로 gate 얹어서 사용해 왔습니다. 이때 NMOS냐 PMOS냐에 따라서 N+/P+를 선택하는 거죠)대신에 NMOS나 PMOS에 맞는 Metal gate를 구성했다는 거죠. 아주 대단한 일입니다. 이로 인해서 속도는 유지하면서 leakage current는 잡을 수 있을테니 말입니다. 그리고, 또하나.. 이론대로라면 대부분의 전통적인 공정이 변경될 필요가 없을 것 같습니다. 단지 poly silicon대신 metal(물론 그렇게 쉽게 바뀔 부분은 아니지만 말입니다. ^^;)로 변경되는 정도니까요.


기사에서처럼 당연히 metal의 혼합비는 극비겠죠.. 뭘 물어보고..


IBM에서도 high-K를 채택한다고 하던데.. (이것도 어디 기사에서 봤는데 말이죠..), AMD와 IBM이 비교적 가까우니..이쪽 진영에서도 금방 바뀌지 않을까 생각합니다.


Moore 선생님.. 기쁘시겠어요.. ^^;