서문, 스토리지 디바이스, 시스템 코스트, 파이널 워드 페이지는 별 내용도 없고 필요없을 것 같아 제외했습니다.
가끔씩 뜨문뜨문한데다 특히 전문용어들이 꽤 많아서 번역이 매끄럽지 못하고 오역이 꽤 있을 수도 있습니다.

본 기사는 05년에 작성 된 것이므로 일종의 프리뷰나 다름없습니다. 4년 가까이 된 기사이지만 일반 전반적인 내용에 대해 이야기하고 있는 편입니다. 그것을 고려해주세요






균형의 서곡

여타 플랫폼의 가장 중요한 목표는 모든 단계에 있어서 균형을 잡는 것이다. 우리는 아키텍처상의 불균형의 여러 예시를 통해 성능상의 문제를 일으키는 모습을 보아왔는데, 작은 캐시나 좁은 FSB가 고 클록 CPU에서 데이터 작업 시 병목이 일어난다. 그러한 부주의로 인해 GPU가 충분한 메모리 대역폭 없이는 Fill-rate의 한계가 들어난다. 당신이 예산이 무한대이고 최고의 부품을 살 수 있지 않는 한 균형을 이룬 종합 플랫폼이란 PC에서 매우 어려운 문제이다. 당신의 빈약한 CPU에 고급 그래픽카드를 사용한다면 성능 상승폭이 줄어들게 되거나 빠른 CPU와 하급 GPU 조합보다 더 나쁜 결과를 볼 수도 있다.

그러나 콘솔에서는 박스를 뜯는 순간부터 전체가 균형적인 플랫폼으로 만들어진 상태인데, 제작자가 가능한 수준에서 할 수 있는 최대한이라 생각할 수 있다. 제작자는 시스템에서 버스방향(bus width), CPU 아키텍처, 메모리 대역폭, GPU, 미디어 타입 호환 등을 고려하여 선택 반영한다. 그리고 가장 중요한 것은 시스템 구성요소들의 균형을 맞추는 것이다.

이 기사의 시작이 “a prelude on balance” 인 이유는 당신이 콘솔 제작사가 계속 무서울 정도로 불균형인 머신을 만들어냈다 생각하지 않기 때문이다. 한 회사는 차세대 하드웨어 콘솔이 플랫폼의 불균형 때문에 제대로 활용하지 못한 채 콘솔을 팔면서 손해를 볼 것이다. 당신은 지나치게 강력한 CPU와 Fiil-Rate의 결합이 GPU를 제한하는 모습을 볼 수 없었을 것이고 분명 대역폭 부족으로 성능을 막아버리는 경우도 볼 수 없었을 것이다. 지금 이게 무슨 말인가 하면 마이크로소프트와 소니의 콘솔을 보고 하는 말이다.


콘솔과 콘솔CPU

두 콘솔의 심장인 CPU는 몇 가지 공통적인 부분을 공유함에도 불구하고 서로 아키텍처 접근이 매우 다르다. Xbox360의 CPU, 코드네임 제논(Xenon)은 보편 적 마이크로프로세서로 설계 되어있으며 보편적(general purpose) 파워PC 코어 세 개를 가지고 있는데, 이는 여러 코드 타입을 실행하는데 비교적 수월하다.

플레이스테이션3의 CPU는 셀 프로세서로, 보편적 PowerPC Processing Element(PPE, 하나짜리 제논 코어와 매우 비슷하다)와 7개로 이루어진 Synergistic Processing Elements(SPEs)를 한 쌍으로 이루어져있는데, 일정한 코드 타입을 실행하도록 더 전문적인 용도를 위해 설계로 되어있다.

제논과 셀의 비교를 뭐 쉽게 말하자면 평범한 용도의 마이크로프로세서와 보편과 전문작업을 짬뽕시켰다 볼 수 있다.

수 없이 말했음에도, 소니의 셀에 대해 이야기해보자. 우리는 매우 상세하게 셀 프로세서의 아키텍처가 벌써 보편적인 용도와 전문 하드웨어로서 디자인되어 있는지에 대해 논의를 했다. 인텔의 2015년 플랫폼 비전 슬라이드를 메모하기도 했다.

1.jpg

한 개 혹 두 개의 큰 보편적 코어와 전문 하드웨어의 조합과 여러 개의 작은 코어들을 사용하는 것, 셀 프로세서를 호되게 비판했으면서도 인텔은 자신의 미래 로드맵에 그것이 존재한다. 차이점은 셀을 내세운 것은 지금이란 것이다. 2015년 CPU는 32nm 공정으로 더욱 작게 제조되는데 중요한 점은 지금은 90nm 프로세서란 것이고(05년 기준), 더 많은 하드웨어(CPU속에 들어가는 다른 하드웨어; ex: GPU)가 같은 공간속에 들어가게 된다는 것이다. 앞을 내다 본 디자인을 한 것, 셀 프로세서의 설계는 필연적으로 그 칩을 그들이 시간을 앞당기면서까지 원하는 대로 디자인 해버린 것이 보편적 사용을 희생하게끔 만들어버렸다.


X
box360 제논 CPU를 이야기해보자

제논 프로세서는 3코어 CPU를 기반으로 디자인되었는데 그렇기에 셀과는 다르다. 그것은 제논 칩이 향상될 수 있도록 코어를 비활성화 시키지 않았다.

그 칩은 90nm 공정이며, 이는 셀과 같다. 더불어 3.2GHz로 동작한다. 이 역시 셀과 같다(05년 발표당시 PS3 Cell은 3.2GHz 예정). 모든 코어는 하나나 다름없고 이는 PPE를 쓰는 셀 마이크로프로세서와 매우 비슷하다, 물론 살짝 개량해서.

마이크로소프트의 초점은 VMX 명령어 세트의 확장을 코어가 가지도록 추가하는 것이다. 이 특이점에서, 마이크로소프트는 현재 싱글 사이클 dot-product 명령어는 VMX-128 ISA의 한 부분으로서 포함하고 있으며 이는 각각 코어에 있다. 마이크로소프트는 이 명령어를 IBM이 다른 칩에서도 지원하게끔 하는 행동을 막으려 하지만 의미 없는 일이란 건 당연한 것이다. 그러나 우리는 아직 셀 진영에서는 PPE가 싱글 사이클 dot-product를 지원할 수 있도록 요구한 것을 누구도 보지 못했다.

세 코어는 빈약한 1MB L2 캐시를 공유하며 싱글 쓰레드 게임에서 이를 발견할 수 있지만 개발자들은 멀티 쓰레드 엔진의 확산을 촉진시키고 있으며, 이 작은 캐시가 분명 성능 제한을 가져올 것이다. 2쓰레드를 동시에 각각의 코어들이 실행되는데, 당신은 최악의 경우 6쓰레드가 1MB L2 캐시를 요란하게 울리는 모습을 볼 수 있을 것이다.

가장 중요한 Xbox360 제논 코어의 판매 포인트는 모든 3 코어가 동일하다는 것과 그것들이 모두 보편적 마이크로프로세서라는 것이다. 개발자는 멀티 쓰레딩이 그것들의 코드가 안정적으로 쓰레드를 얻을 수 있다는 점(일찍이 이를 멀티 쓰레드로서 코어들이 얼마나 쉽게 실행할 수 있는 지)에 대해 걱정할 필요가 없다. 다른 중요한 점을 잊지 말아야하는데 멀티 코어 PC 플랫폼과 Xbox360은 서로 동등하게 주고받을 수 있다는 것이다. 어느 곳에서나 인라인 어셈블리로 서로 교환(데이터 등)이 되도록 사용할 수 있는 것인데, 현실적으로 비교적 중요치 않은 코드의 교환과 최적화 등, PC와 Xbox360 간 코드 이식은 모든 면에서 매우 어려운 일이다. 물론 중대한 가치로서, PC와 Xbox360간 게임 코드 포팅은 맥(Mac) 개발자들이 인텔 플랫폼과 파워PC 플랫폼 사이의 맥OS X 코드를 포팅 하는 것(아키텍처는 전환되지만 프로그래밍 모델은 바뀌지 않기 때문이다.)과 비슷하다.

이 같지 않는 점 셀과 플레이스테이션3에서 말하고 있다. Xbox360에서 PS3로 코드를 이식하는 가장 쉬운 방법은 셀 프로세서의 싱글 PPE를 단독으로 사용하는 것인데 분명 이는 멀티 쓰레드 타이틀에서 좋은 성능을 보여주지 못하게 되지만 동시에 작은 효과로서 PS3는 많은 잠재력을 갖고 있다.


Xenon vs. Cell

소니의 PS3 프레스 컨퍼런스에서 첫 번째 플레이스테이션3 공식 데모는 에픽 게임즈의 언리얼 엔진3였다. Tim Sweeney, 에픽의 창립자이자 UE3의 아버지, 데모에서 어떤 방법으로 플레이스테이션3에서 멀티 쓰레딩이 광원효과를 나타낼 수 있는지를 보여주었다.

Tim씨에 따르면 UE3에서 SPE 가속을 통해서는 많은 것을 할 수 없는데, 주로 하이 레벨 게임논리(high-level game logic), 인공지능과 스크립트 정도를 할 수 있다. 그러나 그는 “다행이도 이것들은 이전의 싱글 쓰레드 아키텍처에서도 적은 CPU 사용률을 나타내고 있으며, CPU가 하는 이 작업들은 SPE와 GPU가 그 일들을 하는 알맞게 써먹을 수 있다.” 라고 하였다.

Tim Sweeney 씨가 UE3에서 SPEs 했던 것은 무엇인가? “UE3에서 우리들은 SPE 가속의 목적을 피직스, 애니메이션 업데이트, 파티클 시스템, 사운드로 맞추었다. 좀 다른 분야에서도 가능했지만 더 많은 실험을 해봐야 알 것 같다.”

Tim의 PPE/SPE 분할에 대한 관점을 보자면 대부분 우리가 접할 수 있었던 것 보다 더욱 더 균형적이었다. 그동안 다른 이들은 SPE의 쓰임새에 대해 말했었는데, 많은 사람들은 보편적 PPE가 더 많은 일을 할 때 SPE를 완전히 쓸모없는 것으로서 어디에도 써먹을 곳이 없다고 여겼다(우리는 그 이유를 조금 알 수 있었다).

가장 중요한 것은 UE3가 사용하는 셀의 SPEs영역은 꽤 쓸 만하다는 것이다. 예를 들어 사운드 프로세싱이 SPEs가 주는 스트림작업에 목적을 둔 특별한 아키텍처에 의해 많은 감각을 만들어 낼 수 있다. 그러나 한 가지 별난 아이템으로 SPEs의 사용목적은 물리연산의 가속, 특히 무거운 물리 연산 작업을 어떻게 분할해 주는 것인가는 많이 알려진 것이다.

충격감지(Collision detection)는 일반적으로 “게임 피직스”에서 제공하는 비중 있는 부분인데, 이 이름이 뜻하는 것은 두 물체가 충돌할 때 충격감지는 간단하게 게임엔진으로 결정한다. 충격감지 없이, 총알은 절대 당신의 적을 맞출 수 없고 캐릭터는 벽이나 자동차, 여러 사물을 사이를 통해서 움직일 수 도 없다.

게임에서 충격 감지를 수단으로 쓰는 한 가지 방법은 바이너리 서치 파티셔닝(BSP) 트리를 이용할 수 있다. BSP 트리는 바이너리 트리 속 폴리곤 리스트를 조직하여 만들 수 있다. 트리 구조는 이 논의의 문제가 아니긴 하지만 여기서 중요한 것은 트리에서 몇 몇 물체와 폴리곤간의 충돌 테스트를 목적으로 하는 BSP 트리를 순회한다(Traverse)는 사실을 잊지 말아야 한다. 첫 번째 순회트리 발견은 충돌에 대한 테스트에서 원하던 폴리곤을 찾을 때였다. 그리고 충돌이 물체를 당신이 비교한 것과 폴리곤 그 것 사이에서 일어난 충돌인지 아닌지 확인하기 위해 여러 번 실행하였다. 이 과정은 다량의 조건 분기를 포함하며 매우 좋은 분기예측을 할 수 있는 고 성능 OoO 코어에서 실행한 코드이다.

불행하게도 SPEs는 분기예측이 불가능한데, 그래서 실행할 수 없을 때 실행이 계속되기 전에 각각의 분기 조건이 값을 얻는 동안 BSP 트리의 순회는 꽤 많은 시간을 SPE에 제한 받는다. 이것은 SPEs에서 실행되는 충격감지의 구조상 가능할지라도 충격 감지 알고리즘에 평소 PC나 Xbox360와는 다른 접근을 요청할 것이다.

우리는 아직 어떻게 실제로 작동하는지 조건예시를 들어 작업하고 있지만 이 스테이지에서 주어진 자세한 정보를 얻기가 곤란하다. 많은 NDA가 아직 PS3 개발에 있어 Cell을 포함하고 있기 때문이다. 이게 무엇이든을 떠나서 분명히 Epic팀은 SPEs를 그들의 물리 코드에 적절하게 매치시키는 것을 찾아낸 것이고, 구조를 완전하게 다졌다면, Cell 프로세서의 SPEs가 쓸모없다는 것이 아니라는 뜻이다.

사실, 올바른 구조, SPE가속 코드, 물리 코드가 이루어진다면 이것은 플레이스테이션3가 더 전문적인 SPE 하드웨어 구조기틀 때문에 Xbox360보다 빠른 성능을 얻을 수 있다. 무엇보다도 물리가속은 심히 병렬적이라 7개의 SPEs 배열를 어떻게 매치시키느냐에 따라 더욱 완벽하게 만들 수 있다.

마이크로소프트는 Cell의 SPEs 배열만큼 DSPs를 게임 개발자들이 활용하고 있지 않고 있다 대답하였었다. 차기 언리얼 엔진이 오디오 프로세싱만큼 물리, 애니메이션 업데이트, 파티클 시스템을 위한 Cell의 SPEs로 사용한다는 뜻은 마이크로소프트의 설명이 너무 고정되었다는 말인데, 경쟁이 존재하는 한 모든 개발자들이 Epic의 발자국을 따라가진 않고 PS3이외에도 좋은 성능을 얻을 수 있다는 것이다.

결론적으로 소니가 SPEs가 그들의 DSPs에 대한 환상 그 이상도 아니라는 점에서 CPU 다이 예산의 75%를 소비하는 것이 꼭 바보 같은 짓은 아니라는 것이다. 게임 엔진을 설계하는데 있어 Cell의 통괄과 SPE 가속에 최적화는 Xbox360이나 PC보다 더 많은 수고를 해야 하지만 가능한 일이다. 이 질문에 대한 대답은 개발자들이 행동으로 대답하지 않을까?

More Processing Power series에서 요한의 퀘스트를 보면 그는 멀티쓰레딩의 개발상의 한계를 보는데, 특히 그들은 게임에서 이를 적용한다. 결말은 멀티쓰레드 게임 개발이 싱글쓰레드 이전의 게임 개발 보다 작업시간이 2~3배 증가하게 되는데, PS3의 더 좋은 성능을 위해 엔진 요소의 재구성함으로서 시간이 추가되며 이 변화는 결코 개발자 입장에서 쉽지 않을 것이다.


왜 In-Order인가?

데스크탑PC 마이크로프로세서였던 팬티엄PRO 때는 out of order를 사용하는 실행 아키텍처로 성능 향상을 주도하였다. 우리는 이후 매우 상세한 생각을 전하였는데 OoO 마이크로프로세서는 실행자원을 최대한 활용할 수 있도록 구조순환(Instruction stram)을 재조직하였다. 설명이야 간단히 마무리했지만, OoO 마이크로프로세서의 복잡성이 심화되었던 것이 사실이다. 물론 소비전력도 매우 늘었다.

완벽한 이론 안에서, 싱글 다이의 OoO코어들이 다발무리로 있고 싱글쓰레드 성능이나 멀티쓰레드나 매우 훌륭하다. 그러나 꿈은 높지만 현실은 시궁창. 프로세서 다이의 크기 제한이 발목을 잡는데, 인텔과 AMD는 90nm다이에 두 개의 코어만 얹을 수 있었다. 허나 Xbox360과 플레이스테이션3에서는 3~9코어를 목표로 잡고 있었다. 물론 저 숫자만큼 실제로 주어지긴 하지만(단, 실제로 PS3는 7+1코어) 각자 보이지 않게 코어에 복잡한 어떤 문제가 일어날 수 도 있다.

게임 콘솔은 5년의 수명(판매주기)가 있는데 MS와 소니는 빠른 싱글 코어를 넘어 콘솔 주기의 절반 이후 말년의 효율성을 위해 친절하게도 멀티코어 플랫폼으로 결정하였다.

MS는 Xbox360에 3개의 같은 일반 IBM PowerPC 코어를 탑재했는데, 소니는 플레이스테이션3에 Cell 탑재를 공표하였다. 두 플랫폼 모두 절대적으로 싱글쓰레드 게임코드에서는 주요 데스크탑 프로세서보다 느릴 것이다. 그러나 유명 게임들은 CPU제한보다 GPU제한에 영향을 더욱 많이 받는다. 즉, 두 플랫폼의 데스크탑 대비 성능감소는 별 문제가 아니다. 장기적으로 최적화의 발전과 멀티쓰레드 게임엔진, 이것들은 일반적인 인오더 코어에서 공평하게 좋은 성능을 얻을 수 있다.


in-order가 중요한가?

셀에 대한 내용으로 대화했을 때 인오더 실행은 SPEs에 많은 능력을 낼 수 있다고 보았다. 인오더 실행은 빠른 속도의 로컬 메모리에서 적은양의 메모리 엑세스 예측을 높이고, 코드는 SPEs를 쓰는 컴파일러가 매우 쉽게 일정을 잡을 수 있다. 그러나 Cell의 PPE는, 그리고 저번의 제논의 파워PC코어는 그 인오더가 보여주는 많은 장점들이 필요가 없다. 적은캐시 아키텍처의 이점이 없는데 확실한 아이템에 강제적으로 능력을 줌으로서 캐시로부터 손상되지 않고 잔존하게 된다. 인오더의 일반용 코어는 컴파일러, 프로그래머, 최적화된 성능에 의지하여 더 많은 것을 얻고 쉽게 작업할 수 있다.

오늘 날 소수의 게임은 어셈블리로 쓰여저 대게 이런 것은 C나 C++와 컴파일러같은 최적화 노가다, 로우레벨 어셈블리 내에서 변환하게 된다. 컴파일러는 참 더럽게 쓰기 어려운데 이것으로 작업하는 모습은 마치 하늘에 대한 도전만큼이나 아름다움으로 승화시킬 것 같은 말아먹을 것이긴 하지만, 코드를 집어넣는데 의욕 없이 일한다면 단 하나라도 제대로 무언가를 얻을 수 없을 것이다.

그러나 알맞게 디자인된 ISA(Instruction Set Architecture)와 좋은 컴파일러라면 인 오더 코어는 이 세상에서 꼭 쓸모없다고 말할 순 없을 것이다. 마지막 명령어 레벨 병렬 화에서 얻어내지 못해 잃어버린 성능은, 인 오더 코어가 다이에 더 많은 것을 탑재할 수 있는 편리성으로 인한 클럭 대비 쓰레드로 실행하면 성능을 더욱 이끌어낼 수 있다. 불행히도 이것에 대한 이야기는 미리 했었는데, 초장부터 그 이점을 살리기 어렵다는 결론을 내렸다.

Cell 프로세서의 SPEs는 보다 전문화된 하드웨어로서 분명한 코드타입을 알맞게 실행시켜야 하는 더 큰 도전을 하고 있다. 기억해야할 것은 SPEs에 확실한 분기를 적용하지 않아 코드가 무거워지게 되고, 루프가 풀리면서 많은 성능 향상이 이루어져 보이는데 이는 실행했던 분기 몇 가지가 감소하게 되기 때문이다. SPEs의 성능을 쥐어짜는 게 목적이라면, SPE 코드의 최적화, 컴파일을 통한 최초 성능수치가 그들의 최대 처리량보다 더 낮을 때 개발자가 루틴을 직접 코드를 짜도록 강요받을 것이다.

인 오더 아키텍처로의 이동이 게임 개발자들에게 있어 그들 배치에서 더 좋은 컴파일러가 있어야하는 고통의 원인이 아닌, 멀티쓰레드 게임 개발과 일반용도의 셀의 최적화처럼 더 큰 도전이 될 것이다.


얼마나 많은 쓰레드인가?

일찍 우리는 빠른 변화의 시작을 보았었고, 데스크탑에서 싱글 코어 마이크로프로세서는 멀티코어디자인보다 느리게 되었다. 큰 변화에서 또 다른 2년간 특별히 완성된 건 없었지만 데스크탑 PC 면에선 이미 시작되었고 콘솔의 다음 세대에서 적용, 시작되었다.

콘솔은 5년 주기를 갖는다는 것을 기억해볼 때, 멀티 쓰레드로의 변화는 2년 동안 게임에서 아직 시작되지 않았더라도 그 생태계에서 그들 콘솔이 멀티 코어 프로세서를 지원하도록 만들어질 필요성이 있었다.

오늘 날 문제점은 모든 게임이 싱글 쓰레드라는 것, Xbox360의 사례만 보더라도 현 세대 게임 엔진들을 실행하면 오직 3 코어 중 하나만 써먹었다. 플레이스테이션3도 그리 다를 바 없이, Cell CPU는 일반 실행 코어를 사용하는 Xbox360 코어 하나와 매우 비슷하다. 그 이유는 이 문제가 Xbox360의 제논 CPU 혹은 Cell 안의 싱글 PPE가 그 보편적 코어로 만들어졌기 때문인데 이것은 매우 약한 코어로서, 클럭이 더 낮은 팬티엄4나 애슬론64보다도 느리다.

Xbox360과 플레이스테이션 3를 볼 때, 우리는 게임 개발자들이 콘솔에서의 멀티 쓰레드 엔진으로 변화를 시작한 것과 드디어 그들의 PC와 연결했다는 사실에 놀라울 따름이다. 대다수의 PC는 오늘날 싱글 코어 프로세서를 기반으로 설치되어있는데 Xbox360과 PS3 기반은 둘 다 멀티 코어를 약속한다. 그래서 플래폼의 멀티 쓰레드를 소개한 시점에서 당신의 모든 유저들이 멀티쓰레딩의 이점을 느낄 수 있게 해주는 보증을 받을 수 있다는 점이다.

반면에, 우리는 Xbox360 과 PS3게임에서 나온 모든 데모들을 볼 수 있는데 싱글이 아니기 때문에 오늘 날 PC에서 가장 좋은 싱글 쓰레드 게임보다 더 좋은 물리가속과 AI를 체험할 수 있다. 가장 인상적이던 건 하프라이프2와 유사한 ragdoll 피직스를 예시로 들 수 있긴 하지만 이것이 김작살 수준이란 건 아니다. 분명 멀티코어 프로세서의 힘을 잘 분배해서 써먹는 모습은 한계가 있다.

사실, 모든 데모에서 우리는 마지막 세대의 GPU로 해낸 것 그 이상 그 이하도 아니다. 멀티코어 CPU 성능이 아니란 것이다. 그래서 우리는 마이크로소프트에게 ‘모든 개발자들이 제논의 6 하드웨어 쓰레드를 활용하는 사례는 무엇인가’ 에 대한 질문을 보냈지만 현실적이고 분명한 대답대신 애매한 답신을 받았다.

대다수 개발자들은 그들이 가진 PC로 하는 것과 그리 다르지 않다고 생각한다. 싱글 쓰레드는 모든 게임코드에서 사용되는데, 물리가속과 AI와 몇 가지 사례 등, 개발자들은 분리 쓰레드(separate) 안에서 물리가속을 분할할 것이지만 모든 부분에서 싱글 쓰레드 게임을 기반으로 하는 모든 첫 번째 세대와 몇 두 번째 세대 타이틀에서 조차 첫 무대를 기대할 수 있다. 두 하드웨어가 실행할 쓰레드를 옮긴다는 것은 성능을 오늘 날 미드레인지와 하이엔드 PC와 동등할 정도로 끌어올릴 시도라는 것이며, 제논에서 싱글 쓰레드를 실행 할 때는 성능 변화는 매우 비효율적이며, 특히 코드 실행은 특히 OoO 데스크탑 프로세서가 월등하다.

마이크로소프트 그들이 게임 코드를 목적으로 하는 실행을 하나나 두 개의 쓰레드로 돌리는 것보다 기대할 수 없다고 말하는 것은 Xbox360이 존재하고 1~2년동안 제논의 두 코어가 아직 남은 상태로 사용되지 않는 것인가? 남은 코어가 게임 성능을 가속하는데 직결되진 않으며, Xbox360의 헬퍼 쓰레드를 들어가 보면 그들은 여력이 남아있지 않다는 것이다.

첫 번째로 우리가 했던 헬퍼 쓰레드에 대한 대화는 추가 쓰레드, 런타임에서 산출을 참조하자면 내보낸 아이들 실행 자원과 CPU에서 언젠가 필요한 프리패치 데이터(prefetch data)를 사용하는 것이다.

Xbox360은 조금 다른 타입의 헬퍼 쓰레드를 사용하는데 CPU의 성능을 최대한 활용하게끔 할 뿐만 아니라 전체적인 플래폼의 균형을 돕는다. Xbox360에서 잊지말아야할 것은, 마이크로소프트는 게임을 담을 미디어 사이즈를 늘리지 않았다. 듀얼레이어 DVD-9의 스펙 영향 때문인데, 게임 개발자들은 2006년 게임 타이틀을 선적할 때 현재의 Xbox 타이틀이 보통 4.5GB정도를 사용하고 있는 것처럼 2001년 이후로 여전히 같은 공간만을 사용한다. 이는 그렇게 큰일이 아니지만 2010년 9GB의 용량은 매우 빠듯할 것이다.

 제논3코어의 유휴 수행 능력 덕에 개발자들은 리얼타임 공간 감압의 최대화를 목적으로 게임 데이터의 실시간 압축(decompression)을 할 수 있다. 디스크 공간에서 가장 크게 차지하는 것은 오디오와 비디오인데 두 데이터 타입 또한 공간을 최대 9GB로 활용할 수 있도록 정교한 압축 알고리즘을 사용할 수 있다. 혹 공간이 더 이상 관여하지 않게 된다면, 개발자들은 즉시 더욱 정교한 인코딩 알고리즘으로 아카이브는 더욱 높은 퀄리티의 오디오와 비디오를 얻기 위해 가능한 용량에 맞추어 오디오/비디오를 인코딩할 것이다. 마이크로소프트는 이미 게임 비디오가 WMV HD 코덱을 필수요소로 정하였다. 오디오/비디오의 실시간 감압은 시스템의 남은 성능을 이용하여 써먹을 수 있을 것이다.

또 하나의 흥미롭게 사용하는 것은 디지털 오디오 인코딩인데 오리지널 Xbox에서도 마이크로소프트는 엔포스 사우스브릿지가 실시간 돌비 디지털 인코딩을 수행할 수 있는 비교적 값비싼 DSP 기능으로 사용했었다. 이 기능은 마이크로소프트가 Xbox의 HD AV 팩에서 싱글 옵티컬 아웃을 제공하도록 하였는데 분명 케이블 잡음(cable clutter) 감소와 게임 콘솔의 5.1채널 서라운드 사운드를 가져왔다. 현재 들어와서 DD 인코딩은 제논 CPU에서 실시간으로 쓰레드를 분리할 수 있다. 이것은 마이크로소프트의 다른 회사로부터 특별한 DSP의 구매 필요성을 줄였고 Xbox360의 사우스브릿지를 매우 간소화하였다.

그러나 대부분의 사람들은 Xbox360 게임이 우리가 가진 싱글 쓰레드 PC 게임과 차이가 없다면 기대 따위 하지 않을 것이다. 사실 콘솔이 가진 가장 큰 흡수력은 첫 번째로 게임을 실행하는 능력에서 모든 게임 콘솔은 내부적으로 1280x720로 렌더링 한다는 것이다. 다시 말하자면, 차세대 게임 콘솔의 첫 번째 라운드는 바로 GPU 배틀이다.

중요한 점은 마이크로소프트가 이야기하길 일반용 Xbox360의 성능은 PS3의 Cell 프로세서의 3배라는 점이다. 오직 1~2쓰레드로 전용 게임 코드를 실행한다는 것은, 콘솔 배틀의 시작에서 이점을 크게 잃어버리는 것이다.

소니는 마이크로소프트와는 다르게 이런 식으로 그것은 게임 컨텐트의 리얼 타임 감압을 수행하는 필요성을 잃게 되버린다. PS3가 블루레이 드라이브를 얹었다는 것을 잊지 말아야하는데, 소니는 디스크의 최소 스펙을 싱글 레이어 Blu-ray 23.3GB로 잡았다. PS3는 또한 모든 비디오 컨텐트에서 H.264 인코딩을 사용할 수 있고, 디코딩 역시 Cell의 SPEs가 완벽하게 지원한다. 오디오 인코딩역시 SPEs에서 할당하며 다시 한 번 그것은 작은 여분의 하드웨어로 작업을 실행하는데 있어 SPEs를 활용할 수 있다.


Xbox360의 GPU ATI의 Xenos

ATI의 Xbox360 GPU인 제노스는 순수한 하드웨어 레벨에서 매우 흥미롭다. 이 부분에서 두 개의 물리적으로 별개의 실리콘 집접회로(IC)로 만들어졌다. 한쪽 IC는 GPU 그 자체, 모든 쉐이더 하드웨어로 이루어졌고 처리능력의 대부분이라 할 수 있다. 두 번째 IC -ATI는 이를 “딸 다이(daughter die ; 원본 이름이 원래 이래요)”라 부르고 있다- 는 10MB 임베디드 DRAM(eDRAM) 블록을 필수 불가결한 z 와 스텐실 운용, 컬러, 알파 프로세싱, 안티 얼리어싱과 결합시켰다. 이 딸 다이(...)는 GPU 고유의 경로로 32GB/sec 상호연결 되어있다. 데이터는 이 버스를 넘어 압축되며, 32GB/sec 보다 더 빠른 대역폭을 갖게 된다. 좀 더 세밀하게 들어가자면, 프로세싱 하드웨어와 eDRAM 그 둘 사이에, 256GB/sec의 대역폭이 존재한다는 것이다.

지금, 그래픽 하드웨어에서 발생시킨 커다란 대역폭은 컬러와 z데이터를 프레임버퍼로 이동하길 요청한다. ATI는 이 프로세싱과 백 프레임버퍼가 메인 메모리 버스로 떠나게되어 이동할 때 생기는 병목을 없애고 싶어 한다. 이 버스는 메인메모리인 128bit 700MHz DDR3 512MB(결과적으로 22GB 대역폭을 넘어버리지만)연결이며 이는 현재 데스크탑 그래픽 카드에서 써먹는 대역폭보다 적지만 오프로딩 작업으로부터 그리고 딸 다이의 컬러와 z의 대역폭으로부터, ATI는 그들의 좋은 대역폭 처리를 지킬 수 있다. 22GB/sec는 텍스처와 남은 시스템을 향해 떠난다(Xbox는 통합 메모리의 싱글 풀single pool에 권한을 주었다).

GPU는 본질적으로 시스템을 위해 노스브릿지에서 움직이고 모든 것의 중간에 위치한다. 그래픽 하드웨어로부터 위아래로 10.8GB/sec의 대역폭을 CPU 자체에 보낸다. 나머지 시스템은 위 아래로 500MB/sec 대역폭을 건지게 된다. 높은 대역폭의 CPU는 GPU가 L2캐시로부터 곧바로 읽을 수 있게 된다면 매우 유용해진다. 콘솔에서 CPU와 GPU간 연관성은 매우 중요하며 Xbox360은 그 관습을 다시 한 번 세워주고 있다.

3억3천2백만 트랜지스터를 담은 Xbox360 GPU는 매우 강력한 부분인데 이 아키텍처가 현재 데스크톱 그래픽 하드웨어와는 다르다. 이전에, 버텍스와 픽셀 쉐이더 하드웨어는 분리되어 있었지만 ATI는 통합 쉐이더 아키텍처 안에 그 기능들을 모두 합쳤다.


통합 쉐이더 아키텍처란 무엇인가?

Xbox360의 GPU는 기존과는 조금 다른 아키텍처를 사용한다. 물론 버텍스와 픽셀 쉐이더 프로그램은 이 부분에서 동작하지만 하드웨어 부분으로 갈라놓지는 않는다. 버텍스와 픽셀 프로세싱은 목적이 다르지만 이것을 하드웨어 틀에서 매우 크게 보자면 둘다 반드시 필요한 부분이다. Xbox360 GPU는 ATI가 선택한 통합 쉐이더 아키텍처로서 적어진 하드웨어 쓰임새 다른 칩 부분에서 하드웨어 중복사용의 필요성이 줄어들어 더 적어진 트랜지스터에 더 많은 기능을 집어넣었고 같은 하드웨어에서 버텍스와 쉐이더 프로그램 둘다 실행할 수 있다.

그것은 16 쉐이더 유닛을 3개의 병렬 그룹으로 묶었다. 3 그룹은 각각 버텍스나 픽셀 데이터를 움직일 있다. 각각의 쉐이더 유닛은 하나의 4 와이드 벡터 오퍼레이션과 클럭 사이클 당 1 스칼라 오퍼레이션을 실행할 수 있다. 현재 ATI 하드웨어는 2개의 3 와이드 벡터와 픽셀 파이프 혼자 클럭 당 2개의 스칼라 오퍼레이션을 실행한다. R420의 버텍스 파이프라인은 6와이드와 한 개 벡터4를 할 수 있고 사이클 당 1 스칼라를 운용할 수 있다. 정직한 처리 성능을 보자면, R420이 주는 능력은 158 점이다(이 점수의 30점은 32bit이고 128점은 24bit 정밀도에 제한받는다) Xbox360 GPU는 클럭 사이클당 쉐이더 유닛에서 32bit 구성으로 240점을 기록한다. 이는 오퍼레이션 수에서 사이클 당 50% 이상 증가한 수치이다(정밀도에서 전반적인 상승을 보였다). 우리는 R420 파이프라인 3배와 같은 48 파이프라인을 기대할 수 없다. 이 증가(물론 어디까지나 ops/cycle)는 단지 24파이프의 R420 성능과 동일하다.

24 파이프의 R420과 Xbox GPU의 통합 쉐이더 사이의 운명을 좌지우지 하는 것은 어플리케이션이 고유 하드웨어에 얼마나 적합한 어플리케이션을 그들에게 제공하가이다. 현재 구조는 버텍스 프로세싱 성능과 픽셀 프로세싱 성능이 같지 않다. 이것은 게임이 버텍스보다 픽셀을 더 많이 표시해야하는 사실을 고려하면 매우 논리적이다. 지오메트리는 원래, 매우 많은 픽셀을 포함하고 있다. 물론, 모든 타이틀이 지오메트리 픽셀 성능 비율이 같다고 할 수는 없다. 이것이 의미하는 것은 모든 클럭 당 ops가 정말로 폴리곤이 극적인 장면 안에서 지오메트리 프로세싱 전용으로 써먹는다. 반대로(그리고 더 있을법한), 클럭 사이클이 보여주는 240ops는 픽셀 프로세싱을 사용한 것이다. 게임 디자이너가 앞서 말한 것과 그들 쉐이더 코드를 적용하므로, 우리는 현재 하드웨어 보다 문제의 단 하나 유형에 전념한 집중된 처리 능력을 볼 수 있었다.

ATI는 개발자들이 Xbox360 게임 내에서 매우 작은 트라이앵글을 많이 사용할 것이라 예고했다. Epic의 언리얼 엔진3 같은 것에서 픽셀 쉐이더와 낮은 기하학 표현(Low geometric detail)을 증가시키는 노멀 맵 사용 결과에서 믿을 수 없는 장면을 봤다. 우리는 ATI가 계란이 먼저냐 달걀이 먼저냐 라는 노력에 답해줄 수 없다. 다르게 말하자면, Xbox360에서 매우 작은 트라이앵글을 보게 되는 것이 콘솔 개발자가 ATI의 하드웨어에서 더 좋은 실행을 위한 무언가 때문에 방침이나 판단을 옮기게 하는 이유라는 것일까?

이 길을 이끄는 지름길이라는 의미, 이는 Xbox360이 지오메트리 성능의 집합체라는 것이다. 모든 16 쉐이더의 3 블록은 버텍스 쉐이더에 어울릴 뿐만 아니라 ATI의 GPU가 z를 패스만으로 실행했다면 2배 더 많은 z 오퍼레이션을 다룰 수 있다. 이 공통점은 현재 ATI와 엔비디아 하드웨어의 진실이지만, 지오메트리가 패스만으로 z 오퍼레이션이 두 번 실행하는 동안 어느 클럭 사이클에서 48 벡터와 48 스칼라 오퍼레이션을 실행하는 쉐이더 하드웨어 용도로 만들었단 사실은 매우 흥미롭다. 이것은 매우 기하학적으로 까다로운 장면을 위해 쓸 수 있다. 


Xenos GPU에 대해서

앞서 말했던 48 쉐이더는 여타 클럭 사이클이 주는 버텍스나 픽셀 쉐이더 프로그램으로 실행이 가능하다. 확실히 16 쉐이더 유닛의 각각 블록은 쉐이더 프로그램 쓰레드로 실행할 수 있다. 그 쉐이더 유닛들은 DX9.0C를 살짝 뛰어넘는 기능을 가지고 있지만 이 기술이 갖는 장점은 ATI와 마이크로소프트의 개별 개량 API이다.

텍스처는 메인 메모리로부터 읽어드려와 쉐이더 유닛 내에서 데이터를 얻는 목적이다. 시스템의 eDRAM은 텍스처링을 도울 수 없다. 그것은 16 바이리니어로 텍스처 샘플러이다. 그 유닛들은 클럭 사이클 당 16 텍스처 까지 읽을 수 있다. 스케쥴러는 텍스쳐 유닛의 최적화된 사용을 위해 쓰레드를 잘 조직하도록 만들어졌다. 또 다른 점으로 이방성 필터링을 들 수 있다. 바이리니어 레벨을 뛰어넘기 위한 필터링 실행을 목적으로서, 계속 적으로 실행하기 위해 텍스처가 텍스처 유닛을 통해 실행하는데 필요할 것이다(필터링이 끝날 때 까지). 필터링이 없다면(쉐이더 프로그램이 저장된 데이터를 단순하게 읽어버린다면), 버텍스가 가져온 유닛을 사용하게 될 것이다(버텍스도 픽셀 쉐이더 프로그램더 아니다).

 PC 영역에서, 우리는 더 복잡해진 픽셀 쉐이더를 볼 수 있다. 커지고 커진 텍스처는 데이터를 공급하거나 텍스처 과정에서 그리 멀지 않은 시간(미래)에 실추된 컬러와 z 대역폭 등 몇 가지 예측을 할 수 있다. 콘솔과 데스크탑 영역이 다시 한 번 이 영역에서 갈리게 되는 모습을 볼 수 있을 것이다.

Xbox350 성능의 주요 요점 중 하나는 ATI가 그들 GPU가 쓰레드를 얼마나 잘 활용하느냐이다. 통합 쉐이더 아키텍처로 이동했다는 것은 어떤 것이든 최대 효율로 실행한다는 것이 강점이다. 우리는 하드웨어 상의 버텍스와 픽셀 쉐이더 프로그램 간 전환에서 ATI가 가진 능력을 많이 알지 못한다. 그러나 ATI는 어떤 수준에서 쓰레드 관리에서 겪는 어려움에 여유롭지 못하다는 말만으로 충분하다. 현재 픽셀 쉐이더 기술을 가장 유용하게 만드는 것은 쉐이더에서 쓰레드를 스와핑 아웃 하길 요구하는데, 우리는 이것이 부분별로 공평하게 잘 작동하길 기대할 수 있다. 쓰레드 관리는 가장 어려운 작업 중 하나지만 ATI는 이 하드웨어에게 가능하도록 만들었다.

 eDRAM(10MB) 용량에 집중해보자면 이것이 일반 TV보다 큰 디스플레이에서 4xAA를 설정하고 완전한 프레임버퍼를 수용하기엔 메모리가 충분하지 않다. 분명히 ATI는 eDRAM에 백 버퍼가 존재하는 동안 UMA영역에 프론트 버퍼를 저장한다. 큰 디스플레이에서 작동하는 것을 목적으로 하드웨어는 일부분에서 백 버퍼 렌더를 필요로 한다. 이는 그들이 몇 몇 매우 큰 타일링(tiling) 시스템(2~4타일) 종류를 수단으로 써먹고 있다는 것을 암시한다. 렌더에 기반을 둔 보통 타일은 이것보다 더 많은 타일을 기반으로 하지만, 이는 특별한 케이스다.

이 하드웨어의 성능은 시스템 테스트 없이 외형으로 판단하기엔 문제가 있다. 현재 데스크탑 부문을 넘어 더 좋은 것을 얻을 수 있다는 잠재력을 가지고 있지만, 그들이 최대한 이것을 이해하고 기간 내 프로그램화 시키기 전에 소프트웨어 엔지니어가 얼마나 쉽게 하드웨어를 기능적으로 활용하는지 알기 어려울 것이다. 확실히, 플레이스테이션2 때처럼 학습에 장애가 있는 수준은 아니지만(다이렉트X는 아직도 API다), 배우는데 무엇을 해야 할지 무엇을 하지 말아야할지 꽤 시간이 걸릴 것이다.


ATI의 Modeling Engine

그들 하드웨어의 적응력은 어느 정도 ATI가 잘 팔 수 있도록 할 것이다. 그들 모델링 엔진은 정말이지 모델 사용법을 위한 이름처럼 ATI는 그들의 통합 쉐이더를 사용하도록 해주었다. 각각의 쉐이더 유닛은 현재 버텍스와 픽셀 쉐이더보다 일반 용도에 초점을 맞췄는데, ATI는 보편적인 부동 소수 계산 실행을 보다 용이하도록 만들었다.

ATI의 모델링 엔진의 컨셉은 실제적으로 그들의 버텍스 캐시의 언어 최적화(implementation)을 통해 실용적으로 만들었다. 많은 양의 처리과정에서 보편적인 부동 소수 연산을 위한 데이터가 버텍스 캐시 안으로 이동한다. 이게 내포한 것은 버텍스 캐시가 충분한 저장 공간과 모든 48 쉐이더 유닛이 최대 사용할 때 부족함 없이 활용할 수 있는 대역폭을 제공한다. 버텍스 캐시가 버텍스 데이터 단독으로 사용한다면, 이는 수용할 만한 수준이고 여전히 같은 성능을 제공할 것이다(현재 일반 버텍스 프로세싱을 로드하는 것과 가까운 시일 내의 게임을 고려하면). 우리가 예전에 규정했을 땐, 픽셀 프로세싱(지금)은 버텍스 프로세싱보다 더 많은 자원을 요구했다. 버텍스 캐시로부터 온 데이터로 쉐이더 유닛을 메울 수 있게 만들었고(버텍스 쉐이더 출력에 대립하여) 메인 메모리에 쉐이더 산출을 덤프하는 하드웨어의 기능은 ATI의 모델링 엔진이 가능하게 한 것이다.

그러나 단순히 일반용도의 부동 소수 연산 실행에 이름을 붙이는 것은 유익한 것이 아니다. 프로그래머는 이것의 장점을 이용해야하고 ATI는 모델링 엔진을 입히기 위해 다른 어플리이션 상에서 다소 아이디어를 제공해야한다. 글로벌 일루미네이션은 톤 맵핑을 할 때 꽤 재밌는 것을 알려준다. ATI는 또한 더 높은 순차 명령은 테셀레이션 이전에 운용되는데, 프로그래머에게 복잡한 오브젝트를 보다 능숙하게 다루는 능력을 준다. 이는 피직스 처리를 이 부분에서 실행할 수 있게 해준다는 것을 암시한다. 물론, 우리는 Xbox360 프로그래머들이 모델링 엔진으로 피직스 엔진을 실현시킬 수 없을 것이라 예상할 수 있는데 그러나 이는 미래의 ATI의 한 부분임에 흥미롭다.


PlayStation 3의 GPU: NVIDIA RSX

플레이스테이션3의 RSX GPU는 G70(지포스7800GTX)를 기반으로 하는 아키텍쳐인데, 비슷한 사례로 지포스6600GT의 기반인 지포스6800ULTRA 관계와 유사하다. 소니는 RSX와 G70의 차이를 명확하게 설명하지 않았지만, 이전에 어느 정도 엔비디아와 이야기했던 것을 들어 몇 가지 정보를 소개하겠다.

RSX가 G70과 같은 세대임에도 불구하고, 코어 수를 변경하게 되었다. 가장 큰 변화는 RSX가 로컬과 시스템 메모리 렌더링을 지원한다는 것과 엔비디아의 터보캐시와 유사한 기능을 가지고 있다는 것이다. 분명 to/from 로컬 메모리를 렌더링 하는 것은 셀의 메모리 컨트롤러에게 요청하여 보낸 값 보다 더 낮은 레이턴시를 얻게 되지만, GPU의 아키텍처에서 메모리에 근접함에 있어 더 높아져버린 레이턴시를 수용하기 위해 바뀐 것이다. 버퍼와 캐시는 메모리에 접근할 레이턴시가 높아졌음에도 렌더링 파이프라인을 더 크게 만들었다. 칩이 딱 알맞게 레이턴시를 없앨 수 있게 디자인할 수 있다면, 그 때는 일반적으로 성능을 희생 시킨게 아닌 칩 사이즈만 증가했을 뿐, 버퍼와 캐시가 커지는데 감사해야 할 것이다.

2.jpg

RSX는 단지 G70 로컬 메모리 대역폭의 60% 수준 밖에 안 되는데, 그 때문에 많은 경우에 있어 성능 향상을 위해 분명히 CPU의 메모리 버스 대역폭을 공유하고 있을 것이다.

한 가지 이상한 점이 해결되지 않았는데 그것은 바로 트랜지스터의 숫자다. G70과 RSX는 대강 같은 수의 트랜지스터를 가지고 있을 터인데, 이는 대략 30억 4천 트랜지스터이다. RSX는 90nm 프로세서로 제작되었으며 엔비디아의 이론 상 칩 사이즈의 확대 없이도 가능했었을 것이다 ㅡ 트랜지스터 수가 같다는 것에 대해 엔비디아가 주는 믿음 보다도 두 코어가 매우 유사하다 것이 요점이다 ㅡ 어쨌든 RSX는 G70 은 아니라는 것인가? 두 GPU가 같다는 가능성은 매우 낮은데, 특히 완전한 터보 캐시를 탑재하는데 있어 트랜지스터 숫자가 매우 늘어나게 된다는 것을 생각해야 한다. 트랜지스터 숫자가 같은지에 대해 어떻게 설명할 수 있는가와 둘 중에 어느 것이 더 좋은가? 몇 가지 가능한 실험을 해보자.

맨 먼저, 당신은 트랜지스터 숫자가 같지 않다는 것을 명심 해야 한다 ㅡ 물론 추정이다 ㅡ 트랜지스터 숫자는 디자인 속 게이트 숫자와 평균 트랜지스터의 게이트 당 사용량을 곱하는 것으로 결정된다. 결론적으로 트랜지스터 수는 같지 않지만, 현실적으로 가까울 수 있다. 이 칩은 컴퓨터로 디자인되었고 제작되었다는 걸 기억해야 하는데, 누구도 좋아하지 않는 각계 계산이란 것과 모든 트랜지스터는 직접 칩 안에서 활동한다는 것이다(every transistor by hand as they go into the chip).

엔비디아의 가정은 두 GPU에서 차이가 있을 수 있다 했는데, 대략 천만 트랜지스터 per 픽셀 파이프, 이는 RSX의 보다 많은 7800GTX의 24픽셀 렌더링 파이프라인과 꽤 달라보인다. 엔비디아의 주장은 지포스7800GTX 보다 뛰어나다고 하지만, 이게 가능한 말인가? 같은 옵션이 주어진다면 :

가장 근접한 예시는 클럭 스피드가 다르다는 것이다. RSX를 떠올려보자. 90nm프로세서로서 550MHz로 작동하는데 이는 28% 110nm의 지포스7800GTX보다 코어 클럭 스피드가 28% 증가했다. 클럭 스피드의 증가로서 GPU 퍼포먼스는 수치상 좋은 가속력이 되었으며 결국 RSX는 G70보다 '더 강력하다.' 라고 할 수 있다.

다른 하나의 가능성, 이건 좀 억측일 수도 있지만 그래도 한 번 말해보자. 엔비디아는 칩을 제공하는데 있어 데스크탑 G70과 같은 수의 트랜지스터라고 하지만 두드러지게 더 강력하다는건 RSX가 버텍스 쉐이더 파이프나 그 유사한 것 조차 사용하지 않고 남는 다이 공간에 부가적으로 픽셀 쉐이딩 하드웨어를 추가했을 수 있다는 것이다.

지오메트리 프로세싱을 포함하면 셀의 주 프로세서를 기본으로 7개의 SPE가 병렬구성 되었다는 것은 비분기 작업 수에서 매우 수월할 수 있다는 것을 생각해야한다. 또한 현재 게임이 현실성을 타겟으로 한다는건 더 픽셀 작업을 통해 더 많은 지오메트리를 필요로 한다는 것이다. 요즘 GPU에 버텍스 쉐이더가 필수는 아니다. 그래서 RSX는 셀 프로세서와 GPU간 매우 높은 35GB/s의 대역폭을 가지고있다 ㅡ 모든 버텍스 프로세싱은 셀 프로세서가 담당한다는 것을 통해 알 수 있다 ㅡ RSX는 픽셀 쉐이더와 ROP 작업을 배터적으로 다루는 것을 해결해준다. 이것이 사실이라면, RSX는 24파이프라인 보다 더 좋을 것이고 여전히 G70과 트랜지스터 수는 비슷할 것이라지만ㅡ 뭐, 이를 정리하자면 현실적으로 이것은 우리가 알고있는 G70과는 매우 다르다.

RSX의 약점은 셀 프로세서가 모든 버텍스 프로세싱을 한다는 것이 매우 중요하다. RSX가 로컬 메모리와 22.4GB/s 대역폭으로만 연결된다는 점을 생각해보자. 7800GTX의 메모리 대역폭 대비 60% 수준밖에 안된다. 다시 말하자면, 텍스쳐를 사용하는 게임을 다루려면 셀의 메모리 컨트롤러로부터 메모리 대역폭의 추가해주는 것이 필요하다. 15GB/s의 셀 프로세서가 SPE와 RSX간 사용하는 대역폭으로부터 오는 다운스트림 링크의 주요 부분을 보면, 특히 1080p 해상도 상황에서 GPU가 텍스쳐 대역폭 제한이 생긴다.

 이 설정은 억측된 설명이긴 했지만, 꽤 가능성 있다고 보며, 단 한 번 시장에 나온(최초버전 PS3) RSX의 구성을 가지고 이야기 하였다.


[추가- 간략한 버텍스와 픽셀 쉐이더 특성]

05년 지포스 6시리즈 당시의 픽셀, 버텍스 쉐이더에 대한 특성을 간단하게 이야기 하고있습니다. 본 프레젠테이션 내용은 GPGPU에 대한 쉐이더 적합성 이야기인데 ewhunt님께서 참조문헌으로 달아주셔서 이렇게 같이 올립니다. 그리 어렵지 않은 영어이니 따로 번역하지 않고 그대로 올렸습니다.

모든 프레젠테이션을 보고싶으신 분은 http://download.nvidia.com/developer/presentations/2005/I3D/I3D_05_GPGPU.pdf 이 링크로 다운로드 하시면 됩니다.

3.JPG


4.JPG


5.JPG


소니는 1080p를 인도할 수 있는가?

소니는 무엇보다도 먼저 플레이스테이션3의 두 개 HDMI 비디오 아웃풋 기능을 가진 세트를 보여주었다. 그것에서 DVI지원은 확실치 않지만 HDMI-DVI 어댑터를 이용하면 딱히 문제될 건 없다(실제로 사용 가능합니다). 마이크로소프트는 불행하게도 HD해상도를 지원하는 컴포넌트나 VGA 아웃풋만을 지원한다.

1080p의 지원은 HDMI이상에서만 지원하는데 이는 장래를 생각한 것이다. 당신이 1080p와 720p의 실제 이미지 차이를 구분할 수 있다면 이 방법은 - 36-60인치 HDTV 로 확장한다면 1280x720 보단 1920x1080 모니터를 더욱 선호하게 될 것이다 - 이는 현저한 차이를 보일 것이다(추 후 Xbox360은 HDMI를 지원합니다).

720p에서 G70은 모든 게임에서 전적으로 CPU의 범위 안에 있는데, 그래서 RSX는 720p에 4xAA를 적용해도 별 문제는 없을 것이며, 360의 제노스 GPU역시 그렇다. 1080p의 G70은 여전히 많은 상황에서 CPU 제한 범위 안이며 이는 RSX가 실제로 1080p에서 매우 좋은 퀄리티를 제공할 것이란 것이 맞을 것이다.

당신은 한 가지 잊으면 안 될 것이, RSX는 CPU 제한이 있고 텍스쳐 대역폭이 1080p에서 제한받는 단 사실인데, 게임에서는 반드시 픽셀 쉐이더 영역에서 실행한다.

예를들어, 둠3는 2048x1536에서 7800GTX로 대부분 70fps를 뽑는다. 그러나 배틀필드 2에선 50fps 이하이다. 다른 게임에서도 이보다 높을 수도 낮을 수도 있는데 이 문제는 RSX가 모든 게임의 1080p에서 60fps를 보장받을 수 없다는 것이지만 몇 몇 에선 분명 가능하다. 개발자들에게 오는 의문은, 훌륭한 720p로 만들 것인가 혹은 조금 희생해서 1080p를 지원할 것인가 그것이 문제이다.

한가지 이슈는, 두 개의 1080p 아웃풋으로 스패닝 모드(3840 x 1080)를 지원한다는 것은 PS3에서 매우 비현실적이다. 해상도에서, RSX는 프레임 당 4메가픽셀 이상 표현하길 요구하게 되는데 게임에서 실제로는 60fps도 넘볼 수 없을 것이다.

마이크로소프트의 Xbox360의 목표는 꽤 현실적인데 720p와 4x AA를 모든 360타이틀에서 지원하는 것이다. 모든 게임에서 720p를 목표로 한다는 것은 모든 360 타이틀이 1280x720을 표현(업 스케일이 아닌 기본지원)할 수 있다는 사실을 기대할 수 있다. 우리는 이미 360의 GPU 아키텍처가 이 해상도에서 효과적으로 4xAA를 줄 수 있다고 말하였는데, 4xAA를 지원하지 못할 이유가 딱히 없기 때문이다.

대부분의 HDTV는 1080i와 720p를 지원한다. 네이티브 720p 지원은 간단하게 추가적인 시그널 프로세싱 없이 360으로부터 720p 아웃풋만 연결하면 된다. 자발적으로 게임에서 기본적으로 720p를 지원하게 될 것이고 Xbox360의 TV 엔코더의 1080i 아웃풋 스케일에 의지하거나 당신이 TV로 스케일을 직접 조정하게 될 것이다. 어쨌든 중요한 점은 Xbox360의 GPU가 1280x720 4xAA를 분명히 지원할 것이다.

4xAA 지원은 큰 TV에서 무엇보다도 중요한 문제인데, 720p는 얼라이어싱이 매우 심하다. 그러나 1080p 지원은 분명치가 않은데, 특히 소니는 1080p를 가진 것으로 손님을 끌 것이 분명하다는 걸 생각해야 한다. 첫 번째로 1080p 디스플레이는 이번 해에 매우 잘 팔렸고(05년) 주로 HDTV를 설치했었던 사용자들은 720p 나 1080i를 지원할 뿐 1080p를 사용할 수 없다. Xbox360과 PS3의 라이프 사이클에서 반을 넘어가게 된다면 1080p 디스플레이는 매우 일반화되어 있겠지만 모든 게임에서 1080p에 60fps이상 계속 뽑아주는 하드웨어를 얻기 이전에 이것은 한 세대 이상이 지난 후에야 가능할지도 모른다. 

 결국, 소니는 1080p 지원은 현실적이지만, 모든 게임은 아니다. 첫 번째로 콘솔 주기의 전반기에는 개발자들이 AA를 1080p 지원과 함께 활성화 할 수 있을지가 문제이다. 후반기에는 이것을 가능하게끔 할 것이다.

마이크로소프트의 free 4xAA는 큰 TV에서 훌륭하고 반드시 필요하지만 1080p 일부 제한은 조금 실망스럽다. 물론 1080p 이점을 담은 게임이 한 움큼 있다면 매우 좋은 기능이 될 것인데, 이는 간단하게 말하자면 1080p HDTV 소유자들은 그들의 디스플레이를 최대로 활용할 수 있도록 항상 체크할 것이기 때문이다. 뭐 그렇다고 이게 승패를 좌우하는 이슈는 아닌데 단순하게 주요 게임들은 여전히 720p만으로 만들기 때문이다.



출저 : http://www.anandtech.com/video/showdoc.aspx?i=2453




이 다음에 해볼게 "The RV770 Story : Documenting ATI's Road to Success" 인데 다음 주가 시험인지라 4월 말은 되서야 시작하겠네요.
역시나 한~참 걸릴 듯 합니다.


정보게시판 성격이 맞을진 모르지만 꽤 장문이라 이쪽으로 올려봅니당-_-//

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