|
//이전 글에 댓글로 달아놓았던 글들을 하나로 묶은 겁니다. 댓글이라서 보기 불편했던 것을 하나로 묶었고, 내용의 수정은 없습니다. 자유토론 게시판 덧글기능 테스트용입니다...^^;;
예전에는 플롭스가 중요한 성능지표가 되기도 했었지요. 그러나 현재 부동소수점을 연산하는 부분은 FPU에서만 가능한 것이 아닙니다. 인텔이나 AMD나 모두 부동소수점을 빠르게 연산할 수 있는 별도의 연산명령을 가지고 있고, 이것이 SSE, 3D now 등의 명령어들이지요. 실제 이런 명령을 사용하는 것은 부동소수점 처리 속도를 획기적으로 향상시킬 수 있고, 결국 부동소수점 처리의 속도는 이러한 추가 연산 명령의 성능이 얼마나 빠른가 하는 점에 의해 좌지우지되고 있는 상황입니다.
이것은 거꾸로 말하면 FPU의 성능을 논하는 플롭스로는 현재의 CPU 성능을 정확하게 표현할 수는 없다는 의미가 되기도 합니다.
물론, 공학, 물리학, 수학 등에서 고도의 정밀도를 요구하는 작업이 있을 경우 일종의 편법인 확장명령어셋을 이용한 연산은 별 도움이 되지 않습니다. 때문에 플롭스의 존재가치가 있는 것이기는 합니다만, 일반적인 사용자들에게 있어서는 플롭스에 의한 성능의 차이를 실감할 일이 없는 것이 사실이지요.
확실히, 부동소수점 연산을 주로 하는 공학용 프로그램 등에서는 AMD 쪽의 성능이 더 좋게 나오는 경우도 흔히 있습니다만, 실제 웍스테이션급에서는 RISC 계열의 다른 프로세서를 사용하는 경우가 훨씬 많습니다. 선의 울트라스팍이라던가 IBM의 파워 프로세서, 인텔의 아이테니엄 같은 경우도 공학용의 연산에서는 더 좋은 성능을 내는 것으로 알려져 있고, 유닉스 계열 운영체제의 안정성과 성능에 힘입어 공학, 물리학 등에서는 윈도우 어플리케이션들이 오히려 입지가 좁은 편입니다.
AMD나 인텔의 X86 계열 프로세서들이 가지는 장점은 저렴한 가격(여기에 반론이 있겠습니다만, 고가의 다른 프로세서들에 비하면 저렴한 것 맞습니다)과 가격대비 쓸만한 성능인 것이지, 최고의 성능이 장점은 아닌 것이지요.
또한 사용자 저변이 넓기 때문에 프로그래밍이 쉽다는 것도 장점이 될 수 있고, 운영체제 등 부수적인 비용또한 저렴한 수준이기 때문에, 적당한 성능에 저렴한 가격으로 솔루션을 구현해야 하는 경우에 많이 사용되게 되었습니다. 성능 역시 최고는 아니라고 해도 상당한 수준까지 올라가 있는 상태이므로 더더욱 x86 계열이 발전하고 있었던 것이고요.
제 생각에는, 인텔에 비해 AMD의 프로세서 구조가 다 단단하게 만들어져 있다고 생각합니다. CPU와 주변장치간의 통로를 인텔이 FSB를 이용하는 반면, AMD는 애슬론 시절 과거 세계 최강의 프로세서였던 알파 프로세서의 기술인 EV6 버스를 도입해서 성능의 향상을 꾀했고, FPU의 성능을 높임으로써 인텔 프로세서를 앞서는 성능을 보이기 시작했습니다.
이에 자극받은 인텔은 FPU의 열세를 뒤집기 위해 MMX나 SSE 같은 추가 연산 명령어셋을 만들기 시작했고, 떨어지는 IPC를 커버하기 위해 클럭을 높이기위한 넷버스트 방식을 도입하게 되어서 각기 다른 방향으로 발전하기 시작한 것이죠.
이후 AMD는 하이퍼트랜스포트를 적용하기 시작하면서 CPU와 주변장치간의 데이터 통신 속도를 비약적으로 향상시켜 왔고, 메모리 컨트롤러를 내장하고 네이티브 멀티코어 프로세서를 지향하면서 프로세서 자체의 구조를 더욱 단단하게 만들어 온 반면, 인텔은 넷버스트를 이용한 클럭 올리기와 프로세서를 하나의 실리콘에서 만들지 않고 여러개로 나누어진 프로세서를 합치는 방식으로 멀티코어 프로세서를 만들기 시작했지만 AMD에 비해 구조적으로 떨어지는 것을 막지는 못했습니다.
결국 인텔도 AMD와 같이 네이티브 멀티코어 프로세서를 만들고 IPC를 높인 프로세서를 등장시켰는데 이것이 코어 2 듀오 로 대변되는 콘로죠.
개인적으로는 AMD가 더 잘만든 프로세서였지만, 지금에 와서는 어찌되었든 인텔의 프로세서들이 성능이 떨어지지는 않는다고 생각합니다. 일반적인 프로그램들의 성능은 어쨋든 인텔 프로세서들이 더 좋은 성능을 보이고, AMD 프로세서는 절대적인 성능은 떨어지지만 사용자가 체감하는 성능 자체는 오히려 인텔보다 빠릿빠릿하게 동작하는 느낌이 든다고 생각합니다.
이런 차이점에 대해서 위의 글에서는 컴파일러에 인텔이 장난을 쳤다... 라고 표현하셨는데, 이에는 조금 어폐가 있습니다.
실제 인텔에서는 자사의 프로세서에 최적화된 컴파일러를 판매하고 있습니다. 그런데, 이 컴파일러는 인텔에 최적화 되었지만 X86 계열의 프로세서라면 모두 동작할 수 밖에 없습니다. 따라서 이 컴파일러를 사용하여 어플리케이션을 만들면 인텔 프로세서에서는 100%의 속도로 동작하지만 타사의 프로세서에서는 90%의 성능밖에 나오지 않을 수도 있지요. 그렇다고 인텔이 의도적으로 타사의 프로세서에서 고의적으로 느리게 동작하게 한 것이라고 생각하기엔 어폐가 있습니다.
일반적으로, 프로세서 제조 업체에서는 그 프로세서에 최적화된 컴파일러를 제공합니다. ARM에서도 자사의 ARM 계열 프로세서용 컴파일러를 제공하고 있고, SUN이나 MIPS, IBM 등 프로세서를 제조하는 업체에서는 자사 프로세서용의 컴파일러를 제공하는 것이 기본이죠. 그러나 AMD는 그런 컴파일러를 제공하지 않습니다.
결국, 컴파일러 때문에 AMD의 성능이 나오지 않는다는 것은, AMD가 자사의 프로세서에 최적화된 컴파일러를 제공하지 않은 탓이지 인텔의 컴파일러 탓을 해서는 안된다는 것입니다.
뭐, 개인적으로는 아직도 구조적으로는 AMD가 인텔을 앞서고 있고, SSE 같은 변칙적인 방법이 아닌 FPU를 이용하는 고전적인 연산에서는 AMD 쪽이 더 좋은 성능을 보일 수 있으며, 멀티프로세싱 부분에서는 더욱 좋은 성능을 발휘하는 좋은 프로세서라고 생각합니다.
다만, 이것은 구조적인 부분일 뿐, 실제 어플리케이션을 사용하는데 인텔이 더 좋은 성능을 보이는 현재 상황에서는 변명밖에는 안될 것이라는 거죠.
AMD에 최적화된 프로그램을 짜고 싶어도 최적화된 컴파일러 조차 없는 상황에서 일일이 기계어 코드로 프로그램을 작성할 수도 없는 노릇이지 않겠습니까?
결론은, 구조는 AMD가 좋아도 인텔이 일반 사용자들에게는 더 좋은 성능을 보여준다. 다만 AMD는 벤치마크에서 보여주지 못하는 다른 부분들로 인해 좋은 평가를 받을 자격이 있다... 정도가 되겠네요.
저 혼자 너무 열을 내고 얘기한 것 같네요...^^;;
|