본문 바로가기

Architecture

CUP의 발달과 기원.

마이크로 프로세서의 기본 구조

CPU란 Central Processing Unit의 약자로, 중앙 처리 장치라고 하는데, 사전적 의미로는 컴퓨터의 제어와 데이터의 처리를 하는 장치를 말하고, 기능상으로는 컴퓨터에서 두뇌 역할을 하는 장치이다. 컴퓨터의 동작에서, 키보드나 마우스 등의 입력 장치를 통해서 입력된 자료는 일시적으로 컴퓨터의 기억 장치(memory, 메모리)에 저장된다. 이 자료는 CPU에서 처리된 후 모니터나 프린터와 같은 출력 장치를 통해서 외부로 출력되는 것이 일반적이다. 컴퓨터에서 CPU가 전체적인 작업을 처리하는 것은 아니지만, 컴퓨터라는 장치가 기본적으로 연산을 처리하는데 있어서 CPU가 핵심을 담당하는 것이 사실인 만큼 컴퓨터의 종류를 나타낼 때 286, 386, 486, 펜티엄과 같은 명칭을 사용하기도 하는 것이다.

마이크로 프로세서의 구조
대부분의 마이크로 프로세서는 다음과 같은 구조를 가지고 있으며 크게 4부분으로 나눌수 있다.

1.실행 유닛(Eu: Execution Unit)
실행 유닛은 마이크로 프로세서의 각 명령어를 수행하는 유닛이다.
실행유닛에는 ALU(Arithmetic Logic Unit)와 제어 유닛(CU:Control Unit),레지스터로 구성된다. ALU에서는 덧셈이나 비교 연산과 같은 산술 연산,논리연산을 수행한 후 중간 결과를 레지스터에 보관한다.
2. 명령어 유닛(Instruction Unit)
명령어 유닛(Instruction Unit)은 메모리에서 가져온 명령어를 실행유닛에서 정확히 수행할수 있도록 제어하는 유닛이다. 이때 제어 유닛은 ALU나 레지스터들이 잘 동작되도록 하여준다
3. 어드레싱 유닛(Addressing Unit)
어드레싱 유닛은 CPU가 메모리나 입출력 장치에서 데이터를 읽거나 쓸 때, 메모리나 입출력 어드레스를 만들어 주는 유닛이다.

4. 버스 인터페이스 유닛(Bus Interface Unit)
버스 인터페이스 유닛은 어드레스,데이터, 컨트롤 버스를 통해서 마이크로 프로세서 외부와 연결시켜 주는 유닛이다.
< 마이크로 프로세서의 구조 >
마이크로 프로세서는 데이터 버스를 통해서 데이터를 메모리에 읽거나 쓸 수 있으며, 데이터를 읽거나 쓰는데 사용할 메모리 위치는 어드레스에 의해서 정해진다.

마이크로 프로세서는 어드레싱 유닛에서 어드레스를 계산한 후 어드레스 버스로 보내게 되며, 데이터를 읽거나 쓰는 일은 버스 유닛에서 수행한다.

버스 유닛은 메모리의 어드레스를 내 보내고 메모리에 쓸 데이터를 내 보내거나 어드레스를 내 보내고 메모리에서 데이터를 읽어 들인다. 또한 버스 유닛은 마이크로 프로세서에서 수행할 명령어를 읽을(Fetch)때는 데이터를 읽을 경우와 마찬가지다.

버스 유닛에서 데이터를 읽어 들였을 경우는 그 데이터가 레지스터에 저장된다. 그러나 버스 유닛이 명령어를 읽어들였을 경우는 그 명령어가 프리패치(Prefetch) 큐(que)에 저장된다.
명령어 유닛은 프리패치 큐에서 명령어를 읽어들여 해석하고(Decode), 해석된 명령어(Decoded Instruction)을 수행 유닛으로 보낸다. 그러면 수행 유닛에서는 해석된 명령어에 따라서 ALU와 레지스터가 제어되어 명령어에 맞는 동작을 수행하게 된다.

CPU의 종류

PC에 장착되어 있는 CPU는 각종 연산 기능과 제어 기능을 하나의 마이크로 프로세서에 집약시킨 형태를 가진다. 이것은 연산을 처리하는 방식과 한 번에 처리할 수 있는 데이터의 양에 따라 여러 가지로 구분할 수 있다.
처리 용량에 따른 구분
최초의 PC용 마이크로 프로세서는 인텔(Intel)에서 개발해서 애플(APPLE) 기종에서 사용된 Z80이다. Z80은 최근까지도 판매되고 있으며 구형 컴퓨터나 간단한 전자 제품에 많이 사용되고 있는데, 최신 컴퓨터에 장착되는 프로세서의 조상이라고 할 수 있다. 인텔에서 1971년에 발표한 i4004도 있지만, 이것은 4비트 프로세서로 컴퓨터에 실제로 사용되지는 않았고 제어기 분야에서만 사용되었으며 형태가 지금의 프로세서와는 많이 달랐으므로 여기서는 설명하지 않는다. 또한, Z80 이외에도 많은 8비트 프로세서가 있었지만 자세한 내용은 마이크로 프로세서 관련 서적을 참고하기 바라고, 여기서는 상용 컴퓨터에 최초로 사용된 8비트 CPU로 Z80이라는 것이 있었다는 사실만 이해하기 바란다.

8비트
애플(APPLE) 컴퓨터는 1980년대에 전세계적으로 인기를 끌었던 8비트 컴퓨터이다. 여기에 사용된 CPU는 6502로, 현재의 CPU에 비하면 매우 성능이 뒤쳐지는 제품이었다. 애플은 성능이 개선되어 애플 II/IIe 등으로 발표되었지만, 1980년대 후반에 새롭게 등장한 IBM PC에 밀려 모습을 감추게 되었다.
8비트 CPU는 한번에 8비트 단위로 자료를 처리할 수 있는데, 8080, 8085 등의 제품이 있으며 가장 널리 사용되었던 Z80이다.
8085는 16비트 프로세서인 8086의 기본 골격이 되기도 했다.

16비트
최초의 16비트 컴퓨터는 IBM PC XT이다. 인텔은 16비트 프로세서인 8086을 개발했으나 생산비의 상승 때문에 기능을 축소시킨 8088을 만들었고, 결국 IBM PC XT에 8088을 장착하게 되었다.
16비트 CPU는 말그대로 16비트 단위로 자료를 처리할 수 있고, 덕분에 8비트 컴퓨터에 비해서 상당한 성능 개선과 처리 용량의 향상이 이루어졌다. 이어서 개발된 80186 프로세서는 8088과 크게 다르지 않았으므로 많이 쓰이지 않았다. 80186을 개선한 80286은 한때 286 컴퓨터(IBM PC AT)에 사용되었고 컴퓨터 기종을 뜻하는 이름으로까지 사용될 정도로 유행했다. 80286은 8086에 비해서 4배 가량의 성능 향상이 이루어진 제품으로 메모리 지원 강화, 동시에 여러 작업을 수행할 수 있는 멀티태스킹(multi-tasking) 지원이 가능해졌다.

32비트
현재 국내에서 사용되는 386(80386), 486(80486), 펜티엄(Pentium), 펜티엄프로, 펜티엄II는 모두 32비트 프로세서이다. 80486(줄여서 486)까지는 32비트 단위로 자료를 처리할 수 있었지만, 펜티엄에서는 32비트 정수 연산기를 두 개 내장하고 있으므로 한번에 두 개의 자료를 동시에 처리할 수 있게 되었다. 때문에, 초기에는 펜티엄을 64비트 프로세서라고 과장하는 경우도 있었지만, 실제로는 32비트 프로세서이다.
32비트 CPU는 기본적으로 16비트 프로세서와 호환성을 가지고 있으며, 보호모드(protected mode)나 가상 86(virtual 86 mode)와 같이 32비트 프로세서 고유의 연산 처리 기능을 지원한다. 이 경우에 호환 모드에 비해서 고속 처리가 가능하고 시스템 자원을 최대로 활용할 수 있다.
64비트
아직까지 IBM PC 호환 기종에서는 64비트 프로세서를 채택하지 않고 있다. 다시 말하면, 인텔에서는 64비트 프로세서를 개발하지 못했다. PC가 아닌 워크스테이션에서는 부분적으로 64비트 프로세서를 사용하고 있지만 일반적으로는 32비트 프로세서를 여러 개 연결해서 병렬로 동작시키는 방법이 오히려 이 사용되고 있다. 한번에 64비트로 자료를 처리한다고 해서 많은 성능 개선이 이루어지는 것이 아니기 때문이다.

1997년 3월 인텔과 HP(Hewlett-Packard)가 함께 개발할 이테니엄(Itatium) 프로세서는 PC용으로 사용될 최초의 64비트 프로세서로 알려져 있으며, 인텔이 지금까지 채택하던 CISC 방식이 아니라 VILW 방식을 사용한다.
그러나, 이 제품이 일반 컴퓨터에서 사용되기까지는 상당한 시간이 필요할 것으로 생각된다. 기존의 프로세서와 명령어 구조가 다르고 하위 호환성을 가지만 느리게 동작하기 때문이다.


CISC와 RISC

CPU는 명령어의 구성 방식에 따라서 CISC와 RISC 방식으로 구분할 수 있다. 또한, 자료를 처리하는 방식에 따라서 SIMD, VLIW 방식으로 나눌 수 있다.
CISC(Complex Instruction Set Computer)
인텔의 8086은 16비트 프로세서로, 명령어의 길이가 1바이트에서 8바이트까지 가변적으로 구성되어 있다. 명령어가 가변적이고 복잡하므로 CISC 방식이라고 하는 것이다. 이 구조는 가능한 한 명령어의 길이를 줄여서 명령어의 디코딩(decoding, 해석) 속도를 높이고 최소의 메모리 구조를 갖도록 하기 위해서 정해진 것으로, 하나의 프로세서가 일련의 명령어를 순차적으로 처리하기에는 무척 유용한 방법이며, CPU의 동작 속도가 높아짐에 따라 성능이 비례로 증가한다. CISC 방식은 32비트 프로세서인 80386까지도 아무런 문제없이 적용된 기술이므로 완벽한 하위 호환성을 유지할 수 있었다.

그러나, 80486이 등장하면서 단순히 CPU의 클럭(clock, 동작 속도)을 높이는 방식으로 성능 향상을 기대할 수 없으므로 CISC 방식의 문제점이 드러나기 시작했다. 클럭에는 한계가 있기 때문이다. 그래서, 한번에 여러 개의 명령어를 동시에 수행할 수 있는 기술이 필요하게 되었다. 즉, 동일한 클럭에서 두 개의 명령어를 한번에 처리하게 되면 두 배의 성능 향상을 기대할 수 있기 때문이다. 그러나, 슈퍼 스칼라(super scalar) 구조에서는 명령어의 길이가 가변적이기 때문에 순차적으로 해석해야 하고 조건/비조건 분기가 중간에 자주 등장하므로 여러개의 명령어를 처리하기에는 적합하지 못했다.

결국, 펜티엄부터 RISC86이라는 기법이 사용되었다. 이 방식은 AMD의 인텔 호환 CPU에서 사용된 기술로, 명령어의 해석 부분을 기존의 슈퍼 스칼라 방식으로 유지하면서 독립된 장치로 설계하여 연속적이고 고속으로 명령어를 RISC 방식으로 변환시키는 것이다. 그리고, 실제로 연산을 처리하는 장치는 RISC 방식으로 처리하여 여러 개의 명령어를 처리할 수 있도록 하는 방식이다. 그래서, 인텔 펜티엄 프로세서는 최대한 두 개의 명령어를 동시에 처리할 수 있는 것이다.


CISC 방식의 마이크로 프로세서
 
RISC(Reduced Instruction Set Computer)
1970년대에 등장한 RISC 방식은 최신 프로세서의 핵심 기술로, CPU에서 수행하는 모든 동작의 대부분이 몇 개의 명령어만7으로 가능하다는 사실을 전제로 하고 있다.

인텔과 경쟁하며 제품을 개발하던 모토롤라(Motorola)의 프로세서를 사용한 애플(Apple)의 매킨토시 컴퓨터에는 68 계열의 프로세서가 장착되어 있는데, 이 프로세서가 CISC(Complex Instruction Set Computer) 방식을 채택하고 있다. 모토롤러의 RISC계열로는 88계열이, 인텔에서는 x60계열이 있었다. 말 그대로 간단한 명령어만으로 구성되는 CPU이다.
그래서, 인텔 CPU 기반으로 개발된 프로그램은 매킨토시에서 사용할수 없었는데, 이것은 CPU 아키텍처가 다르기 때문이다.

RISC CPU는 고정된 길이의 명령어를 사용하고 명령어의 종류가 미리 정해져 있으므로 해석 속도가 빠르고 여러 개의 명령어를 처리하기에 적합하다는 장점이 있다. 특히, 분기 위치가 정해져 있고 비순차 처리도 가능하다. 그러나, 처리 비트 단위가 변하거나 CPU의 구조가 조금만 바뀌어도 하위 프로세서와의 호환성이 떨어지므로 문제가 발생한다. 이것은 하위 컴퓨터의 표준이 될만한 호환 명령어라는 개념이 없고 프로세서의 단계에 따라 최적의 명령어가 정해져 있기 때문이다.

이처럼 RISC 방식의 대표적인 CPU인 모토롤라 68 계열은 소프트웨어의 호환성 결여 때문에 인텔에 비해서 뛰어난 성능을 가지고 있음에도 불구하고 많은 사용자를 확보하지 못하고 있다. 단지 고성능의 대용량 데이터 처리가 필요하고 소프트웨어 활용이 비교적 고정되어 있는 워크스테이션을 중심으로 해서 많이 사용되고 있다.

RISC는 명령어가 전부 1워드(word) 길이로 짧고 파이프라인(pipeline)과 슈퍼 스칼라(super scalar)를 통해서 멀티 태스킹이 가능하므로 CISC에 비해서 많은 레지스터를 가지고 있다는 특징을 가진다.


RISC 방식의 마이크로 프로세서
 



SIMD와 VLIW
SIMD(Single Instruction Multiple Data)
최근에는 TV나 각종 매체를 통해서도 MMX(Multi-Media eXtension)이라는 용어를 많이 접할 수 있다. 펜티엄은 초기 모델과 MMX 지원 모델로 구분되고 펜티엄II 클라매스(Klamath)나 데슈츠(Deschutz), 셀러론(Celleron) 등의 최신 프로세서는 기본적으로 MMX 기능을 지원한다. MMX 기능을 이용하면 멀티미디어 자료나 정보를 최대 8배까지 더 빨리 처리할 수 있다. 어떻게 이런 처리가 가능할까?
여기에 사용된 기법이 SIMD 방식이다. 초기의 CPU에서는 하나의 명령어를 이용해서 하나의 자료를 처리하도록 되어 있었다. 그러나, SIMD 방식에서는 하나의 명령어로 여러 개의 자료를 동시에 처리한다. 즉, MMX 기술은 64비트의 자료 버퍼를 이용해서 8비트 단위의 자료를 한번에 8개 처리하므로 혁신적인 속도 향상이 가능하다.

그러나, 이런 처리는 자료의 구조가 단순하고 반복적인 경우에만 적용되고 모든 자료에 대해서 MMX 기술을 적용할 수는 없다. 그래서, 프로세서의 주요 기술로 활용되지는 못하고 단지 CPU의 성능을 부분적으로 개선하기 위한 보조 기술로 채택되고 있다. 현재까지는 기본적인 정수 연산의 경우에만 가능하지만 인털의 머시드(Merced)에서 처음 선보일 MMX-2 기술에서는 실수 처리도 지원하고 한번에 2∼4개의 처리를 가능하게 할 것이며 실제로 최근에 발표된 AMD K6+3D에서도 실수 범위까지 동시 처리를 지원하고 있다.

VLIW(Very Long Instruction Word)
앞에서는 컴퓨터가 한 번에 처리할 수 있는 비트 수가 많을수록 한번에 많은 양의 자료를 처리할 수 있으므로 성능이 향상된다고 설명했다. 그러나, 64비트 이상의 크기를 가지는 자료는 거의 없기 때문에 CPU의 구조가 32비트에서 64비트로 바뀌어도 실제 성능이 눈에 띄게 달라지지는 않는다. 이런 문제를 해결하기 위해 자료 처리 수를 늘리는 SIMD 방식이 등장하게 된 것이다.

VLIW 방식에서는 명령어가 일반적으로 128비트 또는 256비트 단위로 구성되어 있다. 경우에 따라서는 512비트까지도 사용된다. 즉, 동시에 여러 개의 명령어를 수행할 수 있는 것이다. 이렇게 하기 위해서는 명령어가 처리 방식에 따라서 구분되는 것이 아니라 명령어 필드의 비트가 구분되므로 명령어 자체의 처리 단위가 좀 더 복잡해진다. 이 방식은 3차원 3차원 그래픽 처리나 멀티미디어 가속 등 비교적 단순한 자료의 처리가 반복되는 경우에 유용하다.


생산 업체에 따른 구분

CPU를 기능이나 방식에 따라서 구분하는 것과 생산업체별로 구분하는 것은 다소 애매하고 중복되는 분류이지만 CPU에 대한 전체적인 이해를 돕기 위해 간단히 업체별 CPU의 종류를 살펴보도록 한다.
인텔 계열
8086, 80186, 80286, 80386, 80486 등의 프로세서는 인텔에서 제작된 프로세서이다. 1992년 출시된 펜티엄에서는 80586과 같은 숫자명칭을 사용하지 않고 Pentium이라는 말을 제품명으로 사용하기 시작했다. 때문에 686 계열에 포함되어지는 펜티엄프로 또는 펜티엄II 등도 제품명이다. 이중 펜티엄II의 경우는 내부적으로 비슷한 계열의 프로세서가 존재한다. 예를 들어 펜티엄II 클라매스 또는 펜티엄II 데슈츠가 대표적인 예이다. 더불어 최근에 출시된 셀러론도 정확한 명칭은 펜티엄II 셀러론이 정상적인 명칭이다. 단지, 편의상 두 번에 붙여진 별칭을 사용하여 제품을 구분하고 있다. 하지만, 머시드부터는 CPU에 적용되어진 기술이 상당히 많이 변경이 되었기 때문에 펜티엄II 계열로 설명해야할지 또는 분리할지는 결정되어 있지 않다.

X86 계열
이것은 인텔의 CPU가 명칭이 86으로 끝나며 위의 CPU를 통합적으로 부르기 위하여 사용한 이름이다. 하지만, 인텔의 CPU를 지정하는 범위가 넓어져서 인텔과 호환이 되는 비인텔 계열의 CPU에 대해서도 함께 부르는 명칭으로 확대되어졌다. 최근에는 오히려 비인텔 계열의 CPU를 지칭하기 위해서 주로 사용되기도 하며, 대표적인 제품군으로는 AMD K5, AMD K6, AMD K6+3D 제품군과 Cyrix 5x86, 6x86, M1, M2 제품이 있다. 더불어 NexGen, IDT 등에서도 펜티엄급 프로세서를 생산하고 있다. 이중에서 AMD사와 Cyrix사의 경우는 인텔 80386과 호환이 되는 프로세서를 이미 생산하고 있었으며 당시에는 특별히 이름을 구분하지 않고 단지 AMD 80386과 같은 형식으로 지칭하였다. 하지만, 펜티엄부터는 상표명칭이 되었기 때문에 별도의 이름을 갖게 된 것이다. 일반적으로 호환 프로세서가 정수 처리 속도는 동급의 인텔 프로세서에 비하여 월등히 높은 성능을 갖추고 있다. 하지만, 실수 처리는 장시간의 노하우를 기반으로 제작된 인텔계열에 비하여 상당히 뒤떨어지는 성능을 갖추고 있는 것이 문제이다.

모토롤라 계열
모토롤라 계열은 68xxx 계열 프로세서라고도 부르고 있다. 68000, 68010, 68020, 68030, 68040, 68050 등의 프로세서 명칭이 정해져 있고 RISC 방식이기 때문에 인텔 계열의 소프트웨어에 대한 호환성을 갖고 있지 않다. 위에서 코드명을 보면 인텔의 80x86의 X에 해당하는 숫자를 680x0으로 지정되어 있다는 것을 알 수 있다. 프로세서 자체의 성격은 완전히 다르지만 궁극적으로 비슷한 처리 스펙을 가지고 있다. 이들 프로세서는 애플사의 매킨토시에 내장되어 사용되고 있다. 일반적으로 인텔 계열에 비하여 정수 처리능력은 거의 비슷한 수준이지만 실수 처리 성능은 30-80% 가량 높은 성능을 갖추고 있다. 이것은 인텔 CPU보다 내부 구조가 잘되어있었기 때문이다.

최근에 등장한 PowerPC의 경우는 모토롤라를 기반으로 IBM 등이 모여서 인텔의 아성에 도전하기 위해서 개발된 고성능 프로세서이다. 하지만, 매킨토시 또는 PowerPC의 몰락과 함께 국내의 최근 컴퓨터 시장에서는 거의 사장 단계에 접어들고 있는 제품이다.


CPU 발전사

여기에서는 CPU의 발전과정과 이에 따라 새롭게 등장된 기술과 특징에 대하여 설명하도록 한다. 가능한 폭넓은 범위의 제품 영역을 설명하기는 하지만 너무나 기술적인 내용는 생략하기로 하고 용어적인 설명을 위주로 설명한다. 컴퓨터에 사용하는 마이크로 프로세서는 지난 25년간 계속적인 발전을 거듭하였다. 1970년 말 개인용 컴퓨터가 출시된 이후에 마이크로 프로세서의 무어의 법칙에 힘입어서 더욱더 비약적인 발전을 하기에 이르렀다. 또한 인텔은 새로운 기술인 DIB과 MMX, SEC 카트리지 방식을 채용한 강력한 프로세서를 출시하였다. 여기에서 현재까지의 출시된 CPU를 살펴보고 마이크로 프로세서의 상황을 정리하는 의미에서 발전과정을 살펴보기로 한다.


Intel 계열

인텔계열 CPU는 앞에서 설명한 바와 같이 인텔에서 출시되어 일반 PC에 사용되어진 프로세서들이다. 일반적으로 86계열의 프로세서라고 부르며, 펜티엄 이상의 펜티엄프로 또는 펜티엄II의 경우는 그냥 펜티엄 계열의 프로세서라고 지칭하고 있다.
4004
마이크로 프로세서의 가장 중요한 임무는 컴퓨터 두뇌의 역할이다. 이를 위해서 인텔은 최초의 마이크로 프로세서인 4004를 1971년에 2300개의 트랜지스터를 집적시킨 후 오늘날 수백만 개의 소자가 집적된 펜티엄2 프로세서를 발표하기에 이르렀다. 최초의 마이크로 프로세서인 4004 마이크로 프로세서를 발표하였으며 이 칩은 비지콤이라는 전자계산기에 채용되어 팔려나가면서 이후 마이크로 프로세서 역사의 한 획은 그은 제품으로 평가받고 있다.

8008
1972년 인텔은 4004를 개량한 8008을 개발하였다. 이 칩은 일종의 터미널을 만드는데 사용하였는데 향후 개인용 PC에 사용된 8088 등장의 초석이 된다.

8080
범용 CPU의 효시로서 1974년에 개인용 PC용으로 발표된 칩으로 알테어(Altare)라는 최초로 성공한 컴퓨터에 장착이 되었다.
8080은 당시 미국에서 있기가 있었던 TV 시리즈인 "스타트랙"에서 우주선인 엔터프라이즈호의 종착지에서의 이름을 따온 것으로 8080은 알테어 키트로 불리면서 컴퓨터 광들에게 395달러에 판매가 되었으며 몇 개월 사이에 수만 키트가 판매되는 기록을 세웠다.

1976년에 다시 8080의 입출력 부분과 기능적인면을 보강한 8085가 선보였다. 8085에서 가장 중요한 것은 NMOS공정과 5V 단일전원의 사용이다. 물론 속도도 많이 빨라졌다.

1980년 인텔에서 새로이 8086을 개발하였다. 이 8086을 최초의 16비트 CPU칩으로 얘기하게 되는데. 그당시 PC는 모두 8비트의 인터페이스를 가지고 있었기 때문에 인텔에서는 새로이 8086과 내부는 동일하나 외부에서 나오는 데이터의 크기만 8086의반인 8비트 형태를 취한 8088을 발표하게 되었다.


8086

인텔이 1978년도에 발표한 것이 8086이다. 8086의 장점은 기존의 8비트 CPU들이 가지고있던 64KB의 메모리 제한을 없앴다는 점이다. 8086은 기존의 8비트 프로세서인 8080, 8085의 프로그램을 직접 실행할 수는 없지만 명령어가 상당히 유사하게 구성되어 있기 때문에 명령어 코드를 수정하게 되면 8086에서 구동이 가능하다. 8086의 특징은 다음과 같다.
세그먼트(SEGMENT)의 도입
8086은 기존의 메모리의 한계인 64KB를 넘어서 최대 1MB의 메모리 공간을 관리할 수 있었으며 이를 위해서는 20비트의 어드레스가 필요했다. 그러나 8086의 레지스터는 16비트까지만 다룰 수 있기 때문에 메모리상의 한 어드레스에 억세스하기 위해서는 먼저 세그먼트의 위치를 지정한 후에 그 세그먼트 안에서 위치(오프셋:offset)를 지정하는 방식을 쓴다. 이것이 바로 8086의 큰 특징인 세그먼트에 의한 메모리 관리이다.

세그먼트에 의한 새로운 기능은 어드레스 지정에 사용하는 전용 레지스터의 사용과 고기능 명령의 추가 등으로 8085와의 호환성을 위해서 만들어졌다. 이것은 느린속도와 복잡한 어드레스 계산에 따른 컴파일의 복잡성으로 인해서, 엔지니어들로부터 지저분한 구조의 CPU라는 악평을 듣기도 하였다.
참고로 모토롤라의 CPU는 선형 어드레스 구조로 깔끔하면서도 빠른 속도를 제공하였다.

실행 명령의 고속화

8086의 내부는 독립적으로 동작하는 실행 유니트(EU)와 버스 인터페이스 유니트(BIU)의 2가지로 구성되어 있다. BIU는 메모리 사이에서 명령이나 데이터 교환을 행하는 모듈로서, CPU의 메모리 버스가 비어 있는 동안 명령을 먼저 읽어서 실행 후에 각 명령어를 CPU 내부의 명령어 큐(명령을 저장해놓은 일종의 버퍼)에 저장한다. 실행 유니트는 BIU와는 관계없이 명령 큐로부터 명령을 끄집어내서 해석하고 실행한다. 실행 유니트가 해석, 실행에 걸리는 명령을 처리하고 있는 동안 명령 코드는 메모리에 먼저 읽혀져 큐에 미리 저장된다. 이러한 선형 명령어 큐를 사용한 것은 8086이 최초이다


8088
8088은 NMOS 마이크로 프로세서로 가격을 내리기 위해 8086의 외부 데이터버스 폭을 16비트에서 8비트로 한 CPU로서 내부 구조는 8086과 거의 같다. 인텔의 8088은 1981년에 발표한 초기 IBM XT에 처음으로 장착된 CPU이다. 8088 칩은 4.77MHz로 동작하며, 8086 마이크로프로세서와 동일한 명령어 세트를 사용한다. 즉 내주데이터를 8비트로 처리한다는 뜻이다.
8088에서는 최소 모드(minimum mode)와 최대 모드(maximum mode)가 있는데, 최소 모드란 이 8088을 제어용으로 사용할 때를 말하며, 최대 모드란 PC용과 같이 범용으로 쓸 때를 말한다.

8088은 곱셈, 나눗셈을 포함한 16비트 연산과 8086에서 사용한 세그먼트에 의한 메모리 관리 기법을 이용하며, 8086과 마찬가지로 20비트 어드레스버스를 가지고 있어 1MB의 메모리를 사용할 수 있다. CPU의 모양은 DIP(Dual In-line Pakage)의 형태이다. 초기의 8088은 5MHz 이하에서만 동작을 하였으며 8088-1이라고 하였다. 그후에 클럭수가 6.66MHz, 7.16MHz, 8.0MHz 등으로 높아짐에 따라 좀더 고속의 클럭에서 동작하는 CPU가 필요하게 되었다. 이렇게 해서 만든 것이 8088-2이다. 8088은 29,000개의 트랜지스터가 집약되어 있다.

80186/80188
80186/80188은 8086/8088 CPU에 외부의 I/O를 내장한 형태이다.
이것은 PC용이 아니라 마이크로 컨트롤러로서 사용하도록 제작이 되었다.
IBM의 PC 구조와도 다르게 제작되어서 PC에는 사용이 불가능하다.
이러한 원칩을 이용한 PC에는 NEC의 V25,V40이 있으며,IBM PC의 내부 I/O와 동일하게 제작되어 사용이 가능하였다. 프로세서의 모양은 PGA의 형태를 띄고 있다.


80286

인텔이 1981년에 발표한 새로운 16비트 마이크로 프로세서가 80286이다. 80286은 이전 CPU과 비교하여 상당히 많은 발전을 했다. 칩의 패키지 형태로 PLLC(Plastic Leadless Chip Carrier)를 사용하였으며, 8088보다 4배 많은 130,000개의 트랜지스터가 집약되어 있다. 80286은 8086의 프로그램을 좀더 고속으로 실행하는 리얼 모드(real mode)와 고속운영 체제를 염두에 둔 새로운 모드인 보호모드 (protected mode)를 가지고 있었다. 리얼 모드에서 80286은 8086과 같은 명령어를 읽어들이며 유사한 동작을 하는데 80286은 8086의 명령어 모드와 어드레싱 모드를 이어받음으로써 기존의 도스기반의 자원을 그대로 살릴 수 있었다.
CPU의 구성도 고속화를 위해서 많이 바뀌었다. 8086은 실행 유니트와 BIU의 두가지 모듈로 구성되어 있는 반면 80286은 독립적으로 동작하는 4가지 모듈(버스유니트, 어드레스유니트, 명령유니트, 실행유니트)로 구성되어 있다. 버스 유니트는 외부 버스와의 인터페이스를 담당하며, 어드레스유니트는 어드레스 변환으로 물리 어드레스를 생성한다. 그리고 명령 유니트가 명령의 해석을, 실행 유니트가 명령의 실행을 담당하게 된다. 결국 CPU의 내부의 처리가 4단계로 확장되어서 강력한 병렬 처리를 가능하게 하여, 명령어간에 지연시간을 최소화 시켜 최상의 성능을 발휘할 수 있도록 설계되었다. 또 온칩(on-chip)메모리 관리 기술을 적용하고 한번에 여러 개의 작업을 할 수 있는 작업 환경을 만들었다. 80286에 와서 부각되는 것은 보조 프로세서(coprocessor) 개념의 확대이다. 수치 연산 보조프로세서 80287이라고도 하는데, 이 칩은 입출력 버스를 통해 CPU에 접속되는 것으로서, 독립된 하나의 입출력 디바이스처럼 동작한다. 80287은 IO 버스를 통해서 CPU에 연결되기 때문에 8087처럼 명령이 CPU용인지, NDP(Numerical Data Processor)용 인지를 조사할 필요가 없고, CPU가 읽어들여 해석한 명령이 부동 소수점연산 명령이었을 경우에만 80287에 그 명령을 넘기고, 연산의 실행을 요구한다. 또한 80287은 CPU와 병행하여 동작하기 때문에 CPU는 80287의 연산 종료를 기다리지 않고 다음 명령을 수행 할 수 있다. 80287은 실행중인 연산이 끝났을 때 CPU에 신호를 보내고, 연산 결과의 답을 요구하기 때문에 80287은 부동 소수점 연산을 실행하는 I/O 디바이스처럼 동작하는 것이다.
기본 동작 속도 향상
8088의 기본 클록 주파수는 4.77MHz를 기반으로 동작하며 기종에서 따라서는 10MHz 정도까지 성능이 확장되었다. 하지만, 80286은 6MHz를 기반으로 동작하고 기종에서 따라서 최고 25MHz 정도까지 운용되고 있으며 경우에 따라서는 30MHz 모델까지도 동작했다. 클럭에 따라서 동작하는 반도체의 운용 속도는 궁극적으로 클럭의 속도에 따라서 성능이 향상 될 수 밖에 없다.

데이터 버스의 확장
80286의 데이터 버스 폭은 8088의 2배인 16비트로 이루어진다. 즉, 내부나 외부의 모든 처리가 16비트로 처리되는 진정한 16비트 프로세서이다.

메인메모리 지원 능력 강화

메인메모리를 16MB까지 직접 처리할 수 있다. 때문에 최근의 컴퓨터에서는 모두가 바이오스 수준에서 16MB의 확장 메모리를 직접 제어할 수 있고 초기의 ISA 장비에서 시스템 메모리 억세스의 한계로 지적되고 있다.


80386
80386에 와서는 PC의 역사가 바뀌었다고 해도 과장이 아닐정도로 많은 발전을 가져왔는데 인텔이 1985년에 발표한 4004의 100배의 집적도를 가지는 80386은 80286의 두 배에 해당하는 250,000개의 트랜지스터가 집약되어 있으며 PGA 형태를 가지고 있었다. 80386은 X86계열의 CPU 중에서 최초의 32비트 마이크로 프로세서이다. 386이 8088이나 286과 다른 점은 8088에 비해서 적은 수의 클럭사이클에 동일한 기능을 수행할 수 있도록 설계되어서 동일한 코드일지라도 386에서는 빠르게 수행한다는 점이다. 또한 새로운 명령어가 추가되어서 훨씬 더 효과적으로 기능을 수행할 수가 있도록 설계가 되었다는 점이다. 더불어서 한 클럭 사이클에 걸리는 시간의 길이가 짧아졌다.
80386은 8086과의 호환성을 유지하는 리얼 모드(real mode)와 80286의 보호 모드(protected mode)를 가진다. MS-DOS 상에서 사용하는 리얼모드는 8088에서 사용되는 모드로 메모리의 사용도 1M로 한정됐으며, 선보이고 있는 거의 모든 PC용 프로그램들이 이 모드에서 동작하도록 작성됐다. 따라서 리얼모드로 설계된 프로그램들을 보호 모드에서 동작시키려면 많은 수정을 가해야만 한다.

보호 모드는 메모리를 쓸 때 리얼 모드와 같이 1M의 한계가 없으며, 여러 개의 프로그램이 물리적 메모리를 충돌 없이 공유할 수 있어서 멀티태스킹 구현에 알맞다. 또 가상 메모리 기법을 사용해서 사용할 수 있는 논리적 메모리의 양이 거의 무한대로 늘어난다. OS/2는 바로 이 보호모드를 이용하는 OS로서 도스의 한계인 640K 메모리를 넘으며 멀티태스킹을 하드웨어적으로 구현했다.

일부 도스용 프로그램들도 보호 모드 기능을 지니고 있어서 멀티태스킹의 구현과 메모리 사용한계를 극복하고 있는데 대표적인 프로그램으로 로터스, 오토캐드(도스용), 매쓰매티카 등이며 이들을 도스 확장 프로그램이라고 부른다.
보호 모드에서 8086용 명령을 실행하는 '가상 8086 모드' 모드는 보호 모드에 포함되어 있으면서 8086용으로 짜여진 프로그램을 하나의 태스크로서 실행하게 된다. 이 모드에서 동작하는 8086용 프로그램은 8086 CPU상에서와 동일하게 동작하지만, 이 태스크가 규칙에 위반되는 명령을 실행하려고 하면 OS가 가로막고 적절하게 처리한다.

386에 추가된 가상 86모드는 80386칩 내부에 여러 개의 8086칩을 만들어 주는 것이다. 여기에서 88대신 86을 사용한 것은 앞에서 설명한대로 실제로 8086칩이 먼저 만들어졌기 때문이다. 8086계열에는 8086, 8088, 80286, 80386, 80486등 여섯 종류가 있으며, 높은 것은 낮은 것에 호환성을 가지게 되는데 이것을 하위 호환성이라고 한다.

V86 모드는 386 전용 멀티태스킹 프로그램들이 사용하고 있는 방법으로, 여러 개의 도스용 프로그램을 태스크로 실행하게 되면 80386칩은 그 내부에 가상으로 8086 칩들을 만들어 프로그램들을 실행한다. 이 V86은 그 자체가 마치 독립된 컴퓨터처럼 행동해서 자체의 도스 환경을 가지는 형식이다. 도스용 멀티태스킹 프로그램이 86모드를 사용하는 것은 도스용 프로그램들이 리얼모드로 실행되며 CPU전체에 대한 독점권을 요구하기 때문이다.

80286에는 V86모드가 없기 때문에 여러 개의 도스용 응용 프로그램을 386에서처럼 메모리를 640K 블록으로 나누어서 실행할 수 없으며 단지 시분할(time slicing)방식으로 CPU의 시간을 분할하고 도스의 640K 메모리를 다시 두 개로 분할하여 사용한다. 따라서 윈도우3.1에서는 286에서는 도스용 프로그램의 멀티태스킹이 불가능하다. 386에서 이용할 수 있는 멀티태스킹 OS중 OS/2와 UNIX는 V86모드방식으로 멀티태스킹을 구현하는 것이 아니라 응용 프로그램 자체가 OS의 관리에 따라서 CPU 시간을 할당해주며, 메모리와 그 밖의 시스템 자원 또한 OS의 관리하에 분배되는 방식을 취한다. 윈도우즈 전용 프로그램에서 멀티태스킹이 이루어지는 이유도 바로 위와 같다.

윈도우즈가 가상모드를 사용함으로써 8086용의 윈도우즈용 프로그램과 MS-DOS용 프로그램을 동시에 실행할 수 있게 되었으며, 메모리 관리에서도 세그먼트(segment) 단위로 하는 80286에 비해 보다 유연한 페이지(Page) 단위의 관리가 가능하게 되었다.
또한 32비트 CPU로 세그먼트 크기는 64KB로, 어드레싱할수 있는 최대 메모리량은 4GB가 되었다.

1988년 인텔사는 80386이기는 하나, 어느 정도 80386을 흉내낼 수 있는 80386SX를 저가 정책의 일환으로 발표하였다. DX의 경우 내부처리를 32비트로 처리하고, 외부의 램 등과 정보를 주고받을 때도 마찬가지로 32비트 버스를 이용하여 전송하는데 반해, SX는 내부 처리만 32비트로 하고, 외부로 정보를 주고받을 때는 16비트로 처리한다.

16비트용의 장치가 많아져서 32비트로 맞추자니 돈도 들고 설계도 문제가 되어 기존의 16비트 CPU인 80286용으로 설계된 회로를 사용하면서 386의 효과를 내는 것이 SX이다.

AT용 메인보드에 별다른 구조적인 변화가 없이 그대로 실장할 수 있기 때문에 저렴한 가격으로 제품을 구성할 수 있는 장점이 있다.

80386SL
기본적으로 랩탑에 많이 사용된 CPU로서 386SX와 동일한 기능을 가졌으며 휴대용을 강조하기 위해서 전원관리 기능이 추가되었다. 예를 들면 자판을 사용하지 않는 경우에는 절전모드로 들어가는 형태였는데 칩의 형태는 PLLC를 띄고 있다.


코프로세서

코프로세서는 고속으로 산술연산, 로그함수, 삼각함수 등의 연산을 하는 것으로 마이크로프로세서와는 병렬로 수행한다. 이 병렬 연산은 코프로세서가 계산을 하고 있는 동안에도 마이크로 프로세서로 하여금 다른 일을 수행 가능하도록 해줌으로 전체적인 계산에 걸리는 시간을 단축시켜준다.
코프로세서는 마이크로 프로세서와 동일한 외부 클럭을 쓰며 시스템 마이크로 프로세서의 1/3 주파수로 동작한다. 코프로세서의 "BUSY" 신호는 자신이 일련의 작업을 수행중이라는 것을 마이크로 프로세서에게 알리는 신호로 사용되며 마이크로 프로세서의 WAIT 명령은 코프로세서가 수행이 끝날 때까지 프로세서가 기다리도록 하는데 쓴다. 코프로세서 역시 마이크로 프로세서와 마찬가지로 실제 모드와 보호 모드를 가지고 있으며, 실수연산기능은 전혀 가지고 있지 않다.
따라서 실수연산을 하기 위해서는 소프트웨어로 미리 만들어 놓고서 이것을 이용하거나 8087, 80287, 80387등의 코프로세서를 이용해야 한다.
코프로세서는 실수 연산을 수행하기 위해서 특별히 설계된 프로세서로서 소프트웨어를 이용하는 것보다 약 100배 이상 빠르게 실수 연산을 수행할 수 있다.

8087
8087 코프로세서는 주 프로세서로 8086, 8088, 80186, 80188을 사용할 수 있고 16비트 연산을 한다. 8088이 8비트이고 8086이 16비트의 구조를 갖는데 이렇게 같이 사용할 수 있는 것은 8087이 자동으로 16비트인지 8비트인지 감지하기 때문이다. 8087은 68개의 독자적인 기계어를 사용하며, 40편의 DIP(Dual In Package)타입으로 되어있다. 또한 주 프로세서의 클럭과 8087의 클럭과는 서로 연결되어 동작하기 때문에 빠른 연산을 원한다면 속도가 빠른 주 프로세서를 사용하면 되는 것이다. 보통 사용하는 코프로세서는 5MHz로 동작하였다.

코프로세서는 시스템의 동작방식에는 변화를 주지 않으면서 특정 수학기능의 수행에 소요되는 시간을 단축시켜준다. 8087은 더하기, 빼기, 곱하기, 나누기 연산을 비롯하여 절대값, 탄젠트, 제곱근 등 연산에 필요한 마이크로 명령을 내장하고 있으며, 8088과 수치데이터를 교환하게 된다
80287
80287은 입출력 버스를 통해서 CPU에 접속되는 것으로서 8088의 코프로세서인 8087에서와 같이 CPU가 읽어서 해독한 명령어이 부동 소수점 계산 명령인 경우에만 80287에 그 명령이 넘겨진다.
CPU는 80287이 연산을 끝낼 때까지 기다리지 않고 다음 명령을 처리할 수 있다.
80287은 넘겨받은 연산을 끝내면 CPU에 신호를 보내서 연산결과를 받아갈 것을 요구한다.
80287은 80286 프로세서의 코프로세서로 8087과 다른 점은 8087이 리얼 모드, 즉 도스에서 640KB이내의 메모리만 사용할 수 있는 반면 80287은 보호모드를 갖고있는 1MB-16MB까지 메모리를 쓸 수 있으며 클럭 속도는 80286 프로세서의 2/3 정도로 밖에 동작하지 않는다.
80387

80287과 기본적으로 구조는 같으나 모양이 DIP이 아니라 PGA타입으로 정사각형 모양을 하고 있다. 80287보다 5-7배의 성능을 가지고 있다.
지금까지 나왔던 모든 코프로세서들은 NMOS방식을 사용하고 있었는데, 33MHz 80387이 나오면서 전력소비가 줄어들었으며 속도가 더 빠른 CMOS 방식의 칩으로 개선되었다.


코프로세서의 동작원리

코프로세서는 CPU의 명령에 따라 동작하는데 주 프로세서가 명령을 수행하다가 코프로세서가 해야할 작업을 만나게 되면 코 프로세서가 다른 작업을 수행하고 있지 않다면 해당 명령어를 전송하고 다른 작업을 수행중이라면 대기하게 된다. 그후에 코프로세서는 수행명령을 점검하고 동시에 주 프로세서는 수행 명령을 점검하고 동시에 주 프로세서는 메모리에 있는 필요한 변수의 어드레스를 계산하여 코 프로세서로 넘겨주고 자신은 다음 명령어를 가져오게 된다.
[그림1]에서 보듯이 주프로세서만을 사용한 보통의 연산과 주 프로세서와 코프로세서를 동시에 사용할 경우는 많은 차이를 보이고 있다. 코프로세서를 사용할 경우에는 주 프로세서간의 명령 단계가 줄어들어서 수행시간을 훨씬 단축해주는 것을 볼 수 있다. 또, 코프로세서에서는 일곱 가지로 최대 80비트의 숫자를 사용할 수 있어서 넓은 범위의 계산이나 과학용 시뮬레이션에 적합하도록 되어있다.

[그림2]에서 보여주듯이 시스템으로부터 보내진 명령은 CPU로 보내지고 CPU는 그 명령을 자신이 수행할 것인지 코프로세서로 보낼 것인지를 판단한다. 이 판단은 매우 간단하여 코프로세서에서 동작할 명령이라면 옵코드(OPCODE: CPU에서 최종적으로 수행되는 명령어)의 앞부분의 5비트가 2진수로 11011이다.


[그림1] 코프로세서의 동작원리


보통의 연산


코프로세서가 있을 경우의 연산


[그림2] 코프로세서 연결도


80486

80486은 여러 개의 LSI로 구성되어진 80386 마이크로프로세서 패밀리를 직접화한 것으로, 80386 CPU를 중심으로 캐쉬 컨트롤러, 80387 수치 연산 보조 프로세서(math coprocessor) 및 8KB 캐쉬 메모리를 하나의 칩에 집적한 마이크로프로세서이다. 80486에서는 자주 사용되는 명령어들을 한 CPU 클록 사이클에 수행시킬 수 있는 RISC(Reduced Instruction Set Computer) 디자인 기술이 첨가되었다. 86계열에서 80486 프로세서는 유일하게 캐시를 이용해 바로 다음 명령어로부터 입력된 데이터를 사용할 수 있는 CPU이다. 대부분의 RISC 프로세서들은 처음부터 캐시를 내장한 형태로 사용한다. 프로그래머는 바로 입력된 데이터들을 사용하기 전에 nop명령어를 삽입하기도 하는데, nop(non-operation) 명령의 사용은 필요(하드웨어 타이밍 맞추기등)에 따라 사용이 된다. .
 
486 프로세서의 소수점 처리부분은 387 코프로세서와 동일한 결과를 내지만, 387보다 빠른 처리를 하도록 설계되었습니다. 예를 들어 소수점 저장 명령어 수행은 387 코프로세서의 경우 15-20사이클이 필요하지만 486의 경우 3사이클에 처리가 되며, 이것은 프로세서의 병렬처리방식(소수점 처리부분이 수행되고 있는 동안 정수 처리 부분이 새로운 명령어를 수행하는 형식)이 보다 나는 성능을 제공한 것이다
80386 하위호환성
80486 프로세서의 특징은 80386이하 CPU와의 하위호환성이다. 개발자들은 계속적으로 80386의 구조를 이용할 수 있고, 또한 사용자 등은 386용 소프트웨어를 80486 시스템에서 소프트웨어의 재컴파일과정 없이도 그대로 사용할 수 있다. 또, 486이상에서 개발된 프로그램들도 386에서 사용이 가능하다.
온칩(on-chip) 페이징 메모리 관리
페이징이라는 것은 기억 공간을 페이지 단위(일반적으로 512-4096바이트로 CRT상에서 8-64행 정도를 말함)로 할당한 후 프로그램을 실행할 때 정보를 페이지 단위로 자동적으로 보조 기억 장치에서 주기억 장치로 옮겨 실행하는 방식이다. 이러한 메모리 관리 기능을 프로세서 내부(on-chip)에 내장시켜 프로세서는 CPU와 메모리간의 지연시간을 감소시키고, 개발자로 하여금 한 가지 메모리 접속방식을 지향할 수 있도록 했다.

80486 프로세서의 페이징과 메모리 관리 유니트(MMU)부분은 80386DX 프로세서의 MMU와 동일하다. 또한486TM의 MMU는32-entry, 4-way, set-associative, TLB(Translation Lookside Buffer)를 가지고 있는데, 이 부분의 주된 기능은 논리적인 어드레스를 물리적인 어드레스로 전환하는 것이다.

향상된 멀티 태스킹지원

80486 프로세서는 386 프로세서의 멀티태스킹(multitasking) 기능을 보유하며, 4단계의 하드웨어 보호기능을 가지고 있어서 멀티태스킹에서 각 단계별로 구분함으로써 다른 프로그램들이 혼용되는 것을 방지한다.

코프로세서 내장
소수점 처리능력이 점차적으로 중요성을 더해가고 있는 시점에서 캐드나 그래픽 프로그램 및 수치연산을 하는 프로그램에서 사용성이 상당히 높은 프로그램의 성능을 얘기하게 된다.
80486에는 종래 80287, 80387과 같이 별도의 칩으로 되어 있던 코프로세서가 내장되어 있어서 소수점 처리 기능을 기본으로 하였다.

소프트웨어적으로는 80387과 완벽한 호환성을 자랑하며 명령어 셋도 확장되지 않았지만 이전의 외부 CPU 버스에 메모리처럼 접속되어져 있는 경우와 비교하여 데이터 전송이나 CPU의 동기가 내부에서 수행되었다.
486에서는 단순히 외부에 있던 387을 내장하였으며, 부동 소줏점 코어도 387의 것을 그대로 사용했다. 그결과 느린 부동 소솟점 연산으로 사용자들의 많은 원망을 사기도 했다.


온칩 캐시 메모리(On- chip cache memory)
80386에서는 캐쉬 메모리를 내장하고 있지 않고, 캐쉬 메모리 컨트롤러와의 인터페이스를 위한 신호 핀이 나와 있을 뿐이었으나 80486에서는 8K 바이트의 데이터 명령 캐쉬를 가지고 있다

온칩 캐쉬형태는 일반적으로 시스템 버스를 공유하는 멀티프로세서 시스템이 안고 있는 시스템 문제를 해결하고, 외부 메모리를 자주 읽어야 하는 시간을 절약할 수 있다.

486의 캐쉬방식은 write-through 방식으로 프로세서가 쓰기를 수행할 때 그 어드레스가 캐쉬 내에 있으면 캐쉬와 외부 메모리를 모두 써넣는 방식이다. 따라서 외부 메모리로부터 입력된 데이터나 명령어들이 바로 처리되도록 구성되어 있으며, 캐쉬 메모리 및 그 컨트롤러를 내장하고 있다
write-through 방식은 쓰기때 메모리에도 같이 쓰기 때문에 느린 메모리에 쓰기가 완료되어야 하므로 속도가 느리다.

와이어드 로직(wired logic) 사용
80386까지는 명령 해석, 실행에 마이크로프로그램을 사용했지만, 80486에서는 이를 와이어드 로직으로 수행한다. 이 때문에 복잡한 명령 실행에도 불구하고 내부적인 실행 사이클 수가 줄어 빠른 속도를 낼수 있다. 내부적으로는 385캐쉬 컨트롤러와 387코프로세서를 합친 것으로서 이전의 386보다는 훨씬 더 효율적인 마이크로 코드와 빠른 속도를 낼수 있게 되었다. 내부의 트랜지스터는 386의 5배에 해당하는 1,2500,000개가 집적이 되어 있다.


80486sx

486SX는 인텔의 정책상 나온 칩으로 초기의 486DX 가격이 고가였기 때문에 초기의 판매량은 미비했다. 따라서 좀더 저렴한 시스템이 필요하게 되었는데, 486SX는 486DX에서 코프로세서 기능을 뺀 것이다. 코프로세서의 기능을 삭제했기 때문에 가격면에서 상당히 저렴했다. 따라서 많은 사용자층을 확보하게 되었으므로 인텔에서는 다시 487SX라는 칩을 사용해서 코프로세서의 기능을 추가하기로 했다. 그러나 487SX는 완전한 486DX의 기능을 가지고 있기 때문에 487SX를 장착하게 되면 486SX의 기능을 정지시키고 혼자서 486DX의 일을 하게 된다. 80486SX에서 보여준 인텔의 마케팅 전략이 적중했기 때문에 인텔은 그러한 정책을 계속적으로 밀고 나가게 되었다. 487SX는 부동소수점을 보조해주는 프로세서가 아니고 그자체적으로 완전한 CPU이다. 비록 핀배열이 다른 방식으로 되어있었기 때문에 487SX 프로세서를 소켓에 바로 장착할 수가 없었다. 코프로세서들은 원칙적으로 메인프로세서와 유기적으로 동작하게끔 되어 있었지만, 487SX는 CPU의 기능을 정지시킨 후에 자신이 모든 일을 처리했다. 인텔에서 ODP를 만들어서 파는 것도 이러한 맥락에서 설명할 수 있는데, ODP는 동시에 두 가지 클럭에서 움직일 수 있다. 25MHz 486SX 메인보드에 위치한 이 칩은 487SX 소켓에 장착되어 486SX의 역할을 한다. 외부와 데이터를 주고받을 때는 25MHz에서 동작하지만, 산술연산, 의사결정, 논리연산 등 내부적인 동작을 할 때는 50MHz에서 동작하게 된다. 즉, ODP는 25MHz의 486DX만큼 빠르게 동작하며, 연산이 많은 작업일 경우에는 두 배 정도까지 빠르게 자료를 처리할 수 있다.


80486DX2 50/66/80MHz
이 제품들의 클럭속도(CPU-캐쉬-메모리와 로컬버스속도)는 25/33/40MHz이며 5V로 구동된다. 8KB의 통합된 내장캐쉬를 가지고 있으며 120만개의 트랜지스터가 집적되어 있고 0.8미크론 CMOS공정으로 만들어진다. ODP의 발전된 형태로서 80486DX2가 있다. 80486DX2는 배율의 2배로서 DX2는 ODP와 마찬가지로 외부적으로는 X MHz에서 동작하지만 내부적으로는 2X MHz에서 동작하게 되어있다. 따라서 66MHz 486DX2는 33MHz 칩용으로 설계된 마더보드에서 동작하지만, 내부적으로는 66MHz에서 움직이게 된다. 기존의 33MHz 486DX CPU가 있는 메인보드에서 33MHz 486DX 프로세서를 66MHz 486DX 프로세서로 교체하면 66MHz 486이 된다.


486DX4 75/100MHz

486 CPU의 외부에서 다루어지는 클럭 속도는 25/33.3MHz 이며 3.5V의 저전압구조를 가지고 있어서 5V 버전에 비해 상대적으로 발열량이 적은 편이다. 따라서 노트북용으로 상당히 많이 사용되었다. 16KB의 캐쉬가 내장되어 있고 속도도 486DX2보다 훨씬 빠르며 150만개의 트랜지스터를 집적했다. 이 CPU는 0.8미크론 CMOS공정으로 만들어진다. 그러나 AMD제품(Am486DX4)은 DX2처럼 8KB의 용량을 가지고 있다. 386SL에서 사용된 전원관리기능을 칩에 사용한 후 배율을 3배로 늘린 프로세서이다.


ODP

서서히 386 CPU에서 486 CPU 쪽으로 관심이 옮겨지던 92년 5월 26일 인텔은 오버드라이브 프로세서(OverDrive Processor)라는 이름의 새로운 프로세서를 발표했다. 인텔이 발표한 오버드라이브 프로세서(이하 ODP)의 가장 큰 목적은 소프트웨어에의 업그레이드 개념을 시스템에서 가장 큰 역할을 맡고 있는 CPU에도 적용 해보자는 것으로 사용자가 좀더 나은 성능의 CPU를 쉽고 간편하게 장착해서 사용할 수 있게끔 하는 것이었다. 인텔은 ODP가 CPU 성능은 2배, PC의 전체적인 성능은 70% 가량 향상시킨다고 발표했다. 초창기 GUI환경으로 접어들게 되면서 강력한 32비트 운영체제와 프로그램들은 좀더 나은 성능의 하드웨어를 염두에 두고 개발이 되고 있었으며, 하드웨어의 가격은 점차적으로 하락하고 있었습니다. 일반 사용자들은 업그레이드의 여부가 시스템 구입의 큰 이슈로 부각이 되었는데, 인텔에서 이러한 점을 염두에 두고 ODP를 내놓게 된 것이다.
ODP의 동작원리
인텔은 모든 PC 제조업체들에게 486SX CPU의 ODP에 대한 소켓을 준비할 것을 통보했다. 즉 ODP는 마더보드상에 빈 소켓을 장착하여 사용자가 미리 장착된 빈 소켓에 ODP를 꼽아줌으로써 업그레이드 할 수 있다. 또한 이미 386 CPU에서 보편화 된 보조 프로세서를 위한 소켓을 통해서도 ODP를 장착하여 사용할 수 있다. 이미 386 CPU의 시스템에서 수치보조프로세서(math coprocessor)인 80387용으로 빈소켓을 마련했던 것을 생각한다면 쉽게 이해가 될 것이다. 486SX에서도 수치 보조 프로세서에 해당하는 FPU가 빠진 CPU임을 생각한다면 비슷한 방법임을 알 수 있다. 이 정도면 왜 80487이라는 이름 대신 ODP라는 이름을 붙였을까 하는 의문이 생기게 된다. 이 의문에 대한 답은 ODP가 어떻게 동작되는지를 살펴보면 쉽게 알 수 있다.

초기에 발표된 ODP에는 486SX의 168핀보다 한 개 더 추가로 설치되어 있다. 이 핀은 소켓에 꼽혔을 때 이미 꼽혀있는 486SX CPU의 동작을 정지시키는 역할을 하게 된다. 따라서 ODP는 기존의 CPU를 대신하여 새로운 CPU로 작동하게 되며 일부 사용자들이 ODP가 기존에 꼽혀있는 CPU의 능력을 배가시켜 준다고 믿었던 것은 환상임을 쉽게 알 수 있다. 따라서 80387과 같이 수치 보조 프로세서로서의 이름을 가질 수 없었던 것이다. 정리하자면 설치방법에서는 80387과 비슷하지만 그 내부적인 동작은 전혀 새로운 CPU를 꼽아주는 것과 같으며 결국 사용자들은 실제 CPU보다 더 저렴하지만 결국은 만만치 않은 거액을 들여 또 다른 CPU를 구입해야 하는 것이다. 이렇듯 초기의 ODP는 반드시 미리 장착된 소켓을 통해 사용할 수 있었다. 하지만 인텔은 486SX CPU를 위한 ODP를 발표하면서 동시에 별도의 소켓이 필요 없이 기존의 CPU를 뽑아내고 그 자리에 꼽아서 사용할 수 있는 ODPR 이라는 모델을 동시에 발표했다.


오버드라이브의 성능
그렇다면 ODP를 이용하여 사용자가 시스템을 업그레이드 했을 때 얻을 수 있는 성능향상은 어느 정도일까? 이 질문에 대한 답으로 ODP의 기술적인 배경을 살펴보아야 한다. 이미 언급했던 ODP는 독립된 CPU라고 할 수 있다. 즉 설치되었을 때 기존의 CPU의 성능을 향상시켜주는 것이 아니라 기존의 CPU를 대신하는 새로운 CPU로서 작동하는 것이다. 이러한 ODP에서 사용된 가장 중요한 기술은 현재 486DX CPU에 적용되고 있는 스피드 더블링 기술이다.
대부분의 독자들이 CPU의 모델 뒤에 항상 따라붙는 일련의 숫자를 알고 있을 것이다. 이미 16비트 프로세서였던 8086, 8088때부터 이 숫자는 CPU의 동작 속도를 결정짓는 주파수(Frequency)로 알려져 있다. 이 주파수가 CPU의 속도를 결정할 수 있는 이유는 CPU를 비롯한 모든 디지탈 소자는 클럭이라고 불리는 핀을 통해서 일련의 동작을 위한 기준 신호를 입력받기 때문이다. 이 신호는 정기적으로 0과 1을 되풀이하는 고주파의 신호이며, 디지탈 소자는 이 신호가 1일 때 동작하게 된다. 33MHz라면 1초 동안에 3300만 번 0과 1을 반복하게되며 최대 3300번의 일을 수행한다. 만약 이러한 기준 신호가 없다면 수십만 개의 트랜지스터가 모인 CPU가 동작하는 일은 상상할 수도 없는 일이다. 따라서 이 주파수의 속도가 빨라지면 CPU를 구성하는 모든 소자들의 작동 속도는 빨라지고 결국 CPU의 전체적인 처리속도는 빨라지게 된다.

스피드 더블링 기술이란 마더보드의 크리스탈 오실레이터라는 부품을 통해 입력받는 주파수를 CPU 내부에서 두 배로 증가시켜 사용할 수 있도록 클럭을 두 배로 증대시키는 것을 말한다. 따라서 486DX2-50은 실제로 25MHz에서 동작하는 마더보드에 장착되어 50MHz의 마더보드에 장착된 CPU처럼 작동하게 된다. 이 기술은 마더보드의 생산업체나 사용자에게 모두 호평 받을 수 있었다. 마더보드의 설계자는 고주파에서도 작동하도록 설계되어야 하는 어려움과 가격상승을 피할 수 있으며 사용자는 좀 더 비싼 마더보드를 구입하지 않고도 고성능의 CPU를 사용할 수 있기 때문이다. 하지만 만약 DX2-50 CPU를 사용할 경우 분명 마더보드에 설치된 장치들은 CPU 속도의 반에 해당하는 25MHz의 속도로 동작하게 된다. 이것은 CPU가 램이나 슬롯에 꽂혀있는 I/O 포트를 비롯한 CPU외부장치와 데이터를 교환하기 위해서는 어쩔 수 없이 기다려야 하는 것을 의미한다. 따라서 실직적인 컴퓨터의 성능은 2배로 증가할 수 없다. 이런 문제들은 486DX가 램에서 데이터를 읽어오거나 부동소수점연산을 위한 동작들을 위해 486 CPU 내부에 8KB의 내부캐쉬와 FPU를 내장했기 때문에 어느 정도 해결될 수 있다.

여기서 조금 더 생각을 해본다면 내부캐쉬와 FPU를 CPU 내에 갖고 있지 않은 386 CPU에서는 386DX2를 개발했다. 하지만, 486DX2 만큼의 속도 향상을 기대하기 어렵다는 것을 알 수 있을 것이다. 결국 대부분의 독자들이 DX2의 '2'라는 숫자가 시스템 전체의 성능을 2배로 향상시키는 것을 의미한다고 생각하는 것은 잘못된 인식이며, 인텔에서도 밝혔듯이 최대 70%정도의 시스템 속도 향상을 기대할 수 있다. 물론 초기에 발표된 16MHz, 20MHz 그리고 25MHz의 클럭에서 작동하는 80486SX용 ODP는 이미 설명했듯이 486DX2 CPU라고 할 수 있으므로 거의 2배에 해당하는 속도 향상을 느낄 수도 있다. 하지만 486DX용으로 발표된 ODP들은 486SX용 ODP 만큼의 속도 향상을 기대하기 어렵다. 특히 486DX2용으로 ODP가 발표되었지만 이들 ODP들이 2배의 속도향상을 가져다준다고 장담할 수 없다. 분명 내부적으로 클럭만을 2배, 3배 또는 4배(?)로 하여 속도를 향상시키는데는 마더보드와 CPU모두 근본적인 구조의 한계가 분명히 있을 것이기 때문이다.


펜티엄의 기원을 찾아서

80x86시리즈로 나가던 인텔은 칩의 이름을 놓고 벌인 재판에서 패함으로써 더이상 80x86이라는 이름을 붙일 수 없었다. 그래서 인텔에서는 실제로 80586이라고 붙여야 되는 새로운 칩의 이름을 다섯 번째라는 의미의 희랍어인 펜티엄(Pentium)이라는 이름을 붙였다. 이 칩은 80386, 80486등의 칩에서 32비트로 데이터를 처리하는 것이 아니고 64비트로 데이터를 처리하며 클럭수도 66Mhz까지 지원하게 되었다.

펜티엄 60/66MHz
초기의 586 CPU로서 부동소수점 연산 에러로 가장 빨리 단종된 CPU이다. 외부클럭으로 60/66MHz을 사용하며 데이터버스의 폭이 64비트이기 때문에 CPU와 캐쉬의 데이터전송률은 기존의 486과 비교하여 2배 이상의 속도를 가진다. 그러나 입출력버스로는 PCI와 VL의 특징 때문에 30-33MHz로 전달한다. 사용전원은 5V이며 발열량이 15W로 상당히 심한 것이 단점이어서 성능 좋은 쿨러를 장착해야만 다운을 방지할 수가 있다. 16KB 내장캐쉬를 가지고 있으면서 320만개의 트랜지스터가 내장되어 있으며 0.8미크론 공정을 사용한다.

펜티엄 75/90/100MHz
초기 펜티엄은 5V로,펜팀엄 75부터는3.5V로 동작하면서 16KB 내장캐쉬를 가지고 있고 330만개의 트랜지스터가 내장되어 있으며 0.6 미크론 고정을 사용한다. 외부의 클럭으로는 50/60/66 MHz를 사용하며 CPU의 클럭은 0.5, 1.0, 1.5 등으로 나뉘어서 발생시킨다. 칩 내부와 외부 시스템간의 속도차이가 생기는 경우 캐시미스로 인해 성능이 떨어질 수도 있다.


펜티엄 120MHz

120MHz 펜티엄은 0.35마이크론 BiCMOS 기술을 채택하여 제작된 CPU로 펜티엄 프로세서의 근간을 이루고 있다
고성능 64비트 데이터 버스
펜티엄 프로세서는 인텔 486 컴퓨터와 마찬가지로 내부적으로 32비트 버스를 사용한다. 그러나 메모리와 연결된 외부 데이터 버스는 64비트로 데이터를 전송함으로 싱글 버스 사이클로 전송되는 데이터 양이 2배로 늘어나게 된다. 펜티엄 프로세서는 싱글 버스 사이클로 데이터 캐쉬에 256비트의 데이터를 제공하는 버스트 모드(Burst Mode)를 포함하여 몇 가지 유형의 버스 사이클을 지원하고 있다. 64비트 데이터 버스는 펜티엄 프로세서가 초당 528메가바이트 속도로 메모리에 데이터를 주고받을 수 있다. 이것은 50MHz 인텔 486의 최고 전송률(초당 160메가 바이트)보다 3배 이상 우수한 것이다.

멀티프로세싱
2개 이상의 펜티엄 프로세서를 결합한 멀티프로세싱 애플리케이션들은 펜티엄프로세서의 수퍼스칼라 아키텍처, 별도의 코드 캐쉬와 데이터 캐쉬, 외부 캐쉬를 콘트롤하는 칩세트와 복잡한 데이터 통합기능에 의해 지원된다. 한 개의 프로세서가 다른 프로세서에 저장되어 있는 데이터를 액세스할때, 그 프로세서는 정확한 데이터를 받는다. 그리고 데이터가 수정되면 그 데이터를 액세스하는 모든 프로세서들은 수정된 자료를 받을 수 있도록 하고 있다. 펜티엄 프로세서는 한 개 이상의 프로세서가 동시에 메모리내의 같은 지역을