결국 야루고 시루던 PS3가 시장에 풀리기 시작하면서 게임을 즐기는 호사가는 물론이고 개발자들 사이에서도 양쪽 플랫폼에 대해 관심이 높아지고 있다. 하지만 여전히 게임기나 엔터테인먼트 측면에서 양쪽을 비교하는 경우가 대부분이므로, 오늘은 개발자 관점에서 양쪽을 비교해보기로 하자.
먼저 CPU 아키텍처를 볼까?
- XBox 360: CPU 안에 PowerPC를 기반으로 만든 코어를 3개 담고 있다. 요즘 듀얼 코어가 인기인데, 트리플 코어의 원조라고 생각하면 되겠다.
- PS3: CPU 안에 PowerPC를 기반으로 만든 코어 1개와 벡터 처리를 맡은 코어 8개가 들어있다. 프로그래머 입장에서 보면 실제로는 벡터 처리를 맡은 코어는 6개만 사용할 수 있다.
여러분의 예측을 비웃기라도 하는 듯이 CPU 아키텍처는 XBox360쪽의 손을 들어주고 싶다. PS3가 부동 소수점 연산에서 월등히 뛰어난 점을 제외하고는 다른 부문에서는 XBox360에 확실히 밀린다. 특히 메모리 대역폭이 XBox360이 PS3의 세 배에 이르기 때문에 개발자 입장에서 두고두고 가슴 아픈 일(?)이 많이 생길 듯이 보인다.
자 그렇다면 PS3에 벡터 프로세스 유닛이 8개나 장착되었는데 이런 결정이 개발자에게는 어떤 영향을 줄까? 유감스럽지만 과거와는 달리 요즘은 부동소수점 연산을 대부분 그래픽 프로세서(GPU)에서 수행한다. 따라서 점점 프로그래머가 벡터 프로세스 유닛을 다룰 일이 줄어드는 상황에서 어떻게 보면 PS3는 과거로 회귀했다고 생각해볼 수도 있다. 물론 멀티미디어 코덱을 푸는 경우에는 벡터 프로세스가 달려있으면 월등히 유리하겠지만, 요즘 범용 프로세스 속력도 워낙 올라가서 3코어 정도면 Full HD H.264를 실시간으로 풀어내는 과정에서 특별한 문제가 없으리라는 예측을 해본다. PS3 CPU에 장착된 벡터 프로세스 유닛에는 캐시도 없고 메모리 접근도 안되며 분기 예측도 불가능하며 어셈블리 명령어도 완전히 다르므로 계산을 제외한 나머지 부문에서 성능을 이끌어내기란 무척 어렵다는 사실을 알고 있어야 한다. 결국 병렬 개념을 이해한 프로그래머만이 PS3에서 제대로 동작하는 소프트웨어를 제작할 수 있다는 말인데... 이런 사람 구하기는 결코 쉬워보이지 않는다.
자, 그러면 이번에는 GPU이다.
- XBox360: ATI를 등에 업고 만든 전용 GPU를 사용한다.
- PS3: nVidia를 등에 업고 만든 전용 GPU를 사용한다.
누가누가 잘할까? 벤치마크 결과에 따르면 근소한 차이로 XBox360의 shader 연산이 PS3를 앞선다고 한다. 기술적으로 보면 XBox360에 탑재된 GPU 트랜지스터 개수가 앞서며, XBox360에 탑재된 CPU에 내장된 그래픽 관련 명령이 PS3보다 앞서기 때문에 PS3의 벡터 프로세싱 유닛에도 불구하고 이런 상황이 벌어진다. 확실히 PS3는 벡터 프로세싱 유닛의 도움을 받아 그래픽 관련 계산을 많이 할 수 있지만, 문제는 GPU에서 이를 감당하지 못한다는 사실이다.
마지막으로 개발 환경을 살펴볼까?
- XBox360: 윈도우 개발 환경과 유사한 개발 환경 제공
- PS3: GNU 개발 도구
기존 PC에서 게임을 제작하던 개발자가 쉽게 넘어갈 수 있다는 측면에서 XBox360이 월등히 유리하다.
그러면 결론을 정리해보자. 시스템 성능 측면, 그래픽 처리 측면, 프로그램 용이성, 개발 도구 가용성에서 PS3가 XBox360을XBox360이 PS3를 월등히 앞서고 있음을 알 수 있다. PS3가 유일하게 앞서는 부분은 벡터 프로세싱 부문인데, 유감스럽게도 이 기능을 제대로 활용할만한 개발자가 많지 않다는 가슴 아픈 사실이 소니 발목을 잡을 듯이 보인다. 하지만 플랫폼과 개발 환경 좋다고 반드시 재미있는 게임이 나온다는 보장은 없으니... 내년에 PS3가 더 많이 풀리면서 등장하는 게임과 올 연말에 풀렸거나 풀릴 계획으로 있는 XBox360 게임의 진검 승부를 지켜봐야 한다. PS3 하드웨어 스펙에 대해 환상에 젖은 분들은 이 글이 조금 충격적으로 다가왔을지도 모르겠다. 하지만 뭐 어떻게 하겠냐? 벌써부터 마이크로소프트가 3세대 게임기를 만들고 게임 퍼블리셔만 잘 구워 삶으면 소니는 100% 패배하리라는 우려가 들기 시작하니...
참고 자료는 다음과 같다.
- http://xbox360.ign.com/articles/617/617951p1.html
- http://www.hardcoreware.net/reviews/review-348-1.htm
- http://techreport.com/etc/2005q2/xbox360-gpu/index.x?pg=1
EOB
그러면 결론을 정리해보자. 시스템 성능 측면, 그래픽 처리 측면, 프로그램 용이성, 개발 도구 가용성에서 PS3가 XBox360을 월등히 앞서고 있음을 알 수 있다.
답글삭제결론 부분을 반대로 쓰셨네요. 이 덧글은 삭제해 주세요~ ^^;;
예, 바로 수정했습니다. 아침에 졸린 상태에서 정리하다보니... 그만 가장 중요한 결론을 거꾸로(!) 적고 말았습니다. 좋은 피드백 감사드립니다.
답글삭제VPU가 branch prediction과 cache가 없는건 어찌보면 VPU에서 주로 처리되는 데이터인stream data의 특성에 기인하는 것이라, 그다지 단점은 아닙니다. 단지, programmer 구하기 어려울 것이다는 관점이 문제겠지요.
답글삭제하지만, 기본적으로 VPU를 사용하는 processor들이 기본적인 programmer를 위한 API를 제공하므로, PS3의 SDK에서도 기본적인 그래픽 처리와 물리 연산을 위한 API가 제공될 것으로 생각합니다. 이런 경우 programmer가 parallism에 대한 생각이 없어도 큰 문제는 되지 않을 것 같네요.. ^^
PS3의 능력을 끌어낼 수 있는 API의 제공이 빠를것인지, Microsoft의 게임업체 포섭이 빠를지가 관건이겠습니다. ^^;
babyworm님, 정확한 분석이십니다. PS3 SDK에는 기본적으로 벡터 프로세싱 유닛을 사용한 3차원 그래픽 라이브러리와 코덱이 들어있을 겁니다. 하지만 개발자가 소니에서 제공하는 SDK에 들어있는 기본 라이브러리의 위력을 넘어선 무엇을 만들어내려고 할 때 벡터 프로세싱과 병렬 처리 이론에 대한 이해가 필수라는 심각한 걸림돌이 있습니다.
답글삭제병렬 프로그램이 어려운 이유에 대해서는
http://bc.tech.coop/blog/060105.html를 읽어보시면 아주 잘 나옵니다.
평균적인 능력을 소유한 프로그래머가 병렬 프로그램에 손을 댄다면 축구로 비유하자면 자살골을 넣는 행위입니다. 무척 똑똑한 제 친구가 대학원 논문 과제로 병렬 프로그램에 도전했다가 거의 폐인이 될뻔한 아찔한 모습을 옆에서 지켜봐서 잘 압니다.
- jrogue
blogger가 아니면 trackback을 걸수 없네요.^^; 다른 내용을 쓰다가 관련 내용이라 링크를 겁니다. http://babyworm.net/tatter/114
답글삭제백일몽님, 이런 단초를 제공한 원인으로 일본 회사의 폐쇄성을 들고 싶습니다. 최근 일본에서도 오픈 소스 운동이 활발한데, 언젠가는 개선되겠죠.
답글삭제babyworm님, 재미있는 글 잘읽었습니다. ;)
답글삭제실제로 개발하시는 분은 아니신 것 같군요. 틀린 부분이 크게 세 곳 있습니다.
답글삭제1. 360의 대역폭이 PS3의 세 배다 - GPU측 eDRAM은 별도로 봐야 합니다.
2. 360 GPU가 PS3 GPU 보다 셰이더 연산이 속도가 빠르다 - 단순히 셰이더 오퍼레이션 쓰루풋만 보면 PS3 쪽이 빠릅니다. 러프하게 얘기하면 GPU 성능은 별 차이 없으며, 그보다는 백버퍼를 쓰는 방법에 따라서 호불호가 갈린다 하겠습니다. 360에서 PS3로 포팅하는 사람은 PS3의 백버퍼 대역을 욕할 것이고, PS3에서 360으로 포팅하는 사람은 360의 타일링을 욕하겠죠.
3. PS3의 벡터 프로세싱을 활용할 개발자가 많지 않다 - 그래도 PS2의 VU들 보다는 쉽습니다. :)