[펌] UltraSPARC-T2 , 8 Core X 8 SMT

UltraSPARC-T2 를 보고 놀라서.. 서핑

From : http://minjang.egloos.com/1965403

32코어, 128스레드의 인텔 Larrabee GPU


예전에 들은 내용이긴 한데 그 동안 여전히 공개되지 않다가 오늘 파코즈에 올라온 글을보니 이 정보가 유출이 된 듯 하다. 인텔이 개발 중인 래러비 GPU는 x86 기반의 프로세서 32개로 출발한다.Out-of-Order 프로세서는 아니고 in-order 형식이다 (사실 이런 구조에서 in-order인 것이 당연). 그래서파코즈의 글 처럼 P5 (펜티엄 클래식의 마이크로아키텍처)에 기반했다고 표현되어있다. 이 작은 프로세서들은 4개의 스레드를동시에 돌릴 수 있는 구조여서 총 128개의 스레드가 동시에 돌아가는 구조. 하이퍼스레딩과 같은 SMT는 아닌 것 같지만 어쨌든 하드웨어 수준에서 4개의 스레드가 처리가 되도록 한다. 내 생각엔 hard-partitioned multi-threading 정도가 아닐까 싶은데, 좀 더 알아봐야할 듯.

그리고 중요한 것은 512비트의 SIMD (Single Instruction Multiple Data) 명령이 처리 가능하다는점. 즉, 16개의 float이나 int를 한방에 처리 가능한 명령어셋을 지원한다. 예를 들어, 주어진 두 float [16]배열을 가지고 전체 벡터 합을 구한다거나, 각 원소에 대해 덧셈과 뺄셈을 지그재그로 한다거나, 아니면 saturated arithmetic을한다거나 이러한 연산이 한방에, 즉 한 사이클에 된다는 것이다. 현재 Core 2 Duo는 128 비트의 SIMD(=SSE3)를지원한다. 아마 올해 나오는 네할렘은 (SSE 4.1) 128비트 SIMD이고, 그 다음 인텔의 마이크로아키텍처인 Sandy Bridge는 256비트로 확장된 AVX 명령어 셋이 지원된다.

 

사실 이런 구조는 새삼스러운 것은 아니다. 코드네임 Niagara인 Sun의 UltraSPARC T1 프로세서는 이미 8개의코어와 4-way SMT (즉, 하이퍼스레딩 인텔 CPU가 코어 당 2개의 가상 CPU를 만들었다면 이 녀석은 4개를 만든다)을구현해서 32개의 스레드가 동시에 실행되는 CPU가 이미 2005년 11월에 나왔었다. Niagara 2인 UltraSPARC T2는 이 보다 더 나가 8코어에 코어 당 8스레드가 실행되어 64개의 스레드가 동시에 실행되는 CPU이다. 아래 그림은 나이아가라 2의 대략적인 다이어그램.

L2캐쉬는 4MB 공유이며 8개의 뱅크로 나뉘어 있는 구조. 즉 8개의 독립된 입출력은 동시에 가능하다는 소리. 뱅크 하나만 해서Read/Write 포트를 늘리는 것은 일반적으로 매우 어렵기 때문에 대용량 캐쉬에서 더구나 이런 많은 코어에서는 멀티 뱅크구조가 합리적이다. 만약에 한 뱅크에 여러 입출력 요구가 몰리면 이른바 bank conflict가 생기고 성능 저하로 연결된다.이런 bank conflict는 캐쉬 뿐만 아니라 DRAM에서도 일어날 수 있으며 DRAM 레이턴시를 갉아먹는 주요한 원인이다.이쪽은 자세히 잘 모르므로 더 이상 언급은 생략.

따라서 AMD가 인텔보고 네이티브 쿼드코어 디자인은 우리를 베꼈어!이런 건 좀 넌센스. 또, 메모리 컨트롤 내장도 AMD 뿐만 아니라 다른 아키텍처에서도 흔히 볼 수 있는데, 이런 걸로 기술의우위를 논한다는 건 좀 웃기다. 현재 AMD 쿼드코어가 2년 전 나온 인텔 Q6600 에게도 밀리는 것이 사실인데 좀 얼굴이화끈 거린다. 그래도 AMD가 좀 분발해줘서 요지 부동인 인텔 CPU 가격이 떨어지도록 좀 해주기를. 이번에 ATi의 4850이엄청난 가격 대 성능비로 데뷔하자 nVidia의 8000 시리즈는 가격을 대폭 하락할 수 밖에 없었다. 요즘 ATi 때문에 난리~

 

다시 GPU 이야기로 돌아가서, nVidia GPU 역시 100여개 이상의 스레드가 동시에 돌아가는 구조라서 큰 그림은 결국비슷하나 인텔은 조금 더 많은 일을 할 수 있는, 즉 좀 더 CPU 스러운 녀석을 중심으로 구현한 것이 차이인 것 같다.nVidia GPU 구조는 워낙 계층이 많고 용어가 모호해서 이해하기가 참 힘들었는데, 최근 나온 GTX 280에 대한 구조를 읽어보니 이제 조금 감이 잡힌다. 그래도 그래픽 쪽에 대한 지식히 부족해서 그런지 좀 긴가민가한 점이 여전히 있다.

일단 아래 그림 중 SP라고 불리는 아주 간단한 구조의 Streaming Processor로 출발을 한다. 보다시피 레지스터파일이 있고 계산 유닛이 있는 파이프라인화 되어있는 간단한 CPU이다. 이것과 SFU라고 하는 Special FunctionUnit을 묶어서 Streaming Multiprocessor, SM을 하나의 빌딩블럭으로 만든다. 여기에는 보다시피 캐쉬도있고 공유 메모리도 있고 그렇다.

그런 뒤에 다시 얘들을 묶어서 Texture Processor Cluster라는 TPC를 만든다. 8800시리즈는 SM이 두개 있었다면 GT200은 3개가 묶어져있다.

그리고 이걸 또 모은다. nVidia 최신 GT 280은 이걸 10개를 모아서 총 240개의 스트리밍 프로세서를 가지고 있고 이 숫자는 과거 G80 구조가 가졌던 128개에 비해 대폭적인 증가이다.

이제 마지막으로 메모리랑 연결하고 그래서 GPU가 완성된다.

뭐가 참 복잡하다. 그래도 그 동안 GPU가 어떻게 생겨먹었나 궁금하셨던 분들에겐 조금이나가 그림이 그려졌기를 기대해본다.Larrabee는 좀 더 나이아가라스러운 구조가 아닐까 한데 나도 아는 바가 없어서... 그래도 본질적으로 100여개 이상의스레드를 동시에 처리할 수 있다는 점에서 동일하다고 볼 수 있다.

by object | 2008/07/06 13:06 | 컴퓨터 | 트랙백 | 덧글(7)

by 오서비네 | 2008/10/20 09:55 | UNIX | 트랙백

<< 이전 페이지     다음 페이지 >>