CISC (Complex Instruction Set Computer)
CISC는 필요한 모든 명령어 셋을 갖추도록 설계된 마이크로프로세서에 관련되는 용어로서, 요구되는 능력을 가장 효율적인 방법으로 제공했었다. 이름에서 알 수 있듯이 컴퓨터에 주어진 CISC 명령은 매우 작기 때문에, 그 당시 메모리 부족의 문제점을 보완할 수 있었다.
그러나 그 후, 명령어셋 자체를 가장 자주 사용되는 명령어만으로 갯수를 줄임으로써 대부분의 활용업무 면에서 소요되는 시간을 줄일 수 있는 방법이 고안되었는데, 이것을 RISC라고 불렀다. 그러다 보니, 이러한 RISC 프로세서와 모든 명령어 셋을 갖추고 있는 컴퓨터를 구별할 수 있는 말이 필요하게 되었는데, 그래서 CISC라는 용어를 사용하게 되었다.
IBM의 System/6000 기종과 매킨토시 컴퓨터에 사용되고 있는 PowerPC라는 마이크로프로세서가 바로 RISC 형태의 프로세서이며, 펜티엄을 포함한 인텔 계열의 모든 프로세서는 CISC 프로세서이다. RISC는 CISC의 길고 복잡한 명령어 설계를 가져다 짧고, 처리가 빠른 여러 개의 명령어로 바꾸었다.
RISC (Reduced Instruction Set Computer)
RISC는 적은 수의 컴퓨터 명령어를 수행하도록 설계된 마이크로프로세서로서, 좀더 빠른 속도로 동작될 수 있다. 컴퓨터는 수행해야할 각 명령어 형태마다 트랜지스터와 회로들이 추가되어야 하기 때문에, 많은 수의 컴퓨터 명령어 셋을 갖춘 마이크로프로세서는 만들기도 복잡하고, 실행속도도 늦은 경향이 있다.
미국 뉴욕의 요크타운에 있는 IBM 연구소의 John Cocke는 컴퓨터 내의 명령어들 중 불과 20% 정도의 명령어가 전체 80% 이상의 일을 처리한다는 것을 증명함으로써, 1974년에 RISC에 관한 개념을 처음 제기하였다. 이러한 발견으로부터 이익을 얻은 첫 번째 컴퓨터가 1980년에 발표된 IBM PC의 XT 기종이다. 후에 IBM의 RISC System/6000은 이 아이디어를 사용하여 만들어졌다. RISC라는 용어 그 자체는 UC 버클리의 교수로 있는 데이빗 피터슨에 의해 붙여진 이름이다. RISC 개념은 썬마이크로시스템즈의 SPARC 마이크로프로세서에 사용되었으며, 실리콘 그래픽스 소유의 MIPS Technologies의 설립을 유발하였다. DEC의 알파 마이크로칩에도 역시 RISC 기술이 사용되었다.
RISC의 기본 개념은 단순화(크기나 복잡성면에서)에 있다. 이는 마이크로프로세서를 좀 더 사려 깊게 설계하도록 촉발하였다. RISC와 관련된 설계 개선점들은 다음과 같다.
Ø 단순하다는 것은 프로세서 설계에 드는 비용이 줄어든다는 것을 의미한다. 칩 제작에 드는 R&D 비용이 감소하게 되고, 버그의 존재 가능성이 줄어들게 되어 설계가 쉬워지게 된다.
Ø 설계가 쉽기 때문에 프로세서가 개발에서 제품 출시까지의 단축된다.
Ø 마이크로프로세서의 명령어를 사용하는 운영체계 및 응용프로그램 작성자들이 적은 수의 명령어 셋을 이용하므로 보다 쉽게 프로그램을 개발할 수 있다
Ø RISC의 단순성이 마이크로프로세서의 공간을 사용하는 방법을 선택하는데 보다 자유롭게 해준다
Ø 고급언어 컴파일러들이 RISC 컴퓨터 내에 있는 소수의 명령어만을 사용하게 되므로 이전에 비해, 보다 효율적인 코드를 생산할 수 있다
간단한 예를 통해서 RISC와 CISC의 차이점을 알아보도록 하자.
메모리 상의 두수의 곱
오른쪽 그림은 일반적인 컴퓨터의 저장 구조이다. 메인 메모리가 1:1부터 6:4까지 위치에 따른 번호를 매겨 나눠져 있다. 실행 유닛은 모든 계산을 한 후에 응답해야 한다. 그러나 실행 유닛은 단지 6개의 레지스터(A, B, C, D, E, F) 중 하나에 적재된 데이터를 가지고 수행된다.
이제 여기서 두 수의 곱을 얻고자 한다. 2:3에 위치한 수와 5:2에 있는 수를 곱한 결과를 다시 2:3위치에 저장한다.
CISC 접근
CISC 아키텍처의 주요 목표는 가능한 적은 수의 명령으로 작업을 수행해야 하는 것이다. 이러한 목표는 프로세서 하드웨어를 각 연산을 이해하고 실행할 수 있게끔 제작함으로써 이뤄진다. 이런 특정한 작업에선 CISC는 특정한 명령어를 준비할 것이다. (우린 “MULT" 라고 부르자). 이 명령이 실행 될 때, 하나의 실행 유닛에서 명령은 두 값을 각각의 레지스터로 이동시킨 후, 두 피연산자를 곱해서 적절한 레지스터에 결과를 저장한다. 따라서 두 수를 곱하는 모든 작업은 하나의 명령으로 완료된다.
MULT 2:3, 5:2
MULT 를 복합 명령어(Complex Instruction)라고 부른다. 이것은 컴퓨터의 메모리 뱅크에서 직접 실행되고 프로그래머의 직접적인 적재/저장(Load/Store) 기능 호출을 필요로 하지 않는다. 고수준의 언어(High Level Language)와 닮은 모습이다. 예를 들어 "a" 는 2:3의 값을 나타내고 “b" 는 5:2 의 값을 나타낸다고 하자. 이 명령은 C 문장에서 “a = a * b" 와 같다.
이러한 시스템의 주요한 장점들 중에 하나는 컴파일러가 고수준 언어 문장을 어셈블리 코드로 번역하기 위해 매우 적은 작업을 필요로 한다는 것이다. 따라서 코드의 길이가 상대적으로 짧아지고, 명령어들을 저장하기 위해 작은 용량의 메모리를 필요로 하게 된다. 중요한 점은 복합 멸령어가 하드웨어에서 직접적으로 제공된다는 것이다.
RISC 접근
RISC 프로세서들은 하나의 클럭안에 실행될 수 있는 간단한 명령들만 사용한다. 따라서 위에서 설명한 “MULT" 명령은 3부분으로 나뉘어질 수 있다 - 메모리 뱅크의 데이터를 레지스터로 이동시키는 "LOAD", 레지스터의 위치한 두 값의 곱을 구하는 “PROD", 레지스터의 데이터를 메모리 뱅크로 이동시키는 “STORE". 프로그래머는 4줄의 어셈블리 코드를 작성해야 할 필요가 있다.
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
처음엔 이것이 상대적으로 많은 양의 코드로 작성되고, 어셈블리 수준의 명령어들을 저장하기 위해선 많은 메모리가 필요하기 때문에 상당히 비효율적인 방법이라고 생각할지도 모른다. 컴파일러는 또한 고수준의 언어 문장으로 표현하기 위해서 많은 일을 해야 한다.
CISC |
RISC |
하드웨어가 강조됨 |
소프트웨어가 강조됨 |
여러 클럭의 복합 명령어를 포함 |
오직 단일 클럭의 축약명령어만 포함 |
Memory to Memory : “LOAD”, “STORE” 가 각 명령들 안에서 수행됨. |
Register to Register : “LOAD”, “STORE” 를 독립적인 명령으로 사용함 |
작은 코드 크기, 단위시간동안 높은 사이클 |
단위시간동안 낮은 사이클수, 큰 코드 크기 |
축약명령어를 저장을 위해 트랜지스터가 사용됨. |
메모리 레지스터에 보다 많은 트랜지스터가 사용됨. |
그러나 RISC는 몇몇 아주 중요한 장점을 가져다 준다. 왜냐하면 각각의 명령은 실행하기 위해 단지 한 클럭 사이클만 필요로 한다. 전체 프로그램은 여러 사이클의 “MULT" 명령 만큼의 총 수행 시간에 근접하게 실행될 것이다.
이런 RISC의 “축약 명령어(Reduced Instruction)"는 복합 명령어에 비해 적은 수의 트랜지스터를 요구하면서 범용 레지스터들을 위한 좀 더 많은 공간을 남겨둔다. 결국 모든 명령어들은 단일 형태로 실행되기 때문에 파이프라이닝(Pipelining)이 가능하게 된다.
나누어진 “LOAD" 와 “STORE" 명령어는 실제로 컴퓨터가 수행하야 하는 작업의 총량을 감소시켜준다. CISC 스타일의 "MULT" 명령이 실행된 이후 프로세서는 자동적으로 레지스터들을 지운다. 만약 피연산자 값 중에 하나가 다른 계산에서 사용되고자 한다면. 프로세서는 메모리 뱅크에서 레지스터로 그 데이터를 다시 읽어와야만 한다. RISC에서는 다른 새로운 값이 저장되기 전까지 데이터가 레지스터에 그대로 남아 있게 된다.
성능 산출식
다음 식은 컴퓨터의 성능을 표현할 때 일반적으로 사용되는 식이다.
CISC 접근은 명령어당 사이클 수의 희생하면서 프로그램당 명령어 수를 최소화 시키려고 한다. RISC는 반대로 프로그램당 명령어 수 증가를 감수하고 명령어 당 사이클 수를 최소화한다.
RISC의 장애 요소
RISC의 장점에도 불구하고, RISC 칩은 실제 시장에서 확고한 입지를 마련하기 까지 10년이 넘게 걸렸다. 이것은 소프트웨어의 부재에 기인한다.
비록 애플사의 파워 매킨토시가 RISC 기반한 컴퓨터이고, 윈도NT가 RISC에 호환되긴 하지만, 윈도3.x, 윈도9x는 기본적으로 CISC 프로세서용으로 설계되었다. 많은 회사들이 최근 개발된 RISC 기술을 채용하는 것에 꺼려하는 이유도 여기에 있다고 할 수 있다. 많은 상업적인 이익없이 프로세서 개발자들은 RISC가 가격 경쟁력을 갖을 정도의 많은 수량의 칩을 생산할 수 없다.
다른 중요한 장애 중에 하나는 인텔이다. 비록 인텔의 CISC 칩들이 점점 다루기 어려워지고 있지만 인텔은 개발에 필요한 많은 리소스를 가지고 있고, 보다 강력한 프로세서들을 만들고 있다. RISC 칩들이 특정 영역에서 인텔의 칩들을 능가한다 하더라고 그 차이는 바이어들이 새로운 기술로 마음을 돌리게 할 만큼 크지 않다.
최근 동향
CISC와 RISC의 통합
80년대 초반 RISC 칩이 소개된 이후로 프로세서 기술은 두드러진 발전을 보여왔다. 여러 가지 향상된 기술들이 RISC와 CISC프로세서에 도입됨으로써 둘 간의 경계는 흐려지고 있다. 사실은 두 아키텍처들은 거의 서로의 장점들을 수용하고 있는 듯해 보인다. 프로세서의 성능이 향상됨에 따라 CISC 칩들은 이제 하나의 클럭 안에 1개 이상의 명령어를 실행할 수 있다. 이것은 또한 CISC 칩이 파이프라이닝을 이용하는 것을 허락한다.
또한 다른 기술적인 향상과 함께 칩 안에 보다 많은 트랜지스터를 넣을 수 있게 되었다. 이것은 RISC프로세서가 CISC와 같은 복잡한 명령들을 제공할 수 있는 여유를 제공한다. 또한 “수퍼스칼라 실행(Superscalar Execution)”과 같은 여분의 실행 단위를 이용할 수 있는 복잡한 하드웨어를 사용할 수 있다.
예로 대표적인 RISC 프로세서 생산업체인 인텔은 80486부터 CPU에 RISC의 기술들을 채용하고 있다.
이러한 모든 요인들은 몇몇 그룹에서 논의하고 있는 "Post-RISC” 시대에 와 있다는 것을 의미한다.
그러나 RISC칩이 여전히 몇가지 장점들은 그대로 유지하고 있다는 것을 기억해라. RISC 은 엄격하게 단일형식의 싱글 사이클 명령을 이용한다. 또, Register-to-Register, Load/Strore 아키텍쳐를 유지한다. 확장된 명령어 셋에도 불구하고 RISC칩은 여전히 많은 수의 범용 레지스터들을 가지고 있다.
새로운 경쟁자, EPIC(Explicitly Parallel Instruction Computing)
CISC와 RISC의 가장 큰 위협적인 상대는 서로가 아니라 EPIC이라 일컬어지는 새로운 기술일 것이다. EPIC은 Explicitly Parallel Instruction Computing을 나타낸다. Parallel 단어가 상징하는 것처럼 EPIC은 여러 명령어를 병렬로 실행할 수 있다.
EPIC은 인텔에 의해 개발되었고, CISC와 RISC가 조합된 방법으로 제작되었다. 이론적으로 하나의 CPU가 유닉스 기반 뿐 아니라 윈도 기반의 프로세싱을 제공한다.
인텔은 초기 머시드(Merced)라는 코드네임으로 작업해오다가 현재는 아이태니엄(Itanium, IA-64)이라는 64비트 마이크로프로세서로 시판중에 있다. (인텔의 경쟁사 AMD는 아이태니엄에 대응하여 확장된 형태의 64비트 CISC – 해머(Hammer) – 를 내놓을 준비를 하고 있다. 과거 CPU 들과 서로 호환되는 것이 큰 장점이다.)
인텔의 EPIC 아키텍처가 성공한다는 이것은 RISC에 가장 큰 위협이 될 것이다. Sun이나 모토롤라과 같은 주요 CPU 제조업체들은 현재 x86기반의 제품들을 판매하고 있다. 몇몇은 아이태니움을 판매하고 있지만 CISC나 RISC가 사라질 것으로 예상하진 않는다.
'PC정보' 카테고리의 다른 글
AMD 8코어 불도저 데모시연 (0) | 2010.11.23 |
---|---|
css 최적화 기법 (0) | 2010.11.22 |
[강좌] 전통과 혁신 'IBM 파워 아키텍처' (0) | 2010.11.20 |