펜티엄 (오리지널)

**펜티엄**(Pentium, **i586** 또는 **P5 펜티엄**이라고도 불림)은 인텔이 1993년 3월 22일에 출시한 마이크로프로세서이다. 이것은 펜티엄 브랜드를 사용한 첫 번째 CPU이다.
x86 (8086) 호환 프로세서 라인의 5세대로 간주되며, 인텔 80486의 후속작인 이 프로세서의 구현 및 마이크로아키텍처는 내부적으로 P5라고 불렸다.

인텔 인텔 80486과 마찬가지로 펜티엄은 32비트 인텔 80386과 명령어 세트 호환된다. 인텔 80486과 매우 유사한 마이크로아키텍처를 사용하지만, 듀얼 정수 파이프라인 설계와 이전 제품보다 10배 빠른 것으로 알려진 고급 부동소수점 장치(FPU)를 구현하기에 충분히 확장되었다.

펜티엄은 1995년 11월에 펜티엄 프로로 대체되었다. 1996년 10월에는 **펜티엄 MMX**가 출시되었는데, 기존 펜티엄의 기본 마이크로아키텍처에 MMX 명령어 세트, 더 큰 캐시 및 기타 개선 사항이 추가되었다. 인텔은 1997년 펜티엄 II 출시 이후 더 저렴한 제품으로 판매되던 P5 펜티엄 프로세서를 2000년대 초 셀러론 프로세서를 선호하여 단종시켰는데, 셀러론 프로세서는 80486 브랜드도 대체했다.

## 개요
P5 펜티엄은 최초의 슈퍼스칼라 x86 프로세서이다. 즉, 동시에 두 개의 명령어를 실행할 수 있는 경우가 많았다. 이를 구현하는 데 사용된 일부 기술은 이전 슈퍼스칼라 인텔 i960 CA(1989)에 기반을 두었지만, 다른 세부 사항은 P5 설계를 위해 독점적으로 발명되었다. 많은 부분이 인텔 80386 또는 인텔 80486에서 복사되었는데, 특히 복잡한 x86 인코딩을 파이프라인 방식으로 처리하는 데 사용된 전략이 그러했다. 인텔 80486과 마찬가지로 펜티엄은 특정 명령어 또는 명령어의 부분에 따라 최적화된 마이크로코드 시스템과 RISC와 유사한 기술을 모두 사용했다. 듀얼 정수 파이프라인 설계는 일부 학계와 RISC 경쟁자들이 CISC 명령어 세트에 구현하는 것이 불가능하다고 주장했던 것이다.

다른 핵심 기능으로는 재설계되고 훨씬 빨라진 부동소수점 장치, 넓은 64비트 데이터 버스(외부 및 내부), 분리된 코드 및 데이터 캐시, 그리고 성능 향상을 위한 많은 다른 기술과 기능이 포함된다.

P5는 또한 인텔 80486에 비해 멀티프로세싱 지원이 더 뛰어나며, IBM 메인프레임 컴퓨터와 유사한 하드웨어 지원을 갖춘 최초의 x86 CPU이다. 인텔은 IBM과 협력하여 이 기능을 정의하고 P5 마이크로아키텍처에도 설계했다. 이 기능은 이전 x86 세대와 경쟁사 x86 프로세서에는 없었다.

듀얼 파이프라인을 최대한 활용하기 위해 특정 컴파일러는 명령어 수준 병렬성을 더 잘 활용하도록 최적화되었지만, 모든 애플리케이션이 재컴파일을 통해 실질적인 이득을 얻지는 못했다. 그러나 더 빠른 FPU는 인텔 80486 또는 80387에 비해 부동 소수점 성능을 항상 크게 향상시켰다. 인텔은 개발 도구 공급업체, ISV 및 운영체제(OS) 회사와 협력하여 제품을 최적화하는 데 자원을 투자했다.

섬네일|인텔 펜티엄 A80501  SX950 다이 이미지

경쟁 제품으로는 슈퍼스칼라 파워PC 601(1993), SuperSPARC(1992), DEC 알파 21064(1992), AMD 29050(1990), 모토로라 MC88110(1991), 모토로라 68060(1994) 등이 있었는데, 대부분 슈퍼스칼라 순서 내 듀얼 명령어 파이프라인 구성을 사용했으며, 비슈퍼스칼라 모토로라 68040(1990) 및 MIPS R4000(1991)도 있었다.

### 어원
"펜티엄"이라는 이름은 원래 "다섯"을 의미하는 그리스어 단어  (πέντε)에서 유래되었는데, 이는 인텔 80x86 프로세서(8086–80486)의 이전 숫자 명명 규칙을 참조한 것이며, 이 규칙을 따랐다면 80586이라는 이름이 붙었을 것이므로 라틴어 접미사 -ium이 붙었다.

## 개발
P5 마이크로아키텍처는 386과 486을 설계한 동일한 산타클라라 팀에 의해 설계되었다. 설계 작업은 1989년에 시작되었고, 팀은 온칩 캐시, 부동소수점, 분기 예측 기능을 갖춘 RISC와 CISC 기술의 융합이 될 슈퍼스칼라 RISC 아키텍처를 사용하기로 결정했다. 예비 설계는 1990년에 처음 성공적으로 시뮬레이션되었고, 이어서 설계의 레이아웃이 이루어졌다. 이 시점에는 팀에 수십 명의 엔지니어가 있었다. 주요 운영 체제와 많은 애플리케이션이 부팅되고 실행되는 것을 포함하여 실리콘 전 검증 테스트에 약 1억 클록 사이클이 소요되었다. 그들은 이전 기술 방법보다 30,000배 빠른 퀵턴 시스템즈 Inc. 소프트웨어를 사용하여 실리콘 전 시뮬레이션 프로그램을 실행해야 했다. 설계는 1992년 4월에 테이프 아웃되거나 실리콘으로 전송되었으며, 이 시점에 베타 테스트가 시작되었다. 1992년 중반까지 P5 팀에는 200명의 엔지니어가 있었다. 인텔은 처음에는 1992년 6월 PC 엑스포 무역 박람회에서 P5를 시연하고, 1992년 9월에 프로세서를 공식 발표할 계획이었지만, 설계 문제로 인해 시연이 취소되었고, 칩의 공식 출시는 1993년 봄까지 지연되었다. 펜티엄을 탑재한 최초의 컴퓨터 시스템은 1993년 여름에 등장했으며, 최초의 시스템은 1993년 7월 첫째 주에 출시된 어드밴스트 로직 리서치(Advanced Logic Research)와 그들의 Evolution V 워크스테이션이었다.

원래 386의 수석 아키텍트인 존 H. 크로퍼드는 아키텍처 팀을 관리한 도널드 앨퍼트와 함께 P5의 설계를 공동 관리했다. 드로르 애브논은 FPU 설계를 관리했다. 비노드 K. 담은 P5 그룹의 총괄 관리자였다.

인텔의 라라비 멀티코어 아키텍처 프로젝트는 P5 코어(P54C)에서 파생된 프로세서 코어를 사용하며, 멀티스레딩, 64비트 명령어 및 16바이트 폭의 벡터 처리 장치로 강화되었다. 초기 아톰 프로세서 코어에 사용된 인텔의 저전력 본넬 마이크로아키텍처도 P5와 유사한 순서 내 듀얼 파이프라인을 사용한다.

인텔은 586 대신 펜티엄이라는 이름을 사용했는데, 1991년 판사가 숫자가 일반적이라고 판결하여 "386" 상표에 대한 상표권 분쟁에서 패했기 때문이다. 이 회사는 렉시콘 브랜딩을 고용하여 새로운 비숫자 이름을 만들었다.

### 인텔 80486에 대한 개선 사항
P5 마이크로아키텍처는 이전 인텔 80486 아키텍처에 비해 몇 가지 중요한 발전을 가져왔다.

* 성능:
** 슈퍼스칼라 아키텍처 – 펜티엄은 두 개의 데이터 경로(파이프라인)를 가지고 있어 많은 경우 클록 사이클당 두 개의 명령어를 완료할 수 있다. 주 파이프(U)는 모든 명령어를 처리할 수 있고, 다른 파이프(V)는 가장 흔한 간단한 명령어를 처리할 수 있다. 일부 RISC 지지자들은 "복잡한" x86 명령어 세트가 밀접하게 파이프라인된 마이크로아키텍처에 의해 구현될 수 없을 것이며, 듀얼 파이프라인 설계는 더욱 그렇다고 주장했다. 486과 펜티엄은 이것이 실제로 가능하고 실현 가능하다는 것을 보여주었다.
** 64비트 외부 데이터 버스는 각 메모리 접근에서 읽거나 쓸 수 있는 정보의 양을 두 배로 늘려 펜티엄이 80486보다 코드 캐시를 더 빨리 로드할 수 있게 한다. 또한 64비트 및 80비트 x87 FPU 데이터에 대한 더 빠른 접근 및 저장을 허용한다.
** 코드 및 데이터 캐시의 분리는 486에 비해 페치 및 오퍼랜드 읽기/쓰기 충돌을 줄인다. 접근 시간 및 구현 비용을 줄이기 위해 둘 다 486의 단일 4-방향 캐시 대신 2-방향 연관이다. 펜티엄의 관련 개선 사항은 코드 캐시가 두 캐시 라인 사이에 분할되어 있더라도 (최악의 경우 최소 17바이트) 연속적인 블록을 읽을 수 있다는 것이다.
** 훨씬 빠른 부동소수점 장치. 일부 명령어는 특히 FMUL에서 80486 FPU보다 최대 15배 높은 처리량으로 엄청난 개선을 보였다. 펜티엄은 또한 일반적인 (산술 또는 로드/스토어) FPU 명령어와 병렬로 FXCH ST(x) 명령어를 실행할 수 있다.
** 4입력 주소 가산기는 펜티엄이 80486에 비해 주소 계산 지연 시간을 더욱 줄일 수 있게 한다. 펜티엄은 세그먼트-베이스 + 베이스-레지스터 + 스케일드 레지스터 + 즉시 오프셋을 포함하는 전체 주소 지정 모드를 단일 사이클에 계산할 수 있다. 486은 3입력 주소 가산기만 가지고 있으므로 이러한 계산을 두 사이클로 분할해야 한다.
** 마이크로코드는 두 파이프라인을 모두 사용하여 REP MOVSW와 같은 자동 반복 명령어가 매 클록 사이클마다 한 번의 반복을 수행하도록 할 수 있는 반면, 80486은 반복당 3클록이 필요했다(그리고 초기 x86 칩은 486보다 훨씬 더 많은 클록이 필요했다). 또한 디코드 단계에서 첫 번째 마이크로코드 단어에 대한 접근을 최적화하면 여러 빈번한 명령어를 특히 가장 일반적인 형태와 일반적인 경우에 훨씬 더 빠르게 실행할 수 있다. 몇 가지 예는 다음과 같다 (486→펜티엄, 클록 사이클): CALL (3→1), RET (5→2), shifts/rotates (2–3→1).
** 더 빠르고 완전히 하드웨어 기반의 곱셈기는 MUL 및 IMUL과 같은 명령어를 80486보다 몇 배 더 빠르게 (그리고 더 예측 가능하게) 만든다. 실행 시간은 32비트 오퍼랜드의 경우 13~42클록 사이클에서 10~11클록으로 단축된다.
** 가상 86모드를 가속화하기 위한 가상화된 인터럽트.
** 분기 예측
* 기타 기능:
** 프로세서 기반 디버그 포트 도입으로 향상된 디버그 기능 (개발자 매뉴얼 Vol 1의 펜티엄 프로세서 디버깅 참조).
** L1 캐시 패리티 검사와 같은 향상된 자체 테스트 기능 (개발자 매뉴얼 Vol 1의 캐시 구조 참조).
** 새로운 명령어: CPUID, CMPXCHG8B, RDTSC, RDMSR, WRMSR, RSM.
** 테스트 레지스터 TR0–TR7 및 이에 접근하기 위한 MOV 명령어는 제거되었다.
* 후기 펜티엄 MMX는 또한 MMX 명령어 세트를 추가했는데, 이는 멀티미디어 애플리케이션에 사용하기 위해 마케팅된 기본 정수 SIMD 명령어 세트 확장이다. MMX는 레지스터가 재사용되었기 때문에 (빠른 컨텍스트 전환을 허용하기 위해) x87 FPU 명령어와 동시에 사용할 수 없었다. 더 중요한 개선 사항은 명령어 및 데이터 캐시 크기의 두 배 증가와 더 나은 성능을 위한 몇 가지 마이크로아키텍처 변경이었다.

펜티엄은 초당 1억 MIPS 이상을 실행하도록 설계되었으며, 75 MHz 모델은 특정 벤치마크에서 126.5 MIPS에 도달할 수 있었다. 펜티엄 아키텍처는 일반적으로 일반적인 벤치마크에서 클록 사이클당 486 프로세서 성능의 거의 두 배를 제공했다. 가장 빠른 80486 부품(약간 개선된 마이크로아키텍처 및 100 MHz 작동)은 1세대 펜티엄과 거의 비슷했으며, 이름과는 달리 실제로는 486급 CPU인 Am5x86은 순수 ALU 성능 면에서 펜티엄 75와 거의 같았다.

### 에라타
60~66 MHz P5 펜티엄의 초기 버전에는 부동소수점 장치에 문제가 있어 일부 나눗셈 연산에서 부정확한(그러나 예측 가능한) 결과가 발생했다. 1994년 버지니아 린치버그 대학의 토마스 나이슬리 교수에 의해 발견된 이 결함은 펜티엄 FDIV 버그로 널리 알려졌고, 인텔에게 굴욕을 안겨주었으며, 인텔은 결함 있는 프로세서를 교체하는 교환 프로그램을 만들었다.

1997년에는 악성 프로그램이 특별한 권한 없이도 시스템을 충돌시킬 수 있는 또 다른 에라타인 "F00F 버그"가 발견되었다. 모든 P5 시리즈 프로세서가 영향을 받았으며 수정된 스테핑은 출시되지 않았지만, 당시 운영체제는 충돌을 방지하기 위한 해결책으로 패치되었다.

## 코어 및 스테핑
펜티엄은 1990년대 중반 개인용 컴퓨터의 주요 인텔 마이크로프로세서였다. 원래 설계는 새로운 공정으로 재구현되었고, 경쟁력을 유지하고 휴대용 컴퓨터와 같은 특정 시장을 겨냥하기 위해 새로운 기능이 추가되었다. 그 결과, P5 마이크로아키텍처에는 여러 변형이 있었다.

### P5
right|섬네일|upright=1|인텔 펜티엄 마이크로아키텍처
첫 번째 펜티엄 마이크로프로세서 코드는 "P5"로 코드명되었다. 제품 코드는 80501 (초기 스테핑 Q0399의 경우 80500)이었다. 60 MHz와 66 MHz에서 작동하도록 지정된 두 가지 버전이 있었으며, 소켓 4를 사용했다. 펜티엄의 첫 번째 구현은 273핀 PGA 폼 팩터를 사용하여 출시되었고 5V 전원 공급 장치에서 실행되었다 (일반적인 트랜지스터-트랜지스터 논리(TTL) 호환성 요구 사항에서 파생됨). 310만 트랜지스터를 포함했으며 면적은 293.92 mm2로 16.7 mm x 17.6 mm였다. 800 nm BiCMOS 공정으로 제작되었다. 5볼트 설계는 뒤이은 모델에 비해 작동 주파수에 비해 상대적으로 높은 에너지 소비를 초래했다.

### P54C
섬네일|인텔 펜티엄 P54C 다이 샷
P5는 1994년 P54C(80502)로 이어졌으며, 3.3볼트 전원 공급 장치를 사용하여 75, 90, 100MHz에서 작동하는 버전이 있었다. 소켓 5로의 전환을 알리는 이 프로세서는 3.3볼트에서 작동하는 최초의 펜티엄 프로세서로, 에너지 소비를 줄였지만 메인보드에 전압 조절이 필요했다. 클록 속도가 높은 486 프로세서와 마찬가지로, 물리적 제약으로 인해 외부 주파수를 늘리는 것이 더 복잡하고 번거롭기 때문에 내부 회로가 외부 주소 및 데이터 버스보다 더 높은 주파수에서 작동하도록 내부 클록 배율기가 사용되었다. 또한 양방향 멀티프로세싱을 허용했으며, 통합 로컬 APIC 및 새로운 전원 관리 기능을 갖추었다. 330만 개의 트랜지스터를 포함했고 면적은 163 mm2였다. 500 nm 및 600 nm로 모두 설명되는 BiCMOS 공정으로 제작되었다.

### P54CQS
P54C는 1995년 초 P54CQS로 이어졌으며, 120MHz에서 작동했다. 350 nm BiCMOS 공정으로 제작되었으며, 350 nm 공정으로 제작된 최초의 상업용 마이크로프로세서였다. 트랜지스터 수는 P54C와 동일하며, 더 새로운 공정에도 불구하고 다이 면적도 동일했다. 칩은 와이어 본딩을 사용하여 패키지에 연결되었으며, 이는 칩 가장자리만을 따라 연결을 허용한다. 더 작은 칩은 와이어 길이가 제한되고 칩 가장자리가 패키지 패드에서 더 멀리 떨어져 있기 때문에 패키지 재설계가 필요했을 것이다. 해결책은 칩 크기를 동일하게 유지하고 기존 패드-링을 유지하며 펜티엄의 논리 회로 크기만 줄여 더 높은 클록 주파수를 달성할 수 있도록 하는 것이었다.

### P54CS
P54CQS는 133, 150, 166, 200MHz에서 작동하는 P54CS로 빠르게 이어졌으며, 소켓 7을 도입했다. 330만 개의 트랜지스터를 포함했고, 90mm2의 면적을 가졌으며, 4단계 상호 연결을 갖춘 350nm BiCMOS 공정으로 제작되었다.

### P24T

486 시스템용 P24T 펜티엄 오버드라이브는 1995년에 출시되었으며, 63 또는 83 MHz 클럭을 사용하는 3.3 V 600 nm 버전에 기반을 두었다. 이들은 소켓 2/3을 사용했으므로, 486 메인보드의 32비트 데이터 버스와 느린 온보드 L2 캐시를 보완하기 위해 일부 수정이 필요했다. 따라서 32 KB L1 캐시 (P55C 이전 펜티엄 CPU의 두 배)를 탑재했다.

### P55C
right|150px|섬네일|인텔 펜티엄 MMX 마이크로아키텍처
right|섬네일|150px|덮개 없는 펜티엄 MMX 166 MHz
P55C (또는 80503)는 이스라엘 하이파에 있는 인텔 R&D 센터에서 개발되었다. 이 제품은 **[[MMX (명령어 집합)|MMX]] 기술이 적용된 펜티엄** (보통 **펜티엄 MMX**라고 불림)으로 판매되었으며, P5 코어에 기반을 두었지만, 디지털 미디어 데이터 인코딩 및 디코딩과 같은 멀티미디어 작업 성능을 향상시키기 위한 57개의 "MMX" 명령어 세트를 새로 탑재했다. 펜티엄 MMX 라인은 1996년 10월 22일에 발표되어 1997년 1월에 출시되었다.

새로운 명령어는 새로운 데이터 유형에서 작동했다. 즉, 8개의 8비트 정수, 4개의 16비트 정수, 2개의 32비트 정수 또는 하나의 64비트 정수로 구성된 64비트 팩 벡터였다. 예를 들어, PADDUSB (Packed ADD Unsigned Saturated Byte) 명령어는 각각 8개의 8비트 부호 없는 정수를 포함하는 두 벡터를 요소별로 더한다. 오버플로될 수 있는 각 덧셈은 포화되어 바이트로 표현할 수 있는 최대 부호 없는 값인 255를 산출한다. 이러한 다소 특수한 명령어는 일반적으로 프로그래머가 사용하기 위해 특별한 코딩이 필요하다.

코어에 대한 다른 변경 사항으로는 리턴 스택(사이릭스 6x86에서 처음 적용)과 더 나은 병렬 처리가 가능한 6단계 파이프라인(P5의 5단계 대비), 개선된 명령어 디코더, 16KB L1 데이터 캐시 + 16KB L1 명령어 캐시(모두 4방향 연관, P5의 8KB L1 데이터/명령어 캐시의 2방향 대비), 이제 두 파이프라인 모두에서 사용할 수 있는 4개의 쓰기 버퍼(P5에서는 각 파이프라인에 하나씩 대응) 및 펜티엄 프로에서 가져온 개선된 분기 예측, 512개 항목 버퍼(P5의 256개 대비) 등이 있다.

450만 개의 트랜지스터를 포함했으며 면적은 140 mm2였다. 이전 350 nm BiCMOS 공정과 동일한 금속 피치를 가진 280 nm CMOS 공정으로 제작되었으므로, 인텔은 유사한 트랜지스터 밀도로 인해 이를 "350 nm"로 설명했다. 이 공정은 4단계의 상호 연결을 가지고 있다.

P55C는 소켓 7과 호환되지만, 칩 전원 공급에 필요한 전압은 표준 소켓 7 사양과 다르다. P55C 표준이 확립되기 전에 소켓 7용으로 제조된 대부분의 마더보드는 이 CPU의 적절한 작동에 필요한 이중 전압 레일(2.8볼트 코어 전압, 3.3볼트 I/O 전압)을 준수하지 않는다. 인텔은 자체 전압 조절 기능을 갖춘 인터포저를 특징으로 하는 오버드라이브 업그레이드 키트로 이 문제를 해결했다.

### 틸라무크
펜티엄 MMX 노트북 CPU는 CPU가 들어 있는 모바일 모듈을 사용했다. 이 모듈은 더 작은 폼 팩터로 CPU가 직접 부착된 PCB였다. 이 모듈은 노트북 마더보드에 끼워졌고, 일반적으로 히트 스프레더가 설치되어 모듈과 접촉했다. 그러나 250 nm 틸라무크 모바일 펜티엄 MMX의 경우, 이 모듈은 시스템의 512KB SRAM 캐시 메모리와 함께 430TX 칩셋도 탑재했다.

## 모델 및 변형

## 경쟁 제품
펜티엄이 출시된 후 넥스젠, AMD, 사이릭스, 텍사스 인스트루먼트와 같은 경쟁사들은 1994년에 펜티엄 호환 프로세서를 발표했다. CIO 매거진은 넥스젠의 Nx586을 최초의 펜티엄 호환 CPU로 지목했으며, PC 매거진은 사이릭스 6x86을 최초로 언급했다. 이어서 AMD K5가 출시되었으나 설계 문제로 지연되었다. AMD는 나중에 AMD K6 설계를 돕기 위해 넥스젠을 인수했으며, 사이릭스는 내셔널 세미컨덕터에 인수되었다. AMD와 인텔의 후속 프로세서는 원래 펜티엄과 호환성을 유지한다.

### 목록
* AMD K5, AMD K6
* 사이릭스 6x86
* WinChip C6
* 넥스젠 Nx586
* 라이즈 MP6

## 같이 보기
* 인텔 CPU 마이크로아키텍처 목록
* 인텔 펜티엄 마이크로프로세서 목록
* COASt, 펜티엄용 L2 캐시 모듈
* IA-32 명령어 집합
* 인텔 82497 캐시 컨트롤러

## 각주

## 외부 링크
* CPU-Collection.de - 인텔 펜티엄 이미지 및 설명
* 플라스마 온라인 인텔 CPU 식별
* 더 펜티엄 타임라인 프로젝트  더 펜티엄 타임라인 프로젝트는 각 s-spec에서 알려진 가장 오래된 칩과 가장 어린 칩을 매핑한다. 데이터는 대화형 타임라인으로 표시된다.

### 인텔 데이터시트
* 펜티엄 (P5)
* 펜티엄 (P54)
* 펜티엄 MMX (P55C)
* 모바일 펜티엄 MMX (P55C)
* 모바일 펜티엄 MMX (틸라무크)

### 인텔 매뉴얼
다음 공식 매뉴얼은 펜티엄 프로세서 및 기능에 대한 개요를 제공한다.
* 펜티엄 프로세서 제품군 개발자 매뉴얼 펜티엄 프로세서 (볼륨 1) (인텔 주문 번호 241428)
* 펜티엄 프로세서 제품군 개발자 매뉴얼 볼륨 2: 명령어 세트 참조 (인텔 주문 번호 243191)
* 펜티엄 프로세서 제품군 개발자 매뉴얼 [ftp://download.intel.com/design/pentium/manuals/24143004.pdf 볼륨 3: 아키텍처 및 프로그래밍 매뉴얼] (인텔 주문 번호 241430)

분류:인텔 x86 마이크로프로세서
분류:슈퍼스칼라 마이크로프로세서
분류:인텔 마이크로아키텍처
분류:32비트 마이크로프로세서
분류:X86 마이크로아키텍처