CISC와 RISC의 차이점?

컴퓨터/Embedded 2006.09.18 01:21 Posted by StudioEgo
CISC와 RISC의 차이점?

어셈블리 언어를 배우다 보니 교수님께서 CISC와 RISC에 대해 말씀 하셨습니다.
우리 학과에서 배우는 어셈블리언어는 SUN사에서 나온 SPARC Machine에서 나온 Assembly를 배운다고 하네요.
다른 대학교의 컴퓨터공학과나 전자전기공학부나 전자공학과쪽에서 에서 배우는 어셈블리언어랑 약간 차이가 있다고 합니다.
교수님께서 CISC와 RISC에 대해 말씀 했는데 갑자기 생각이 안 나서 구글링과 지식인을 찾아보니 괜찮은 내용이 있어서 올려봅니다.

RISC마이크로프로세서
  • CPU의 명령어를 최소화하여 단순하게 제작된 프로세서를 말함.
  • 속도가 빠르고, 가격이 싸며, 다양한 기술의 이용이 가능함
  • 네트워크 서버용, 워크스테이션에 주로 이용된다.

CISC마이크로프로세서
  • 복잡하고 기능이 많은 명령어로 구성된 프로세서를 말함
  • 속도가 느리고 가격이 비쌈
  • PC에서 사용되는 386, 486, 펜티엄에 사용됨.


아래 글은 인터넷에서 찾은 내용임
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 방식으로 처리하여 여러 개의 명령어를 처리할 수 있도록 하는 방식이다. 그래서, 인텔 펜티엄 프로세서는 최대한 두 개의 명령어를 동시에 처리할 수 있는 것이다.


CISC 방식의 마이크로 프로세서
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에 비해서 많은 레지스터를 가지고 있다는 특징을 가진다.


RISC 방식의 마이크로 프로세서


이럴땐 스크랩도 도움이 되구나 생각됩니다 -_-;;

'컴퓨터 > Embedded' 카테고리의 다른 글

qemu: Error registering flash memory. 해결방법  (0) 2011.03.27
AVR 책을 삼  (6) 2006.12.27
부품이 왜이리 비싸?  (5) 2006.12.22
윤교수의 마이크로프로세서 월드  (0) 2006.09.18
CISC와 RISC의 차이점?  (2) 2006.09.18

Web Developer. My native language is Korean(한국어) My hobby is Learning Language(English,中國語[繁體中文/简体中文],日本語) Interested Mobile & Web #Unicode #CJK #文字 #漢字 #이상한모임
저는 초등학교 3학년때 역삼동 아부지 회사에서 접해보았던 Netscape Browser를 보고 인터넷에 빠져들었습니다. Web에 대해 관심이 많으며 음악을 좋아합니다.
블로그 : http://blog.studioego.info
Twitter: @studioego
이 글은 StudioEgo 가 작성하였습니다.

댓글을 달아 주세요

  1. Favicon of http://mytears.org BlogIcon 정태영 2006.09.18 09:29 신고  댓글주소  수정/삭제  댓글쓰기

    흠 말들이 어렵네요. 간단하게 생각하세요. CISC 는 자주 사용되는 기능은 아예 명령어로 만들어 넣는 방식이고, RISC 는 핵심적인 기능만 제공하고 나머지는 프로그래머가 처리하도록 하는 방식입니다.

    명령어가 많아지면 그만큼 디코더가 커지게 되고, 더 많은 게이트(트랜지스터) 가 필요하게 됩니다. 또한 디코더가 커지는 만큼 컨트롤 유닛도 커지게 되고 파이프라인도 복잡하게 되고, 그 명령어를 처리하는 유닛도 있어야 하니 이런게 다 디자인을 복잡하게 만드는 요인이면서 코스트를 올리는 요인이 됩니다.

    하여튼 근래엔 x86 시리즈도 내부적으로 cisc 명령어를 risc 처럼 변환해서 처리하도록 설계가 되어있다고 하더군요 ;)

  2. Favicon of http://sujikiss.egloos.com BlogIcon sujikiss 2006.09.18 10:18 신고  댓글주소  수정/삭제  댓글쓰기

    ↑ 혹씨.. 아쿠아씨?-ㅁ-;

    cisc 아압 보기만 해도 어질~



 

티스토리 툴바