Tag Archives: cmp

AMD Quad Core 소식

MPF fall에서 여러가지 재미난 소식들이 전달되고 있습니다.
이번에 전해드릴 소식은 EEtimes에 나온 AMD Quad Core processor( codename: barcelona) 관련 소식입니다.

[[Intel]]에서 core 2 quad를 2007년 상반기에 내놓겠다고 IDF에서 큰소리 빵빵쳤더랬습니다.
이에 질새라 AMD는 true quad core processor인 barcelona에 관한 소식을 MPF fall에서 발표했습니다.
사실 AMD의 quad코어 전략은 desktop에서는 4×4를 기반으로, 즉  dual core processor 두개를 하나의 칩에 내장하는 형태로 공략하고, 이후에 QUAD코어로 간다는 것이었습니다.
서버쪽은 바로 true quad코어로 간다는 전략이구요.

TRUE quad core라고 강조하는 것은 사실 AMD의 전략(?)이라고 보이는데, 비교적 열등한 형태의 인텔 [[CMP]]의 형태를 겨냥한 느낌이 다분합니다.
인텔의 core 2 duo의 경우 사실 single core가 대규모 L2 cache에 merging되어 있는 형태라 전통적인 MP의 형태와는 좀 다른 면이 있습니다.

거기에 비해서 [[AMD]]의 quad core는 4개의 분리된 single core가 Direct Connect된 corssbar switch형태의 버스로 연결된 형태를 지니고 있습니다.

”]MPF fall에 발표된 바에 의하면(저는 EETimes의 내용을 재인용합니다.^^; 자세한 사항은 역시 다음주 MPR이 기대됩니다.) 이 프로세서는 65nm공정에서 만들어지는 AMD의 첫번째 코어입니다.
또한, 각각 128bit dataflow multimedia unit을 지니고 있다고 합니다. (이건 intel에서도 이러니 특별할건 없군요)

[[Multiprocessor]]환경에서 결국 중요한건 Bus bandwidth인데 AMD는 이점을 역시 잘 인지하고 있습니다.
이에 따른 중요한 업데이트는 intergrated memory controller부분인데요.. DDR2, DDR3, Fully Buffered-DIMM을 지원하게 된다고 합니다.
관련된 주요 사항으로는 각 코어마다 64KB의 L1, 512KB L2 cache를 내장하고, 비교적 작지만 2MB의 L3 캐쉬를 지원합니다. 캐쉬의 용량은 적절히 조절된 버젼이 또 나올것이라 생각됩니다. 첫공정이니 수율 조정 측면에서 메모리를 많이 넣기는 힘들겠죠.

AMD quad core프로세서의 서버 버젼부터는 지난번에 포스팅했던 Torrenza를 위한 socket F (1207핀)을 사용해서 메모리 대역폭을 극대화 것으로 예고가 되어 있었는데, 얼마나 성능을 보여줄지 상당히 궁금합니다.

듀얼코어? 쿼드코어?

요즘 들어 듀얼 코어가 일반화되었습니다.
AMD의 X2시리즈를 필두로 데스크탑 시장을 열기 시작하더니, 인텔의 코어듀오시리즈가 이제 본격적으로 어필하고 있는 상황입니다.
AMD는 예전부터 2007년 2분기에 Quad Core를 예정하고 있었고, 얼마전에 인텔 개발자 포럼(IDF)에서 인텔 콘로 쿼드 코어가 2007년 1분기에 출시된다고 선언한적이 있습니다. 그 발언과 더불어 쿼드코어가 네티즌들에게 많이 이야기가 되고 있구요..
”]
쿼드 코어가 기술적인 혁신인가?
간혹 이야기를 보다보면, 쿼드 코어가 대단한 기술적 혁신으로 받아들이는 경우가 있는데.. 사실은 아닙니다. 단지 마케팅적인 요소이지요. 사실 온칩 멀티프로세서(CMP)라 불리는 기술은 최소한 10년이상된 기술입니다. 제가 석사과정에서 했던 일도 네개의 정수코어와 한개의 그래픽 코프로세서를 통합하는 프로젝트였으니까요.. (벌써 8년전일이니.. 오래된 일이죠? 외국에서는 훨씬 오래전부터 시작되었습니다.)
사실 더 깊고 넓은 파이프 라인을 만드는 것 보다, 여러개의 코어를 하나의 칩에 통합하는 칩 멀티프로세서 기법이 기술적으로는 좀더 편한 방법입니다.

왜 지금까지 널리 사용되지 않았을까요?
바로, 데스크탑 시장에서는 멀티 프로세서를 사용할 수 있는 소프트웨어가 거의 없었기 때문입니다.
멀티 프로세서를 지원하는 윈도우 데스크탑 OS는 아마도 XP가 최초인 것으로 기억합니다. (NT/2000은 서버/웍스테이션 급이죠?)
멀티 프로세서 OS라고 해도, 프로세스 수준의 멀티 프로세싱을 지원하겠지만.. 데스크탑에서 사용할 수 있는 병렬성은 빤한 수준입니다. 한마디로 그다지 이득이 없다는 겁니다.

차라리, 클럭 주파수를 올리는 것이 수많은 어플리케이션(소위 벤치마크라 이야기되는 부분)에서 사용자에게 어필할 수 있었습니다.

이제는 왜 칩 멀티프로세서가 각광 받을까요?
바로, 주파수 올리기가 어느정도 한계에 도달했기 때문입니다. 주파수 올리기는 필수적으로 전력소모의 증가를 부릅니다. 깊은 파이프라인은 파이프의 효율성을 떨어트리구요..그래서, 대안으로 칩 멀티프로세서가 유용한 “마케팅” 용어로 사용되는 것 같습니다.
또 한가지 중요한 요인은 멀티프로세서를 사용할 여지가 많은 어플리케이션 “멀티미디어”, “게임”이 점점 더 일반화 되고 있다는 점입니다. (물론, 이 분야의 모든 어플리케이션이 멀티 프로세서에서 위력을 발휘하는 것이 아닙니다.멀티프로세서를 위해서 프로그래밍 된 넘들만 힘을 활용할 수 있습니다.)
즉, 사용자들이 알만한 어플리케이션에서 더 좋은 벤치마크 성능을 보여줄 수 있는 시기가 왔다는 점이겠죠.

소프트웨어가 멀티 프로세서 환경을 결정할 것이다.
궁극적으로는 멀티 프로세서 환경의 구축은 피할 수 없는 조류가 되었습니다. 이 이야기는 사실 70-80년대 부터 나오던 이야기입니다.
하지만, 지금 이 시간까지 멀티프로세서가 힘을 발휘할 수 없었던 가장 큰 이유는 “소프트웨어”의 문제입니다.
프로그래머는 기본적으로 “순차적인”알고리즘에 익숙하고, 순차적인 프로그램을 작성합니다.
예를들어 어떤 연산을 하고, 그 결과를 이용해서 분기하여 계산할 것을 결정하는 등의 알고리즘이죠..
이런 순차적인 알고리즘은 이전의 연산/작업이 뒤의 연산/작업에 상당한 의존성(dependency)를 보여주기 때문에 병렬작업이 거의 불가능합니다. 즉, 멀티 프로세서를 사용하더라도, 절대 이것을 사용할 수 없는 것입니다.

멀티미디어 분야에서는 약간 이야기가 달라지는데요.. 각 픽셀에 대한 연산을 병렬적으로 수행할 수 있는 요소가 많아집니다. 즉, 일반적인 프로그램보다는 병렬성의 가능성이 더 높다는 것이죠.. (데이터 형태에서..)
물론, 프로그래머가 병렬성을 살리지 못하면 여전히 멀티 프로세서에서 좋은 결과를 기대할 수 없겠지만 말입니다.

멀티프로세서 환경은 데스크탑 환경에서도 피할수 없는 조류로 자리잡았습니다.
이제, 공은 OS/Compiler/프로그래머에게 넘어갔습니다.