착찹한 마음에 적은 글에 많은 분들이 격려해 주셔서 진심으로 감사드립니다. 착찹한 마음을 걷어내고 다시 나아기기 시작했습니다. 몇 번 적었듯이 쉽지 않은 길을 가는 것을 지지해 주고, 지원해 주는 회사에도 감사드리고 있습니다. 저희 프로세서에 부족했던 부분을 채울 수 있었던 좋은 기회였으므로, 너무나도 아쉽지만 EISC는 쉬운 길을 갈 운명은 아닌가 봅니다 ^^;
—-
프로세서 설계에 있어서 두 가지 중요한 갈래가 있습니다.
바로 속도를 높이는 것이 최고라고 생각하는 접근 방법(소위 speed demon approach – 이후 SDA)와 클럭당 수행되는 명령어의 수를 높이는 방법(소위 brainiac approach – 이후 BA -라 이야기하는)이 존재하는 것이지요.
두 가지 모두 아주 의미있는 접근이라고 할 수 있습니다. 예를 들어 SDA는 파이프라인 프로세서에서 명령어 수준의 병렬성(Instrcution level parallelism -ILP)를 하드웨어가 동적으로 찾아내는데는 어짜피 한계가 있으므로, 전반적인 클럭 스피드를 높이는 것이 좋다라는 생각입니다.
이 SDA를 기조에 두고 있는 아키텍쳐로 유명한 것이 Alpha였는데, 얼마전까지의 Intel의 Netburst microarchitecture 역시 SDA를 기반에 둔 것입니다. 최대한 파이프를 잘게 쪼개서 높은 클럭 주파수를 얻어냄으로써, 좋은 성능을 얻자는 것입니다.
두 번째 갈래인 BA의 경우 파이프라인을 잘게 나누어 속도를 높이는 것도 중요하지만 ILP를 최대한 찾아내서 IPC(instructions per cycle)를 높이는 것도 중요하다라는 관점입니다. 전통적인 컴퓨터 아키텍트들이 선호하는 관점이기도 하지요. 제가 AMD를 더 선호하는 이유도 IPC의 관점에서 좋은 프로세서를 만든다는 점 때문입니다. (물론, 인텔도 아주 아주 뛰어납니다. 코어2듀오를 보십시오!)
마케팅의 관점에서는 누구나 쉽게 이해할 수 있는 clock frequency를 따지기 때문에 SDA를 선호하기도 합니다. 이러한 관점은 IPC가 더 좋은 프로세서들에게는 좋지 않은 마켓 상황이므로 AMD가 처음에 (performance rate던가요? 기억이) 클럭 속도보다 높은 값(P4에 비교하면 어느정도 클럭에 해당한다는 의미의)을 사용하기도 했습니다.
이런 생각은 처음에 전혀 먹혀들어가지 않았지만, 인텔에서 코어 듀오 시리즈를 사용하면서 이제 폭넓게 먹혀 들어가고 있지요.
사실 SDA기반으로 프로세서를 만든다는 것은 마케팅의 입장에서 대부분 매우 유리합니다. BA는 benchmark 결과를 보여주어야 하니까요. 그런데, benchmark를 따져 보는 사람이 생각보다 없습니다. ^^; 아쉽게도
요즘들어서는 energy efficiency가 중요해지면서 BA가 더 각광받는 분위기이기는 합니다. 🙂
embedded도 마찬가지지요.
여담입니다만, 항상 BA라는 측면을 두고 설계해 왔는데요, 우선 뭐가 되었던 SDA가 필요할 때도 있습니다. 🙂
저만해도 대학원 와서 공부를 하기 전까지는 AMD의 희안한 naming 정책을 이해 못했으니까요. 일반인들에게는 frequency 같이 이해하기 쉬운 single number가 먹혀드는 것 같습니다. P7의 취소 이후로는 그 single number가 core 숫자로 바뀐것같네요. core숫자가 frequency 숫자보다 더 성능하고 관련이 없을 수도 있다는(!) 문제가 있기는 하지만요. 🙂
그렇지요..^^;
그래서 마케팅 팀에서는 뭐니뭐니해도 클럭 스피드를 따지나봐요.