RISC와 CISC에 대해서 들어봤다면 당신은 전산쪽에 근무하는 사람이거나 컴퓨터에 관심이 너무나도 많은 사람일 것이다. 전산의 원론적인 부분의 시작점이 바로 RISC와 CISC이기 때문이다.
필자가 오늘 이런 재미없는 얘기를 하려는 데는 이런 내용이 있다.
RISC기반의 CPU를 이용해서 CISC용 OS를 설치할 수 있을까? 당연히 안되지만 회사란 안되는 것에 대해서 이유를 알아야 하기에 RISC와 CISC에 대해서 알아보려고 한다.
RISC와 CISC에 대해서 살펴보자.
CISC(Complex Instruction Set Computer)
인텔의 8086은 16비트 프로세서로, 명령어의 길이가 1바이트에서 8바이트까지 가변적으로 구성되어 있다. 명령어가 가변적이고 복잡하므로 CISC 방식이라고 하는 것이다. 이 구조는 가능한 한 명령어의 길이를 줄여서 명령어의 디코딩(decoding, 해석) 속도를 높이고 최소의 메모리 구조를 갖도록 하기 위해서 정해진 것으로, 하나의 프로세서가 일련의 명령어를 순차적으로 처리하기에는 무척 유용한 방법이며, CPU의 동작 속도가 높아짐에 따라 성능이 비례로 증가한다.
CISC 방식은 32비트 프로세서인 80386까지도 아무런 문제없이 적용된 기술이므로 완벽한 하위 호환성을 유지할 수 있었다. 그러나, 80486이 등장하면서 단순히 CPU의 클럭(clock, 동작 속도)을 높이는 방식으로 성능 향상을 기대할 수 없으므로 CISC 방식의 문제점이 드러나기 시작했다. 클럭에는 한계가 있기 때문이다. 그래서, 한번에 여러 개의 명령어를 동시에 수행할 수 있는 기술이 필요하게 되었다. 즉, 동일한 클럭에서 두 개의 명령어를 한번에 처리하게 되면 두 배의 성능 향상을 기대할 수 있기 때문이다.
그러나, 슈퍼 스칼라(super scalar) 구조에서는 명령어의 길이가 가변적이기 때문에 순차적으로 해석해야 하고 조건/비조건 분기가 중간에 자주 등장하므로 여러개의 명령어를 처리하기에는 적합하지 못했다. 결국, 펜티엄부터 RISC86이라는 기법이 사용되었다. 이 방식은 AMD의 인텔 호환 CPU에서 사용된 기술로, 명령어의 해석 부분을 기존의 슈퍼 스칼라 방식으로 유지하면서 독립된 장치로 설계하여 연속적이고 고속으로 명령어를 RISC 방식으로 변환시키는 것이다. 그리고, 실제로 연산을 처리하는 장치는 RISC 방식으로 처리하여 여러 개의 명령어를 처리할 수 있도록 하는 방식이다. 그래서, 인텔 펜티엄 프로세서는 최대한 두 개의 명령어를 동시에 처리할 수 있는 것이다.
RISC(Reduced Instruction Set Computer)
1970년대에 등장한 RISC 방식은 최신 프로세서의 핵심 기술로, CPU에서 수행하는 모든 동작의 대부분이 몇 개의 명령어만7으로 가능하다는 사실을 전제로 하고 있다.
인텔과 경쟁하며 제품을 개발하던 모토롤라(Motorola)의 프로세서를 사용한 애플(Apple)의 매킨토시 컴퓨터에는 68 계열의 프로세서가 장착되어 있는데, 이 프로세서가 CISC(Complex Instruction Set Computer) 방식을 채택하고 있다. 모토롤러의 RISC계열로는 88계열이, 인텔에서는 x60계열이 있었다. 말 그대로 간단한 명령어만으로 구성되는 CPU이다.
그래서, 인텔 CPU 기반으로 개발된 프로그램은 매킨토시에서 사용할수 없었는데, 이것은 CPU 아키텍처가 다르기 때문이다. RISC CPU는 고정된 길이의 명령어를 사용하고 명령어의 종류가 미리 정해져 있으므로 해석 속도가 빠르고 여러 개의 명령어를 처리하기에 적합하다는 장점이 있다. 특히, 분기 위치가 정해져 있고 비순차 처리도 가능하다. 그러나, 처리 비트 단위가 변하거나 CPU의 구조가 조금만 바뀌어도 하위 프로세서와의 호환성이 떨어지므로 문제가 발생한다. 이것은 하위 컴퓨터의 표준이 될만한 호환 명령어라는 개념이 없고 프로세서의 단계에 따라 최적의 명령어가 정해져 있기 때문이다.
이처럼 RISC 방식의 대표적인 CPU인 모토롤라 68 계열은 소프트웨어의 호환성 결여 때문에 인텔에 비해서 뛰어난 성능을 가지고 있음에도 불구하고 많은 사용자를 확보하지 못하고 있다. 단지 고성능의 대용량 데이터 처리가 필요하고 소프트웨어 활용이 비교적 고정되어 있는 워크스테이션을 중심으로 해서 많이 사용되고 있다. RISC는 명령어가 전부 1워드(word) 길이로 짧고 파이프라인(pipeline)과 슈퍼 스칼라(super scalar)를 통해서 멀티 태스킹이 가능하므로 CISC에 비해서 많은 레지스터를 가지고 있다는 특징을 가진다.
위 내용을 보면 필자가 갖은 의문점에서 점점 멀어지는 기분만 느껴질 것이다. 필자가 궁금한것은 바로 이것이다. SUN의 Sparc 장비에 MS의 Windows가 설치될까?
우선 Sparc에는 Solaris를, Intel에는 Windows를 이란 기본 생각은 누구나 할 것이다. 하지만 누군가가 왜 안돼냐고 물어보면 턱 하고 막힌다. 그 누군가가 바로 당신의 상사라면 이유를 알아둬야 하지 않을까?
Sparc를 사용해서 윈도우를 OS로 사용하려면 가장 많이 사용되고 있는 윈도우2003을 기준으로 OS에서 원하는 제품사양(하드웨어 사양)을 확인해 보자.
프로세서를 보면 x86기반이라는 말이 보일것이다. x86??? 위에 RISC와 CISC를 자세히 읽었던 분이라면 이런 내용이 있었을 거이다. "CISC 방식은 32비트 프로세서인 80386까지도 아무런 문제없이 적용된 기술이므로 완벽한 하위 호환성을 유지할 수 있었다." 즉, x86기반이란 CISC방식을 말하며 Complex Instruction Set Computer라는 말이다. OS에서 이런 조건을 필요로 하는데 Sparc는 CISC일까?
Sparc를 검색해 보면 다음과 같이 백과사전에 정의되어 있다.
선 마이크로시스템즈에서 개발한 32비트 마이크로프로세서이다. 단일 명령 사이클, 파이프라인 제어 등의 기능을 갖는다. RISC(reduced instruction set computer)의 특성을 기반으로 하는 단일 명령 사이클, 파이프라인 제어 등의 기능을 갖는 컴퓨터 프로세서를 일컫는다. 93종의 명령을 가지며 4단의 파이프라인 제어를 한다. 메모리와 레지스터 간의 데이터 전송은 로드 명령과 스토어 명령으로만 가능하다. 대부분의 명령어와 오퍼랜드의 표기방법은 RISC와 동일하다.주요 특성은 "register+register" 혹은 "register+immediate" 형식의 간단한 어드레싱 모드, 32개의 레지스터를 중심으로 하는 윈도우 레지스터 개념과 32, 64, 128비트의 크기를 갖는 부동 소수점 레지스터, 지연 제어 전송기능, 명령어수를 감소시키는 태그 명령어, 빠른 연산 수행을 위한 코프로세서(coprocessor), 2개∼32개의 윈도우 레지스터로 구현된 RISC integer unit(IU)의 내장 등이다.
결론은 이렇다.
RISC인 Sparc이란 CPU를 사용하는 장비에는 CISC용 OS인 MS Windows를 설치할 수 없다.