컴퓨터공부

[펌]마이크로프로세서 아키텍처 종류에 관하여..

achivenKakao 2006. 7. 1. 17:39
 

마이크로프로세서 아키텍처 종류에 관하여




2002년 12월 20일

(주)에이엘테크 연구원

조형기

email: cho7292@hanmail.net




1. 들어가기


필자에겐 가전제품이나 계측장비들을 분해해 보는 악(?)취미가 있다. ‘그 장치의 내부에는 어떤 부품들로 구성되어 있으며, 어떤 원리로 돌아가는 걸까’하는 원론적인 호기심 이외에도 핵심 부품인 마이크로프로세서로 어떤 것을 사용하였는지 궁금하기 때문이다.

최근에도 필자는 인터넷 사용을 위해 하나로통신(주)에서 임대한 케이블 모뎀을 분해하여 보았다. 외장 케이스를 조심스레 뜯어본 결과 역시나 안에는 모토롤라(Motorola)사의 MPC860 프로세서가 들어있었다.


이 세상에는 다양한 종류의 마이크로프로세서가 존재한다. 각 종류에 따라 장단점이 있으며 기술적인 호기심을 자극하는 특색들이 있게 마련이다. 임베디드 시스템 포탈 사이트로 유명한 www.embedded.com 이라는 웹 사이트의 한 기사에서는 평균의 개발자가 새로운 마이크로프로세서를 익히고 사용하는 데는 약 3개월의 시간이 걸린다고 하였다. 하지만 그 말은 필자가 생각해 보았을 때, 마이크로프로세서에 대한 일반적인 관점을 가지고 있는 개발자에 한한 말이라 생각 한다. 일단, 대표적인 마이크로프로세서 아키텍처들을 나열해 보면 x86, m68k, DEC Alpha, ARM, PowerPC, MIPS, SPARC, SH 등이다. 한 가지 흥미 있는 사실은 위의 모든 마이크로프로세서 아키텍처에 리눅스가 포팅되어 있다는 것이다. 필자가 대학에서 ‘고급 컴퓨터 아키텍처’라는 수업을 수강하면서 처음으로 위의 단어들을 봤을 때는, 뭐가 뭔지 전혀 알 수 없었다. 일단 각 아키텍처들에 대한 개요도 몰랐고, 왜 저렇게 많은 종류가 있는가,  또 서로 전혀 다른 개념의 아키텍처들인가 하는 물음이 머릿속에 쇄도했었다. 그런 궁금증은 컴퓨터 아키텍처를 공부하며, 각 마이크로프로세서를 제조하는 회사들의 웹 사이트를 훑어보면서 차차 풀려졌고, 마이크로프로세서 아키텍처에 대한 일반적인 관점이 생겼다. 지금은 x86과 ARM아키텍처의 마이크로프로세서를 이용하여 주로 제품을 설계하고 있다.  


이번 글에서는 마이크로프로세서의 다양한 아키텍처가 출현하게 되는 역사적인 배경, 각 아키텍처들에 대한 개요와 특징들에 대하여 알아보고, 마지막으로 새로운 제품을 설계할 때 마이크로프로세서를 어떻게 선정할 것인가에 대한 필자의 견해로 마무리하고자 한다.

2. 필요한 약간의 지식


- What is a Microprocessor?

우선 마이크로프로세서라는 것이 어떤 것인지 개념적으로 알아보도록 하겠다. 간단하게 정의하자면 마이크로프로세서는 메모리에 저장된 명령어들을 실행하는 유한 상태 오토마톤1)(Finite-State Automaton: 유한개의 상태를 가지는 자동 장치)이다. 그리고 그것의 상태는 마이크로프로세서 자체 내에 있는 레지스터의 값과 메모리에 들어있는 값들에 의해 결정된다. 나은 이해를 위해 그림1을 보도록 하자.

         그림 3)  Stored-program Digital Computer

메모리에 들어 있는 각각의 명령어들은 전체적인 상태가 어떻게 변해야 하는지 정의하고 또한 다음에는 어떤 명령을 실행해야 하는지를 결정한다. 이러한 Stored-program 디지털 컴퓨터의 개념은 펜실베니아 대학에서 에커트(Eckert)와 모츨리(Mauchly)가 에니악 컴퓨터를 만들고 나서, 프로그램 입력방법을 개선하고자 프로그램을 숫자화하여 기억시키는 방법을 논의 중일 때, 폰 노이만(von Neumann)이 이를 도와주면서 쓴 한 편의 논문으로부터 비롯된 것이다. 그리하여 현대의 컴퓨터를 ‘폰 노이만식 컴퓨터’라고 부른다.  자, 그럼 좀더 구체적으로 마이크로프로세서가 메모리에서 명령어를 읽어 와서 실행하고 그 결과를 다시 메모리에 저장하는 일련의 동작들을 수행하는 동안의 내부 상태가 어떻게 변하는지 알아보도록 하자. 우선 그림 2를 보자.


그림에서 보다시피, 모든 명령어는 위의 상태보다 같거나 작은 상태를 거치면서 실행된다.

마이크로프로세서 내부에는 위의 각 상태를 수행하는 코드들이 소프트웨어로든지, 아니면 Hardwired(하드웨어적으로)상태로든 존재하고 이를 ‘마이크로 오퍼레이션 코드(Micro-operation code)’라고 한다. 그 각각의 코드에 따라 컨트롤 유닛(CU)에서는 해당되는 제어신호들을 만들어 내야만 한다. 

                                그림 4) 명령 사이클 상태 다이어그램


- 마이크로프로세서의 분류 기준 

필자는 적어도 마이크로프로세서를 분류하는 기준에는 다음 3가지가 있다고 본다.


(1) CISC or RISC 분류

(2) 사용되는 용도와 시장에 따른 분류

(3) 성능에 따른 분류


첫 번째로, 사용된 명령어 집합을 가지고 분류하는 CISC, RISC 분류법이 있다.

CISC는 Complex Instruction Set Computer의 약자이고

RISC는 Reduced Instruction Set Computer의 약자이다. 말 그대로 해석하면 정답이다.


CISC의 대표적인 특징들은 다음과 같다.

(1) 명령어의 수가 많다 (100-250)

(2) 다양한 주소지정 모드(Addressing Mode)가 있다.  (5-20)

(3) 명령어 길이가 가변적이다.

(4) 메모리에서 오퍼랜드(피연산자)를 조작하는 명령어들이 많다.


이에 반해, RISC의 대표적인 특징들은 다음과 같다.

(1) 적은 명령어 수 (30-100)

(2) 적은 주소지정 모드(Addressing Mode)

(3) 명령어 길이가 고정적이다.

(4) 메모리를 액세스하는 명령은 LOAD, STORE 뿐이다.

(5) 모든 오퍼랜드(피연산자)는 CPU내의 레지스터에서 조작된다.

(6) 하나의 사이클에 하나의 명령어 실행이 가능하다.


위에서 언급한 마이크로프로세서 아키텍처들 중에 x86과 m68k 아키텍처만이 CISC의 구현체들이고 나머지는 모두 RISC의 구현체 들이다. 이로 볼 때, 앞으로의 마이크로 발전 방향성은 RISC이 아닌가 싶다. 1980년대에 RISC에 관한 연구가 미국의 버클리 대학과 스탠포드 대학에서 굉장히 활발하였고, 버클리 대학의 패터슨 교수가 RISC이라는 용어를 처음으로 만들어 내었다.


두 번째로 사용되는 용도와 시장에 따른 분류에는 다음과 같은 4가지가 있다고 생각한다.  이것은 아키텍처가 SISC냐, RISC냐를  불문하는 설계의 또 다른 문제이다.


- Microprocessor

- Embedded Microprocessor

- Microcontroller

- Digital Signal Processor


처음 봐서는 어떤 분류 기준인지 좀 애매모호하다고 생각하는 사람이 있을지도 모르겠다.

하나하나 살펴보도록 하겠다.


먼저 Microprocessor 는 "속도를 높혀라!"라는 표현으로 대변된다. 즉, 우리가 데스크 탑에서 사용하고 있는 마이크로프로세서(x86, m68k, PowerPC계열들)처럼 많은 주변 기능(peripheral)들을 마이크로프로세서 내부로 들어가는 것을 배제한 체 필요한 요소들로만 빠른 속도를 내려고 하는 것이다. 표준 PC의 구조에 사용되는 마이크로프로세서들의 설계 방향성이다.


두번 째로 Embedded Microprocessor 는 "System-On-Chip"라는 표현으로 대변된다. 즉, 오늘 날 95% CPU 점유율을 가지는 임베디드 프로세서 분야에 맞는 설계 방향성이다. 되도록이면 많은 주변 기능(peripheral)들을 포함 시키고 있다. 앞으로 각 아키텍처별로 알아볼 때 이 분야를 주로 알아 볼 것이다.


세번 째로 Microcontroller 는 "all in one-chip, but less functionallty" 라는 표현으로 대변된다. 아마도 전자공학, 제어계측 출신들에게 친밀한 프로세서들일 것이다. 마이크로 마우스나 로봇축구등에 사용되는 것이 주로 이들 프로세서들이기 때문이다.


Intel사의 8051, 80C196, 80C296 ...

Motorolla사의 68HCxx 시리즈

AMD사의 am186, am188 ...

Microchip사의 PIC 시리즈

ATMEL사의 AVR 시리즈

Hitachi사의 H8 시리즈


이 분야야말로 모든 것을 하나의 마이크로프로세서 안에 집적해 넣으려고 한다. 내가 사용해 본 80C196KC 안에는 14비트 AD 컨버터까지 들어가 있었다. 개념 상 Embedded Microprocessor와 비슷하다. 하지만 전통적으로 마이크로컨트롤러들은 그렇게 많지 않은 기능을 수행하는 임베디드 시스템에 주로 사용되었다. 그래서 주로 8비트, 16비트 프로세서를 말한다.


마지막으로 Digital Signal Processor 는 말 그대로 "디지털 신호 처리" 라는 표현으로 대변된다. 다양한 마이크로프로세서의 어플리케이션 분야 중에 디지털 신호를 처리해야 하는 분야가 상당히 많은 데 그런 분야(통신, 멀티미디어 ,제어...)에 특화된 프로세서이다.


이런 분류가 딱 정확히 맞아 떨어진다고는 생각하는 것은 무리다. 그냥 전반적으로 이렇게 분류하면 무리가 없겠다는 정도로만 생각하기 바란다.   


- 마이크로프로세서를 설계하고 제조하는 필드의 구성

다음으로 마이크로프로세서를 설계하고 제조하는 필드가 어떻게 구성되어 있는지 간략하게 알아보도록 하자. 예전에는 칩 제조회사들이 IP(Intellectual Property) 개발자이면서 EDA tool개발자 역할까지 하였다. 하지만, 최근에 들어서는 각 분야에 전문화된 회사들로 분담하는 것이 일반적이다.


반도체 제조 회사들 (Big Three)

TSMC (Taiwan Semiconductor Manufacturing Co.)

UMC (United Microelectronics Copr.)

Chartered Semiconductor Manufacturing Ltd. Pte.


IP 전문 회사들

ARM

MIPS

SPARC

Gray Research LLC


Tool 전문 개발 회사들

Mentor Graphics

Cadence


모두 가지고 있는 회사

Intel

Motorola

AMD


FPGA 제조 회사들

Xilinx

Altera


(참고 : IP(Intellectual Property)란 ASIC, FPGA를 만들때 사용 될 수 있는 논리 회로 블럭을 의미한다. 흔히 우리가 어떤 아키텍처의 코어(Core)라고 부르는 것이 여기에 해당하는 것이다. )


- 무어의 법칙

세계 최초의 컴퓨터인 1946년의 ENIAC(진공관 18,800개)에서 오늘 날(2002년)의 인텔사(Intel)의 Pentium4(트랜지스터 4,200만개)에 이르기까지 가히 혁신적인 발전 속도로 발전해 왔다. 이를 잘 설명해 주는 "무어의 법칙(Moore's Law)"이라는 게 있다.

1960년대 중반에 인텔의 회장이었던 Board Gordon Moore는 30년 동안 계속 참으로 유지되던 "principle" 혹은 “law"을 유추하였다:


                               표 1. x86 프로세서의 발전

"컴퓨팅 파워와 실리콘 집적 회로 마이크로프로세서의 복잡성은 (단순히 말해, CPU 칩 하나에 집적되는 트랜지스터의 수)매 1, 2년 동안 두 배가 된다. 그리고 CPU 칩의 가격은 절반으로 된다."


그림1을 보면 Moore의 법칙에서 예상했듯이, 역사적으로 x86 프로세서의 트랜지스터 수와 성능의 황홀한 발전을 보여준다. 




3. 마이크로프로세서의 간략한 역사


마이크로프로세서의 발달 과정은 전자 소자의 발달 과정과 비슷한데, 부피가 큰 진공관에서부터 트랜지스터(Transistor)가 발명되고, 트랜지스터가 반도체 칩(Chip)에 집적되어 IC(Integrated Circuit)를 이룬다.  반도체 칩에 트랜지스터가 집적되는 정도를 가지고 소규모(Small), 중규모(Middle), 대규모(Large, Very, Ultra) 집적회로로 분류한다.


< 전자식 컴퓨터의 발달과정 >


(1) 1940년대 : 진공관

(2) 1950년대 : 트랜지스터(Transistor)

(3) 1960년대 : 집적회로(IC)  SSI, MSI

(4) 1970년대 : 마이크로프로세서  LSI, VLSI

(5) 1980년대 : 슈퍼 컴퓨터  VLSI, UVLSI


진공관을 사용한 1세대 컴퓨터에는 에니악(ENIAC), 에드삭(EDSAC), 유니백-I(UNIVAC-I)등이 있었다. 트랜지스터를 사용한 2세대 컴퓨터에는 NCR 300, IBM 7000 등이 있었다.

집적회로를 사용한 3세대 컴퓨터에는 IBM System/360, 최초의 슈퍼컴퓨터 CDC 6600, 최초의 미니컴퓨터 DEC PDP-8 등이 있었다.

이러한 컴퓨터들에는 CPU는 연산장치와 기억장치, 제어장치가 하나의 반도체에 집적되어 있는 것이 아니라 각 장치가 전선과 릴레이, 스위치등으로 연결되어 있는 구조였다.


자 여기서 마이크로프로세서라는 용어를 한번 이끌어 내 보자.

마이크로프로세서(Microprocessor)는, 'Micro(작다)' + 'Processor(처리장치)' 의 합성어로, 반도체 칩으로 집적되어 소형화된 CPU를 의미한다. 위의 표에서 보면, (4)시절에 이르러서야 마이크로프로세서의 시대가 열리게 되었던 것이다.


그렇다면, 최초의 마이크로프로세서는 무엇일까 ?

세계 최초의 마이크로프로세서는 바로 인텔(Intel)사의 4비트 마이크로프로세서인 Intel 4004이다. 1969년 당시, 세계시장에서 전자계산기 제조업체로 이름을 날리던 일본의 Busicom사가 당시의 벤처기업이던 미국의 Intel사에 탁상계산기용 마이크로프로세서를 원 칩으로 개발해 줄 것을 요청했다. 인텔은 1971년 세계 최초로 4비트 마이크로프로세서를 개발해서 납품했고 마이크로프로세서를 사용한 최초의 계산기를 만든다.

인텔은 여기서 안주하지 않고 Intel 4004가 프로그램만 바꾸면 다용도라는 점을 착안해서, 전자계산기보다 더 큰 시장으로 눈을 돌려 미국시장에서 대성공을 거두었으며, 마이크로프로세서 개발을 지속해 오늘날의 세계적인 거대 기업이 되었다.

                    그림 3. ENIAC 컴퓨터




  그림 4 . Intel 4004의 내부


마이크로프로세서의 역사를 CISC vs RISC로 분류하여 각각 알아보기로 하겠다.  CISC 프로세서의 대표적인 것은 바로 인텔의 x86아키텍처와 모토롤라의 m68k아키텍처이다.  이렇듯 CISC 프로세서의 역사는 곧 PC(Personal Computer)의 역사인 것이다. 물론 미니컴퓨터였던 DEC사의 VAX 머신도 CISC 아키텍처였지만 말이다.    


1) CISC 프로세서의