|
INTEL이 새롭게 사용할 마이크로아키텍쳐의 이름은 코어 마이크로아키텍쳐이다. 기존 넷버스트 마이크로아키텍쳐와 배니어스 마이크로아키텍쳐로 나누어져 있던 마이크로 아키텍쳐가 코어 마이크로아키텍쳐로 통합되게 되어 x86 서버 및 데스크탑 그리고 모바일용 프로세서 모두가 하나의 마이크로아키텍쳐를 사용하게 된다.
그럼 코어 마이크로아키텍쳐의 특징은 무엇일까?.. 코어 마이크로아키텍쳐의 특징은 파이프라인 스테이지의 감소에 있다. 이 부분은 이미 2페이지에서 설명하였듯이 노트북용 모바일 프로세서에서 사용되던 배니어스 마이크로아키텍쳐를 수용하여 재구성한 기술이기에 배니어스나 배니어스의 뼈대가된 P6 마이크로아키텍쳐의 구조와 상당히 닮아있다.
그럼 지금부터 코어 마이크로 아키텍쳐의 가장큰 변화인 파이프라인 스테이지에 대해 알아보도록 하겠다.
IPC 성능을 개선하기 위해 확 줄였다
2페이지에서 이미 설명하였듯이 넷버스트 마이크로아키텍쳐의 성능은 IPC의 상승이 아닌 클럭상승에 중점을 둔 마이크로 아키텍쳐이다. 그러나 이미 설명하였듯이 넷버스트 마이크로아키텍쳐가 추구했던 클럭상승을 포기하였으니 이제는 IPC 상승에 중점을 두어야 했다.
따라서 새로운 마이크로아키텍쳐는 클럭당 처리할 수 있는 인스트럭션의 수를 증가시키기 위해 파이프라인 스테이지를 줄일 수밖에 없는데 무려 31개의 단계로 나누어 버렸던 넷버스트 마이크로아키텍쳐의 파이프라인 스페이지를 14단계로 줄여 버렸다.(파이프라인 스테이지와 클럭 그리고 IPC와의 상관 관계는 2페이지를 참고하기 바란다)
이것은 코어 마이크로 아키텍쳐의 뼈대라고 할 수 있는 모바일용 배니아스 마이크로아키텍쳐(도선 코어)에 사용된 12단계의 파이프라인 스테이지보다 2단계가 늘어난 것이다. 경쟁사인 AMD의 K8 프로세서(AThlon64 계열)도 12단계의 파이프라인 스테이지로 구성되어 있다.
인텔은 14단계의 파이프라인 스테이지로 구성한 코어 마이크로 아키텍쳐의 구조로 인해 IPC가 떨어진다는 지적에서 해방될 수 있게 됐다.
12 단계가 아닌 14 단계인 이유
근데 왜 14개의 파이프라인 스테이지로 구성한 것일까?.. 이미 배니아스 마이크로아키텍쳐에서 12개를 사용하고 있고 경쟁사도 12단계를 사용하고 있으니 12단계를 사용할 수 있었을텐데 말이다.. 이 질문의 대한 답은 클럭에 있다.
이미 알아보았듯이 프로세서의 성능을 결정하는 열쇠는 IPC와 클럭이다. 마이크로 프로세서 개발사는 이 두가지 요소의 적절한 조합을 찾아 마이크로아키텍쳐를 개발하게 되는데 INTEL의 12 단계 파이프라인 스테이지는 배니아스 마이크로아키텍쳐의 가장 최근 버전인 Yonah 코어의 Core Duo 프로세서는 동일 클럭의 경쟁사 데스크탑용 제품보다 성능이 높지 못한 것으로 나타난 상태이다.
물론 같은 단계의 스테이지를 가지는 기존 도선 코어보다는 성능이 향상되기는 했지만 클럭도 2Ghz 초반에 머물러 있고 성능도 경쟁사의 동일클럭 제품보다 낮거나 비슷한 수준으로 나타났음으로 클럭을 상승시킬 필요가 있었던 것이다.
그래서 INTEL은 클럭을 좀더 쉽게 상승시키기 위해 배니아스 마이크로 아키텍쳐보다 늘어난 14단계의 파이프라인 스테이지를 사용한 것이다.
인스트럭션 디코딩 성능을 높혀라
위에서 설명하였듯이 INTEL은 파이프라인 스테이지를 기존 배니아스 마이크포아키텍쳐보다 2개 더 늘린 14단계의 파이프라인 스테이지를 적용하여 좀더 높은 클럭으로 동작시킬수 있게 되었지만 그만큼 IPC는 떨어질수 있기에 다른 부분에서도 성능을 향상시킬수 있는 방법을 찾아야했다.
INTEL이 IPC와 클럭 상승 이외의 성능 개선 방법으로 찾아낸 것은 바로 디코더의 성능 개선이다.
2페이지에서 설명하였듯이 프로세서의 파이프라인은 기본적으로 Instruction Fetch / Decode Instructions / Fetch Operands / Execute / Store to Cache의 5단계로 연산이 처리된다. 최초 Hardware Prefetcher를 통해 L1 캐쉬로 저장된 인스트럭션이 Fetch되어 디코더로 전달되면 디코더는 프로세서가 인식할 수 있는 내부의 코드인 Micro-op로 디코딩된다.
INTEL은 이 단계중에서 실제 프로세서가 처리할 수 있는 Micro-op 코드로 변환시켜주는 단계인 디코드의 성능을 개선하여 프로세서 전체 성능을 개선시키도록 했는데 INTEL이 택한 방법은 상당히 간단하다.
이미 같은 구조를 가진 것으로 설명한 P6 나 배니아스 마이크로아키텍쳐는 이 디코드 단계에 3개의 디코더를 통해 디코딩하도록 만들어 놓았지만 코어 마이크로아키텍쳐에는 4개의 디코더가 사용되도록 만들어 놓았다.
같은 단계의 파이프라인 스테이지를 가진다고 하더라도 디코더가 더 많은쪽의 성능이 높은 것은 당연한 결과임으로 12단계에서 14단계로 늘어난 파이프라인 스테이지로 인해 줄어든 IPC 성능을 디코더 추가로 개선하도록 만들어 놓은 것이다.
참고로 Micro-op 코드로 변환시켜주는 이 디코더들은 두 종류가 있다, simple 디코더와 complex 디코더의 두종류로 구성되어 있는데 simple 디코더의 경우 빠른 디코딩 성능을 가져 클럭당 한 개의 x86 인스트럭션을 한 개의 Micro-op 코드로 변환시켜 준다. 대부분의 x86 인스럭션들이 이 simple 디코더를 통해 처리된다.
complex 디코더는 x86 인스트럭션중 소수의 인스트럭션들안을 Micro-op 코드로 변환시켜주지만 simple 디코더 달리 클럭당 두 개 혹은 4개의 Micro-op 코드로 변환시킬수가 있다.
위의 이미지에 나타나 있듯이 P6 및 배니아스 마이크로아키텍쳐는 두 개의 simple 디코더와 한 개의 complex 디코더로 구성되어 총 3개의 디코더가 디코딩 기능을 수행하지만 코어 마이크로아키텍쳐는 3개의 simple 디코더와 한 개의 complex 디코더로 구성되어 있어 클럭당 디코딩시킬수 있는 인스트럭션 성능이 훨씬 더 높다. (인텔은 기존 x86 프로세서보다 33% 이상의 인스트럭션 디코딩 성능 개선이 있다고 설명하고 있다.)
넷버스트 마이크로아키텍쳐도 기존 P6 마이크로아키텍쳐보다 디코딩 성능을 개선하기 위해 실행 추적 캐쉬라는 새로운 방식의 캐쉬를 사용한적이 있으나 이 기술은 사실상 20단계(지금에 와서는 31단계)로 늘어난 파이프라인 스테이지의 문제점인 분기 예측 실패를 대비하기 위해 만든 기술이었다.
|