본문 바로가기
팁 & 테크

인텔 프로세서의 발자취 : 1부 (4004~i486)

by 테리™ 2008. 12. 12.
반응형

최초의 전자식 컴퓨터라는 에니악(ENIAC) 이후 컴퓨터 산업은 급격히 발전해 왔다. 십여년 전 전산실을 가득 메우던 메인프레임보다 지금 주위에서 많이 보이는 노트북 컴퓨터에 들어가는 프로세서가 더 빠른 연산 성능을 보여줄 정도로 빠른 속도로 발전해 왔다.

개인용 컴퓨터 또한 8비트 애플2와 MSX부터 시작해서 현재까지 쉼 없이 달려왔다. 지금 우리가 흔히 사용하는 이 작은 데스크톱이나 노트북 컴퓨터는 몇 년 전의 서버나 워크스테이션 이상의 성능을 보여줄 정도로 빠르게 발전해 왔고, 이는 아직 현재진행형이다. 그리고 이런 놀라운 발전의 주역은 마이크로프로세서였다.

현재 개인용 컴퓨터 시장에서 주류를 따지자면, 누가 뭐래도 인텔(Intel) 호환 명령어 셋 'x86'을 사용하는 시스템일 것이다. IBM PC 이후로 업계의 표준을 넘어서 세계 표준이 된 이 x86 플랫폼 시장을 주도하고 있는 건 인텔이다. 인텔의 프로세서 역사는 곧 개인용 컴퓨터의 역사라고 할 수 있는 것이다.

아주 오래전 이야기

마이크로프로세서라는 개념은 트랜지스터의 발명 이후 등장했다. 기존의 진공관에 비해 트랜지스터는 전자 회로의 크기를 획기적으로 줄일 수 있었고, 이는 인류의 전자 역사에 있어 큰 획을 그은 사건이다. 이 트랜지스터를 집적하여 진공관이 수행하던 여러 기능을 하나의 프로세서라는 틀 안에 집어넣어 연산이 가능하도록 한 것이 마이크로프로세서이다.

개인용 컴퓨터라 하면 보통 IBM PC가 먼저 언급되지만, 사실 그 이전부터 개인용 컴퓨터 개념을 가진 시스템은 존재했고, 마이크로프로세서 또한 여러 업체에서 만들었다. 하지만 이들은 플랫폼의 대중화에 실패해 사라지는 운명을 맞게 되었다. 대표적인 8비트 개인용 컴퓨터는 모토로라(Motorola)의 프로세서를 사용한 애플2나, 많은 유저들이 게임 머신으로 기억할 Z80 프로세서를 사용한 MSX가 있었다.

당시에는 컴퓨터란 애초에 전문 용도로 쓰는 물건이었기 때문에 편의성은 고려대상이 아니었다. 또 운영체제도 개념은 있었으나 실제로 많이 쓰이지는 않는 것이었다. 당시 성능은 대표적인 운영체제였던 CP/M을 올리기만 해도 버거워하던 시절이었다. 대부분의 프로그램은 지금처럼 제공되는 것이 아니라 직접 타이핑해서 만들어 썼다. MSX의 '롬 베이직'은 이를 잘 보여주는 한 예다.

최초의 마이크로프로세서라 부를 수 있는 물건은 인텔이 1971년 발표한 4004이다. 4004는 4비트 프로세서로써, 2300개의 트랜지스터를 집적했고, 108KHz의 동작 속도를 가지고 있었다. 이 프로세서가 사용된 대표적인 곳은 컴퓨터가 아니라 비지콤(Busicom)의 계산기였는데, 이 프로세서는 소수점 아래 60자리까지 계산이 가능했다. 당시엔 참 놀라운 성능의 계산기였다. 또한 이 마이크로프로세서의 다른 가능성을 보여주기도 했다.

크게 눈에 띄는 용도가 보이지 않음에도 인텔은 계속 마이크로프로세서를 개발했다. 8008은 최초의 8비트 프로세서였으며, 사용할 수 있는 메모리가 조금 늘어났다. 14비트 어드레싱 영역을 사용할 수 있었고 사용할 수 있는 최대 메모리는 16KB였다. 주로 더미 터미널 용도로 사용되었다. 8080은 본격적으로 개인용 컴퓨터에 사용되기 시작했으며, 앨타이어(Altair)에 사용되었다. 8085는 인텔 최초의 단일 전압 프로세서이다. 기존의 프로세서는 5V와 12V를 같이 사용했지만, 8085에서는 단일 5V만으로 구동이 가능했다.

'8086' 16비트의 시대를 열다!

인텔의 16비트 프로세서들은 개인용 컴퓨터 역사에 큰 획을 그었다. IBM은 사무용 시장을 노리고 인텔의 마이크로프로세서와 마이크로소프트의 운영체제를 묶은 IBM PC를 출시하여전체 시장을 기존의 여러 표준이 난립하는 8비트 시장에서 확고한 표준을 가진 16비트 시장으로 끌고 오는 데 성공한 것이다.

16비트 프로세서는 8비트 프로세서와 비교해 연산 성능에서 도저히 비교가 불가능할 수준이었다. 256개의 숫자와 65536개의 숫자의 표현력 차이는 이미 게임이 되지 않는다. 이런 강력한 성능을 등에 업고 IBM PC는 순식간에 업계를 장악하는 데 성공했으며 인텔의 프로세서는 이 플랫폼의 표준이 되었다.

당시 이 IBM PC 플랫폼은 공개 플랫폼이었고, 호환 기종을 만들기도 쉬웠다. 이는 IBM이 플랫폼 보급 차원에서 생각한 전략이었고, 결과적으로 이는 크게 성공했다. 아직까지도 'IBM PC 호환'은 쉽게 볼 수 있는 문구인데, 이 문구의 시초는 이 시절이다. 그런데 정작 IBM은 이제 PC 시장에서 손을 뗀지 오래다.

처음 등장한 8086은 완전한 16비트 프로세서로, 16비트 데이터 버스와 20비트의 메모리 어드레싱 영역을 가지고 있었으며 최대 1MB까지의 메모리를 사용할 수 있었다. 이 당시 8086의 연산 성능은 8비트 프로세서인 8080의 10배 성능을 낼 정도였으며 이정도면 8비트 프로세서와는 성능면에서 상대조차 되지 않았다.

또한 아직까지도 회자되는 x86이라는 개념이 여기서 등장한다. x86이란 명칭은 인텔의 이후 프로세서 명칭이 80x86으로 이어지기 때문에 붙여진 이름이다. 이 아키텍처가 8086에서 최초로 등장했다. 이후의 인텔 프로세서들은 명령어 세트가 추가되더라도 이 시절의 x86 기본 명령어와 호환성을 갖추었고, 이로 인해 현재까지도 x86 계열이라는 말을 사용하고 있다.

x86 아키텍처는 CISC(Complex Instruction Set Computer) 설계를 사용한다. 워드 단위 가변 길이 명령어를 사용하며, 복잡한 명령어 덕분에 해석에 시간이 걸리며 프로세서도 복잡한 단점이 있다. 그러나 명령의 직교성이 좋고 어느 어드레싱 모드에서도 임의의 연산을 수행할 수 있다는 장점도 있다.

CISC는 RISC(Reduced Instruction Set Computer)에 비해 프로세스가 복잡하고 느리다는 단점은 이후 기술 개발을 통해 극복했다. 높은 클럭과 멀티코어로의 아키텍처 확대 등 최근 우리가 목격하고 있는 다양한 성능 향상 노력은 이와 관련된 기술개발의 연장선으로 볼 수 있는 부분이다.

80286은 IBM PC/AT로 유명하다. AT는 Advanced Technology의 약자로, 24비트 데이터 어드레싱 영역으로 16MB의 메모리를 사용할 수 있었다. 메모리 사용에서는 보호 모드(Protected Mode)가 추가되었는데, 이를 사용할 만한 메모리 관리자가 마땅치 않아 실제로 많이 사용되지는 않았다.

8086의 문제로 부각된, 기존 8080과의 호환성 문제를 해결하기 위해 나온 프로세서가 8088이다. 8080은 8비트 데이터 버스를 사용하였고, 8086은 16비트 데이터 버스를 사용한 탓에 초기에 주변 장치들이 호환이 되지 않는다는 문제가 있었다. 이를 해결하기 위해 내부적으로는 16비트를 사용하지만, 외부 버스는 8비트를 사용하는 8088이 출시되었다. 이는 국내에서 IBM PC/XT 호환 기종에서 많이 쓰였다.


▲ 부동소수점 연산을 위해 설계된 '80287' 코프로세서

이 당시의 프로세서에는 부동소수점 연산을 위한 유닛인 FPU(Floating Point Unit)가 없었고, 이 연산만을 위한 별도의 프로세서가 있었다. 이를 보통 코프로세서(Co-processor)라 불렀으며 대표적으로 8087, 80287이 있다.

8087은 80비트의 정밀도를 제공했으며 오직 실수 연산에서만 성능 향상에 도움을 주었기 때문에 당시에는 이를 장착하지 않고 사용하는 경우가 많았다. 80287은 80286 프로세서와 함께 사용할 수 있었다.

재미있는 점은, 같은 프로세서를 인텔만 생산한 것이 아니라는 것이다. 이 시절에는 인텔 이외에도 다양한 업체가 이 프로세서를 라이센스 받아 생산하였는데, 대표적인 업체로는 지금의 라이벌인 AMD(Advanced Micro Devices)가 있다.

어제의 동료가 지금의 적이 되는 일이 드문 일은 아니지만 이런 점은 아이러니하다. AMD는 이후 K5부터 넥스젠(NexGen) 인수 후 독자적인 프로세서 디자인을 시작해서 지금에 이르게 되지만, 이건 또 다른 이야기이다.

32비트 시대로의 진입

PC의 32비트 진입은 큰 의미를 지닌다. 대용량 데이터를 처리할 수 있는 32비트 프로세서는 시장에 많은 변화를 가져왔다. 인텔의 첫 32비트 프로세서는 80386시리즈 프로세서이다. 80386DX는 275,000개의 트랜지스터를 집적하고 있었으며, 32비트 데이터 버스와 어드레스 영역을 가지고 최대 4GB의 메모리를 사용할 수 있었다. 또한 기존의 8086/80286과 하위 호환성을 가지고 있었다.

프로세서 아키텍처가 바뀜에도 인텔 프로세서들은 하위 호환성을 유지했다. 이를 가능하게 해 준 것이 80386에서 등장한 가상 모드(Virtual Mode)이다. 이는 16비트 프로세서가 사용하던 리얼 모드(Real Mode)와 구별된다. 80386은 가상 모드를 사용해 32비트 환경을 지원했다. 16비트 환경과 호환성을 가졌다. 메모리 관리 또한 확장 모드를 사용해 그 당시 사용하던 OS인 DOS에서 1MB 이상의 메모리를 사용할 수 있도록 지원했다. 윈도우즈나 OS/2에서 사용하는 가상 메모리 또한 이 시절부터 처음 사용되기 시작했다.

80386SX는 DX의 저가형 모델이다. 완전한 32비트 구조를 가지는 DX에 비해, SX는 8086/80286과의 호환성과 단가 절감을 위해 16비트의 외부 버스 구조를 가지고 있었다. 내부적으로는 32비트 구조이므로 32비트 프로그램을 구동할 수는 있었지만, 효율이 낮은 편이였다. 24비트 어드레싱 영역으로 최대 16MB의 메모리를 사용할 수 있었다.

이 시절에도 프로세서와 코프로세서는 분리되어 있었다. 80386과 사용되는 코프로세서는 80387이었다. 80386의 경우에도 AMD를 비롯한 많은 업체에서 호환되는 프로세서를 만들었는데, 이 중 AMD는 386 프로세서를 가지고 40MHz까지 클럭을 끌어올리기도 했다. 하지만 인텔이 이미 80486으로 이동한 상태에서 실질적으로 크게 경쟁이 일어나지는 않았다.

또 하나의 흥미로운 프로세서는 80386SL이다. 이 프로세서는 모바일을 염두에 두고 만들어진 프로세서이다. 외부 버스는 16비트였으나 어드레스 영역은 32비트를 지원했다. 트랜지스터 수가 다른 80386 시리즈에 비해 늘어난 이유는, 프로세서 안에 캐시, 버스, 메모리 컨트롤러가 내장되어 있기 때문이었다. 또한 공정 개선을 통해 비교적 저전력소모가 가능했다.


▲ PS/2는 IBM의 '흑역사' 중 하나다.

이 시절의 또 다른 이야기로는 EISA와 MCA, 그리고 PS/2가 있다. EISA(Enhanced ISA)는 기존의 ISA 슬롯을 대체하는 고속 슬롯으로 디자인되었으며 기존의 ISA와 호환이 가능했다. 하지만 고비용과 라이센스 문제 등으로 힘을 쓰지 못한 규격이다.

PS/2는 IBM이 IBM PC로 재미를 본 다음, 차별화를 위해 디자인한 고성능의 플랫폼이었다. 기본적으로 VGA나 XGA급의 그래픽 환경을 지원했으며, 운영체제로는 당시엔 획기적이었던 GUI와 멀티태스킹이 가능한 자체제작 운영체제인 OS/2를 사용했다.

기존의 IBM PC/XT/AT와 하위 호환이 가능했으며, 확장 슬롯으로는 MCA(Micro Channel Architecture)를 사용했다. 현재까지 쓰이는 키보드, 마우스 포트들은 이 PS/2가 사용한 규격이다.

하지만 이 PS/2는 우수한 성능에도 불구하고 시장에서 큰 성과를 내지는 못했는데 이는 PS/2가 폐쇄적인 플랫폼이었다는 것에서 원인을 찾을 수 있다. MCA 버스를 사용한 탓에 주변장치들의 가격과 호환성 문제도 대두되었다. MCA 버스는 우수한 성능을 가지고 있었으나 기존의 슬롯과 호환되지 않았고, IBM만의 단독 규격이었으므로 MCA 규격의 장치 또한 드물었다.

혁명의 가능성을 보여준 'i486'

인텔은 4세대 x86 프로세서인 80486의 호칭을 기존처럼 그냥 80486이라 부르지 않았다. i486이라는 명칭을 사용했는데, I는 인텔을 나타낸다. 이는 타 업체의 프로세서와 차별화하기 위한 전략이었다. 보통은 줄여서 그냥 편하게 486이라 부르는 게 일반적이었다.

i486은 1989년 처음 등장했다. 맨 처음 등장한 486DX는 120만개의 트랜지스터를 집적한 완전한 32비트 구조를 가지고 있었다. 기존에는 따로 존재했던 코프로세서를 내장하였고, 프로세서와 같은 속도로 동작하는 L1 캐시를 내장해서 성능을 끌어올렸다.

언뜻 보기엔 80386과 i486은 별 차이 없어 보인다. 둘 다 32비트 프로세서이기 때문이다. 하지만 실제 성능에서는 두 배 가량 차이가 났는데, 이는 L1 캐시와 함께, 명령어 실행 측면에서 최적화가 이루어졌기 때문이다.

i486에서는 처음으로 파이프라인 개념이 도입되었고, 이를 통해 명령어 처리 효율을 기존에 비해 두 배 가량 끌어올릴 수 있었다. 기존의 386에서 두 클럭에 걸쳐 수행할 명령을 한 클럭에 처리할 수 있었으며, 이는 성능 향상으로 바로 나타났다.


▲ 처음으로 배수 개념을 도입한 'i486DX2'

i486 시리즈가 가져온 변화는 이것 뿐만이 아니다. 인텔 프로세서에서는 처음으로 규격화된 소켓 규격을 사용해서 편의성과 전기적 호환성을 생각하는 모습을 보여 주기도 했다. 486 시리즈에서는 소켓 1에서 소켓 3까지가 사용되었으며, 이 소켓 규격을 뛰어넘기 위한 오버드라이브 프로세서가 나오기도 했다.

프로세서에 배수 개념이 처음 생긴 것이 이 때다. 문제가 된 프로세서는 486DX 50MHz 였는데, DX의 경우 시스템 버스는 프로세서의 클럭과 1:1로 동작한다. 50MHz의 클럭 속도에 맞추기 위해 시스템 버스를 50MHz로 운용하는 것은 그 당시엔 상당히 힘들었고, 많은 비용을 수반하는 것이었다. 50MHz 클럭을 버티기 위해서는 높은 품질의 기판과 설계가 필요했고, 이는 또 바로 비용에 영향을 주었다.

문제를 해결하기 위해 프로세서를 시스템 버스의 일정 배수로 동작시키는 방법이 고안되었다. 그 결과로 나온 것이 '486DX2'다. 486DX2 프로세서는 이름대로 시스템 버스의 두 배 클럭으로 동작한다. DX2 50MHz의 경우, 연산 속도면에서는 DX와 같지만, 외부 버스의 경우 기존에 사용하던 검증된 25MHz를 그대로 사용할 수 있다. 배수를 통해 오버클럭도 가능해졌다.

486DX2는 비교적 저렴한 구성 비용에 우수한 성능으로 많은 인기를 끌었다. 이런 배경에서, 이 시절 프로세서 이야기에서 빼놓을 수 없는 것이 '리마킹'이다. 프로세서 위의 마킹을 위조해서 더 상위의 프로세서처럼 속여서 파는 이 리마킹은 최근에는 찾아볼 수 없지만, 예전에는 꽤나 흔한 일이기도 했다. 특히 486DX2의 경우 50MHz 모델을 66MHz로 마킹하는 일이 잦았다.

486DX4는 3배수를 적용해 클럭을 100MHz까지 끌어올렸다. 높은 클럭 덕분에 열 문제가 본격적으로 제기되기 시작했으며, 기존의 프로세서가 방열판도 없이 동작할 수 있었던 데 반해, 이 프로세서 이후로는 프로세서에 쿨러가 기본 옵션으로 자리 잡았다.

486SX 프로세서는 DX에서 코프로세서를 분리한 모델이다. 저가형으로 나온 모델이며, DX2와 함께 SX2도 볼 수 있었다. 다른 기능이나 성능 차이 없이 코프로세서만 빠진 모델이었기 때문에, 함께 사용되는 80487SX 코프로세서를 장착할 경우 DX와도 별 차이가 없었다.

이 시절의 화두는 새로 떠오르기 시작한 멀티미디어와 각종 I/O들의 32비트화였다. 인터넷의 공개 등과 같은 시대의 변화를 등에 업고 등장한 멀티미디어의 바람은 기존의 컴퓨터의 개념을 송두리째 바꾸어 놓기에 충분했다. 고해상도 그래픽 환경과 16비트 CD 품질의 사운드를 재생할 수 있는 멀티미디어 시스템은 당시 많은 충격을 던지기도 했다.

현재의 뿌리는 어디까지나 '과거'

486 시리즈는 꽤나 장수했다. 초기 펜티엄 프로세서가 연산 에러로 인해 한바탕 난리를 치르면서 세대 교체가 다소 늦어진 탓도 호재로 작용했다. 또 타 프로세서 업체에서도 486 호환 프로세서를 많이 내놓으며 생명 연장을 도왔다. 특히, 인텔이 펜티엄으로 넘어간 뒤에도 이 호환 업체들은 486 프로세서 기반에서 클럭을 133MHz 이상까지 끌어올리며 초창기 펜티엄 프로세서 보급을 견제하기도 했다.

이 시절은 지금 생각하면 조악하기 이를 데 없지만, MPEG-1 기반의 비디오CD 규격으로 만들어진 영화를 보면서 감격했던 시절이기도 하다. 그 때를 추억하면 격세지감이 느껴지기도 한다. 그당시에는 그리 만족스러운 성능은 아니었지만, 486 시대를 거치면서 우리 모두는 PC에서 가능성 하나는 확실하게 발견할 수 있었다.

486 프로세서가 등장한 이후에 광범위하게 이루어진 멀티미디어 환경의 보급은 기존 ISA 환경의 한계를 확실하게 보여주었다. 때문에 몇 가지 대안이 제시되었다. 그 중 널리 쓰인 것은 VESA Local bus와 PCI 규격이다. VESA Local bus는 32비트 규격을 가지고 있어 비교적 높은 전송률을 가지고 있었고, 486 시스템에 널리 사용되었다. PCI 규격은 주로 486 후기부터 사용되기 시작했다.

이런 변화를 통해 프로세서의 성능을 더 많이 끌어낼 수 있었다. 메인보드 칩셋과 프로세서를 따로 생각할 수 없는 것은 이런 외부적 요인에서도 전체 시스템 성능이 큰 차이를 보이기 때문이다. 이래저래 많은 일이 있었던 486 시리즈 시절은 지금 보기에 원시적으로 보일지 모르나, 그 이후 이어질 혁명과 혁신을 가능하게 한 요람이었다.

  Copyright ⓒ Acrofan All Right Reserved
반응형

댓글