AMD K7 마이크로아키텍처

 


1. 개요
2. 아키텍처의 특징
3. 사용 모델


1. 개요


AMD에서 제조한 CPU에 사용된 아키텍처. 인텔의 넷버스트 아키텍처를 의식한건지 퀀티스피드(QuantiSpeed) 아키텍처 라는 이름으로도 불렸으나 일반적으로는 주로 K7 아키텍처로 불렸다. 99년 6월 출시된 "애슬론"부터 사용되었으며 '''데스크톱 CPU 중 최초로 1GHz를 돌파'''하여 펜티엄 3보다 성능상의 우위를 점했다. 그 결과 인텔은 펜티엄 3 1GHz를 급하게 내놓을 수밖에 없었다.
CPU 발열이 이전 세대에 비해서 높았으나 당시 나온 메인보드는 고발열 CPU를 제대로 대비한 설계가 되어 있지 않았다. CPU 코어 자체는 95도까지 작동을 보증했고, 썬더버드의 경우 온도가 80도를 넘어가도 안정적으로 작동했다. 그러나 당시 사용되었던 메인보드가 이 온도를 견디지 못하고 CPU 주변부 장치들의 수명이 급속도로 짧아지던가, 전원부가 과열되어서 이상 전압이 인가된다던가, 이 열에 컨덴서들이 배가 불러 전해액을 토해내는 참사를 일으키기도 하는 등 내구성과 안정성이 문제가 되었다.
이 발열을 잡기 위해 썬더버드 시절 AMD 의 번들 쿨러가 정말로 비범했는데, 히트 싱크의 두께도 두께지만 쿨러가 무려 25T 짜리 였으며 5000rpm 까지 올라가던 미친 성능을 보여줬었다. 이 때문에 웬만큼 쿨러 잘 만드는 회사들 조차 저 미친짓(...)에 할 말을 잃고 버로우를 탈 정도였으며, 발열도 발열 이지만 소음 문제 덕분에 잘만 같은 쿨러 제조업체들이 크는 계기가 된다.
초기에 사용한 슬롯 A는 인텔의 펜티엄 2/3과 같이 코어가 플라스틱 패키지 안에 있었으나, 소켓 A 방식 CPU는 히트 스프레더 없이 코어가 그대로 외부에 노출되어 있었고 CPU의 기능을 제어하는 브리지도 노출되어 있었다. 오버클러킹 하는 사람들에게는 보다 열전도성이 높고 사제 쿨러설치시 오버율을 더 높일 수 있는 기반이기도 하였지만, PC 조립 초보자들에게는 쿨러 설치할 때 코어를 깨먹는 대참사를 불러일으키는 경우도 발생했다. 그저 지못미. 노출된 브리지를 연필로 그냥 이어 주기만 해도 듀론이나 셈프론에서 막혀 있었던 L2 캐시나 배수락이 그냥 풀려 버렸다. 여기에 오버까지 더해 막 굴리다가 CPU가 사망하면 그었던 브리지를 지우개로 지우고 A/S를 받으러 '''뻔뻔하게''' 찾아가는 등 당시 CPU 유통사의 부담이 참 컸었다. 인텔은 기능을 제어하는 브리지를 외부로 노출시키지 않았지만, AMD는 일단 모두 상위 모델을 만든 다음 레이저 컷팅으로 하위 모델을 생산한 후에 브리지를 노출시켜서 가능했다.
노출된 코어, 고발열, 브리지 개조 등 오버클러커들에게는 장난칠 거리가 참 많이 있었던 추억의 CPU이다. 듀론 1.6GHz 버전은 L2 브리지 부분을 연필이나 컨덕티브 펜으로 연결해서 서러브레드 1800+ 탄생! → 와이어트릭이나 점퍼 조절로 FSB를 333MHz로 설정 → 서러브레드 2700+ 탄생!! 물론 발열은 책임지지 못한다. 그리고 L2 캐시 용량에 따른 성능 차이가 생각보다 작아서 듀론이나 셈프론도 성능이 잘 나와주어 솔직히 AMD의 장사수완을 불쌍히 여기는 유저들도 많았던 때이다. 당시 개인 PC 시장을 지배한 건 L2 512KB의 바톤 모델이었다.
K8 마이크로아키텍처가 출시된 후에도 저가 모델인 셈프론 등으로 근근히 연명하다가 2005년 신형 K8 셈프론 등장 이후 단종되었다.
  • 코드네임 리스트
    • K7 Argon
    • K75 Pluto/Orion
    • Thunderbird
    • Palomino
    • Thoroughbred A/B
    • Barton / Thorton

2. 아키텍처의 특징


인류역사에 오래 남을 명-아키텍처라는 평을 받고 있으나, 이상하게도 퀀티스피드 마이크로아키텍처에 대한 설명은 국내에서 보기 힘들다. 일단 K7은 전작인 K6와 비교했을 때 엄청나게 많은 것들이 변화하였는데, 단순 트랜지스터를 많이 박아 넣어 성능 향상을 꾀한 것과는 내적으로 수준이 다르다.
우선 부동소수점 연산 유닛을 파이프라이닝시켜 드디어 전 세대와 비교했을 때 크나큰 부동소수점 연산 성능 향상을 꾀할 수 있었다. 기존 K6 아키텍처는 부동소수점 연산 유닛이 파이프라이닝 되어 있지 않아, A-B 순으로 부동소수점 연산을 처리해야 할 때 A 명령어를 최종 작업 즉 완전히 쓰기 작업하기 전까지는 B 명령어의 연산을 아예 시작조차 하지 못했다. 앞선 명령어의 처리가 끝나기 전까진 다음 명령어엔 아예 손도 대지 못했던 것. 하지만 드디어 파이프라이닝이 이루어지면서 A 명령어가 작업단계를 한 단계 통과하면, 바로 다음 명령어인 B명령어가 그 빈 단계로 들어가 쭉 이어지며 연산을 수행할 수 있게 되었다. 또한 부동소수점 연산 유닛이 기존 1개에서 파이프라이닝 된 3개(3개 중 하나는 메모리 접근 명령어 담당이다.)로 늘어나 비약적인 부동소수점 연산 능력 향상을 이룰 수 있었다. 기존 세대의 CPU가 펜티엄3를 뛰어넘는 고클럭과 ipc를 가지고 있음에도 게임 성능과 멀티미디어 성능이 후달려 저평가 받았던 걸 생각하면 전 세대의 단점을 고친 것이다. 이로써 K7은 최대 3개의 부동소수점 연산 명령어를 투입 가능해 병렬수행이 가능하게 되었다.
또한 정수 연산 장치는 기존 2개에서 3개로 늘려 수가 늘어난 만큼 정수연산 성능이 향상되었다. 이 사실에 주목해야 할 점은 현재의 AMD ZEN 마이크로아키텍처에서도 쓰이고 있는 '매크로옵' 기술과 AMD 스타일의 정수연산장치가 이 때부터 도입되었다는 사실이다. 우선 AMD 스타일의 정수연산장치가 가지고 있는 특징이 어떤지 알아보자. AMD 스타일의 정수연산장치는 하나의 정수연산유닛과 유효주소생성유닛이 한 세트를 이루어 형성된다. 즉 AMD의 정수연산처리는 기본적으로 정수연산과 메모리접근이 한 세트를 이루어 처리된다는 소리다. CPU는 단순히 주어진 명령어만을 계산하는 일을 하지 않는다. 지속적으로 메모리에 접근해 필요한 값을 불러오고 저장하는 작업도 한다. 하지만 단순무식하게 설명해서 별개의 작업을 왔다리갔다리하면서 처리하면 일을 빨리 끝낼 수 있을까? 그래서 AMD는 이러한 문제를 해결하기 위해 새로운 기술을 이 아키텍처에 접목시킨다.
그것이 바로 매크로옵이다. 매크로옵은 하나의 정수 연산 마이크로옵(단순히 말하자면 작은 명령어)과 하나의 메모리 접근 마이크로옵을 한 세트로 합쳐, 하나의 매크로옵(단순히 말하자면 큰 명령어)으로 만들어버려 성능향상을 노렸다. 하나의 매크로옵은 하나의 정수연산장치에 대응한다. 하나의 정수연산장치는 앞서 말했듯 하나의 정수연산유닛과 하나의 유효주소접근유닛으로 이루어져있다 했으니 바로 한 번에 정수 연산 작업과 메모리 접근 작업을 끝낼 수 있게 된다. 기존엔 정수연산 하고 그 다음에 메모리 접근 하고 이러느라 2텀 걸릴걸 1텀 만에 끝낼 수 있게 된데다가, 일을 왔다리 갔다리 할 필요도 없어서 텀을 더 줄일 수도 있으니 (알다시피 메모리는 CPU보다 속도가 느리니 메모리 접근 하느라 대역폭을 마구마구 날려먹는 일이 생긴다.) 정수연산 - 메모리접근 -정수연산 - 메모리접근 -정수연산 - 메모리접근 이런 식으로 6개의 마이크로옵이 이상적으로 이어지는 상황에선 2배 넘는 성능을 낼 수 있게 된다. 정수 연산과 메모리 접근이 함께 이어지지 않을 땐 어떻게 일을 처리할지 의문이 갈 수도 있다. 정수연산 - 정수연산 순으로 마이크로옵이 들어올 수도 있기 때문. 이 땐 무無옵 처리를 해버려 하나의 마이크로옵을 무옵과 짝지어버린다. 정수연산 - 정수연산 - 정수연산이 이어지는 상황에선 정수연산을 무옵과 짝지어 매크로옵으로 만들어버리고 그걸 바로 정수연산장치에 보내버린다. 그러면 정수연산유닛은 정수 연산 마이크로옵을 처리하고, 유효주소 접근유닛은 무옵을 받아들고 아무것도 주어진 명령이 없음을 깨닫고 다음 매크로옵이 들어올 때 까지 한 텀 대기한다.
정수연산 - 메모리접근이 한세트로 3연타 들어오는 이상적인 상황이 어떤 상황인지 궁금하지 않은가? 그 이상적인 상황이 보통은 정수연산을 하면서 메모리 접근할 일이 많은 마이크로소프트 오피스 쓸 때... 정수연산 - 메모리접근 조합이 보통은 워드프로세서나 스프레드시트 같은 사무용 프로그램에서 자주 뜬다. 값이 입력되었는지 지금 값이 어떤지 읽어내야 하므로 연산 이후에 자꾸 메모리를 들어갔다 와야하기 때문.
그 다음으론 정수 스케줄러와 부동소수점 스케줄러가 새로이 도입되어 연산 되기 전에 CPU로 들어온 명령어를 효율적으로 처리할 수 있게 하였다.
CPU에서 가장 전력을 많이 먹고 성능에 크게 영향을 미친다는 디코더도 매크로옵 기술의 도입으로 변화를 겪었다. 디코더는 2가지 모드로 작동하는데 하나가 DirectPath 모드로 1개의 매크로옵으로 변환되는 명령어를 처리하고 VectorPath 모드는 2개의 매크로옵으로 변환되는 명령어를 처리한다. 앞서말한 이상적인 상황과 같이 3개의 매크로옵이 줄줄이 나오는 명령어를 처리할 수 도 있게 특별한 마이크로코드를 실행할 수 있게 하는 엔진을 별도로 장착하였으나 애초에 이런 일이 생길 일이 거의 없으니 쓰일 일이 거의 없다. 이렇게 해서 나온 무수한 매크로옵들을 담아내 백엔드로 전송하는 '명령어 통제 유닛'의 크기가 K6와 비교했을 때 무려 3배가 늘었다.
아무튼 이 때 도입된 것(특히 매크로옵)들은 두고두고 개량을 해 현재 젠 아키텍처에 가서도 쓰인다.
퀀티스피드 아키텍처 자체가 특출나게 잘 만든 것이다 보니 꾸준히 개량과 개조를 거듭해서 K10.5 아키텍처 갈 때까지 꾸준히 사골국 우려먹기 당한다.

3. 사용 모델


[각주]