CISC(Complex Instruction Set Computer; 복합명령형 컴퓨터)
RISC(Reduced Instruction Set Computer; 축소명령형 컴퓨터)
CRISC


   MPU는 동일 칩 위에 기억회로, 논리회로를 형성한 초소형 CPU(중앙연산처리장치)인데, 그 처리구조에 따라 CISC(Complex Instruction Set Computer; 복합명령형 컴퓨터)와 RISC(Reduced Instruction Set Computer; 축소명령형 컴퓨터)로 나뉜다.


     RISC(Reduced Instructions Set Computer)가 CISC(Complex Instructions Set Computer)보다 효율적으로 명령어를 처리한다. 386이나 486 컴퓨터의 중앙처리장치가 CISC방식이고, Power PC와 워크스테이션용 중앙처리장치가 대부분 RISC방식이다. 그러나 최근에는 CISC칩도 RISC구조의 일부를 채용하여 구분이 모호해지고 있다. 따라서 addressing mode는 적어야 하고, instruction format는 다양하지 못하다.


   PowerPC(Power Optimized with Enhanced RISC PC)는 RISC(Reduced Instruction Set Computer)방식의 CPU이며 이는 Intel이나 AMD사의 CISC(Complexed Instruction Set Computer)와는 전혀 새로운 방식의 것이다. PowerPC는 IBM과 Motorola, Apple사에 의해 공동 개발된 CPU로서 PPC601, 603, 603e, 604, 604e, 740, 750(G3), 7400(G4) 순서로 발전하게 된다. RISC를 우리말로 축약형 컴퓨터라고 표현한다. 대부분의 CPU들이 방대한 명령어를 가지고 있음에도 실제로 자주 사용하는 명령어는 전체 명령어의 10%도 미치지 못함에 착안하여 명령어의 갯수를 줄이고, 그 대신 CPU 인사이드 캐시, 분기 예측 기능, 수퍼스케일러, 비순차 명령 실행, 파이프라이닝, 레지스터 개수 증가등의 본질적인 CPU 성능 개선 방안을 적용한 것이다. RISC기술은 Intel의 x86계열을 제외한 모든 CPU들, 즉 SUN의 Sparc나 DEC의 Alpha, MIPS의 R계열에 현재 채택되어 있다.


   사실상 CISC와 RISC의 구분은 모호하다. 다만, 이전의 아키텍쳐를 계속 발전시켜온 형태의 CPU, 즉 8086부터 발전해온 x86계열을 CISC, 비교적 최근에 개발된 CPU들을 RISC라 부르게 되는 경향이 있다. 현재 둘의 경계가 모호해진 이유는 최근의 CISC CPU들이 성능향상의 방안으로 RISC의 기술들을 채용했기 때문이다. 그러나 현재의 x86의 경우 오래된 아키텍쳐를 계속 발전시켜 왔기 때문에, 칩에 내장된 트랜지스터의 개수가 순수 RISC칩의 수배에 이르게 되었다. iMac에 사용되는 G3(PPC-750)의 경우 펜티엄 II의 절반에도 이르지 않는 트랜지스터의 조합으로도 더 나은 성능을 나타낸다. 최근에 개발된 G4(PPC-7400)은 펜티엄 III의 2/3의 clock만 으로도 3배이상의 성능을 보여준다. 이는 아키텍쳐가 MHz보다 더 중요하다는 것을 보여주는 단서이기도 하다.


1. CISC(Complex Instruction Set Computer)

CPU의 동작을 지시할 때 한번에 여러가지 일을 하도록 지시할 수 있는 명령어 체계를 갖는다. CPU안의 내부 명령어가 100개 이상을 사용하는 프로세서를 CISC라고 한다. 내부 명령어가 많기 때문에 기능마다 하나의 명령어를 주기 때문에 좋을 것 같이 보이지만 실제로 프로그래밍을 하기 어렵고 많은 명령어로 수행 시간이 길어질 경우가 많다. 일반적으로 사용되는 IBM 컴퓨터의 XT에서 486 CPU와 매킨토시에서 사용하는 680x0 CPU는 CISC 개념이 사용된 프로세서이다.

CISC는 인텔 ‘i80486’ ‘펜티엄’ 등의 MPU에 널리 채용되고 있는 CPU이다. CISC는 하나의 명령으로 복잡한 처리가 가능하지만 회로설계가 복잡해지는 경향이 있다.
최근 동작 주파수가 해마다 향상되어 현재는 335MHz에 달하고 있어 RISC와의 격차를 줄여 가고 있다


2. RISC(Reduced Instruction Set Computer)

CPU의 동작을 지시할 때 한번에 하나의 일만을 하도록 지시할 수 있는 명령어 체계를 갖는다. CPU안의 내부 명령어를 최소로 줄여서 수행 시간을 단축하는 것으로 단순화한 명령어를 조합해서 다른 필요한 명령어를 만드는 형태이다. 일반적으로 CISC보다 50%에서 75% 정도 더 빠르고 워크스테이션과 같은 중형 컴퓨터에 사용되는 CPU에 사용되고 있다. 모토롤라 사의 R4000은 RISC명령어 체계를 가지고 있다


최첨단 서버 워크스테이션 ‘모델 250’을 실현하는 CPU는 RISC형 CPU를 채용하고 있다. 또 인텔의 ‘펜티엄’에 대항하는 ‘파워PC’ 등도 RISC형으로 되어 있다. RISC는 종래의 CISC에서 복잡하고 종류도 많았던 명령을 정리하고 단순화하여 고속화 보드형 프로세서로 컴파일러에 의한 명령렬(列)의 최적화에 의해 고속화를 실현한다. CISC에 비해 구조가 간단하고 주파수를 높이는 일이 쉬운 것이 그 특징이다.


나아가 이 RISC를 여러 개로 병렬화하여 성능 향상을 꾀해 범용 대형 컴퓨터에 접근하고 있는 것이 최근의 서버 워크스테이션의 특징이다. <표 2>에 RISC의 상용화 예(NEC)를 나타냈다. 또 


(1) RISC, CISC,CRISC

    RISC는 정확히 말하면 `축약된 명령어 표를 이용한 정보처리방식'이다. 여기에 대비되는 것이 `복합 명령어 표를 이용한 정보처리방식' 곧 CISC이다. 386이나 486 컴퓨터의 중앙처리장치가 CISC방식이고 Power 개인용 컴퓨터와 워크스테이션용 중앙처리장치가 대부분 RISC방식이다. 펜티엄은 두 가지를 적당히 섞어 쓴다. 컴퓨터중앙처리장치는 명령어사전에서 원하는 명령어를 찾아내, 실행 시 키는 작은 반도체라고 생각하면 이 기술을 이해하기 쉽다. 물론 중앙처리장치 나름의 명령어이고, `dir'(파일목록보기) 같은 도스 명령어와는 전혀 다른 것이다. RISC방식 칩의 명령어들은 길이가 짧고 크기가 같다. 또 한 명령어는 한 가지 기능만 한다. 길이가 같아 찾기가 쉽고 기능이 한 가지밖에 없어 동시에 따로따로 처리한 뒤 결과를 합칠 수 있다. 계산기를 10개쯤 놓고 동시에 계산을 해서 합산하면 결과가 나오는 식이다. 이 때문에 명령어 처리시간이 많이 줄어든다. RISC의 장점은 CISC방식을 보면 더욱 뚜렷해진다. CISC는 명령어들의 크기가 제각각이며, 이 명령어들을 같은 크기로 잘게 잘라 처리한다 . 한 명령어를 자르니 앞뒤 순서가 생기고, 따라서 동시에 처리하지 못한다. 그렇지 않으면 뒤죽박죽이 되기 때문이다.  이런 단점 때문에 CISC방식은 인기가 떨어지고 있다. 486급 중앙처리장치의 후속제품이기 때문에 CISC방식에 바탕을 둔 펜티엄칩은 대신 잘게 자른 명령어를 동시에 처리하는 기술을 RISC방식에서 빌려왔다. 그래서 RISC와 CISC를 혼합한 CRISC방식이라고 부른다.


(2) RISC와 CISC 그 차이에 대해서

    RISC와 CISC는 CPU의 아키텍쳐,즉 구조적 측면의 차이로, 어떤 일정한 방법으로 명령어를 처리하느냐에 따라 구분된다. 예전에는 RISC를 단순히 CISC를 간소화 시킨 정도로 보는 시각도 있었지만 현재에 와서는 그런 개념을 뛰어넘고 있다. 일단 현재 우리가 대부분 쓰고 있는 CISC CPU에 대해서 설명을 해보자면 일단 CISC의 어원부터 짚고 넘어가야 할 것 같다. CISC는 Complex Instruction Set Computing의 줄인 말로, 소위 복합 명령 집합 계산,컴퓨팅으로 말 그대로 복합적인 명령어를 가지고 있다. 일단 컴퓨터에 어셈블리, 또는 베이직 따위의 언어로 명령을 주면, CPU에서 그것을 여러 단계로 세분화되어 마이크로 코드(Microcode)라 하는 수행 절차를 걸쳐 처리하게 된다. 그런데, 이런 수행에 있어 좀 더 복잡한 연산에 대응하는 명령어 셋을 추가하는 것이 CISC로, 여러 개의 단순한 명령어 셋으로 명령을 처리하기 보다는 그것들을 포괄하는 연산 셋으로 한 개의 명령어로 처리해 효율을 도모한다는 것이 CISC다. MMX도 이런 의미에서 볼 때는 CISC의 확장이라 볼 수 있겠다.


  한편, RISC는 CISC와는 반대로 기본 명령어 셋을 추구하는 형태이다. 그러나 RISC라고 해서 단순히 명령어를 간소화 시킨 형태라고 봐서는 안된다. 단순히 명령어만 간소화 시킨다면, CISC보다 뛰어날 이유가 없기 때문이다. RISC에서는 컴퓨터에서 주 수행되는 작업을 색출해, 거기에 최적화 시켜 만든다. 그러니까 핵심이 되는 작업 항목에 특화시켜 전체적인 속도를 향상시키는 것이다. 한가지 예를 들어 설명하자면, 모든 컴퓨터 작업에 있어서 읽고,쓰는 작업은 항상 포함된다. 일단 데이터를 읽어 들이고 쓰는 과정은 로딩과 스왑으로 항상 생기기 때문이다. 그 과정에 최적화시키면 그 만큼 작업 속도,즉 전체적인 처리 효과를 얻게 되는 것이다. 그러기 위해선 다른 명령어 셋과는 달리 다른 공정이 필요한데, 요즘에 와선 CISC도 이런 공정을 채용해 단일 사이클에 처리하는 명령어를 많이 갖게되었다.

요즘에 와선 이런 점을 통해서 RISC와 CISC의 차이를 구분할 수 없게 되었고, 캐시에 따른 차이가 두각을 드러냈다. 바로 CISC가 가진 맹목으로, 복합적인 명령어를 많이 가지려고 하다 보니, 트랜지스터 직접도가 과다하게 늘어나는 것이다. CISC가 가진 비효율이라 할 수 있겠다. RISC에서는 이와는 달리 명령어 체계 단순화를 지향하고, 핵심명령 특화 체제에 있어, 트랜지스터 집적에 여분이 있기 때문에 L1 캐시를 증대시켜 성능을 더욱 증대 시키는 것이다. 펜티엄 프로의 경우 L1 캐시 16KB(명령어/데이터 캐시 합친 양)이고 L2 캐시를 제외한 펜티엄 프로의 트랜지스터 집적 수가 550만개인데 반해, RISC CPU인 Power PC 604e 프로세서의 경우 L1 캐시가 64KB인데도 트랜지스터는 510만개다.

특히, 604 프로세서의 세부적인 RISC의 특성을 살펴보자면 한 실행주기당 여러 명령을 동시에 처리하는 슈퍼스칼라(6~7개의 명령어를 처리한다.)를 구현하고 있다. 이상의 서술한 점이 RISC가 CISC를 앞서는 대략적인 이유와 구조적 특징이다. R10000 프로세서 같은 워크스테이션 RISC 프로세서에 대한 언급도 하고 싶지만 그러기엔 본 필자의 역량이 너무나도 떨어지는 듯하다. 다만 O2에 사용된 R10000 프로세서를 기반해 잠깐 설명하고자 한다. R10000 프로세서의 경우 clock은 그리 높지 않다. 175MHz의 동작 clock을 가진 제품도 있기 때문이다. 1MB의 L2 캐시를 가지고 있으며,(R5000SC의 경우 5MB의 L2 캐시를 탑재하고 있다.) R10000 프로세서는 RISC프로세서의 정점을 보여주는 CPU로 RISC의 효율성을 최대한으로 발휘하고 있다. 4방향 슈퍼스칼라(4개의 명령 동시 처리)에 64비트 구조를 가지고 있으며 비순차적 명령 실행 방법과 128비트 L2 캐시 버스에 별도 5개의 실행 유닛을 가지고 있다. (PC 계열의 난폭한 마케팅을 하면 R10000 프로세서는 128비트 프로세서란 말을 들을 수도 있다는 얘기가 된다.)


   CISC는 RISC를 clock 속도로써는 충분히 능가할 수 있다. 다만 그 과정에서 트랜지스터 집적도가 너무 과다하게 올라가고 있다. 특히 Intel은 CISC에 MMX를 덧붙여 CISC에 CISC를 더한 셈이 되었다. 어차피 MMX의 세부를 열어보면 그것 역시 CISC의 확장이 되는 셈이기 때문이다. 특정 연산에 대한 명령어를 추가하는 것이 결국 CISC의 특성이 아니던가. Intel이 트랜지스터 집적도를 무리하게 올리면서 지금의 가격을 형성하고 인하 정책을 펼치는 것이 신기할 정도다. 아마도 현재의 PC CPU는 RISC로 갈 가능성은 희박할 듯 하다.

그 예로 Intel이 내세우는 차세대 CPU 머시드는 EPIC라고 하는 CISC를 또 다시 확장한 형태로 구현된다고 하니 말이다.( 그 결과 머시드의 트랜지스터 집적수는 3억개라는 천문학적인 숫자에 이르고 말았다...--;) CISC와 RISC, 이 둘은 다 각기 장단점이 있다. CISC는 복합 명령을 가짐으로써 하위 호환성을 충분히 확보할 수 있고 RISC의 경우 효율적인 CPU 구조를 가지고 있다. 다만 CISC는 트랜지스터 집적에 있어서 효율성이 결여되어 있고, 그 결과 성능 향상에 난점을 겪고, RISC의 경우 하위 호환을 위해 에뮬레이션 방식을 채택해야 하고, 일정한 환경에서만 성능을 발할 수 있는 단점이 있는 것이다. 따라서 호환성이 절대적으로 필요한 PC 환경에서는 CISC가, 전문적인 일에 있어서는 RISC가 서로 독보적인 우위에 점하고 있는 것이다.

'Programming > 이것저것' 카테고리의 다른 글

Sliding Window  (0) 2010.03.19
CISC & RISC  (0) 2010.03.18
펜티엄부터 린필드 i5까지, 인텔 어떻게 걸어왔나  (0) 2010.03.18
MTU  (0) 2010.03.18
ICMP  (0) 2010.03.18

+ Recent posts