명령어 집합구조, CISC & RISC
명령어 집합
- CPU가 이해할 수 있는 명령어들의 모음을 말한다.
- 예를들어 인텔의 CPU는 일반적으로 x86(x86-64) 명령어 집합을, 애플의 CPU는 일반적으로 ARM 명령어 집합을 따른다.
- 명령어 집합은 CPU가 이해할 수 있는 명령어들의 모음을 말하므로, 결국 인텔의 CPU에서 만든 실행파일을 맥으로 옮겨서 실행을 하려고 하면 실행이 안된다.
-> ISA(명령어 집합)은 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속.
CISC & RISC
1. CISC(Complex Instruction Set Computer)
- 복잡한 명령어 집합을 활용하는 컴퓨터
- x86 / x86-64
1) 장점
- 복잡하고 다양한 명령어 활용이 가능하다.
- 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용(기능, 주소 방식, 길이 등이 다양하다.)
- 다양하고 강력한 명령어를 활용
- 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다.
2) 단점
- 대다수의 복잡한 명령어의 경우 사용 빈도가 낮다.
- 명령어가 워낙 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않다.
- 시간이 일정하지 않다보니 명령어 하나를 실행하는데에 여러 클럭 주기가 필요하다.
- 따라서 명령어 파이프라이닝에 불리하다.
2. RISC(Reduced Instruction Set Computer)
- 명령엉의 종류가 적으며 짧고 규격화된 명령어 집합을 활용하는 컴퓨터
- ARM (Acorn RISC Machine) (이름부터 RISC가 들어가있다.)
1) 장점
- 짧고 규격화된 명령어를 활용하기 때문에 명령어 파이프라이닝에 유리하다.
- 메모리 접근 최소화, 레지스터를 십분 활용한다.
- RISC는 CISC에 비해서 범용 레지스터의 수가 많은 경우가 많다.
2) 단점
- CISC보다 명령어 종류가 적기 때문에 더 많은 명령어가 필요하다.
** 위는 이론적인 이야기이며, 현대의 CPU에서 파이프라이닝은 엄청 중요하기 때문에 CISC도 해결방법을 찾았다.
-> CPU 내부적으로 좀 더 작은 단위로 쪼개서 실행한다.(마이크로 명령어, 명령어를 실행하는 그 동작 자체도 1클럭처럼 쪼갠다.) 내부적으로 RISC처럼 사용을 한다.