머피의 작업장 이글루본점 매장은 www.mmk.pe.kr
by Muphy 이글루스 피플
rss

skin by 이글루스
H.I.C. 4화 CPU
H.I.C.입니다.

하드웨어에 관심이 있으시면 펼쳐보세요. 좀 깁니다. :)
초보자 대상 PC 월간지인 'PC사랑'에 기고하려고 써놓은 글이라 지나치게 기술적이라거나 어려운 내용은 포함시키지 않으려고 노력했을 것이........라고 생각하지만 글의 성격이 성격인지라 기술적 내용이 안들어갈 수는 없다 보니 어려운 부분이 없다라고 생각하기는 힘들겠군요. -_-
틀린 부분이 있으면 가차없이 지적해주시는 것도 환영이에요. =ㅂ=
트랙백은 환영하지만 타 사이트로의 복제, 인용, 펌프질 등은 강력히 응징합니다.

주의 : more 안에 넣어두는 부분의 제한분량이 이전에 비해 매우 크게 늘어났기 때문에 스크롤의 압박이 매우 강렬합니다.




CPU의 이름이 중앙처리장치(Central Processing Unit)라는 것은 너무나 잘 알려진 사실이지만, 그 단순한 이름 안에 숨어있는 여러가지 용어는 사용자들의 머리를 아프게 한다. 이번에는 CPU와 관련된 용어들을 정리해보자.
인텔의 펜티엄4 프로세서와 AMD의 애슬론64 프로세서를 중심으로 이야기할 것인데, CPU는 관련된 내용이 매우 많아서 카탈로그보다는 홈페이지에 있는 제품설명 요약(Product Brief) 부분을 참조하였다.


인텔 홈페이지에서 볼 수 있는 펜티엄4 프로세서 요약설명




AMD 홈페이지에서 볼 수 있는 애슬론64 프로세서 요약설명



프로세서라고 하면 떠오르는 용어가 너무나도 많다. 대표적인 축이 될 수 있는 용어를 골라내면 아래와 같다. 그 외의 세부적인 부분은 주요 용어와 연관지어서 설명할 것이다.
1. 마이크로아키텍쳐(microarchitecture)
2. System Bus Speed, Core Speed
3. Process Technology
4. Cache
5. PGA, LGA
6. SSE
7. Hyperthreading
8. 64bit 프로세싱 기술(AMD64, EM64T)

1. Microarchitecture

가장 기본적인 것부터 시작해보자.
아키텍쳐라는 것은 ‘기본 구조 또는 구성’ 등을 의미한다. 프로세서와 관련된 아키텍쳐에는 두가지가 있는데, 바로 프로세서 아키텍쳐(processor architecture)와 마이크로아키텍쳐이다. 여기서, 프로세서아키텍쳐는 프로그래머가 사용할 수 있는 명령어들과 레지스터, 또는 메모리에 의존하는 데이터의 구조 등을 정의하고 있으며, 이는 곧 ‘프로세서가 외부와 소통할 수 있는 방식’을 의미한다. 그리고 마이크로아키텍쳐는 실리콘(웨이퍼) 위에서 프로세서아키텍쳐를 어떠한 형태로 구현하였는가를 뜻하는 것으로, ‘외부로부터 받아들인 정보를 이해하고 실행하는 방식’이라고 생각하면 얼추 들어맞는다. 예를 들어서, 펜티엄4는 Netburst 마이크로아키텍쳐에 기반하고 있으며 애슬론64는 x86-64를, 펜티엄III는 P6라는 마이크로아키텍쳐를 그 기본으로 삼고 있는데, 마이크로아키텍쳐라는 것이 결국은 ‘프로세서 아키텍쳐를 구현하는 방식’이기에 이들 모두는 오래전부터 사용해 온 x86 명령어를 실행한다는 큰 틀 안에 존재한다.

마이크로아키텍쳐는 프로세서 아키텍쳐의 부분집합과 같다


즉, 프로세서의 마이크로아키텍쳐가 무엇이건 상관없이 그 프로세서가 x86 프로세서 아키텍쳐라는 큰 틀 안에 있기만 한다면 사용자는 윈도우를 설치할 수 있고, 게임을 돌리거나 각종 프로그램을 사용할 수 있다.
프로세서아키텍쳐가 ‘프로세서가 외부와 의사를 소통하는 방식’을 규정하는 것이라면, 마이크로아키텍쳐는 그렇게 받아들인 정보를 해석하고 실행하는 방식을 규정하고 있다. 예를 들어서 넷버스트 마이크로아키텍쳐에는 길어진 파이프라인이라던가, 실행추적 캐시라던가 하는 고유의 기술이 적용되어 있으며, 이러한 신기술들을 통해서 마이크로아키텍쳐는 성능을 강화시켜나간다.

현대적 CPU의 시조 격이라고 할 수 있는 최초의 6세대 프로세서인 펜티엄 프로. 하나의 패키지 안에 다수의 칩을 장착하는 MCM(Multichip Module) 기법 역시 펜티엄 프로에서 처음 적용되었다.


최근의 CPU들을 중심으로 살펴보자면 펜티엄 III는 펜티엄 프로(Pentium Pro)에서 첫 선을 보였던 P6 마이크로아키텍쳐의 연장선 상에 존재하는데, P6 아키텍쳐는 캐시를 CPU 안에 집적시켜서 캐시의 속도를 대폭 끌어올리는 DIB(Dual Independent Bus), 동적실행 등의 기술이 처음으로 적용되었다. 이러한 기술은 현재의 프로세서에서도 널리 사용되는 것으로 그 이후에 등장하는 모든 프로세서가 사용하는 기술의 근간이 되었다. 펜티엄 II, III 모두 P6 마이크로아키텍쳐를 사용한다. AMD는 K6 프로세서까지 인텔의 펜티엄에 사용되었던 P5 마이크로아키텍쳐를 개량해서 사용했으나 이후 넥스젠(NexGen)의 기술을 흡수하면서 K7이라는 마이크로아키텍쳐를 내놓았다. 그리고 이것은 현재의 Athlon, Duron 프로세서들의 근간이 된다. K7 마이크로아키텍쳐는 인텔의 P6 마이크로아키텍쳐의 강화판 같은 것으로 대용량의 L1 캐시라던가 강화된 연산유닛 등을 통해서 그간 AMD 프로세서의 취약점으로 지적받아왔던 실수연산유닛의 성능을 대폭 끌어올려주었으며, 이를 통해 인텔에 비해서 상대적으로 낮은 성능을 가진 프로세서라는 인식을 타파하는 데에 일조하였다.
펜티엄4에서부터 적용되기 시작한 넷버스트 마이크로아키텍쳐는 최근에 와서야 그 궁극적인 형태를 내비치기 시작했다. 초창기에 사용되었던 윌러멧(Willamette) 코어는 넷버스트 아키텍쳐가 적용되었다기는 하나 애초에 설계할 때 계획되었던 트랜지스터를 모두 집적시키지 못했으며 그 때문에 성능은 기대치에 못미치기도 했지만, 본래부터 깊은 파이프라인을 사용한 앞선 수퍼스칼라 기법에 최적화되어 있는 넷버스트 아키텍쳐가 CPU의 클럭이 높아지면서 점점 제 성능을 발휘하였고 하이퍼스레딩까지 적용된 현재에 이르러서는 매우 높은 완성도와 성능을 보이고 있다.

AMD의 회심작, 옵테론 프로세서


Athlon에서부터 인텔과는 완전히 다른 노선을 걷기 시작한 AMD는 64bit 연산이 가능한 프로세서를 인텔보다 먼저 ‘대중화’ 시킨다는 회심의 전략을 가지고 x86-64, 통칭 AMD64라고 불리는 마이크로아키텍쳐에 기반한 옵테론/애슬론64 프로세서를 시장에 내놓았다. (x86 프로세서아키텍쳐와 관련된 64bit 연산 프로세서서로는 사실 인텔이 먼저 Itanium을 내놓았지만, Itanium은 사실 기존의 x86에서는 약간 벗어난 IA-64라는 프로세서아키텍쳐에 기반하고 있으며 이 때문에 x86의 틀 안에 존재한다고 보기에는 무리가 있는데다가 높은 가격으로 인해서 대중화되기는 어려웠다.)

왜 펜티엄부터는 586 등의 이름을 사용하지 않을까?

지금도 일부에서는 ‘386 호환기종’ 등의 용어를 기억하는 사람들이 많다. 특히 펜티엄 프로세서를 ‘586’이라고, 부르고 그 이후의 제품들을 686 내지는 786 등이라고 불러 줘야 어떤 제품인지 감을 잡는 초보자들도 있다. 그런데 왜 인텔은 펜티엄부터 586이라는 이름을 사용했을까?
그 이유는 AMD와의 법적 분쟁 때문이다. 486 프로세서가 주류이던 때, AMD나 Cyrix 등의 회사가 인텔의 386, 486 프로세서와 호환되는 프로세서를 만들어서 재미를 보고 있었다. 그런데 인텔의 입장에서는 자신들이 처음 만들어서 확립시킨 ‘x86’이라는 용어를 다른 회사들이 사용하는 것이 영 꺼림칙했고, 특히 486에 들어와서는 AMD 및 Cyrix가 선전하면서 인텔의 시장점유율을 야금야금 까먹고 있어서 인텔은 법원에 ‘486’이라는 이름을 자신들만 사용하게 해 달라고 소송을 넣었다. 그러나 법원의 판결은 AMD의 손을 들어주었는데, 이유는 ‘~86’이라는 표현이 널리 자리잡았고, 그래서 486이라는 이름을 인텔만 사용하게 해 줄 수는 없다는 것이었다.

인텔은 586 대신 ‘Pentium’이라는 이름을 선택하였다


그래서 인텔은 자신들의 제품을 타사와 차별시키기 위해 다른 이름을 고안했는데, 그것이 바로 Pentium이다. Pemtium의 어원을 보자면 ‘5’를 뜻하는 ‘Penta’와 인텔의 ‘i’, 그리고 금속을 뜻하는 접미사인 ‘~um’이 조합된 것이다. 즉, ‘인텔의 제 5세대 프로세서’라는 의미를 담고 있다. 이러한 명명법 때문에 많은 사람들은 P6 코어를 사용한 신제품이 출시될 때 ‘헥시움’ 등의 이름을 가질 것으로 예상했으나 인텔은 ‘Pentium’을 자사의 고유 브랜드로 정착시키려는 정책을 가지고 ‘Pentium II’로 명명했다. 그리고 그러한 명명법이 지금까지 계속 이어지면서 ‘Pentium III, Pentium 4’까지 계속되고 있다. 그 이후로 여러 CPU 제조사들이 자신들만의 독특한 이름을 통해서 특징을 강조하고 인지도를 높이기 위한 경주를 하고 있다. 인텔이 Pentium을 내세우는 것 처럼 AMD의 경우 Athlon이라는 브랜드를 자사의 전면에 내세우고 있으며, 서버 시장에서는 인텔의 Xeon, Itanium과 AMD의 Opteron이 각축을 벌이고 있다. 그리고 모바일 시장에서는 인텔의 Pentium-M과 트랜스메타의 Crusoe, Efficion 등이 경합중이다.


최신 마이크로아키텍쳐들에 적용되어 있는 독특한 기술들

카탈로그에 나오는 것 외에, 이전의 마이크로아키텍쳐들이 어떠한 기술을 적용해 왔는지 몇몇 중요한 기술들을 살짝 들여다보자.
1. Superscalar(수퍼스칼라) 실행
수퍼스칼라 실행은 x86 계열에서는 펜티엄 프로세서에 처음 적용되었는데, 이전에는 RISC 계열 프로세서에서만 사용되던 것이다. 상대적으로 ‘간결한’ 명령어를 사용하여 명령어가 실행되는 파이프라인을 구성함으로써, 한번에 다수의 명령어를 처리한다는 것이다. 펜티엄 프로세서에서는 2개의 파이프라인이 사용되었으며, 이 때문에 펜티엄 프로세서는 이론상으로는 같은 클럭의 486 프로세서 2개와 같은 역할을 수행할 수 있었다. 현대의 고성능 프로세서에서는 명령어를 더욱 세분화하고 파이프라인의 깊이를 늘림으로써 더욱 많은 파이프라인을 가지게 되었고 이는 성능의 향상으로 이어지게 된다. 그리고 이러한 이유로 인해서 펜티엄에서부터는 RISC와 CISC의 구분이 애매모호해지는 결과를 낳았다.

2. 동적실행(Dynamic Execution)
동적실행은 인텔/AMD 양사의 6세대 프로세서부터 공히 적용되기 시작한 것으로, 프로세서 내부에서 일어나는 지연시간을 최소화하기 위한 기법을 뭉뚱그려서 부르는 말이다. 프로세서는 메모리에 비해서 속도가 훨씬 빠르기 때문에 메모리에서 받아들이는 데이터만 처리하고 있는다면 실제 성능을 제대로 발휘할 수 없으며, 데이터를 기다리기보다는 필요한 작업을 미리 찾아내서 수행함으로써 프로세서가 낭비하는 시간을 최소화하고 이를 통해 성능을 끌어올리겠다는 것이다. 그래서 펜티엄 프로/II/III, AMD K6/K6-2/K6-III 등의 프로세서는 전 세대 프로세서에 비해서 매우 강력한 성능을 가지게 되었고, 동적 실행을 6세대 마이크로아키텍쳐에 도입된 신기술의 정수라고 하는 이유가 바로 여기에 있다. 또한 동적 실행은 최신의 프로세서들의 성능향상기법의 기본이 되기도 해서 6세대의 마이크로아키텍쳐는 프로세서의 고속화 과정에서 매우 큰 획을 그은 것으로 평가된다. 동적 실행에는 분기예측, 데이터흐름분석, 예측실행이라는 세가지가 포함된다.

인텔 최후의 6세대 프로세서인 펜티엄 III


분기예측(Branch Prediction)기능은 본래 고성능의 메인프레임 등에서 사용되는 기술이었으나 펜티엄에서 처음 일반 사용자용 CPU에 도입되기 시작하였다. 분기예측기능은 간단히 ‘다음에 처리될 명령어가 무엇인지 예측하여 그 명령어에 필요한 데이터를 미리 준비할 수 있게 하는 기능’이라고 할 수 있다. 분기예측기능이 없을 경우 CPU는 ‘먼저 들어온 데이터를 먼저 처리하는’ 순서를 따른다. 그러나 명령어 중에서 CPU에 더 늦게 전달되었다 하더라도 먼저 수행되어야만 다음 작업들을 더 원활히 진행시킬 수 있는 것이 있으며, 분기예측기능은 이러한 명령어를 찾아내서 대기시켜놓는다. 그래서 CPU의 명령어 실행 파이프라인은 실행해야 할 데이터를 기다리는 시간을 최소화하면서 최대의 속도로 동작할 수 있다. 펜티엄 프로부터 도입된 P6 코어에서는 여러개의 분기를 동시에 예측할 수 있도록 되어서 더욱 높은 성능을 구현하였다.
데이터흐름분석(dataflow analysis)과 예측실행(Speculative Execution)은 CPU안에 있는 추론/실행 유닛에 의해서 이루어진다. 이 유닛은 CPU에서 데이터가 처리되는 과정을 감시하면서 이를 분석한다. 그러다가 실제 예정된 명령어 수행순서에 관계없이 명령어 처리과정을 최적화시킬 수 있는 명령어를 찾아내고 이것을 실제 프로그램 카운터가 실행되기 이전에 미리 실행한다. 이를 통해 ‘놀고 있는’ 파이프라인을 없애고 전체적인 프로그램 실행을 최적화하는 것이다.

3. DIB(Dual Independent Bus)
P6 코어에서 처음 적용되어서 현재까지 이어져 내려오는 가장 큰 특징중의 하나인 DIB는 프로세서 버스의 데이터 흐름에서 많은 부분을 차지하는 캐시를 별도의 버스로 연결하여 프로세서 버스의 성능을 끌어올린다는 목적 하에 만들어졌다.

펜티엄 프로세서의 경우 L2 캐시는 CPU와 연결되어 있기는 하지만 칩셋과 CPU가 연결되는 버스(host bus)를 같이 공유하고 있었다. 그 때문에 상대적으로 매우 빈번하게 이루어지는 캐시로의 데이터 전송이 CPU가 가지는 호스트 버스의 대역폭을 상당부분 잡아먹는 구조였다. P6 코어에서는 이러한 문제를 해결하기 위해서 CPU 패키지 안에 L2 캐시를 탑재하고 CPU 코어와 L2 캐시는 별도의 버스로 직접 이어주는 방법을 사용하였는데, 이를 통해서 캐시는 더욱 고속화된 버스를 확보할 수 있게 되었고, CPU의 호스트 버스는 캐시로 인한 대역폭 저하를 없앨 수 있어서 CPU는 더욱 고속화되었다. 현재의 거의 모든 CPU들은 CPU 패키지 안에, 또는 CPU의 다이 위에 L2 캐시가 집적되어 있다.


2. System Bus Speed, Core Speed

386, 또는 486DX 프로세서까지만 해도 메인보드에 있는 칩셋과 프로세서의 동작 클럭이 동일했다. 그러나 칩셋 및 각종 주변기기에 비해서 프로세서의 동작속도는 그 진보가 월등하게 빠르게 이루어졌기 때문에 주변기기와 동일한 동작클럭을 갖는다는 것은 점점 어려운 일이 되어갔으며, 이를 해결하기 위한 방법으로 인텔은 CPU의 내부에 ‘배율’을 적용시켜서 CPU가 내/외부적으로 서로 다른 속도로 동작하도록 만들었다. 1992년 3월에 처음 등장한 486DX2 프로세서는 외부적으로는 20MHz로 동작하지만, 내부에서는 그 두배인 40MHz로 동작하였다. 이 기법은 이후의 프로세서에 모두 적용되어서, 펜티엄4의 경우 프로세서는 외부적으로 800MHz의 버스로 동작하지만, 내부적으로는 수 GHz에 달하는 높은 동작주파수를 갖는다.

CPU에 연결된 버스가 칩셋으로 연결되는 외부 버스, 캐시로 연결되는 내부 버스로 나뉘면서 FSB/BSB의 구분이 생겨났다


이 때, 프로세서의 외부 버스를 호스트 버스(host bus), 시스템 버스(system bus), 또는 FSB(Front Side Bus)라고 하며, 시스템 버스의 동작속도를 System Bus Speed라고 한다. 그리고 CPU의 내부적인 동작속도를 Core Speed 또는 코어클럭(Core Clock, 정확히 이야기하자면 Core Clock Speed 또는 Core Clock Frequency이지만 편의상 코어클럭이라고 하자)이라고 부른다. 한가지 유념할 것은 FSB 자체는 ‘버스’를 지칭하는 것이기에 ‘FSB가 400MHz이다’라는 표현 보다는 ‘FSB의 동작주파수가 400MHz이다’라고 하는 것이 정확하다. 참고로, FSB에 대한 상대개념으로 BSB(Back Side Bus)라는 것이 있는데, BSB는 프로세서와 L2 캐시를 연결하는 버스를 지칭한다. 펜티엄 Pro 또는 펜티엄 II, 펜티엄 III(Katmai 코어)를 보면 CPU 안에 코어와 캐시가 분리되어 있는 것을 볼 수 있는데(펜티엄 Pro의 경우 1개의 칩처럼 보이지만, 이는 하나의 패키지 안에 여러개의 칩을 같이 집어넣는 MCM 기술을 적용하였다.) 이러한 프로세서들에서 BSB라는 용어가 사용된다. 예를 들어 펜티엄 II 및 Katmai 코어의 펜티엄 III는 외부적으로는 FSB가 100MHz로 동작했지만, 내부의 BSB는 프로세서 코어 클럭 주파수의 1/2로 동작하였다.
그래서 CPU의 코어 클럭은 FSB의 동작주파수에 ‘일정 배율’을 곱한 것으로 결정된다. 예를 들어서 3.0GHz의 펜티엄4 프로세서의 FSB는 200MHz로 동작하는데, CPU는 내부적으로 15의 배율을 갖고 3000MHz로 동작하는 것이다. L2 캐시를 CPU 위에 실장하기 시작한 이후 일부 프로세서를 제외하면 거의 다 L2 캐시가 CPU와 같은 클럭으로 동작하며 이를 통해 캐시와 CPU 사이에서는 데이터 전송이 매우 빠른 속도로 일어난다.

FSB의 동작클럭과 동작효율

흔히 잘못 알고 있는 것 중 하나가 FSB의 ‘동작 클럭’이다. 펜티엄4의 경우 FSB의 동작 클럭은 100/133/200MHz이지만, 여기에 QDR(Quadruple Data Rate) 기술을 적용하여 한번의 클럭으로 4회의 데이터 전송을 이룬다. 그래서 동작클럭의 4배인 400/533/800MHz로 동작하는 것과 같은 효율을 갖는다. 이 때문에 흔히 4배가 된 400/533/800이 실제 동작속도인 것으로 알고 있는 경우가 많으나, 이것은 어디까지나 ‘효율’에 관계된 것임을 알아두어야 한다. 이 때문에 일부에서는 펜티엄4 프로세서가 가지는 버스를 QDR 버스라고 칭하기도 한다.
마찬가지로 DDR 메모리 역시 실제 동작속도와 ‘효율’은 2배의 차이를 갖는다.


3. Process Technology

Process Technology는 번역하자면 ‘공정기술’이 되는데, 이것은 비단 CPU에만 적용되는 것이 아니라 모든 반도체에 공통적으로 사용되고 있는 용어이다. 간단히 설명하자면 ‘회로를 만드는 데 사용된 기술의 정밀도’를 의미한다. 흔히 반도체에서 사용하는 회로의 선폭이 머리카락의 몇천 혹은 몇만분의 1이라고 이야기하는 것을 볼 수 있는데, 공정기술은 바로 그러한 ‘가느다란 회로’를 만들어 주는 것을 말한다. 현재 사용되고 있는 펜티엄4나 애슬론64 등의 프로세서는 0.13μm 또는 90nm의 공정기술을 사용하는데, 이것은 회로의 선 폭이 0.13μm 또는 90nm라는 것을 의미한다. 참고로 사람 머리카락의 굵기는 약 120μm 정도인데, 현재의 프로세서들에 집적된 회로의 선 폭의 900배~1300배에 달하는 것이다.
공정기술이 미세화된다는 것은 곧 회로 선폭이 좁아진다는 것을 의미한다. 최신의 프로세서인 프레스캇 코어의 펜티엄4 또는, 윈체스터 코어의 애슬론64 프로세서는 90nm의 공정기술을 사용하고 있다. 회로선폭이 좁아지면 좁아질수록 좁은 공간 안에 많은 트랜지스터를 집적할 수 있다. 간단한 산술적 계산으로도 90nm 공정기술은 0.13μm 공정에 비해서 회로 선폭이 70% 정도에 불과하기 때문에 같은 면적에 2배에 달하는 트랜지스터를 집적시킬 수 있다.

단순한 산술적 계산만으로도 90nm 공정에서는 0.13μm공정에 비해 같은 공간 안에 2배의 트랜지스터를 넣을 수 있음을 알 수 있다


트랜지스터의 수가 많아진다는 것은 그만큼 프로세서의 성능이 향상된다는 것을 의미하며, 현재의 프로세서 중에서는 수억개에 달하는 트랜지스터를 집적한 제품도 발견할 수 있다.(펜티엄4 익스트림 에디션 1억 7800만개, 인텔 Xeon MP 최대 2억 8600만개, 인텔 아이태니움 4억 1천만개. 이러한 급격한 트랜지스터 수의 증가는 캐시의 용량 때문이기도 하다. 자세한 것은 캐시 항목에서 다시 설명할 것이다.) 인텔이 처음 만들었던 마이크로프로세서인 4004가 2300개(2300만개가 아니라 2300개)의 트랜지스터만을 집적하고 있던 것에 비하면 집적도가 9~10만배로 늘어난 것이다.

무려 4억개가 넘는 트랜지스터를 집적하고 있는 인텔 Itanium 프로세서



2300개의 트랜지스터를 집적한 인텔 최초의 마이크로프로세서, 4004



무어의 법칙

대다수의 독자들이 ‘무어의 법칙(Moore's Law)’이라는 말을 한번씩은 들어 보았을 것이다. 무어의 법칙을 만들어낸 고든 무어(Gordon Moore)는 인텔의 공동창립자 3인 중의 한명으로 페어차일드반도체에서 연구원으로 있다가 인텔을 창업하였다.

인텔 8080 마이크로프로세서가 완성된 1978년, 인텔의 공동창립자 3명이 자리를 함께 했다. 왼쪽부터 앤드류 그로브(Andrew Grove), 로버트 노이스(Robert Noyce), 고든 무어(Gordon Moore). 아래에 펼쳐진 도면은 8080 프로세서의 도면이다.


그가 페어차일드반도체에 근무하던 1965년, ‘전기공학의 미래(The Future of Integrated Electronics)’라는 글을 발표한 적이 있다. 이 글에서 무어는 ‘반도체의 트랜지스터 집적도는 매 2~3년마다 2배씩 증가할 것이다’라고 언급했는데, 이것이 바로 무어의 법칙이다. 무어의 법칙은 모든 반도체에 대해 공히 적용되며, 흥미로운 것은 반도체 이외의 스토리지(HDD 등)도 이 법칙을 따른다는 것이다. HDD의 용량 변화 추세를 살펴보면 무어의 법칙을 따르고 있음을 쉽게 확인할 수 있다.

고든 무어가 발표한 무어의 법칙을 나타내는 그래프. 이 도표는 무어가 발표한 바로 그 글에 실렸던 것이다.



고든 무어가 무어의 법칙을 고안하면서 직접 그렸던 것으로 추정되는 그래프. 가로축은 집적회로의 트랜지스터 집적 수(number of components per integrated circuit), 세로축은 트랜지스터 1개당 소요되는 상대적 생산비용(relative manufacturing cost per component)을 의미한다.


한때 알루미늄에 기반하는 현재의 제조공정이 한계를 맞게 됨에 따라 무어의 법칙이 가지는 수명이 끝나는 것은 아닌가 하는 우려도 샀지만, 다행스럽게도(?) 현재까지 무어의 법칙은 꾸준히 그 영향력을 발휘하고 있다.


사용하는 사람의 입장에서도 공정 미세화는 반길만한 것이지만, CPU를 제조하는 입장에서는 이것이 더욱 중요하다. ‘같은 공간 안에 2배의 트랜지스터를 집적할 수 있다’면, 당연히 같은 프로세서라면 동일 면적에서 2배의 수량을 생산할 수 있다는 것이 된다. 즉, 동일한 시간 안에 수 배의 칩을 만들어낼 수 있으며, 이것은 높은 수익을 가져다준다.

펜티엄4 코어별 다이 크기 비교


위의 사진은 펜티엄4의 각 코어별 다이의 크기를 비교한 사진이다. 각 코어의 트랜지스터 수와 비교해 보면 다음과 같다.

프레스캇 코어가 트랜지스터 수는 1억 2천 5백만개로 윌라멧 코어에 비해서 약 3배가량 많지만 다이 면적은 오히려 1/2 정도로 줄어들었음을 알 수 있다. 즉, 동일한 크기의 웨이퍼에서 프레스캇 코어는 2배의 양을 생산할 수 있는 것이다.

프로세서 제조업체들이 매달리는 기술 향상에는 제조공정의 미세화 외에 실리콘 웨이퍼의 대형화가 있다. 반도체의 제조는 실리콘 웨이퍼 위에다가 빛을 사용하여 회로를 인쇄하는 것으로 시작되는데, 이 때 웨이퍼가 넓으면 넓을수록, 그리고 공정이 미세화되면 될수록 많은 칩을 생산할 수 있다. 가장 큰 웨이퍼로는 인텔, 삼성, AMD 등이 사용하는 12인치(300mm)의 지름을 갖는 웨이퍼가 있으며, 이들 회사는 300mm 웨이퍼의 사용비율을 점차적으로 늘려 나가고 있다.

300mm 웨이퍼를 보여주고 있는 인텔의 연구원


공정기술의 미세화로 얻을 수 있는 이득은 단순히 트랜지스터 개수의 증가에만 그치지 않는다. 공정이 미세화됨에 따라 사용하는 트랜지스터라던가 IC 내부의 소자 자체의 크기가 작아진다. 소자가 작아지면 그만큼 낮은 전압과 전력으로도 해당 소자를 구동시킬 수 있다. 그래서 CPU의 구동 전압을 낮출 수 있게 된다. 초창기에 등장했던 펜티엄 프로세서의 경우 0.8μm 공정으로 제조되고 5V의 전압을 사용했지만, 최신의 펜티엄4 프로세서는 90nm 공정으로 만들어지며 1.55V 내외의 전압으로 동작한다. 사용전압이 낮아지면 그만큼 소비전력이 줄어들고 이에 따라 발열량도 줄어들게 되어서, 이전 세대의 프로세서에 비해서 높은 동작클럭을 가지면서도 소비전력은 상대적으로 크게 증가하지 않는다.
전력소비를 매우 중요하게 여기는 모바일 프로세서의 경우 더욱 낮은 전압을 사용하는데, 인텔의 펜티엄-M ULV 프로세서의 경우 1V에도 못미치는 전압을 사용하기도 한다.(Intel Pentium M 738 프로세서, 배터리 최적화 모드에서 0.956V로 동작)
펜티엄4를 예로 들어 보자. 펜티엄4는 초기의 윌라멧(Willamette) 코어에서 0.18μm 공정을 사용하였고, 노스우드(Northwood)에서는 0.13μm를, 최신의 프레스캇(Prescott) 코어에서는 90nm(=0.09μm) 공정을 사용한다. 동일 클럭에서의 TDP(Thermal Design Power : 해당 프로세서의 쿨링 솔루션이 충족해야 하는 방열 열량)를 비교해 보면 재밌는 것을 발견할 수 있다. 윌라멧/노스우드 코어 모두 2.0GHz의 프로세서가 존재한다. 노스우드에서는 이를 구별하기 위해서 A자를 붙여 2.0A GHz라고 했던 것을 기억하는 독자도 있을 것이다. 이들 프로세서는 동일한 동작클럭을 가지지만, 윌라멧은 75.3W의 TDP를 가지는 반면, 노스우드에서는 54.3W로 거의 30% 가까이 소비전력이 줄어들었다. AMD 역시 마찬가지여서 공정이 미세화 될때마다 소비전력이 줄어듦을 볼 수 있다. 다만, 소비전력은 동작클럭에 비례해서 증가하는 것이며, 같은 클럭에서 낮은 소비전력을 보인다 하더라도 클럭 향상이 워낙 급격히 이루어지고 있기 때문에 전체적으로는 서서히 늘어나는 추세이다.
현재 AMD와 인텔, 트랜스메타를 비롯하여 여러 반도체 제조사들에서 90nm 공정을 도입하고 있으며, 상대적으로 미세공정 도입이 쉬운 메모리 반도체의 경우 삼성이 65nm 공정으로 앞서나가고 있다. 인텔은 내년이나 내후년 경 65nm 공정을 도입하고 이후 2년 간격으로 45nm와 32nm 공정을 도입할 계획을 가지고 있다. 한편, 300mm 웨이퍼는 당분간 계속 유지될 것 같다. 단결정 실리콘을 형성하는 과정에서 현재의 기술로는 직경 300mm의 실리콘 덩어리를 제조하는 것이 한계에 가깝기 때문이다. 인텔은 2015년 경에 가서야 450mm의 웨이퍼를 도입할 수 있을 것으로 내다보고 있다.

미크론? 마이크로미터?

요즘 인텔 프레스캇(Prescott)의 등장과 함께 'nm'(나노미터)라는 단위가 자주 보이기 시작했다. 잠시 프로세서 선폭을 의미하는 데에 사용되는 단위에 대해서 정리해보자.
먼저 정리하고 넘어갈 것은 μm(마이크로미터)이다. 이는 지금까지의 프로세서에 주로 사용되어 왔으며, 'micron' 또는 '미크론' 등으로 표기되기도 하는데, 과연 어떠한 표현이 맞는 것일까?
본래 micron이라는 단어는 그리스어로 '작은'이라는 의미인 mikros의 명사형인 mikron에서 유래하였다. 이 단어는 한동안 1m의 1백만분의 1, 즉 10-6m를 뜻하기 위하여 사용되었으며 표기는 μ로 한다.(주의! 영문자 'u'가 아니다.) 즉, ‘미크론’은 SI 단위계에서의 μm의 '관용적' 표현이라고 이해하면 거의 정확하다. 그러나 한참동안 μ과 μm이 거의 동일하게 사용되어 오다가 SI 단위계에서 μ를 10-6을 뜻하는 '접두어'로 사용하게 되면서 혼동이 우려되어 이후 법이 개정된다.
먼저, 1967년 국제 도량형 총회에서 μ를 10-6m로 사용하는 것이 폐지되었으며, 이에 따라 우리나라에서도 1982년 4월부터 계량법 시행령을 통해서 폐지되었다. 따라서 현재는 '미크론' 또는 '마이크론'이라는 용어를 사용하는 것은 옳지 않으며, 영어표현 역시 'micron'이라고 표현하는 것은 잘못된 표현이다. 그 대신 'μm'라고 표현해야 한다.
한편, nm는 10-9m, 즉 1/1000 μm를 의미한다. nm 단위가 프로세서의 공정에 등장하게 된 까닭은 점차적으로 공정이 미세화하고 있기 때문인데, 90년대 중반만 하더라도 0.4~0.5μm 정도의 공정을 사용하고 있었기에 μm를 사용하는 것이 더 편했으나, 0.13μm이하로 프로세서 공정이 미세화되면서 μm 단위로는 0을 여러번 붙이게 되어 쓰기가 '귀찮아진' 것이다. 그래서 0.09μm부터는 90nm라고 적게 되었고, 이보다 더 미세한 공정도 마찬가지여서, 0.065μm 공정은 65nm로, 0.032μm 공정은 32nm 공정이라고 표기한다.


4. Cache

CPU의 코어와 메모리 사이에는 매우 큰 속도의 차이가 있다. DDR 메모리가 나오고 DDR2 메모리가 나오고, 듀얼채널을 지원하는 등 메모리도 매우 빠른 발전을 거듭하고 있지만 인텔과 AMD의 경쟁으로 인해 과도할 정도로 빠르게 변화하고 있는 CPU를 따라잡기에는 역부족이다.
간혹 버퍼(buffer)와 혼동되기도 하는데, 버퍼는 먼저 입력되는 데이터를 먼저 출력하는 구조에 충실하며, 느린 장치와 빠른 장치 사이의 완충역할보다는 데이터의 출력을 최적화한다는 의미가 크다.(그래서 CD/DVD 레코더에는 ‘캐시’가 아닌 ‘버퍼’가 달린다) 그러나 캐시는 버퍼와는 달리 ‘빈번하게 사용되는 데이터는 계속 갖고있는다’라는 원칙을 가지고 있다.
일반적으로 CPU가 데이터를 처리할 때, 데이터를 한번 처리한 이후 처리했던 데이터를 다시 필요로 하거나 그 데이터의 바로 다음 위치에 이어지는 데이터를 필요로 할 가능성이 대단히 높다. 그래서 캐시는 데이터를 메모리에서 읽어올 때 CPU가 요구하는 데이터 뿐만 아니라 ‘CPU가 요구할 가능성이 높은’ 데이터를 같이 불러들여서 저장해 놓는다. 그 이후, 만약 CPU가 요청한 데이터가 캐시 안에 저장되어 있다면 메모리를 검색하지 않고 바로 캐시에 있는 내용을 CPU로 전달한다.

위 일러스트는 캐시의 동작원리를 간단히 보여준다. 데이터의 요청이 들어왔을 때, 만약 캐시 안에 그 데이터가 있으면 캐시로부터 CPU로 데이터를 전송한다.(파란색 선) 이것을 캐시가 적중(hit) 했다고 한다. 만약 캐시에 데이터가 없으면 메모리를 검색해서 데이터를 찾아 CPU로 전송한다. 일반적으로 시스템 메모리가 DRAM으로 이루어지는 데에 반해 캐시는 SRAM(Static RAM)으로 이루어지는데, SRAM은 DRAM이 필요로 하는 각종 스토로보/리프레시를 필요로 하지 않기 때문에(DRAM의 동작은 지난호 바이오스 편 참조) 같은 동작주파수를 갖는다고 하더라도 상대적으로 매우 빠른 속도로 동작한다. 더군다나 CPU의 캐시는 보통 시스템메모리보다 훨씬 빠른 동작클럭을 갖기 때문에 시스템 메모리에 비해 월등히 빠른 속도로 데이터를 전송할 수 있다.
당연히, 캐시의 용량이 커지면 커질수록 CPU의 성능은 좋아진다. 캐시를 시스템메모리만큼 설치할 수 있다면 수퍼컴퓨터가 부럽지 않을 것이다. 다만, SRAM은 DRAM에 비해서 빠른 대신 대단히 비싸다. 그리고 최근의 CPU들은 캐시를 다이(die) 위에 직접 집적시키기 때문에 캐시의 증가는 제조비용의 증가로 그대로 이어진다. 이 때문에 고가의 프로세서와 저가의 프로세서가 가지는 가장 기초적인 차이가 바로 캐시의 용량에 있는데, 이는 셀러론과 펜티엄4, 듀론과 애슬론XP의 비교에서 쉽게 확인할 수 있다. 셀러론 프로세서는 언제나 펜티엄4 프로세서에 비해서 1/2 내지는 1/4의 L2 캐시만을 탑재해 왔으며, 듀론 프로세서는 언제나 64kB만의 L2 캐시를 탑재했다. 셈프론 프로세서 역시 같은 동작클럭을 갖는 애슬론64 프로세서의 1/2~1/4의 캐시만을 탑재한다. 물론 이 이외에도 성능격차를 더 크게 두기 위해서 FSB의 동작클럭에도 차등을 두고 있다.


같은 세대의 셀러론 프로세서와 펜티엄4 프로세서는 외형도 동일하고 마이크로아키텍쳐도 동일하지만 캐시 용량과 FSB의 동작클럭에서 매우 큰 차이를 보인다.


흔히 CPU에서 캐시 용량을 따지게 된다면 L2 캐시인 경우가 대부분이지만, CPU에는 L1, L2 캐시가 있으며, 일부 고가 제품군이 L3 캐시를 탑재한다.
L1 캐시는 CPU의 내부에 있으며, 명령어 캐시와 데이터 캐시로 나뉜다. 일반적으로는 용량이 절반씩 할당되어서 애슬론64 프로세서의 경우 64kB의 명령어 캐시와 64kB의 데이터 캐시, 도합 128kB의 L1 캐시를 탑재한다.(넷버스트 아키텍쳐를 채택하고 있는 CPU들은 캐시의 용량을 다른 CPU들과 비교하기가 약간 애매한데, 데이터 캐시는 16kB(프레스캇의 경우. 다른 코어는 8kB)이지만 명령어 캐시가 실행추적 캐시로 바뀌어서 12kμOps로 표기된다.) 다음의 사진을 보자.

애슬론64 프로세서의 다이 구조. 사진에서 녹색으로 칠해진 부분이 명령어 L1 캐시, 파란색이 데이터 L1 캐시, 자주색이 L2 캐시이다. L1 캐시가 명령어 실행유닛(Bus Unit, Fetch Scan Align Micro-code, Execution Unit, Floating Point Unit)에 대단히 가까이 있음을 주의해서 보자


L2 캐시와 L1 캐시의 위치를 확인할 수 있는데, L1 캐시가 명령어 실행유닛에 훨씬 가까이 위치하고 있음을 알 수 있다. 즉, L1 캐시는 CPU의 명령유닛에 가장 가까이 붙어서 실행되어야 할 명령어와 데이터를 바로바로 명령유닛에 넣어주는 역할을 한다.

실행추적캐시(Execution Trace Cache)

펜티엄4에 적용된 넷버스트아키텍쳐가 그 이전의 마이크로아키텍쳐에 비해서 가장 크게 차별화되는 것이 바로 실행추적캐시의 존재이다. 다음은 P5, P6과 넷버스트 아키텍쳐의 파이프라인을 보여준다.

P5, P6, 넷버스트아키텍쳐의 파이프라인


Decode가 없는 것을 발견할 수 있다. 프로세서가 명령어를 받아서 실행하기 위해서는 프로세서 내부에서 실행가능한 명령어(Micro-Op(μOp)이라고 한다)로 번역하는 과정이 필요하고 이것이 바로 Decode 과정의 역할이다. 넷버스트아키텍쳐의 파이프라인에 디코더가 빠져 있는 것은 ‘이미 디코딩된 상태의 명령어를 받기 때문’이다.

넷버스트 아키텍쳐에서는 디코더가 실행추적캐시에 통합되어 있다


이러한 과정은 명령어의 실행 중 분기예측이 실패했을 경우에도 디코딩 과정을 반복하지 않아도 된다는 장점과, 파이프라인에서 명령어를 실행하는 과정에서 디코딩을 필요로 하지 않는다는 장점으로 인해서 명령어의 실행속도를 크게 높여준다는 이점을 갖는다.
인텔은 이러한 특징 때문에 자사의 펜티엄4 프로세서에 탑재된 적은 L1 캐시 용량을 상쇄해준다고 밝힌 바 있다.


L2 캐시는 앞서 설명한 의미 그대로 메모리와 CPU 사이의 성능격차를 해소해 주기 위해서 사용된다. 메모리에 있는 데이터를 캐시에 끌어다 놓고 캐시 안에 찾는 데이터가 있으면 그것을 읽어오는 것이다. L2 캐시는 프로세서의 연산유닛 구역 바깥에 있기 때문에 크기의 향상이 L1 캐시에 비해서 비교적 자유로운 편이며, 이 때문에 수 MB에 달하는 대용량의 캐시가 탑재되기도 한다. 도선(Dothan) 코어를 사용하는 최신의 펜티엄 M 프로세서는 2MB의 L2 캐시를 갖는다.
한편, L3 캐시는 L2 캐시의 완충제 역할을 한다.

L3 캐시는 L2 캐시와 메모리 사이의 완충제 역할을 한다


L2 캐시의 속도 역시 대단히 빨라지면서 메모리와의 격차가 더 벌어졌고, 그래서 이를 해소하기 위해서 대용량의 L3 캐시를 붙이는 것이다. 펜티엄4 익스트림 에디션은 2MB의 L3 캐시를 가지고 있어서 L2 캐시만을 가지는 프로세서에 비해 높은 성능을 가진다. 또한 Xeon이나 Itanium 등의 고가의 프로세서는 대용량의 L3 캐시를 통해서 성능을 강화하고 있다.

왜 인텔은 펜티엄4 EE에서 L2캐시를 늘리지 않고 L3 캐시를 추가했을까?

AMD가 최고성능의 CPU라고 주장하는 Athlon64-FX를 출시하자 인텔은 이에 펜티엄4 Extreme Edition(이하 EE)로 응수했다. 그런데, 여기서 좀 의외였던 것이 바로 캐시인데, 펜티엄4 EE에는 2MB의 L3 캐시가 장착되었던 것이다. Pentium4 EE의 출시 전까지 2MB의 L3 캐시를 장착하고 있는 프로세서는 XeonMP였다. 느닷없이 XeonMP와 동일한 캐시를 갖는 프로세서가 펜티엄4의 최고클럭 모델로 등장했다는 것은 무엇을 의미할까?

XeonMP와 펜티엄4EE는 동일한 코어를 사용한다


L2 캐시를 늘리지 않고 대용량의 L3 캐시를 장착한 제품을 출시한 것은 그만큼 인텔이 다급하게 움직였다는 것을 의미한다. Athlon64-FX에 대응할 제품은 급박하게 필요한데 새로운 프로세서(당시 프레스캇은 출시일정이 계속 연기되고 있었다)는 나오지 않은 상황이니 일단 고성능 프로세서를 끌어다가 붙여 놓아야 할 상황이었고, 그래서 선택된 것이 갤러틴(Galatin) 코어였다.
또한, L2 캐시를 늘리기 위해서는 프로세서 자체를 재설계해야 하지만, L3 캐시를 늘리는 것은 그것보다 훨씬 간단하게 할 수 있는 일이기 때문이라고도 생각할 수 있다. 실제로 Xeon CPU는 L3 캐시의 용량에 따라 제품분화가 되어 있는 것을 볼 수 있는데, 이는 설계의 큰 변경 없이도 캐시의 추가가 가능하기 때문이다.


5. PGA, LGA

PGA라는 용어는 상당히 오랫동안 사용되어 왔고, LGA는 얼마 전부터 사람들 입에 오르내리기 시작한 용어이다. 이들은 모두 CPU의 패키징 방식을 지칭한다. 반도체는 웨이퍼에서 잘라낸 칩(die)과 그 칩을 둘러싸고 있는 패키지로 구성된다. 패키지는 해당 반도체를 외부의 충격 등으로부터 보호하면서 외부와 칩을 연결하는 다리 역할도 하기 때문에 패키징 기술은 칩 자체의 제조능력 못지않게 중요하게 여겨진다. 프로세서의 패키지 발전과정은 ‘어떻게 하면 더 안전하게 사용할 수 있는가’에 대해서 궁리하고 문제점을 해결해 나가는 과정이었다.
PGA는 Pin Grid Array의 약자다. 핀을 격자 형식으로 배열했다는 것인데, 486 및 초기의 펜티엄까지는 CPGA(Ceramic PGA) 패키지가 사용되었다.(앞서 보았던 펜티엄 프로세서의 사진이 바로 CPGA 패키지) 그 이름 그대로 패키지 본체에 세라믹 재질이 적용되었다. 그리고 펜티엄 MMX의 등장과 함께 PPGA(Plastic PGA)로 바뀌었다. 흔히 ‘구공탄’이라고 불렀듯이, 까만 프라스틱의 패키지를 택하고 있었기 때문에 그러한 이름이 붙었다. 펜티엄 II, III에서는 조금 독특하게 SECC(Single Edge Contact Cartridge) 방식이 도입되었다. 이는 펜티엄 II 및 초기의 펜티엄 III 프로세서가 L2 캐시를 별도의 칩 형태로 장착하였기 때문에 CPU 패키지의 면적이 매우 넓어졌고, 그래서 패키지를 ‘수직으로’ 장착해야 했기 때문이다. 카트리지를 가지지 않는 셀러론 프로세서의 경우 SEP(Single Edge Package)라고 불렸다.

펜티엄 MMX에서 도입되었던 PPGA 패키지



펜티엄 II/III에서 도입되었던 SECC 패키지


마찬가지로 대용량의 L2 캐시를 별도의 칩 형태로 탑재했던 펜티엄 II Xeon 및 펜티엄 III Xeon 프로세서 역시 이와 유사한 SECC2 패키지가 적용되었다.
그러나 SECC/SEP 패키지는 부피가 지나치게 큰데다가 슬롯의 제작이 까다롭고 비싸기 때문에 L2 캐시가 CPU의 다이로 집적되기 시작하자 빠른 속도로 사라지기 시작했다.
그래서 펜티엄 III가 코퍼마인(Coppermine) 코어로 접어들면서 FC-PGA라는 패키징이 사용된다. 코퍼마인 코어에서는 L2 캐시가 프로세서의 다이 위로 집적되었기 때문에 굳이 가격도 비싸고 만들기도 까다로운 SECC 패키지를 계속 사용할 이유가 없었다. FC-PGA는 Flip-Chip PGA의 약자로, 기존의 다른 패키징방식에 비해 코어 칩이 뒤집힌 상태에서 실장되기 때문에 그러한 이름이 붙었다. 그 이전까지의 프로세서는 CPU의 코어가 외부로 노출되지 않았으나, FC-PGA에서는 코어의 위아래가 뒤바뀌어 장착되면서 코어 자체가 CPU의 위쪽으로 노출되는 형태를 갖게 되었다.

FC-PGA 방식은 코어가 윗면으로 노출된다


코어가 노출되었을 경우에 가질 수 있는 장점은 역시 쿨링이 용이해진다는 것이다. 쿨러의 냉각면이 코어에 직접 닿게 되면서 주 발열원이었던 코어를 쿨러가 직접 식혀줄 수 있게 되었다. 그러나 장점 못지않게 단점도 크다. 바로 코어의 손상이다. 애슬론 내지는 애슬론 XP 프로세서를 사용해 보았던 사용자라면 ‘코어의 손상’을 매우 민감하게 받아들였을 것이다. 그도 그럴 것이 펜티엄 III까지는 그다지 크게 대두되지 않던 쿨러의 문제가 갑자기 커지기 시작한 것이 애슬론(선더버드) 프로세서부터였고, 쿨러를 장착할 때 긁히거나 모서리가 깨져나가기 쉽게 생긴 FC-PGA 패키지의 수난시대가 시작된 것이다.
FC-PGA 방식의 문제점을 해결하기 시작한 것은 인텔의 펜티엄4 프로세서이다. 앞서의 사진에서 보았듯이 펜티엄4 프로세서의 윗부분에는 ‘뚜껑’이 덮여 있는데, 이 뚜껑은 코어가 아니라, 코어를 보호하고 코어에서 발생되는 열을 넓은 면적으로 분산시켜주는 히트 스프레더(heat spreader)이다. 히트 스프레더가 장착된 FC-PGA 패키지를 인텔은 FC-PGA2 패키지라고 이름붙였다.

AMD도 애슬론64/FX/옵테론 프로세서부터는 히트 스프레더가 장착된 패키지를 도입했다.


히트스프레더가 장착된 패키지의 도입으로 인해서 코어가 갈리거나 손상되는 문제는 사라졌다. 그런데, FC-PGA2도 문제가 없는 것은 아니어서, 엉뚱한 방향에서 문제점이 발생하기 시작한다. 히트스프레더의 면적이 지나치게 넓어서, 여기에 써멀콤파운드(흔히 써멀구리스라 부르는 물질. 써멀컴파운드라고 부르는 것이 옳다)를 바르고 쿨러를 장착하면 CPU와 쿨러가 웬만해서는 떨어지지 않는 것이다. CPU에 장착된 쿨러를 떼는데 CPU 소켓의 레버를 잠궈놓았음에도 불구하고 CPU가 쑥 하고 빠져나오는 것을 본 사용자도 드물지 않으리라.
또 하나의 문제는 히트스프레더 떄문에 무거워졌다는 것이다. 펜티엄 III까지만 해도 CPU가 그다지 무겁지 않기 때문에 떨어뜨린다고 하더라도 핀이라던가 CPU에 가해지는 손상이 크지 않았다. 그러나 펜티엄4부터는 이야기가 달라졌다. 히트스프레더로 인해서 CPU가 지나치게 무거워졌기 때문에 CPU를 떨어뜨리기라도 하면, 그것도 핀이 있는 방향을 아래로 해서 떨어뜨리면 부딪힌 부분의 핀이 죄다 휘거나 부러져버리는 암담한 사태가 생긴다.
게다가, 향후 새로운 기능을 추가하고 전력공급을 더욱 원활하게 하기 위해서는 더욱 많은 핀이 필요한데, CPU가 넓어지면 배선이 어려워지고, 그렇다고 핀을 가늘게 하자니 더 가늘게 했다가는 위에 언급한 문제가 더더욱 커진다. 그리고 PGA라는 특성상 매우 높은 클럭 주파수를 달성하기가 어렵다는 문제도 있다.
그래서 LGA가 등장한다.


PGA는 핀이 격자를 이루고 있는 패키지이고, LGA는 접점(land)이 격자를 이루고 있는 패키지이다. 위가 PGA, 아래가 LGA


LGA는 Land Grid Array의 약자로, 인텔은 프레스캇에서 처음 도입했지만, 이미 Sun 등은 새로운 웍스테이션/서버용 프로세서인 선스팍 울트라 등에서 1천개를 넘는 ‘land’를 가지는 LGA 패키지를 선보인 바 있다. 그 이름과 위의 사진에서 알 수 있듯이 LGA는 접점(land)이 격자를 이루고 있다. LGA 패키지의 도입은 앞서 언급했던 문제점을 일거에 해결한다. CPU를 떨어뜨린다고 해도 휠만한 핀이 없어서 큰 사고도 발생하지 않고, 핀에 비해서 훨씬 촘촘하게 구성할 수 있어서 전력공급이나 새로운 기술의 도입을 위한 회로가 사용할 접점을 추가하기가 용이하다.(인텔이 새로이 내놓은 LGA 패키지가 775개의 접점을 가지고 있다는 것은 이러한 이유 때문이다.) 다리를 가지지 않는 형태이기 때문에 PGA에 비해서 높은 클럭을 구현하기에도 유리하다. 그리고, CPU 장착회수도 PGA에 비해서 훨씬 여유가 있다. 장착 방법도 PGA에 비해서 안전한 편이다.
다만, 메인보드에 있는 슬롯의 단가가 비싸지기 때문에 메인보드 자체의 단가가 비싸진다는 단점을 안고 있지만 앞서 언급한 문제를 해결할 수 있다면 메인보드의 약간의 가격차이는 무시해도 무방하지 않을까?
미래에는 어떻게 될까? 인텔은 BBUL이라는 패키지를 계획하고 있다.

BBUL 패키지의 단면


BBUL은 Bumpless Build-Up Layer의 약자이다. 지금까지의 모든 패키징에 비해서 BBUL이 차별화되는 것은 칩을 패키지의 표면에 접착하는 것이 아니라, 패키지에 ‘묻어버린다’는 것이다. BBUL 패키지가 주는 장점은 여러가지이다. 더 얇고 가벼운 CPU를 만들 수 있으며, 코어 부분의 표면이 돌출되어 있지 않기 때문에 히트스프레더를 장착하기도 용이하고 장착하지 않는다 하더라도 코어가 손상될 일이 없다. 코어와 캐패시터/접점의 거리가 줄어들기 때문에 더욱 높은 클럭으로 동작할 수 있으며, 마찬가지 이유에서 소비전력 역시 줄어든다. CPU의 크기를 줄여주기 때문에 인텔은 향후 코어를 여러개 탑재하는 듀얼/멀티코어에 이를 적용시킬 계획을 가지고 있다. 현재까지 밝혀진 대로라면 BBUL 패키지의 실제 도입은 2006년 이후가 될 것으로 보인다. 인텔은 수 년 안에 프로세서의 동작클럭을 10GHz까지 끌어올릴 것이라고 밝힌 바 있는데, BBUL이 10GHz의 동작클럭을 달성하는 열쇠가 될 지는 좀 더 지켜봐야 알 수 있을 것 같다.

CPU 장착 횟수에 제한이 있다?

대단히 의외이지만, CPU 장착 회수에 제한이 있다. 인텔의 소켓478 기반 프로세서의 매뉴얼을 살펴 보면 50회까지로 장착이 제한되는 것을 알 수 있다. 일반 사용자라면 50회까지나 CPU를 뺐다 끼웠다 할 일이 없기야 하겠지만, 장착 회수에 제한이 있다는 것은 필자에게도 대단히 의외였다. 그러나, 생각해 보니 그럴법도 한 것이, 펜티엄4 프로세서의 핀은 대단히 얇고, CPU를 장착할때마다 소켓을 잠그면서 접촉부위와의 마찰로 인해 핀이 닳는 것이다. 그리고 이러한 과정이 오래 반복되면 핀이 부러질 수 있다.


6. SSE

SSE는 Streaming SIMD Extension의 약자로, 펜티엄 MMX에서 적용되었던 MMX 기술을 그 바탕으로 하고 있다. CPU가 처리하는 여러가지 작업 중에서는 유사한 연산을 계속 반복해서 진행하는 경우를 어렵지않게 찾아볼 수 있다. 주로 멀티미디어 작업에서 그러한 것을 많이 볼 수 있는데, 이미지 프로세싱이나 동영상/사운드 편집작업 등이 그 대표적인 예이다. 이러한 작업에서는 실제 프로그램 코드 상으로는 얼마 되지 않으면서도 CPU의 연산은 엄청나게 사용하게 되는데, MMX는 바로 이러한 ‘유사한 작업’들을 한번에 처리하는 명령어의 집합을 말한다. 즉, 마치 선생님이 한 반의 학생들을 자리에 앉힐 때 각자에게 앉으라고 하는 것이 아니라 반 전체에게 ‘자리에 앉아’라고 명령하는 것과 마찬가지로, 유사한 형태의 연산을 필요로 하는 여러개의 데이터를 묶어서 하나의 명령어로 연산해내는 것이다. 그래서 SIMD(Single Instruction Multiple Data) 명령어라고 한다. 이러한 이유 때문에 어도비 등의 회사는 항상 가장 먼저 새로운 SSE, SSE2 등을 적용해 오는 것을 볼 수 있다.

SIMD 명령어는 하나의 명령어로 여러개의 유사한 데이터를 처리함으로써 처리속도를 향상시킨다.


SSE는 MMX 다음으로 인텔이 적용한 기술이다. 펜티엄 III 프로세서에 처음 적용되었기 때문에 Katmai(초기 펜티엄 III 프로세서의 코드명) New Instruction이라고도 하는데, MMX가 57개의 새로운 명령어를 추가한 것이라면 SSE는 70개의 새로운 명령어가 추가된 것이다. 이후 코퍼마인 코어를 사용하기 시작한 셀러론 533A부터는 MMX에 이어 SSE가 적용되었다. SSE가 MMX에 비해서 크게 달라진 것은 부동소수점 연산능력이 크게 강화되었다는 것이다. 부동소수점 연산능력이 강화되면서 3D 비디오 등의 환경에서 더욱 높은 성능을 발휘할 수 있게 되었다.
펜티엄4 프로세서와 함께 등장한 SSE2는 기존의 SSE에 144개의 새로운 명령어를 추가한 것이다. SSE2에서는 변화된 멀티미디어 환경에 맞추어 3D 비디오나 오디오/비디오 스트리밍, 대형 이미지 처리, 음성인식 등의 기술을 강화할 수 있는 명령어가 도입되었다.
프레스캇 코어의 펜티엄4에 이르러서는 SSE3가 적용되었다. SSE3는 13개의 새로운 명령어를 추가한 것으로, 이들 명령어는 비디오/이미지 프로세싱 및 압축/해제 성능을 더욱 끌어올리게 된다. 그리고 여기에는 하이퍼스레딩을 최적화할 수 있는 명령어도 포함되어 있다.
AMD의 3DNow!, Enhanced 3DNow!, Professional 3DNow! 역시 같은 맥락의 기술이다. 3DNow!는 K6에서 처음 도입되었으며, Enhanced 3DNow!는 애슬론/듀론 프로세서에서, 그리고 Professional 3DNow!는 애슬론 XP 프로세서에서 도입되기 시작하였다. 3DNow!는 21개의 신규명령어를, Enhanced 3DNow!는 여기에 추가로 24개의 신규명령어를, Professional 3DNow!는 이 외에 54개의 신규명령어를 추가함으로써 강력한 멀티미디어 성능을 지원하기 시작하였다.
다만, 이들 명령어셋의 취약점은 이것이 ‘명령어 레벨에서의 지원’을 필요로 한다는 데에 있다. 즉, 이 명령어를 사용하지 않는 환경에서 프로그래밍 된 소프트웨어들은 프로세서의 SSE나 3DNow! 등을 사용할 수 없다는 것이다. 또한, 같은 이유에서 3DNow!를 지원하는 소프트웨어가 SSE2를 지원하지는 않는다. 소프트웨어 개발자의 입장에서는 양쪽에 모두 부합하는 소프트웨어를 별도로 만들어야 한다는 문제가 생긴 것이다.
그래도 다행인 것은 AMD나 Cyrix 등의 회사가 인텔의 MMX, SSE, SSE2 등을 라이선스받아서 자사의 CPU에 적용시키고 있다는 것이다. 예를 들어 옵테론 프로세서의 경우 3DNow! 시리즈 명령어셋은 물론, SSE와 SSE2를 지원하고 있다.

MMX는 무엇의 약자일까?

본래 MMX는 Multimedia Extension의 약자였다.(일부에서는 Matrix Math Extension으로 부르기도 했다.) 그런데 인텔에서는 MMX가 무엇의 약자도 아니며, 단순히 MMX 그 자체라는 공식 입장을 밝혔다. 도대체 인텔이 MMX이 무언가의 약자임을 인정하지 않는 까닭이 무엇일까? 해답은 의외로 간단한데, 펜티엄이라는 이름을 지을 때와 유사하다. MMX를 ‘Multimedia Extension의 약자이다’라고 한다면, Multimedia나 Extension이나 모두 일반명사이기 때문에 인텔이 ‘독자성’을 주장하기가 어려워진다. 즉, 인텔이 486 때 처럼 타사에서 동일한 명칭을 사용하는 일이 벌어지지 않도록 사전조치를 취한 것이다. 현재 MMX는 인텔의 등록상표이다.


7. Hyperthreading(하이퍼스레딩)

하이퍼스레딩은 펜티엄4에 적용된 넷버스트아키텍쳐가 가지는 깊은 파이프라인의 장점을 가장 잘 이용하고 있는 기술이다. 파이프라인의 단계 수가 무려 20단계에 달하는(프레스캇에 이르러서는 더 늘어난 것으로 추정되기도 하지만 확인되지는 않았다) 펜티엄4의 특성상, 파이프라인 중간중간이 ‘놀고 있을’ 확률이 상대적으로 높다. 물론 인텔은 이러한 길어진 파이프라인을 효율적으로 활용하기 위해서 디코더가 내장된 실행추적 캐시라던가 더욱 강화된 동적실행 기능을 적용시키고 있지만 P6 코어에 비해서도 2배 이상으로 늘어나버린 거대한 파이프라인은 프로세서의 고클럭화 외에도 또 다른 노림수가 있는 것은 아닌가 하는 생각을 하게 만들기에 충분한 것이었으며, 예상대로 ‘하이퍼스레딩’이라는 기술이 탄생하였다.

하이퍼스레딩이 처음 적용되기 시작한 Xeon 프로세서


하이퍼스레딩이 처음 적용된 것은 2002년 3월 533MHz로 동작하는 FSB를 채택한 Xeon 프로세서가 등장하면서부터였으며, 이후 데스크탑 프로세서에는 2002년 11월에 펜티엄4 3.06GHz 프로세서를 통해서 데뷔했다.
하이퍼스레딩을 지원하는 CPU가 장착되었는가를 판단하는 방법은 매우 간단한데, 바로 작업관리자를 살펴보는 것이다.

작업관리자를 보면 하이퍼스레딩을 지원하는 프로세서는 마치 CPU가 2개가 장착된 것 처럼 나타난다


작업관리자를 보면 2개의 CPU가 장착된 것처럼 나타날 것이다. 이것은 하이퍼스레딩 기술이 1개의 프로세서를 ‘가상의 프로세서 2개가 장착된 것처럼’ 인식시켜 주기 때문이다.

하이퍼스레딩의 동작원리는 ‘길어진 파이프라인 사이사이의 놀고있는 CPU 자원을 활용해보자’라는 데에서 출발한다. 파이프라인이 길어졌기 때문에 중간중간 놀고 있는 CPU 자원이 존재하며, 이 빈 공간을 ‘또 하나의 프로세서’로 이용하는 것이다.
CPU가 2개로 인식되기 때문에 성능이 2배일 것으로 오해하는 사용자도 있는데, 앞서 말했듯 ‘동작중인 파이프라인의 빈 공간을 활용’하는 것이기 때문에 실제 성능향상은 많아봐야 10%에 불과하며 일반적인 경우는 5% 전후라고 보면 된다.
그러나 하이퍼스레딩이 큰 의미를 가지는 것은 ‘논리적인 다수의 프로세서를 사용’하고 있기 때문에 하이퍼스레딩이 적용되지 않은 경우보다 멀티태스킹 등에서 매우 부드러운 동작을 보여준다는 데에 있다. 복잡한 소프트웨어를 돌리면서 다른 작업을 시도해 본 독자라면 필자가 무슨 이야기를 하는지 쉽게 이해할 수 있을 것이다. 인텔은 하이퍼스레딩이 적용된 프로세서에 대해 이야기할 때 ‘백그라운드 작업이 많을 때’를 매우 중요하게 간주하고 있다. 백신이라던가 하는 프로그램들이 돌아가고 있는 상황에서 다른 프로그램을 또 돌리게 된다면 멀티태스킹에 강한 하이퍼스레딩 기술이 높은 효과를 보여준다는 것이다.

다만, 하이퍼스레딩에도 분명한 단점이 있다. 우선, ‘멀티 프로세서’를 지원하는 운영체제를 사용해야만 한다. 논리적이기는 해도 어디까지나 프로세서를 2개로 인식시켜서 동작하기 때문에 Windows98, 95, Me 등에서는 하이퍼스레딩의 효과를 볼 수 없다. WindowsNT, WindowsXP 등의 운영체제는 멀티프로세서를 인식하기 때문에 하이퍼스레딩을 사용할 수 있다.
또 한가지, 멀티태스킹에서는 분명히 부드러운 동작을 보여주지만, 하나의 무거운 프로그램만을 구동시킬 때에는 어떨까? 이 때에는 해당 소프트웨어가 ‘멀티스레딩(Multi threading)’을 지원해야만 한다. 만약 멀티스레딩을 지원하지 않는 소프트웨어라면 이 역시 하이퍼스레딩의 효과를 볼 수 없다. 멀티스레딩에 대해서는 뒤에서 듀얼코어에 대해 이야기하면서 자세히 언급할 것이다.

8. 64bit 프로세싱

AMD64는 인텔에 비해서 자금력이나 기술력(공정기술이라던가 패키징기술 등에서 인텔은 AMD에 비해 상당히 앞서 있는 편이다), 생산력 등에서 열세를 보이고 있는 상황이어서 분위기를 한번에 뒤바꿀 획기적인 전기를 필요로 했다. 그리고 AMD64에 기반한 옵테론과 애슬론64 프로세서는 AMD가 원한 대로 지금까지 잘 움직여 왔다. 상대적으로 대단히 보수적이고 바꾸기 싫어하는 서버 시장에서도 옵테론은 성공적으로 정착하고 있으며, 데스크탑 프로세서에 비해서 대단히 비싼 가격대를 갖는 이러한 서버/웍스테이션 제품군의 판매호조는 AMD의 적자해소에도 큰 역할을 하였다.
그러나 정작 인텔과 AMD 중에서 64bit 프로세서는 인텔이 먼저 도입했다. 바로 Itanium 프로세서가 그것이다. 그러나 AMD는 x86-64, 통칭 AMD64라는 아키텍쳐를 사용하여 64bit 프로세서를 일반사용자 및 중소규모 서버로 끌어내렸으며, 특히 서버 시장에서의 반응은 폭발적이었다. 이에 인텔은 기존에 비해서 많이 저렴해진 아이태니움을 시장에 부랴부랴 투입하는 등의 여러가지 전략을 도입했지만, 결국은 EM64T(Enhanced Memory 64 Technology)라는 기술을 사용하여 Xeon 및 펜티엄4 프로세서에도 64bit 기술을 도입하기로 결정하였다. 기존에 인텔이 가지고 있던 64bit 프로세서인 아이태니움은 IA-32에서 벗어나 있는 IA-64 프로세서아키텍쳐에 기반하고 있기 때문에 사실 x86과 호환된다고 보기는 어려웠다.(내부적인 에뮬레이션을 통해서 호환이 되기는 한다.) 그러나 이번에 등장한 EM64T는 AMD의 AMD64와 마찬가지로 기존의 x86 프로세서아키텍쳐를 기반으로, 이를 확장한 것이기에 현행의 32bit 소프트웨어와 완벽한 호환성을 유지한다. 간단히, AMD64의 인텔버전이라고 생각하면 된다.

AMD64와 EM64T를 지원하는 64bit 프로세서의 동작


EM64T와 AMD64는 위 일러스트와 같이 동작한다. 시스템이 부팅된 후 로딩되는 OS가 32bit OS라면 32bit 프로세서와 동일하게 동작하며, 64bit OS가 로딩되면 32bit 및 64bit 어플리케이션을 구동할 수 있다. 따라서 사용자는 굳이 64bit OS를 당장 사용할 필요는 없으며 향후 64bit OS가 안정화되면 그 때에 적용하면 된다.
AMD는 자사의 애슬론64와 애슬론64 FX, 옵테론에 AMD64 아키텍쳐를 적용하고 있다. AMD64는 현재의 32bit 운영체제와 소프트웨어에서는 기존의 x86 프로세서와 똑같이 동작하지만, 64bit 운영체제가 설치되면 64bit 프로세싱을 통해 높은 성능을 구현한다. 즉, AMD는 ‘현재의 32bit 운영체제를 그대로 사용하다가 나중에 64bit 운영체제와 소프트웨어가 나오면 별도의 하드웨어 업그레이드 없이 사용할 수 있다’라는 것을 장점으로 내세운다. 물론 리눅스나 유닉스 등 64bit를 지원하는 운영체제를 사용한다면 지금도 64bit의 강력한 성능을 누릴 수 있다. 실제로 연구소나 대형 서버 등을 필요로 하는 곳에서는 옵테론에 SuSE 리눅스나 레드햇 리눅스 등을 얹어서 강력한 연산머신이나 서버로 사용하고 있다.

EM64T로 64bit 프로세싱을 지원하는 인텔 Xeon 프로세서와 칩셋


인텔의 64bit 지원은 초기에 Yamhill이라는 코드명으로 진행되다. 작년 여름까지만 하더라도 인텔은 64bit 지원을 도입하기는 할 것이지만, AMD와 같은 방식으로 도입하지는 않을 것임을 밝혀서 사실상 별도의 운영체제가 필요할 것으로 보였다. 그러나 AMD64용의 운영체제를 개발하던 Microsoft에서 개발상의 어려움을 이유로 인텔에게 AMD64와의 호환성을 요구했고 운영체제의 지원이 절실한 64bit 프로세싱 시장을 놓치지 않기 위해 인텔은 이를 수락했다. 그래서 코드명 Clackamas라는 인텔의 새로운 64bit 지원 기능이 개발된다. Clackamas는 이후 EM64T(Enhanced Memory 64 Technology)라는 공식 명칭을 얻었는데, 앞서 이야기한 바와 같이 그 동작은 AMD64와 완전히 동일하게 이루어지며 소프트웨어 호환 역시 이루어질 전망이다. 따라서 사용자는 EM64T 지원 프로세서를 사용하기 위해서 AMD64 지원의 운영체제를 적용하면 된다는 것이다. 다만 아직까지 일부 리눅스 등의 운영체제에서는 완벽한 호환이 되지 않는다는 이야기도 나오고 있어서 약간 시간을 두고 지켜볼 필요가 있다.
흥미로운 것은 펜티엄4 프로세서의 EM64T 도입여부이다. 인텔은 이에 대해서 공식언급을 하지 않았지만 홈페이지를 보면 EM64T를 지원하는 펜티엄4 프로세서가 분명히 나와 있다.(관련 URL : http://www.intel.com/products/desktop/processors/pentium4/index.htm)

펜티엄4 프로세서의 상세설명에 EM64T가 거론되고 있다


3.20GHz, 3.40GHz, 3.60GHz로 출시된다는 것과 F라는 구분표식이 붙는다는 것까지 알 수 있다. 그리고 일본 등지에서는 이미 판매에 들어갔다는 것이 지난 8월 보도된 바 있다.(관련 URL : http://www.watch.impress.co.jp/akiba/hotline/20040828/etc_em64tp4pc.html) 이것은 인텔이 그동안 취해왔던 입장, 즉 ‘64bit는 아직 시기상조다’라는 의견을 접고 AMD를 64bit 시장에서도 견제하기 시작한 것으로 볼 수 있다. 아직 인텔이 64bit 지원의 펜티엄4 프로세서를 전면에 내세우고 있지는 않지만 얼마 지나지 않아 64bit 프로세서들끼리의 경쟁도 보게 될 수 있을 것 같다.
by Yggdrasill | 2004/12/30 10:42 | 하드웨어 | 트랙백 | 덧글(4)
트랙백 주소 : http://muphy.egloos.com/tb/855269
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by decathlon at 2004/12/30 14:03
잘 보고감......정리 잘했다~!!!!! 乃
Commented by Yggdrasill at 2004/12/30 15:32
▷ decathlon | 먹고살기 위해서니까. :)
Commented by 로리 at 2004/12/30 15:35
정리가 확실히 잘 되어 있군요^^ 감사합니다.
Commented by 정지윤 at 2008/04/26 19:52
잘봣습니다 ㅎ

:         :

:

비공개 덧글

<< 이전 다음 >>