[컴퓨터구조론] CISC , RISC 장단점 비교

gyxor의 이미지

CISC(Complex Instruction Set Computer)
모든 고급언어 문장들에 대해 각각 기계 명령어가 대응되도록 하는것
RISC(Reduced Instruction Set Computer)
CISC의 많은 명령어중 주로 쓰이는것만을 추려서 하드웨어로 구현하는 것

이것이 핵심 개념인데요..
구체적으로 장단점을 따져보겠습니다.
CISC의 단점이자 RISC의 장점은
CISC의 경우 하드웨어의 회로가 복잡해져서
RISC에 비해 가격이 비싸지고 발열이 많고 전력소모가 많게 됩니다.
CISC는 고급언어의 컴파일러의 번역과정을 간단하게 해줍니다.
여기까지는 명확한데요..
속도를 가지고 얘기를 하려면 복잡해 집니다.

X=(A+B)*(C+D)
이러한 기능을 수행하는 코드를 각 머신으로 작성한다고 했을때

(CISC)
ADD R1,A,B   R1<- M[A]+M[B]
ADD R2,C,D   R2<- M[C]+M[D]
MUL X,R1,R2  M[X]<- R1 * R2

(RISC)
LOAD R1,A    R1<-M[A]
LOAD R2,B    R2<-M[B]
LOAD R3,C    R3<-M[C]
LOAD R4,D    R4<-M[D]
ADD R1,R1,R2 R1<-R1+R2
ADD R3,R3,R4 R3<-R3+R4
MUL R1,R1,R3 R1<-R1*R3
STORE X,R1   M[X]<-R1

즉, CISC 각각의 명령어는 머신코드는 길지만 전체 프로그램 사이즈는 RISC보다 작습니다.
따라서 코드를 수행할 때 RISC가 메모리를 더 많이 참조해야 하므로....
[CISC가 RISC보다 빠른 요인이 됩니다.]

CISC는 복잡한 하드웨어를 가지게 되므로 보통 hard wired방식 보다는 microprogram 방식을 사용하게 됩니다.
RISC는 hard wired 방식을 사용할 수 있습니다.
[RISC가 CISC보다 빠른 요인이 됩니다.]

CISC는 레지스터의 양이 많을 필요가 없고 RISC는 레지스터의 양이 많아야 하므로....
(예>함수에 파라미터를 메모리에 저장하는 경우와 레지스터에 저장하는 경우의 차이)
CISC가 메모리의 access가 많아지게 됩니다.
[RISC가 CISC보다 빠른 요인이 됩니다.]

RISC머신이 파이프라인구현이 용이하다라고 합니다..
(이 부분은 명령어 길이가 동일하기 때문에.. 그런것인가요?
정확한 이유를 모르겠습니다. 설명부탁드립니다.)
[RISC가 CISC보다 빠른 요인이 됩니다.]

각 요소요소를 분석해봤을때 전체적으로 RISC머신의 속도가 빠르다고 봐야 하나요?

자료를 찾아보면.. 장단점을 부분부분 정리를 해놨는데요..
속도 측면에서보면.. CISC도 빠르다고 하고
RISC도 빠르다고 합니다.
상대적으로 따져서 어느 기반 CPU가 더 빠르다고 해야 하나요?
설명부탁드립니다.

vananamilk의 이미지

http://cse.stanford.edu/class/sophomore-college/projects-00/risc/whatis/index.html

작년에 관심이 많아서 좀 봤는데요. 아마 답을 얻을 수 있을겁니다^

vacancy의 이미지

요즘은 다 RISC라고 보시면 됩니다.
CISC인 CPU들(x86계열이라던가)도 전부
내부적으로는 RISC 명령으로 전환 후
파이프라인에 넣습니다.
RISC가 아무래도 클럭 올리기가 쉬우니까요. :roll:

익명 사용자의 이미지

리스크의 경우, 한 명령당 실행 클럭이 짧고 거의 모든 명령의 길이가 동일한 점이 중요하게 작용하지 않을까요?

익명 사용자의 이미지

* 1 명령 당 1클럭의 구현....
실시간 시스템을 만들때, 각 머신 명령의 사이클까지 계산해야하는 경우가 있는데, 특정 프로시져의 실행시간이 예측가능하다면 좋을 것입니다.
리스크가 유리하겠지요.

gyxor의 이미지

......

sdream의 이미지

RISC가 태어나는 발단은...

일반적으로 사용되는 프로그램 코드의 95%가 CISC Instruction Set의 2%만을 사용한다는데서 출발한것입니다. (이걸 논문으로 발표한 애들이 결국 ARM으로 상용화 하죠)

대개의 Compiler 제작사들이 CISC의 Instruction Set들을 잘 사용하지 않은 결과였죠. 결국 그들의 게으름(?)은 RISC를 만들었고, RISC는 Compiler 만들기의 어려움을 증가 시켜서 Compiler만드는 애들에게 벌(?)을 내리죠. ㅋㅋㅋ

처음 RISC가 만들어질 때의 결론은... ASM으로 작성한다면야, 둘 차이를 잘 못 느낄 수도 있겠지만, High Level 언어를 사용한다면 RISC가 훨씬 효율적이라는 것이었죠.

단순한 RISC 아키덱쳐에 기인한... 추후의 나머지의 어마어마한 장점들은 위에서 다른분들이 설명해 주셨네요.^^;

정태영의 이미지

Anonymous wrote:
* 1 명령 당 1클럭의 구현....
실시간 시스템을 만들때, 각 머신 명령의 사이클까지 계산해야하는 경우가 있는데, 특정 프로시져의 실행시간이 예측가능하다면 좋을 것입니다.
리스크가 유리하겠지요.

어짜피 파이프라이닝에 분기예측 들어가시면 정확한 예측은 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.