컴퓨터 구조를 공부하면서 CPU의 명령어 셋 설계방식인 CISC와 RISC에 대해 알게 되었다.
개발하면서 계속 마주쳤던 x86은 명령어 셋으로 CISC을 채택한 아키텍처고 ARM은 명령어 셋으로 RISC을 채택한 아키텍처라는 걸 알게 되었다.
RISC가 상대적으로 많은 장점을 가지고 있는 것으로 보이는데 왜 여전히 데스크탑 CPU는 CISC가 많은지, 장단점을 좀 더 자세히 알고 싶어서 블로그를 좀 찾아봤다.
우선 RISC(Reduced Instruction Set Architecture)는 이름처럼 명령어의 수를 줄이고 명령어의 크기 역시 word 크기로 제한한다.
명령어가 간단해지기 때문에 해석 역시 간단해지고 한 클럭 사이클 안에 실행이 가능하다.
간단한 명령어만 처리하면 되기 때문에 하드웨어 설계가 비교적 간단하다.
이렇게 크기와 실행시간이 규격화되어 있어 파이프라인 최적화가 상대적으로 쉽게 가능하다.
이외에도 간단한 주소지정모드가 있고 더 많은 범용 레지스터가 있다는 특징이 있다.
단점은 명령어가 적어지고 작아진 만큼 복잡한 명령어를 수행하기 위해서는 많은 명령어가 필요해졌다. 그리고 이러한 많아진 명령어를 저장하기 위해서 메모리 사용량이 증가했다.
전력 소모와 발열이 적어 스마트폰이나 랩탑같은 휴대용 기기에 적합하다는 장점이 있다. (왜 전력 소모가 적은지는 모르겠다..)
📖 왜 전력 소모가 적은가? RISC는 많은 레지스터를 사용하는데 최적화 되어있고 메모리에 접근을 최소화 한다. 메모리 접근은 전력을 많이 요구하기 때문에 이를 줄이면 전력소모를 줄일 수있다.
CISC(Complex Instruction Set Computer)는 이름처럼 복잡한 명령어집합을 가지고 있고 명령어의 크기가 word보다 클 수 있다.
명령어가 복잡하기 때문에 해석 역시 어려우며 명령어를 처리하는 데 한 클럭 사이클 이상이 걸릴 수 있다.
복잡한 대신 강력하고 다양한 명령어로 인해 어셈블리어를 프로그래밍 하기가 비교적 더 쉽다.
다양한 명령어 규격과 각기 다른 명령어의 단계별 수행시간 때문에 파이프라인 최적화가 어렵다.
파이프라인 최적화가 어려운 점으로 인해 RISC에 비해 실행시간이 길어진다.
장점은 오랜 기간 사용되어 오면서 다양한 기능의 명령어가 추가되어왔기 때문에 하위호환성이 좋다.
현재 순수하게 CISC의 특징만을 갖는 아키텍처의 CPU는 없다. 복잡한 명령어 셋을 사용하더라도 이를 다시 간단한 명령어로 분리하여 RISC처럼 파이프라인을 최적화하는 등의 혼합된 아키텍처로 설계된다.
역시 기술의 장점과 단점이 확실한 선택지에선 장점만을 취하기 위한 노력이 지속되는 것 같다. 어떤 기술이 장단점이 확실하다면 장점을 합치거나 단점을 보완한 기술이 나와있는지 아니면 그러한 기술에 대한 고려를 해보는 것이 좋을 것 같다.
참고:
RISC and CISC in Computer Organization - GeeksforGeeks
Difference Between RISC and CISC - javatpoint