본문 바로가기

Papyrus/Dizzy Report

불도저는 매력적이다. 그러나..



루머성 정보가 풀리기 시작한 AMD의 불도저(bulldozer)의 실성능은 상당히 긍정적이다. 슈퍼파이(SuperPI) 1M 계산시간이 7.8초라는 것은 예상보다 놀라운 결과지만, 못 믿을 정도는 아니다. AMD는 이번 불도저 아키텍처를 설명하면서 모듈이라는 개념을 선보였는데, 일반적으로 알려진 코어라는 개념과 비교해볼 때 모듈과 코어는 1:1 대응이 되지 않기 때문에 많은 혼란을 가져왔다. 다음 글은 이 부분과 관련된 불도저 아키텍처에 대해서 간략하게 소개하고 있다 : http://celdee.tistory.com/682

간단히 말하자면, 코어는 코어 하나가 완전히 모든 것을 실행 할 수 있다. 그러나, 공유되는 리소스는 극히 적은 편으로 L3 캐시가 고작이다. 하이퍼스레딩은 이 한계를 파악하고 적절한 타협을 한 것으로, 아키텍처 자체를 크게 변경하지 않고도 다이면적 대비 그럭저럭 쓸만한 멀티스레딩 성능을 보여준다. 불도저의 모듈은 이 코어를 좀 더 멀티스레딩에 친화적으로, 원점 수준에서 다시 검토해 본 것이다. 즉, 각 코어가 완전히 독립적으로 실행될 필요는 없으며, 공유할 수 있는 처리 프로세스는 공유하는게 낫다는 것이다. 불도저의 2개의 모듈은 하나의 부동소수점 처리 유닛을 공유하고, 정수 처리 유닛은 각각 독립적으로 실행된다. 부동소수점은 정수형과 달리 CPU 내에서 직접 인코딩될 수 없으며, 페치(fetch) - 디코딩(decoding) 과정을 거쳐야 한다. 따라서, 정수 처리보다 당연히 시간이 더 걸릴 수 밖에 없으며, 페치 과정 때문에 멀티스레딩 환경에서는 메모리 버스에 락을 걸어야 하는 오버헤드가 추가된다. 독립적으로 실행되는 각 코어의 이와 같은 약점은 확장성(scalability)에 치명적이며, 불도저의 모듈은 이와 같은 문제에 대해 흥미로운(= 실용적인) 해법을 들고 나온 것이다.

그러나, AMD의 이와 같은 접근법은 완전히 새로운 것은 아니다. 비슷한 시도를 한 유명한 사례가 있는데, 바로 셀(Cell Broadband Engine, Sony & IBM)이다. 셀과 불도저는 서로 비슷하면서도 비슷하지 않은 점을 가지고 있다. 동일한 코어의 강력한 확장성을 지향했다는 점이 일단 비슷하다. 셀은 차후에 SPE를 늘리는 것으로 선형적인 성능 향상을 바랬지만, 결국 멀티미디어 데이터 인코딩과 같은 부분에서나 이런 바램이 실현되었을 뿐, 역시 GPU라는 현실적인 문제를 넘어서지 못했다. 여기서 PPE와 SPE 사이의 더러운 메모리 공유 때문에 디버깅이 극히 난해해졌으며, 덤으로 PPE와 SPE가 이종(heterogeneous) 코어라는 문제는 개발 진입 장벽을 어마어마하게 높이는데 일조했다. 불도저의 모듈은 확실히 선형적 확장성이 좋기 때문에, 멀티스레딩이 강조될수록 유리하다. 물론, 불도저는 x86 호환칩이고, 셀은 멀티미디어 데이터를 주로 처리하는 것을 목적으로 하기 때문에 단순한 비교는 좀 억지스러운 느낌이 들지만, 불도저는 셀의 원시적인 방법보다 훨씬 근본적인 부분에서 혁신을 시도한 느낌이다.

불도저는 셀의 PPE / SPE 구조와 달리, 동종(homogeneous) 코어 사이의 공유 처리 구조를 강조했다. 사실 셀도 SPE의 증가에 따라 선형적인 성능 향상을 얻을 수 있지만, 위에서 언급했던 문제 때문에 그 장점을 온전히 얻기 힘들다. 즉, 불도저의 모듈은 일반적인 개념의 코어가 L3 캐시와 같은 제한적인 부분에서만 자원을 공유하는 것과 달리, 거의 모든 레벨에서 자원을 공유한다. 대표적으로, 부동소수점 처리 유닛이 각 코어에서 개별적으로 처리된다면 디코딩 과정에서 그만큼의 전력을 더 필요로 하게 되며, x86 디코딩 유닛은 가장 많은 전력을 소비하는 부분 중 하나다. 불도저는 2개의 코어가 부동소수점 유닛을 공유하기 때문에 부동소수점 자료형을 처리하는데 있어 전력 소비를 크게 줄일 수 있으며, 부동소수점 유닛은 결국 GPU의 쉐이더 유닛으로 대체 가능하다. 궁극적으로, AMD가 그리는 GPGPU는 결국 이런 형태의 통합을 염두에 두고 있기 때문에, 전력도 많이 소비하고 현세대 CPU의 성능을 좌우하는 요소가 아닌 부동소수점 처리 유닛을 이런 형태로 구성한 것이다. 그리고, 이와 같은 하부 단계에서부터의 공유 구조는 하이퍼스레딩보다 훨씬 멀티스레딩 환경에 유리하다. 과거 AMD는 클럭 속도가 컴퓨터 성능을 나타내는 절대적인 지표가 아니라는 점을 부각시켰으며, 결국 인텔도 이 사실을 받아들였다. 모듈과 코어의 관계도 이와 비슷하다. 단순히 코어 수만 가지고 컴퓨터 성능을 나타낼 수 없으며, 중요한 것은 그 코어들의 최종적인 처리 능력이다. 모듈은 이런 관점에서 이해되어야 한다.

그러나, 불도저가 장점만 가진 것은 아니다. CPU 사이에서의 멀티스레딩 친화적인 요소로만 비교해본다면 단연 불도저 아키텍처가 우월해보이지만, 중요한 것은 결국 CPU와 GPU 통합 성능이다. 인텔이 괜히 세월아 내월아 하면서 라라비(Larrabee)에 매달리고 있는 것이 아니란 뜻이다. 불도저의 모듈과 같은 방식으로 x86 SIMD 명령셋을 확장해봤자 GPU의 부동소수점 벡터 연산 능력에 비하면 아직도 한심한 수준이다. 아무리 멀티코어가 강조되는 시대라지만, 제한된 다이 크기에 무작정 32 코어, 64 코어로 코어 수를 늘릴 수 없다. 8 코어, 4 모듈 정도 규모에서 CPU 비교라면 문제가 없겠지만, 고작 이 정도로 불도저의 SIMD 처리 능력을 GPU의 벡터 연산 능력과 비교하는 것은 우스개 소리만 될 뿐이다. 특히, AMD Stream 기술이 OpenCL을 기반으로 하기 때문에(실망스럽지만), 다음 세대의 불도저에서 CPU - GPU 하부 구조에서부터의 통합 문제를 어떻게 다룰지 우려스럽다.

즉, AMD는 좀 더 멀티스레딩에 친화적인, 확장성 좋은 동종 코어 집합의 효율성 향상을 지향하고 있으며, 인텔은 각각의 성격에 특화된 이종 코어가 메모리 공간을 공유하는 것을 지향하고 있다. 인텔은 특정 목적에 범용적으로 적용할 수 있는 다수의 공통 코어보다는, 목적에 맞게 특화된 이종 코어로 하여금 그 일을 처리하도록 하고, 이종 코어들 사이에서 공통된 메모리 공간을 두는게 훨씬 낫다는 생각이다. 샌디브릿지, 아이비브릿지는 결국 통합 메모리 공간으로 가는 링 버스 구조를 택하고 있으며, 인텔의 입장에서는 당장의 GPU 성능은 중요하지 않다(이들의 프로젝트 이름이 왜 브릿지(bridge)인지 생각해보라). 인텔이 아톰(Atom) 칩에 더 이상 GMA 파생 코어를 탑재하지 않은 것은, 결국 GMA 파생 코어들은 라라비에 의해 대체되기 때문이다. GMA 코어를 계속 개발하느니, 임베디드 영역에서 막강한 영향력을 발휘하는 PowerVR 아키텍처 기반의 코어를 탑재하는 쪽이 훨씬 사업성이 낫다. 더구나, 초기 라라비는 저전력을 지향하는 아톰과 어울릴 것 같지 않다. 누차 이야기하지만, 일반에게 GPU로 알려져 있는 라라비는 강력한 병렬 벡터 연산 능력으로 GPU 영역을 넘보는 것이지, GPU 자체로서 개발되는 것은 아니다. 라라비는 궁극의 GPGPU 패러다임을 제시한다. 그러나 당장 인텔의 라라비는 존재하지 않고 GMA 후손격 코어들만 넘쳐나기 때문에 인텔은 불도저의 이와 같은 도전에 대해 할 수 있는 일이 없다. 인텔은 호기롭게 '라라비는 우리가 원할 때 나온다'라고 말했지만 이제 그렇게 한가하지만은 않게 되었다.

AMD는 인텔과 달리 라라비와 같은 아발론(avalon), 이상향을 시도해볼만한 여건이 되지 않는다. 그리고, 어차피 x86 호환칩 업체인 이상 라라비보다 한발 앞서 완전히 새로운 명령어셋을 가진 칩을 출시하는 것은 대단한 모험이다. 특히, 셀의 전례가 있기 때문에 바보가 아닌 이상 불도저가 아무리 확장성이 좋다고 하더라도 CPU와 GPU 모두를 끝장 낼 수 있다고 믿지는 않을 것이다. 결국 라라비와 같은 형식의 이종 코어를 통합하는 방향을 선택할지도 모를 일이다. 그러나, 그것은 인텔이라는 빅 플레이어가 움직인 다음의 이야기이고, 불도저 아키텍처가 아예 이종 코어를 통합하지 못하는 것도 아니다. 라라비가 실체를 나타내기 이전까지, 불도저는 상당히 매력적인 물건이 될 것이다.


그러나, AMD 입장에서 한 가지 안타까운 것은 과거사를 봤을 때 인텔도 좋은건 금방 받아들인다는 점이다. 한 세대 조금 타격을 입더라도 불도저 모듈의 접근법은 곧 인텔도 받아들여 재주는 곰이 부리고 돈은 왕서방이 챙길 것 같기는 하다. 즉, AMD가 라라비와 같은 물건을 만드는 시간보다 인텔이 라라비 이종 코어 통합 CPU를 만들고 불도저 모듈의 장점을 흡수하는 시간이 더 짧게 걸린다. 더구나, GF의 생산능력이 어느 정도인지는 모르겠지만, 넉넉하지는 않기 때문에 가격 전쟁에서 AMD가 인텔을 이기기란 매우 힘들다.





Reference
http://www.realworldtech.com/page.cfm?ArticleID=RWT082610181333&p=1