[카드뉴스] CPU WARS : EPISODE I - THE PHANTOM MENACE

by Dr.Lee on 2017년 02월 11일 17시 55분 (2년 전) 조회: 4,711 추천: 12

페이스북 퍼가기  

※ 닥터몰라 페이스북 페이지에 게시된 원본은 여기서 보실 수 있습니다!

 

카드뉴스-CPU WARS 04.001.jpeg

 

안녕하세요 독자 여러분. 이번 주엔 유독 자주 찾아뵙는 것 같지만 기분 탓이겠죠. 에헴.

전편으로부터 10년을 거슬러 올라간 이번 편의 제목은 "보이지 않는 위협".

인텔의 탕아, <넷버스트> 아키텍처의 특징을 조목조목 짚어 보는 시간을 갖도록 하겠습니다.

 

이전 편들(이지만 시간상으로는 뒤의 이야기들)인 1편, 2편, 3편을 미리 보시고 오시면 좋습니다 :)

 

카드뉴스-CPU WARS 04.002.jpeg

 

별로 영양가 없는 지식을 하나 소개하자면,

최초의 CPU는 8086보다도 오래된 1971년의 인텔 <4004>를 꼽을 수 있겠는데요.

4004의 클럭은 메가헤르츠 단위조차 아니었던 740KHz.

 

그리고 현존하는 최고 클럭의 x86 CPU 역시도 위에 언급된 코어 i7-7700K가 아닙니다.

아시겠지만, AMD의 FX-9590은 최대 5GHz의 터보 클럭을 갖고 있죠.

 

처음엔 이 둘로 카드뉴스 첫 장을 작성했다가, 아무래도 운율을 맞추는 등의 문제로 8086과 i7-7700K로 바꿨다는 사실.

(그리고 FX의 경우, 이후 에피소드에서 불도저 아키텍처를 소개하기 전 등장시키는 것이 좀 애매해 보이기도 했습니다.)

 

카드뉴스-CPU WARS 04.003.jpeg

 

카드뉴스-CPU WARS 04.004.jpeg

 

카드뉴스-CPU WARS 04.005.jpeg

 

카드뉴스-CPU WARS 04.006.jpeg

 

12,000개의 마이크로옵을 저장할 수 있는 트레이스 캐시.

x86 명령어로 환산하면 16KB의 L1 명령어 캐시와 비슷한 효율이라고 합니다.

 

지난 편에서 샌디브릿지가 네할렘과 차별화된 가장 큰 차이점으로 신설된 <마이크로옵 캐시> 를 꼽았는데요.

바로 넷버스트 아키텍처의 트레이스 캐시에서 그 흔적을 찾아볼 수 있습니다.

 

카드뉴스-CPU WARS 04.007.jpeg

 

크리티컬 패스의 의미를 좀 더 자세히 살펴보도록 하죠.

CPU의 수행 단계는 보통 아래와 같습니다.

 

- 일반 : L1 캐시 -> 명령어 인출 -> 디코드 -> 재정렬 -> 수행 -> 쓰기

- 넷버스트 : 명령어 인출 -> 디코드 -> 트레이스 캐시 -> 재정렬 -> 수행 -> 쓰기

 

여기까지는 캐시의 위치만 바뀌었을 뿐, 전체 단계는 동일합니다.

하지만 L1 캐시 미스가 발생하지 않는 경우에는 아래와 같은 차이가 생기는데요.

 

- 일반 : L1 캐시 -> 명령어 인출 -> 디코드 -> 재정렬 -> 수행 -> 쓰기

- 넷버스트 : 명령어 인출 -> 디코드 -> 트레이스 캐시 -> 재정렬 -> 수행 -> 쓰기

 

즉, 디코드 이전 단계가 수행 경로에서 배제되어 더 빠른 수행이 가능해지는데요.

이것이 '디코더를 크리티컬 패스에서 뺀다' 의 의미입니다.

 

카드뉴스-CPU WARS 04.008.jpeg

 

클럭은 전기 신호가 0에서 1이 되는 순간과 1에서 0이 되는 순간으로 이뤄집니다.

전자를 라이징 엣지, 후자를 폴링 엣지라고도 하죠.

 

넷버스트의 SIU는 한 클럭의 두 엣지에 모두 연산을 수행할 수 있어,

이론적으로 2GHz CPU의 경우 4GHz의 속도로 정수 연산을 수행하게 됩니다.

 

물론, SIU에서 '모든' 정수 연산을 수행하는 건 아닌 데다,

고클럭이 무조건 고성능으로 이어지는 것만도 아니었기에 전반적으로 넷버스트의 정수 연산 성능은 상당히 나빴습니다.

이는 백엔드 자원의 부족함뿐만 아니라, 정수 연산을 많이 사용하는 어플리케이션(오피스, 서버 환경에서 많이 쓰임)의 특성상

부동소수점 연산을 많이 사용하는 경우보다 캐시 미스가 발생할 확률이 더 높기 때문이기도 했습니다.

 

캐시 미스가 발생하면, 트레이스 캐시로 은폐하던 넷버스트의 열악한 디코더 성능이 그대로 노출되는 점. 앞 장에서 살펴보셨죠.

 

카드뉴스-CPU WARS 04.009.jpeg

 

카드뉴스-CPU WARS 04.010.jpeg

 

카드뉴스-CPU WARS 04.011.jpeg

 

카드뉴스-CPU WARS 04.012.jpeg

 

상업적으로도 윌라멧은 그리 큰 성공을 거두지 못했고,

펜티엄 4가 많이 팔리게 된 것은 130nm 공정의 <노스우드>가 제조되면서부터였습니다.

 

제조공정이 개선되어 작동 속도가 3GHz 이상으로 오른 반면 발열과 소비전력은 낮아졌고,

내장 L2 캐시 용량이 512KB로 두 배 증가하며 성능도 윌라멧보다 개선되었기 때문이죠.

 

카드뉴스-CPU WARS 04.013.jpeg

 

프레스캇은 90nm 공정으로 제조되었는데, 당시 누설전류를 간과한 설계로 소비전력이 오히려 폭증하는 기현상을 겪습니다.

설상가상, 파이프라인이 역대 최고로 깊어졌지만 소비전력이 발목을 잡아 클럭은 그만큼 올리지 못했고,

이에 파이프라인이 깊어진 장점이 사라지며 단점만이 고스란히 노출되는 최악의 실패를 겪습니다.

내장 L2 캐시 용량을 노스우드의 두 배인 1MB로까지 올렸음에도 IPC 하락이 커버되지 않은 것.

 

서버용 다이인 <갤러틴>을 펜티엄 4 익스트림 에디션이라는 이름으로 투입한 것도 이 시기입니다.

갤러틴은 L1 / L2 캐시 외에, 2MB의 L3 캐시를 CPU 내부에 탑재한 첫 x86 CPU입니다.

물론, 이렇게 하고도 당시 펜티엄 4의 경쟁 상대들보다 높은 성능을 보이는 데는 실패했습니다.

 

카드뉴스-CPU WARS 04.014.jpeg

 

하이퍼스레딩은 이런 절박한 상황을 타개하기 위해 도입되었습니다.

 

카드뉴스-CPU WARS 04.015.jpeg

 

카드뉴스-CPU WARS 04.016.jpeg

 

다만 하이퍼스레딩을 도입한 것도 당시엔 큰 효과가 없었는데요.

1코어의 자원으로 성능을 높인다는 것의 전제는 코어 내 자원이 비효율적으로 놀고 있어야 한다는 것이기 때문입니다.

아시다시피, 넷버스트 아키텍처 내부에서는 자원이 부족하면 부족했지 절대 남아 돌지 않았고,

따라서 성능이 오르는 경우보다 내려가는 경우가 더 많은 악순환으로 이어졌습니다.

 

하이퍼스레딩은 코어 아키텍처 들어서 사라졌다가, 네할렘부터 다시 도입되었는데

이 시기부터는 멀티코어 CPU가 일반화되고, (그럼에도 불구하고) OS / 어플리케이션이 멀티코어를 (아직까지는) 잘 지원하지 못하며

CPU 내 유휴 자원이 많아지는 등 하이퍼스레딩이 성능 향상으로 이어지기에 좋은 환경이 조성됩니다.

 

카드뉴스-CPU WARS 04.017.jpeg

 

카드뉴스-CPU WARS 04.018.jpeg

 

카드뉴스-CPU WARS 04.019.jpeg

 

비슷한 시기 인텔 역시 x86의 뒤를 이을 64비트 ISA의 개발에 착수했고,

나아가 새로운 64비트 ISA와 함께, 레거시 x86 진영은 넷버스트에 맡겨 투 톱으로 내세울 작정이었다고 합니다.

결과부터 말하자면 투 톱이 모두 처참하게 무너져 인텔의 2000년대 초반은 악몽이 되고 말았습니다.

 

카드뉴스-CPU WARS 04.020.jpeg

 

카드뉴스-CPU WARS 04.021.jpeg

 

카드뉴스-CPU WARS 04.022.jpeg

 

지금까지의 다이어그램과 다른 점이 하나 있다면, 재정렬 버퍼(에 해당하는 명령어 제어 유닛)의 그라데이션.

 

편의상 x86 명령어가 유통되는 과정은 빨간색으로, 마이크로옵은 파란색으로, 그 중간인 디코더는 보라색으로 그렸는데요.

뒤에 설명하겠지만 K8의 디코드 방식이 다소 특이하게 이뤄져,

디코더를 거치고도 한동안은 "매크로옵" 이라는 중간적 단위로 존재하며 수행 유닛까지 전달되기 때문입니다.

 

카드뉴스-CPU WARS 04.023.jpeg

 

카드뉴스-CPU WARS 04.024.jpeg

 

비순차 수행 CPU를 구현하려면 상당한 양의 자원을 마이크로옵 추적 및 재정렬에 사용해야 합니다.

x86 명령어를 내부 처리 단위인 마이크로옵으로 분해, 수행 과정을 거친 뒤 메모리에 쓸 때에는

다시 원래 프로그램의 순서에 맞게 재배열하는 과정이 필요하기 때문인데요. (또한 이를 위해 수행의 전 과정 동안 추적되어야 합니다.)

 

K8은 마이크로옵을 일정 조건 하에 두 개씩 묶어 "매크로옵"이라는 단위로 취급함으로써,

그만큼 발생가능한 불확정성의 수를 줄여 마이크로옵 추적 및 재정렬에 드는 자원을 줄이고자 한 것입니다.

 

인텔에서도 이와 비슷한 기법을 코어 아키텍처 직전, 즉 펜티엄 M을 도입하며 개량된 P6에서 선보였는데요. (마이크로옵 퓨전)

인텔은 x86 명령어 자체를 가리키는 말로 "매크로옵"을 사용하고 있기 때문에,

똑같이 마이크로옵 두 개를 묶은 단위를 일컫는 개념이지만 AMD와는 달리 "퓨즈드 마이크로옵" 이라는 용어를 사용합니다.

 

카드뉴스-CPU WARS 04.025.jpeg

 

정수 스케줄러(들) 한정으로 6 마이크로옵 이슈라는 것이고, 부동소수점 스케줄러까지 포함하면 총 9 마이크로옵 이슈가 됩니다.

 

카드뉴스-CPU WARS 04.026.jpeg

 

구체적으로,

P6 디코더 3개 -> K8 3개 -> 코어 4개

P6 재정렬 버퍼 40 엔트리 -> K8 72 엔트리 -> 코어 96 엔트리

P6 스케줄러 24 엔트리 -> K8 24 엔트리(정수) -> 코어 32 엔트리

P6 백엔드 5-wide -> K8 백엔드 6-wide -> 코어 백엔드 6-wide

 

즉, K8에 비해 뒤처지던 것들을 모두 같거나 더 높게 개선한 것.

 

카드뉴스-CPU WARS 04.027.jpeg

 

바르셀로나는 최초로 출시된 서버용 다이의 이름이기도 하고, 이후 데스크탑 시장에는 <아제나> 라는 이름으로 소개됩니다.

 

카드뉴스-CPU WARS 04.028.jpeg

 

카드뉴스-CPU WARS 04.029.jpeg

 

카드뉴스-CPU WARS 04.030.jpeg

 

댓글 19

떼삼사

2년 전

새 편 또 나왔다! 심심하던 중 반갑게 봤습니다. 감사합니다.

댓글

Profile

Dr.Lee

2년 전

흐흐 다섯번째 편도 나왔습니다! 보러 가시죠!
http://drmola.com/133321

댓글

Profile

잼아저씨

2년 전

넷버스트는 반면교사로 코어를 낳았으니 새옹지마네요. 반면 암드는 성공속에 ㅠㅠ 10여년간 CPU를 지배해온 인텔의 지명 시리즈, 과연 오랜 참선 뒤에 AMD는 무엇을 보여줄지 진심으로 기대됩니다.

댓글

Profile

Dr.Lee

2년 전

수리사느님의 지난 2년을 평가할 차례...

댓글

Profile

지노

2년 전

하이퍼쓰레딩이 나온지 제법되었군요. 10년동안 탈탈 털렀다니, 이번엔 좀 밟아줄 수 있을까요.

댓글

Profile

Dr.Lee

2년 전

라읍읍... 읍읍읍...

댓글

Profile

RS

2년 전

암드야 힘내!

댓글

Profile

Dr.Lee

2년 전

암드야 힘내! (2)

댓글

Profile

algalon

2년 전

이번 편은 반가운 코드네임들이 많이 보이네요 ㅎㅎ
라이젠이 어떻게 나올지 기대됩니다..

댓글

Profile

Dr.Lee

2년 전

흐흐 에피소드가 지날수록 시간이 현재에 가까워지며 익숙한 이름이 많아질 겁니다.ㅎㅎ
그런 김에 오늘 등록된 다섯번째 편도 보고 가세요! -> http://drmola.com/133321

댓글

RuBisCO

2년 전

저 넷버스트 시절에 펜티엄M 들어가는 보드랑 펜티엄M을 직접 구해다 쓰는 분들이 있었죠. 오버클럭 상태에서 성능이 데스크탑들을 가뿐히 제끼는 물건이어서 성능만으론 가장 좋았는데 불행히도 저같은 일반 소비자가 구하기는 힘들어서... ㅠㅠ

댓글

Profile

Dr.Lee

2년 전

헉 넘나 신기한 것... 아니 펜티엄 M을 "오버클럭할 수 있는" 보드가 있었군요!?!?!

댓글

RuBisCO

2년 전

예. 보드 자체에서 되는 연구소스러운 물건들도 있었고 안되는 물건(노트북 등)이라고 해도 핀 장난질로 클럭을 올릴 수 있었습니다. 문제는 웹에서만 보고 탐은 나지만 구할 수는 없는 그림의 떡이어서... ㅠㅠ

댓글

Profile

앙리앙뚜와

2년 전

프레스캇.. 프레스핫이라고 불리던 그 이름 맞나요
글 재미있게 잘 봤습니다!

댓글

Profile

Dr.Lee

2년 전

넵 그 프레스캇 맞습니다!! 역사적인 녀석이죠 ㅋㅋ

댓글

Profile

SamirDuran

2년 전

암드의 잃어버린 10년...

댓글

Profile

Dr.Lee

2년 전

시무룩...

댓글

Profile

여우비

2년 전

흑흑... 암드야..

댓글

Profile

Dr.Lee

2년 전

흑흑...

댓글

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
 
서버에 요청 중입니다. 잠시만 기다려 주십시오...