05장 -3 : CISC와 RISC
목표 : CPU의 언어인 ISA에 대한 이해와, 현대 CPU의 주요 설계 방식인 CISC와 RISC의 정의와 차이점 학습
전 시간에 '파이프라이닝'으로 CPU가 일을 효율적으로 처리할 수 있다고 했다. 그렇다면 어떤 명령어들이
'파이프라이닝 하기 쉬운 명령어'일까 ? 이를 위해 ISA에 대해 알아보고, 각기 다른 ISA를 기반으로 설계된
CISC와 RISC에 대해 학습할 예정이다.
명령어 집합
모든 CPU가 이해하고 실행하는 명령어들은 같지 않다.
명령어의 세세한 생김새, 명령어로 할 수 있는 연산, 주소 지정 방식은 CPU마다 다르다.
CPU가 이해할 수 있는 명령어의 모음을 명령어 집합(ISA, Instruction Set Architecture)라고 한다.
또한 소프트웨어가 CPU를 어떻게 제어할 수 있는지 정의한 인터페이스 역할도 한다.
즉, CPU마다 ISA가 다를 수 있다.
ISA가 같은 CPU끼리는 서로의 명령을 이해할 수있지만, 다르면 서로의 명령어를 이해하지 못한다.
ISA까 다르면 그에 따른 효과로 많은 것이 달라지고 CPU 하드웨어 설계에도 영향을 미친다.
- 제어장치가 명령어를 해석하는 방식
- 사용되는 레지스터의 종류와 개수
- 메모리 관리 방법
CISC
CISC ( Complex Instruction Set Computer )
- 명령어의 형태와 크기가 다양한 가변 길이 명령어 활용
- 주소 지정 방식도 다양해서 특별한 상황에서 사용하는 독특한 방식도 존재
- 상대적으로 적은 수의 명령어로도 프로그램 실행 가능
- 메모리 절약 가능
- 복잡한 명령어 때문에 명령어 하나 실행 시 여러 클럭 주기를 필요로 함
이러한 특징 때문에, 메모리를 아껴 가며 작업해야 했던 시절에는 인기가 많았지만
규격화 되지 않은 명령어로 인해 파이프라이닝이 힘들어졌다. 예를 들어, 어떤 명령어는 1클럭, 어떤 건 3클럭이 걸리면 명령어를 일정한 타이밍으로 처리하기가 어렵기 때문이다.
이러한 문제를 해결하기 위해 나온 것이 다음의 RISC이다.
RISC
RISC( Reduced Instruction Set Computer )
- CISC보다 적은 명령어 종류
- 짧고 규격화된 명령어
- 1클럭 내외로 실행되는 명령어를 지향
- 고정 길이 명령어
위와 같은 방식으로 만들어 졌기 때문에 명령어 파이프라이닝에 최적화 되어 있다.
또한 메모리에 직접 접근하는 명령어를 load , store 두 개로 제한할 만큼 접근을 단순화/최소화를 추구한다.
그래서 CISC보다 주소 지정 방식의 종류가 적은 경우가 많다.
대신, 레지스터를 적극적으로 활용해 레지스터를 이용하는 연산이 많고, 범용 레지스터의 개수도 많다.
다만 명령어 개수가 CISC보다 적기 때문에 CISC보다 많은 명령어로 프로그램을 작동시킨다. 단순한 명령어들을 더 많이 조합해서 원하는 작업을 수행해야 하기 때문이다.