인텔 CPU의 역사를 바꾼 펜티엄

 

인텔의 펜티엄(P5) 프로세서가 등장한 것도 올해(2014년)로 20주년이 됩니다. 펜티엄이 정식 발표된 건 1993년이며 보급형 모델이 나온 것은 1994년이거든요. 펜티엄은 발표 당시 CPU 업계에 큰 영향을 주었는데 이는 기술의 흐름을 바꿨기 때문입니다. 펜티엄은 인텔의 전환점이자 CPU의 역사를 다시 썼다고 해도 과언이 아닙니다. 

 

1.jpg

 

초대 펜티엄(P5)의 다이

 

펜티엄이 나왔을 때는 인텔의 x86으로 대표되는 CISC(Complex Instruction Set Computer) 계열의 명령어 세트 아키텍처(ISA:Instruction Set Architecture)와 MIPS나 PowerPC등의 RISC(Reduced Instruction Set Computer) 계열의 ISA를 두고 큰 논쟁이 벌어지고 있었습니다. 지금 보면 아무것도 아닌 것처럼 보이지만 당시에 CISC 계열 CPU는 IPC(Instruction-per-Clock)이 1정도에 그치는 수준, 그러니까 1클럭 당 평균 1개의 명령을 실행하지 못한다고 여겨져 있었습니다. 그래서 성능을 높일 여지가 많은 RISC 계열 CPU로 PC를 만들자는 구상이 나와 마이크로소프트도 윈도우 NT에서 적극적으로 RISC 지원에 나섰습니다.

 

그러나 인텔은 펜티엄에서 RISC의 대표적인 고속화 수법 중 하나인 슈퍼 스칼라를 사용했습니다. 그리하여 1클럭에 최대 2개의 명령을 실행할 수 있도록 하여 CISC 계열의 CPU에서도 하드웨어 고속화가 이루어진다는 것을 증명했습니다. 펜티엄의 성공에 이어 슈퍼 스칼라&슈퍼 파이프라인 방식인 펜티엄 프로(P6)이나 펜티엄 4(윌라멧)이 나오게 됐지요. 이후 RISC 계열 CPU로 윈도우 PC를 만들겠다는 발상은 사라져 가게 됩니다. 지금 최고 성능의 클라이언트 CPU는 x86 계열이며 그 흐름을 만든 것이 바로 펜티엄입니다.

 

펜티엄은 인텔의 CPU 개발 체제도 확립했습니다. 2년마다 1번씩 로직 프로세스 기술을 미세화하고 2년마다 새로운 CPU 아케턱처를 도입합니다. 인텔의 이러한 CPU 전략이 시작된 것은 펜티엄으로 그 이전에는 4년마다 한번씩 아키텍처를 갱신해 왔습니다. 이런 빠른 개발을 위해 인텔은 펜티엄에서 내부 설계 방식을 바꾸고 빠른 설계가 가능한 CAD 툴 등도 갖추게 됩니다.

 

펜티엄(P5)는 벡터 연산 기술인 MMX를 탑재한 Pentium MMX(Pentium Processor with MMX Technology)로 파생됐으며 이후 임베디드 버전도 나왔습니다. 또 펜티엄의 기초적인 설계는 이후 인텔의 다양한 CPU에도 쓰이고 있습니다. GPU와 경쟁하기 위해 출범했으나 이후 프로젝트가 중단된 매니코어 CPU인 라라비와 그 후속작인 제온 파이 시리즈는 최신형인 나이츠 랜딩을 제외하면 모두 펜티엄 코어를 사용했습니다. 인텔의 연구 CPU 프로젝트에서 펜티엄 계열 CPU 코어는 몇 번이나 사용됐습니다.

 

또 펜티엄은 성능과 전력의 효율이 매우 높은 CPU 코어입니다. 펜티엄 프로 이후의 CPU 코어는 CPU 명령의 순서를 바꿔 실행하는 아웃 오브 오더 실행을 채용해 IPC는 높아졌지만 전력 당 성능 효율은 떨어졌습니다. 그에 비해 명령을 차례대로 실행하는 간단한 방식의 인 오더 스타일인 펜티엄은 이론적으로 효율이 높을 수밖에 없습니다. 그 때문에 전력 효율이 중요해지며 임베디드의 대응을 빼놓을 수 없는 지금, 펜티엄 계통의 CPU 코어 설계는 20년이 지났지만 다시 검토되고 있습니다.

 

 

486에서 아키텍처를 크게 발전시킨 펜티엄

 

인텔은 4004에서 세계 최초의 마이크로 컴퓨터를 발표한 이후 MPU(CPU)를 진화시켜 왔습니다. 16비트 8086은 널리 보급되면서 PC 시대의 기초를 닦았습니다. 이후 80286(286)을 거쳐 386(80386)에선 x86 명령을 32비트로 확장했습니다. 386은 명령 패치->명령 디코딩->명령 실행의 간단한 3스테이지 파이프라인 구성이었습니다.

 

이어 486 계열을 386을 기반으로 철저한 고속화를 도모했습니다. 파이프라인 스테인지를 5단계로 늘려 클럭을 높이기 쉽도록 했습니다. 부동소수점 연산(FP) 유닛과 함께 명령과 데이터를 위한 캐시를 탑재했습니다. 486에서 간단한 명령은 1 클럭 당 1 명령을 처리할 수 있게 됩니다.

 

2.jpg

 

386부터 펜티엄 MMX(P55C)까지의 아키텍처 변화

 

펜티엄은 486보다도 더 빠른 속도를 노리고 설계했습니다. 핵심은 정수 연산 실행 파이프를 2개로 늘려 최대 2개의 명령을 동시에 실행할 수 있도록 한 것. 여기에 맞춰 명령 디코더도 2웨이로 늘러 2개의 명령을 동시에 디코딩할 수 있도록 했습니다. 486싸지는 1사이클에 최대 1명령 디코딩으로 최대 1명령만 실행할 수 있습니다.  또 486에서 하나로 통합됐던 캐시는 명령과 데이터로 분리했고, 조건 분기에 의해 파이프라인 실행이 흐트러지는 걸 막기 위해 분기 예측 장치도 탑재했습니다. FP 유닛도 파이프라인화해 1명령 1사이클의 산출량으로 실행하도록 했습니다.

 

좀 더 자세히 보면 펜티엄(P5)는 8KB의 L1 명령 캐시를 대비해 분기 예측에선 분기와 분기처의 주소를 캐시하는 Branch Target Buffer(BTB)을 갖춥니다. 조건 분기 명령이 있을 경우 그 뒤에 있는 명령은 분기가 확정될 때까지 기다려야 합니다. 분기 예측은 분기가 성립될 결과를 예측해 분기한 경우를 예측하는 것으로 조건 분기 명령 이후에 명령을 이어서 실행할 수 있도록 하는 기구입니다. 펜티엄에선 파이프라인이 386 시대보다 많아져 2명령 실행으로 조건 분기에 의한 손실이 커졌는데 분기 예측은 바로 그 손실을 최소화하기 위한 것입니다.

 

3.jpg

 

초대 펜티엄(P5)의 마이크로 아키텍처

 

 

x86 CPU 최초의 2 파이프라인 정수 유닛

 

펜티엄은 인 오더 실행 CPU로서 2 명령 실행이라는 게 연속 2개의 명령만 동시에 실행한다는 이야기가 됩니다. 또 실행할 수 있는 명령의 조합에는 제약이 있습니다. 의존성이 없는 단순한 명령만 2개로 묶어 실행할 숭 있습니다. 단순 명령은 레지스터 간 연산이나 메모리에서 데이터를 로드/스토어하는 것 등입니다. 연산과 메모리 접근이 복합된 명령은 묶어서 실행할 수 없습니다. 또 앞의 명령이 점프 명령일 경우에도 다음 명령은 동시에 실행할 수 없으며, 2번째 명령이 1번째 명령의 다시 쓰기 레지스터를 참조/갱신하는 경우에도 2개를 묶어서 실행할 수 없었습니다.

 

4.jpg

 

펜티엄(P5)는 2 파이프로 병렬 실행을 하기에 클럭 당 성능이 높아집니다.

 

실행 파이프 라인은 U 파이프 라인과 V 파이프 라인의 2개입니다. U 파이프는 모든 명령을 실행할 수 있지만 V 파이프는 단순 명령만 실행할 수 있는 서브 채널입니다. U 파이프와 V 파이프는 동기화되어 묶여 있는 명령을 순차 실행합니다. 실행 유닛도 하드 와이어가 진행돼 스루풋이 높아졌습니다.

 

부동소수점 연산(FP) 유닛은 덧셈, 곱셈, 나눗셈 유닛으로 파이프라인화 됐습니다. 실제로는 FP 유닛도 2개의 파이프를 갖고 있지만 두번째 파이프는 FXCH(floating-point exchange) 명령만 실행할 수 있습니다. 즉 FP 명령을 실행할 때 레지스터 스택을 정상적으로 실행할 때 x87 FP 레지스터의 제약을 회피하기 위한 FXCH 명령을 보조 실행하는 역할일 따름입니다. 그래서 이미지에선 생략했습니다. 또 FP 명령은 정수 연산과 조합해서 실행할 순 없습니다.

 

참고로 초대 펜티엄(P5)의 FP 유닛 중 나눗셈 유닛은 나중에 큰 논란을 불러 일으키게 됩니다. 바로 그 펜티엄의 나눗셈 버그(Pentium FDIV Bug)를 갖고 있었거든요. 인텔은 이 버그 때문에 펜티엄을 교환해 주느라 큰 비용을 지출했지만 그 결과 인텔 내부에서 CPU 설계의 검증 시스템이 급격히 진보하게 됩니다.

 

펜티엄에선 L1 캐시가 명령과 데이터로 분리돼 데이터 전용 캐시로 8KB가 탑재됐습니다. 또 CPU 코어 외부와의 데이터 버스는 기존의 32비트 폭에서 64비트로 확장됐습니다. 파이프라인은 5스테이지인데 지금 보면 아주 낮지만 당시엔 표준적인 파이프라인 스테이지였습니다.

 

5.jpg

 

386부터 펜티엄(P5)까지의 파이프라인 변화

 

 

인텔 CPU 개발의 큰 이정표

 

이러한 요소를 포함시킨 펜티엄(P5)는 이전 세대인 486보다 현격하게 트랜지스터 수가 늘어난 CPU가 됩니다. 486DX가 120만개였는데 비해 펜티엄(P5)는 310만개로 2배 이상 늘어났습니다. 27만 5천개였던 386과 비교하면 11배가 된 것입니다. 

 

6.jpg

 

트랜지스터 수의 차이를 CPU 크기로 나타낸 차트

 

펜티엄(P5)의 프로세스 기술은 0.8μm으로 지금 쓰는 단위로 바꾸면 800nm가 됩니다. 하지만 얼마 되지 않아 0.6μm(600nm)로 미세화한 2세대 펜티엄(P54C)이 등장합니다. 일반 PC 사용자에게는 1994년의 펜티엄(P54C)부터 본격적으로 보급됐지요. 클럭도 100~120MHz으로 오르면서 100MHz에 도달했던 486DX4를 넘어섰습니다. 그리고 마지막엔 제조 공정이 0.35μm(350nm)로 축소된 펜티엄(P54CS)가 등장합니다. 참고로 당시의 인텔 코드네임은 알파벳과 숫자로 이루어졌으며 P54C에서 5가 아키텍처 세대, 4가 실장, C가 Compaction를 나타낸 것입니다. 

 

방대한 수의 트랜지스터를 넣기 위해 펜티엄(P5)의 다이 사이즈도 커졌습니다. 초기형인 0.8μm 버전의 다이는 294제곱mm로 당시로선 매우 큰 편이었습니다. 0.6μm의 P54C에서 163제곱mm로 줄어들었는데 이것은 고성능 PC의 CPU 크기가 됩니다. 0.35μm의 P54CS는 메인 스트림을 위한 CPU로 90제곱mm로 줄었습니다. 이렇게 CPU 크기가 점점 줄어들면서 처음에선 서버와 워크스테이션을 공략하던 것이 고성능 PC와 메인스트림 PC로 주 공략 시작이 바뀌게 됩니다. 

 

7.jpg

 

다이 크기의 변화

 

인텔 CPU 전체의 트랜지스터 수 변화를 보면 2년 동안 2배로 트랜지스터 수가 순조롭게 증가한 것처럼 보입니다. 그러나 실제로는 인텔의 로직 과정의 미세화나 다층화가 초기엔 느렸다가 펜티엄(P5)의 0.8μm(800nm)에서 급격히 빨라진 것으로 나타납니다. 8086에서 486까지는 CPU의 다이 크기를 늘려 트랜지스터 수를 늘린 것이라 봐야 합니다.

 

또 CPU 아키텍처 개발도 펜티엄(P5)에서 급가속해 그 전까진 4년마다 한번씩 마이크로 아키텍처를 바꿨지만 이후 2년마나 한번씩 마이크로 아키텍처를 도입하는 식으로 전환했습니다. 즉 펜티엄(P5)를 계기로 인텔의 로직과 CPU 마이크로 아키텍처 개발은 두배로 빨라진 것이 됩니다.

 

8.jpg

 

CPU의 트랜지스터 수 변화

 

또 인텔은 펜티엄(P5)에서 파생된 펜티엄 MMX부터는 명령어 셋트 아키텍처도 대폭 확장했습니다. 그 전까지는 16비트에서 32비트로 확장은 됐으나 명령어 셋트의 기본은 변하지 않았습니다. 다른 종류의 명령을 도입한다는 구조 면에서 확장이 시작된 것도 넓게 보자면 펜티엄 세대부터입니다. 이렇게 보면 펜티엄이 인텔의 CPU 개발 역사에서 큰 이정표가 된다는 것을 알 수 있습니다.

 

 

RISC에 대한 인텔의 대답

 

인텔이 펜티엄에서 CPU 개발에 자원을 집중하게 된 것은 격렬한 경쟁을 맞이했기 때문입니다. 펜티엄이 등장했을 당시에 인텔은 RISC 공세의 폭풍에 휩쓸렸습니다. CISC 계열 명령 셋트는 그 뿌리의 역사가 오래됐으며 핸드 코딩에 최적화돼 사람이 프로그램하기 쉽지만 대신 명령이 복잡합니다. 명령 길이를 바꿀 수 있으니 종류도 다양하고 명령의 오퍼 랜드에 메모리를 지정할 수도 있습니다. 이러한 CISC는 명령 셋트가 복잡하고 실행도 복잡하기 때문에 고속화를 위한 하드웨어 기술과 컴파일러 기술의 적용이 어려운 것으로 알려져 왔었습니다.

 

그에 비해 RISC 계열 명령 셋트는 처음부터 컴파일러 레벨에서 최적화돼고 정의돼, 고정된 길이의 명령에 고정된 명령 포맷, 연산 오퍼 랜드는 레지스터에 한정돼 메모리 액세스는 로드/스토어 명령으로 실시합니다. 그래서 명령 체계는 간단하고 실행도 메모리 명령이 분리돼 간단하며, 그 덕분에 고속화를 위한 하드웨어나 컴파일러 기술을 채용하기가 쉽습니다.

 

이러한 명령 셋트의 논의 중 RISC CPU 기반의 PC를 만드려는 분위기가 고조되며 MIPS나 PowerPC를 기반으로 한 PC의 계획이 등장하게 됩니다. CISC는 명령어 셋트로 이제 끝날 때가 됐으니 앞으로는 RISC 명령 셋트의 시대라는 것입니다.

 

그러나 펜티엄이 등장하면서 그런 논의에 종지부를 찍게 됩니다. 왜냐하면 CISC 명령어에서도 고속화 하드웨어 기술의 적용이 가능하다는 것을 증명했기 때문입니다. CISC 계열 ISA인 x86 CPU가 아직 더 발전할 수 있음을 증명하면서 RISC로의 변환하는 분위기를 막게 됩니다. 그 결과 RISC 계열의 고성능 클라이언트 CPU 개발은 힘을 잃어 IA(x86) 계열 CPU의 독무대가 됩니다. 애플이 CISC인 모토로라 MC680x0 계열에서 RISC인 PowerPC로 이행했다가 다시 CISC인 인텔 CPU로 돌아온 것이 좋은 예라 할 수 있겠습니다.

 

 

20년이 지난 지금도 곳곳에 살아남은 펜티엄 아키텍처

 

인텔은 97년에 펜티엄(P5) 아키텍처에 MMX 명령을 더한 펜티엄 MMX(P55C)를 내놓습니다. 펜티엄 MMX(P55C)에서는 MMX 파이프라인을 새로 추가했을 뿐만 아니라 분기 예측의 대폭 강화, 캐시 용량의 증강, 명령 큐의 추가, 파이프라인의 재검토, 파이프라인을 6스테이지로 확장 등이 있었습니다. 말하자면 펜티엄의 강화 버전이라 할 수 있습니다.

 

9.jpg

 

펜티엄 MMX(P55C)와 초대 펜티엄(P5)의 블럭 다이어그램

 

10.jpg

 

펜티엄 MMX(P55C)의 파이프라인 구조

 

펜티엄 마이크로 아키텍처는 지금도 곳곳에서 볼 수 있습니다. 앞서 말한 라라비나 기존의 제온 파이 등의 매니코어 제품과 프로젝트는 물론, 인텔의 매니코어 연구 칩이나 Near-Threshold Voltage의 샘플 칩을 비롯해 인텔의 연구 현장에서 CPU 코어 테스트에 쓰이는 CPU 코어의 대부분은 펜티엄 계열입니다. 20년이 지나도 여전히 펜티엄은 살아 있는 것입니다.

 

11.jpg

 

Near-Threshold Voltage 기술의 샘플 칩인 Claremont의 P54C코어

 

12.jpg

 

48코어의 매니코어 칩에 쓰인 P54C 코어

 

펜티엄 코어가 많이 사용되는 펜티엄이 작고 구현하기 쉽다는 것 뿐만 아니라 펜티엄은 균형이 잘 잡힌 마이크로 아키텍처란 이유도 있습니다. 현재는 전력 효율을 늘리는 것이 가장 큰 과제이며 전력 효율이 높은 CPU 코어가 좋다고 받아지는 상황입니다. 특히 수십개의 CPU 코어를 쓰는 매니코어에선 전력 효율이 매우 중요합니다. 또 소비 전력을 한계까지 낮추는 Near-Threshold Voltage  같은 모바일 기술에서도 CPU 코어 자체의 전력 효율이 중요합니다.

 

13.jpg

 

14.jpg

 

인오더 실행에서 슈퍼 스칼라의 펜티엄은 전력 효율이 높고 절대 성능도 비슷합니다.

 

그리고 전력 효율은 CPU를 복잡하게 하면 할수록 떨어집니다. 인텔의 연구를 봐도 아웃 오브 실행과 깊은 파이프라인 스테이즈를 쓸 경우 전력 효율이 떨어지는 것이 증명된 바 있습니다. 그러나 전력 효율을 높이다 보면 절대적인 성능이 떨어지게 됩니다. 그런 의미에서 펜티엄은 균형을 잘 잡은 아키텍처입니다. 그래서 펜티엄 그 자체는 아닐지언정 거기서 파생된 CPU 코어는 앞으로도 여러 부분에서 쓰일 것입니다. 인텔 CPU 코어에서 가장 장수한 코어가 바로 펜티엄입니다. 

 

소스: http://pc.watch.impress.co.jp/docs/column/kaigai/20140701_655839.html

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.