본문 바로가기

학부_대학원/운영체제

CISC vs RISC

SMALL

학부 일학년때 부터 꾸준히 듣던 말이다.


근데 이제 와서 정리 해본다.


CISC는 Complex Instruction Set Computer의 약자이다.


딱봐도 복잡한것과 관련있다.


RISC는 Reduced Instruction Set Computer의 약자이다.


딱봐도 간단한것과 관련있다.


CISC는 고급  문장들에 대해 각각 기계 명령어가 대응 대도록 하는것이다.


하나의 명령어로 최대한 많은 작업을 하는 것


전력면에서나 클럭면에서 효과적 --> 임베디드에서 효과적




RISC는 중요 문장들만 가지고 고급 문장들을 행위를 하게 하는 것이다.


명령어 하나당 하나의 연산만을 수행하도록 하는 것이다. --> 이는 클럭 주기가 짧아


지는것을 의미


하지만 CISC 명령어 중에서 실제로 사용 되는 비율은 10% 정도여서 비효율 적이였다.


분기 명령어를 수행 할 때, 즉 클럭이 긴 명령을 수행 할 때가 있다.


메모리에 접근해서 데이터를 가져오는등 이러한 이유로 지연이 발생한다.


RISC 프로세서는 분기 명령어 다음에 있는 명령어를 실행 시켜서 다른 일을 진행하고 있다.


위를 설명하면 더하기 1을 할 때 메모리에서 1이라는 숫자를 가져와야 해서 지연이 발생 한다고 한다.


그러면 CISC는 이러한 명령어가 ADD RAX, 1이라고 하면 이명령어를 수행하기 위해서는 1이라는 숫자를 가져오는데 계속 대기해야한다.


하지만 RISC의 경우에는 ADD RAX, 1이라는 명령어를 수행 할때,

메모리에서 가져오는 명령어가 따로 LOAD라고 있고, ADD는 따로 존재한다.

그렇기 때문에 LOAD 하는 과정에서의 지연이 발생 할때, 다른 일을 처리 하고 있는 것이다. 


즉 복잡한 명령어는 끝날때까지 그걸 기다려야 하지만, 간단한 명령어는 명령이 실행 되고 지연이 발생하면 다른 명령어를 수행하게 되는것이다.


이를 PIPELINE과 같은 이론?과 함께 사용하면 더 빠르다


JOB 1과 JOB2가 있다하면


CISC와 RISC의 경우 둘다 2클럭에 마무리가 된다고 생각하자.


하지만 CISC는 JOB1이 완료되고 JOB가 완료된다 .즉 두개의 완료시간이 많이 차이가 난다. 


RISC는 번갈아 가면서 수행 되기 때문에 차이가 거의 나지 않는다.


큰 프로그램을 수행 할 때는 이러한 효율성이 부각된다.



예를 들면 `가다`라는 동사가 있다고 가정한다.


CISC에는 `집에간다`, `화장실에 간다` 등 간다에 대한 목적이 있는 명령어들을 만들어 놓는 것이다.


하지만 RISC는 위와 같은 하나의 문장이 아니라 `화장실`, `간다`와 같이 각자 요소를 이용 하는것이다.


어느것이 무조건 좋은 것은 아니지만, 자신의 용도에 맞게 사용해야 할 것이다.



[출처]http://park1020.tistory.com/396





[펌]https://kldp.org/node/56072


LIST