본문 바로가기
공부/ATmega128

cisc와 risc

by ding9 2008. 9. 4.

** CISC (Complex Instruction Set Computer)(복합명령셋 컴퓨터)(읽기: 시스코) **

 

마이크로프로세서가 만들어 진 때부터 사용하고 있는 설계양식.

microprocessor 가 다수의 명령을 처리 할 수 있도록 복잡하고 기능이 많은 명령어들로 구성되어 있으며

  고급언어에 근접, 여러가지 처리를 동시에 실행 할 수 있도록 함으로써 처리 능력 향상을 꾀하고 있는 것이다.

 

명령어의 길이가 1바이트에서 8바이트까지 가변적으로 구성되어 있으며,

  명령어가 언급한 대로 가변적이고 복잡하므로 Complex한 방식이라고 명명하고 있는 것이다.

이 구조는 가능한 한 명령어의 길이를 줄여서 명령어의 디코딩 (decoding, 해석) 속도를 높이고

  최소의 메모리 구조를 갖도록 하기 위해서 정해진 것으로 하나의 프로세서가 일련의 명령어를 순차적으로

  처리하기에는 무척 유용한 방법이다.   또한 CPU의 동작속도가 높아짐에 따라 성능이 비례적으로 증가한다.

 

386이나 486 컴퓨터의 CPU가 본 CISC 방식이며, 우리가 흔히 볼 수 있는 CPU들 중에서 인텔의 x86계열의

  CPU와 AMD의 인텔 호환 CPU등은 모두 본 CISC 방식을 사용하고 있다.

 

CISC는 마이크로프로그래밍을 통해 고급언어에 각기 하나씩의 기계어를 대응시킴으로써 명령어 집합이 커지고,

  가변길이의 다양한 명령어를 가진다.

일반적으로 100에서 250개의 명령어를 사용하고 몇몇 명령어는 특벽한 동작을 수행하여 자주 사용되지 않는다.

다양한 어드레싱 모드를 지원하여 보통 5에서 20가지의 모드를 가진다.

 

예를 들어 Intel 80286 CPU는 80286 명령어는 물론 8086과 8088의 명령어를 내장하고 있어 하위 호환성을

  유지하고 있기 때문에 8086 과 8088에서 사용하는 명령어를 문제없이 쓸 수 있다.

80386 과 80486, 펜티엄등 모든 x86계열의 CPU가 SISC방식을 사용하고 있기 때문에 하위 호환성을 유지한다.

 

CISC는 어셈블리어와 같은 직접 프로그래밍 언어수준을 고려하였고 복잡한 명령어 형식과

  어드레싱 모드를 사용해서 해당 프로그램의 메모리 요구량을 절약 할 수 있다.

대표적이 CISC 마이크로프로세서는 Intel의 80386, 80486, Motorola 68030, 68040등이 있다.

CISC는 주로 호환성이 절대적으로 필요한 PC환경에 적합하다.

 

CISC방식은 32비트 프로세서인 80386까지도 아무런 문제없이 적용된 기술이므로 완벽한 하위 호환성을

  유지할 수 있었으나, 80486이 등장하면서 단순히 CPU의 클럭을 높이는 방식으로 성능향상을

  기대할 수 없으므로 CISC방식의 문제점이 드러나기 시작했다.  클럭에는 한계가 있기 때문..


그래서, 한번에 여러개의 명령어를 동시에 수행할 수 있는 기술이 필요하게 되었다.

즉, 동일한 클럭에서 두개의 명령어를 한번에 처리하게 되면 두배의 성능향상을 기대할 수 있기 때문이다.

그러나 슈퍼 스칼라 (Super Scalar)구조에서는 명령어의 길이가 가변적이기 때문에 순차적으로 해석해야 하고

  조건/비조건 분기가 중간에 자주 등장하므로 여러개의 명령어를 처리하기에는 적합하지 못했다.

결국, 펜티엄부터 RISC86이라는 기법이 사용되었다.

 

이 방식은 AMD의 인텔 호환 CPU에서 사용된 기술로, 명령어의 해석 부분을 기존의 슈퍼 스칼라 방식으로

  유지하면서 독립된 장치로 설계하여 연속적이고 고속으로 명령어를 RISC방식으로 변환시키는 것..

그리고, 실제로 연산을 처리하는 장치는 RISC방식으로 처리하여 여러기의 명령어를 처리할 수 있도록

  하는 방식이다..  그래서, 인테 펜티엄 프로세서는 최대한 두개의 명령어를 동시에 처리할 수 있는 것이다.

 

  이와 같이, CISC방식의 한계를 넘기 위해 고안된 방식이 RISC방식으로,

  하나 하나의 명령을 단순히 수행 함으로써 복수의 명령을 효율성 있게 동시에 실행 하도록 하여

  처리성능 향상을꾀하고 있다.

기본적으로 CISC방식도 RISC방식도 서로의 장점을 취하는 형태로 발전하고 있기 때문에,

  최근에는 점점 양자의 구분을 하지 않고 있다.

 

* CISC의 특징

 

많은 수의 명령어 - 일반적으로 100에서 250개의 명령어

몇몇 명령어는 특별한 동작을 수행하며 자주 사용되지 않는다.

다양한 어드레싱 모드-일반적으로 5에서 20가지의 모드

가변 길이 명령어 형식

메모리의 피연산자를 처리하는 명령어

어셈블리어와 같은 직접 프로그래밍 언어 수준을 고려함

복잡한 명령어 형식과 어드레싱 모드를 사용해서 해당 프로그램의 메모리 요구량을 절약할 수 있슴.

표준화와 호환성에 중점

 

* CISC의 장단점

 

   장점  :  복합명령을 가짐으로써 하위 호환성을 충분히 확보가능

               호환성이 절대적으로 필요한 PC환경 필요

   단점  :  트랜지스터 집적에 있어서 효율성이 결여

               그 결과 성능향상에 난점

               메모리의 피연산자를 처리하며 계산 속도가 느려짐


** RISC (Reduced Instruction Set Computer)

 

1970년대에 등장한 CPU 내부의 기계어를 조직하는 방식 중의 하나.

일반적인 PC 의 CPU 에 많이 사용되는 CISC 방식은 연산에 처리되는 복잡한 명령어들을 수백개 이상 탑재하고 있는

  마이크로프로세서인 반면 여러 종류의 명령을 포괄해 처리할 수 있는 간단하고 작은 갯수의 명령어만을 탑재하고

  복잡한 명령은 이 기본 명령들을 조합하여 사용하는 방식이 RISC 프로세서라고 할 수 있다.

CPU에서 수행하는 동작 대부분이 몇개의 명령어만으로 가능하다는 사실을 전제로 하고 있다.


CISC 방식은 사용되는 모든 명령어들을 내장하고 있지만 실제 주로 사용되는 명령어들은

  그 중 10 % 이하에 불과하기 때문에 사용빈도가 높은 명령어들만을 내장하여 CPU 를 구상하게 되면서

  RISC 방식이 등장하게 되었다.

즉, CISC 프로세서는 발전함에 따라 명령어 개수가 증가하여 내부구조가 매우 복잡하게 되어

  고속으로 작동되는 프로세서를 만들기가 힘들기 때문이다.

초기에는 단순히 RISC가 CISC 를 간소화시킨 정도로 보기도 했지만

  RISC방식으로 CISC에서 처리할 수 있는 기능들을 모두 처리할 수 있게 됨에 따라

  RISC 방식이 점차 주목받게 되었다.

 

RISC CPU는 고정된 길이의 명령어를 사용하고 명령어의 종류가 미리 정해져 있으므로 해석 속도가

  빠르고 여러개의 명령어를 처리하기에 적합하다는 장점이 있다.

그러나 처리 비트단위가 변하거나 CPU의 구조가 조금만 바뀌어도 하위 프로세서와의 호환성이 떨어지므로

  문제가 발생한다.  

이것은 하위 컴퓨터의 표준이 될 만한 호환명령이라는 개념이 없고 프로세서의 단계에 따라

  최적의 명령어가 정해져 있기 때문이다.

이처럼 RISC방식의 대표적인 CPU인 모토롤라 68계열은 소프트웨어의 호환성 결여 때문에 인텔에 비해서

  뛰어난 성능을 가지고 있음에도 불구하고 많은 사용자를 확보하지 못하였다.

단지 고성능의 대용량 데이터 처리가 필요하고 소프트웨어 활용이 비교적 고정되어 있는 웍스테이션을 중심으로

  많이 사용되고 있다.

반면, RISC는 명령어가 전부 1워드 길이로 짧고 파이프라인과 슈퍼 스칼라를 통해서 멀티 태스킹이 가능하므로

  CISC에 비해서 많은 레지스터를 가지고 있다는 특징을 가진다.

 

RISC 방식은 명령어 수를 줄이는 대신 CPU 내부 캐쉬, 수퍼스칼라, 파이프 라이닝, 비순차 명령 실행,

  레지스터 개수 증가 등 CPU 의 근본적인 기능을 향상시켜 CISC 에 비해 월등히 높은 처리 속도를 가질 수 있게 되었다.

그러나 CISC 가 무조건 비효율적인 방식은 아니다.

CISC 는 많은 명령어를 내장하고 있기 때문에 프로그램을 짜기가 보다 편리하고

  CPU 를 좀 더 복잡하고 세밀하게 다룰 수 있다는 장점이 있다.

하위호환성을 갖게 되어 다양한 환경에서도 제 성능을 발휘할 수 있다.

즉, 펜티엄4에서도 XT 시대에 작성된 프로그램 및 데이터가 사용 가능한 것이다.

반면 RISC 방식은 일부 명령어들만 포함함에 따라 구조는 효율적이게 되었지만

  하위 호환성을 위해서는 보통 에뮬레이션 방식을 사용하게 되고

  이런 작업에서는 CISC 에 비해서 성능이 떨어지게 된다.

즉 RISC 방식은 특정한 목적에 특화된 방식이기 때문에 다양한 용도로 사용하기에는 다소 적합하지 않다고 할 수 있다.

인텔 CPU 에 비해 월등히 빠른 RISC 방식 CPU 인 PowerPC 가 실패한 가장 큰 이유도

  호환성면에서 x86 CPU 에 비해 떨어지기 때문이었다.

즉, PowerPC 프로세서는 과거 8비트 및 16비트 프로그램 및 데이터 처리시 오류가 발생할 확률이 높았던 것이다.

또한 과거 프로세서 속도가 그리 빠르지 않던 시절에는 CPU 내부에서 새로운 명령어 조합을 만들어 내야 하는

  RISC 방식 보다는 주어진 명령어를 찾아 쓰는 방식인 CISC 방식 CPU 가 더 효율적이었다.

예를 들어 CISC 프로세서인 80486 에서는 하나의 연산으로 가능한 덧셈 명령을 RISC 프로세서인 80860 에서는

  다섯개의 명령을 수행해야 하기 때문에 그만큼 시간이 더 걸리게 된다.

그러나 프로세서 속도가 점차 빨라지면서 CPU 가 연산에 참여하는 시간보다 필요한 명령어를 기다리는 시간이

  점차 늘어남에 따라 내장된 캐시의 크기 및 속도의 중요성이 대두되었고 그 과정에서

  RISC 프로세서가 더욱 주목을 받게 된 것이다.

우리가 흔히 볼 수 있는 CPU 들중에서 인텔의 x86 계열 CPU 와 AMD 의 인텔 호환 CPU 등은 CISC 방식으로,

  트랜스메타의 크루소와 애플의 PowerPC 등은 RISC 방식으로 분류할 수 있다.

개인용 컴퓨터에서 사용되는 CPU 중 대표적인 RISC 방식이라고 할 수 있는 PowerPC

  (Power Optimized with Enhanced RISC PC)는 애플과 IBM 그리고 모토로라가 합작해서 만든 CPU이다.

이 PowerPC 의 경우 CISC 방식인 인텔의 x86 CPU 와 비교하면

  같은 클럭에서 수배 이상의 처리속도를 보여주고 있다.

이런 빠른 속도 때문에 워크스테이션이나 대형 서버 같은 컴퓨터들은 대부분 RISC 방식의 CPU 를 사용하고 있다.

한편 인텔의 x86 계열 CPU 들의 경우 CISC 방식의 구조를 유지함에 따라 현재는 비슷한 수준의 RISC CPU 에 비해

  탑재된 트랜지스터가 수배 이상 많아지게 되었으며, 트랜지스터 수가 많아지면 그만큼 높은 집적도 기술이 필요하게 되고

  성능 향상에도 여러 제약이 따르게 된다..

그래서 인텔에서도 CISC 방식만으로는 속도향상에 한계가 있다고 판단하여 펜티엄 이후부터는

  CISC CPU 에 RISC 구조의 일부를 채용하여 사용하고 있다.

이런 제품들을 CISC 와 RISC 가 혼합되었다고 하여 CRISC 라고 부르기도 한다.

사실상 최근에 출시되는 CPU 중에는 순수하게 CISC 방식만으로 구성된 제품은 거의 없으며

  대부분 RISC 와 혼합된 방식을 채용하고 있어 CISC 와 RISC 의 구분이 점차 모호해지고 있다.

인텔도 처음에는 펜티엄4를 완전 RISC 방식으로 설계하려 하였으나,

  8 비트 코드에 대한 호환성 확보가 어려웠기 때문에 다시 전략을 8 비트 코드 처리는 CISC 방식으로,

  16 비트 이상의 코드 처리는 RISC 방식으로 처리하는 방식으로 바꾸었다가 이 역시 호환성이 부족하였기 때문에

  결국 32 비트 코드 중 일부만 RISC 방식으로 어정쩡한 구조와 성능의 펜티엄 4 가 등장하게 된 것이다.

사무용으로 쓰이는 컴퓨터들 중에는 심지어는 8 비트 시대에 CP/M(도스의 조상격인 애플컴퓨터에서 운영되는 OS)

  기반으로 작성된 프로그램 및 데이터들이 상당량 존재한다..

과거 이들 8비트 및 16비트 관련 코드들을 무시했던 소프트웨어(OS/2)들과 하드웨어(PowerPC)들이

  몰락한 것을 생각해 보면 하위 호환성 때문에 항상 성능면에서 발목이 잡히는 인텔과 마이크로소프트가

  왜 시장에서는 성공하는지 이해가 가기도 한다..


* RISC의 특징


상대적으로 적은 수의 명령어

상대적으로 적은 수의 어드레싱 모드

메모리 참조는 load와 store 명령어에서 만으로 제한 된다.

모든 동작은 CPU의 레지스터 안에서 수행된다.

고정된 길이의 명령어 형식으로 디코딩이 간단

단일 사이클의 명령어 실행

마이크로 프로그램된 제어 보다는 하드와이어된 제어를 채택한다.

속도 향상에 중점을 둠

프로그램 코드와 데어터를 동시에 접근함

컴파일러에 많은 부분을 의존함


* RISC의 장단점


   장점  :  효율적인 CPU 구조를 가짐

              전문적인 일에서 독보적인 우위에 있슴.

   단점  :  하위 호환을 위해 에뮬레이션 방식을 채택

              일정한 환경에서만 성능을 발휘

......................................................................................................................................

출처 : 카페 '마이티 아톰'

반응형

'공부 > ATmega128' 카테고리의 다른 글

[ATmega128] C언어에서 bit이해하기.  (0) 2009.10.01
ATmega48  (0) 2009.08.21
ATmega128  (0) 2009.08.04
watchdog  (0) 2008.09.04

댓글