본문 바로가기
Computer Architecture/Basic

CISC 와 RISC

by FastBench 2023. 4. 8.

초안 :  2023.04.06

 

CPU 가 이해할 수 있는 명령어들의 모음을 ISA (Instruction Set Architecture) 라고 한다.

그러니까 우리가 윈도우 데스크탑으로 주로 쓰는 x86-64 의 ISA 와 맥북의 ARM 아키텍처의 ISA 는 서로 다르다.

ISA 가 다르므로, 똑같은 C코드를 컴파일해도 어셈블리 코드는 달라진다.

 

ISA 가 다르다는 것은 CPU 에 사용되는 레지스터 종류와 갯수, 메모리 관리 방법등도 다르므로, 하드웨어 설계 자체가 다르다는 것을 의미한다.

그러므로 각각의 CPU는 서로 다른 ISA 를 이해할 수 없다. (디코딩 할 수 없다.)

 

이전 게시글에서 파이프라인, 슈퍼스칼라, OoOE 등을 살펴보았는데 이들을 적용하기 좋은 ISA 도 있고 적용하기 힘든 ISA 도 있다. 아래에서 자세히 알아보자.

 


 

CISC 구조 - Complex Instruction Set Computer

Micro Programmed Control 방식

ROM 에다 input을 넣으면 control signal 을 뱉어주는 Micro-Programmed control 방식으로 CPU 의 Control Unit 이 구현되면서 CU 설계의 복잡도가 줄어들었고, 설계자들은 더 많은 명령어와 다양한 Addressing mode 를 프로세서에 넣을 수 있었다. 

이는 상대적으로  적은수의 명령어로 프로그램을 실행할 수 있음을 의미한다.
예를 들어 특수 연산을 하는 강력한 명령어가 존재한다면, 짜잘한 명령어들의 조합으로 해당 기능을 구현할 필요가 없다.

단, micro programmed control 방식의 CU 는 조합회로 등으로 이루어진 hardwired control 방식에서 사용되는 게이트 등의 속도보다 느렸다.

 

 

파이프라이닝 적용의 어려움

CISC 는 명령어가 복잡하고 다양한 기능을 제공하기 때문에, 명령어의 길이와 실행되기까지의 시간이 일정하지 않다.
즉 명령어 하나를 실행하는데 필요한 클럭이 제각각이다.
CISC 는 명령어의 형태와 크기가 제각각이다. 즉, 복잡하고 다양한 수의 가변 길이 명령어를 활용한다.
(예를들어 명령어의 길이가 다르면 fetch 를 하는데도 시간이 일정하지 않을 수 있다.)
또한 다양한 Addressing mode 를 지원하는 것은 장점일 수 있지만, operand 가 레지스터와 메모리로 다양화 되면서 operand 접근에 시간 차이가 생겼다.

이러한 이유로 CISC 구조에 파이프라이닝의 적용이 힘들다.

Intel, AMD 에서 만드는 x86 ISA 는 CISC 형식을 따르지만, 내부적으로는 다 명령어 파이프라이닝등 후술할 RISC 에서 사용되는 고성능 컴퓨팅 기술을 모두 사용한다.

 


RISC 구조 - Reduced Instruction Set Computer

CISC 구조의 단점을 피하면서 CPU 속도를 올리려면 아래의 규칙을 따라야 한다.

1. 파이프라이닝을 잘 활용하기 위해, 명령어의 길이와 실행 시간이 '규격화'되어 있어야 한다.
2. 자주 쓰이는 명령어가 정해져있으므로, 복잡한 기능을 수행하는 명령어를 추가하기 보다, 자주 쓰이는 명령어를 빠르게 만드는 것이 중요하다.

 

이러한 규칙을 기반으로 만들어진 구조가 RISC : Reduced Instruction Set Computer 이다.

 

Hardwired control 방식

micro programmed control 방식과 다르게 조합회로등의 게이트로 CU 를 구성한다.
이때문에 많은 양의 명령어를 사용할 수 없고, 명령어들의 길이는 규격화되어 있다.(설계상의 복잡도 때문)
이를 고정길이명령어 라고 한다. 
또한 Addressing mode 도 제한되어 메모리에 직접 접근하는 명령어를 load, store 두 개로 제한할 만큼, 접근을 단순화하고 최소화한다. 대신 레지스터를 적극적으로 활용하는 경우가 많고 범용 레지스터 갯수도 많다.

 

수월한 Pipelining 

RISC 기반 ISA는 명령어의 종류가 적고, 짧고 규격화 되어있으며 (고정길이명령어) 되도록 1클럭 내에 실행되므로 파이프라이닝에 최적화 되어 있다.

 

Reference

  • 혼자 공부하는 컴퓨터 구조 + 운영체제, 한빛미디어, 강민철
  • 컴퓨터 구조의 핵심, 퍼플, 양희재

댓글