명령어 집합

CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합instruction set또는 명령어 집합 구조ISA: Instruction Set Architecture라고 하며, CPU마다 ISA가 다를 수 있다는 것을 의미한다.

가령 인텔 노트북 속 CPU는 x86 혹은 x86-64 ISA를 이해하고 애플의 아이폰 CPU는 ARM ISA를 이해한다. 즉 서로 다른 ISA이기 때문에 서로의 명령어를 이해할 수 없다.

ISA는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다.

CISC

CISC는 Complex Instruction Set Computer의 약자로 이름 그대로 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식이다. x86, x86-64가 대표적인CISC 기반의 ISA다.

CISC는 다양하고 강력한 기능의 명령어 집합을 활용하기 때문에 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용한다. 메모리에 접근하는 주소 지정 방식도 다양해서 아주 특별한 상황에서만 사용되는 독특한 주소 지정 방식들도 있다.

장점

  • 다양하고 강력한 명령어를 활용 -> 상대적으로 적은 수의 명령어로도 프로그램을 실행 가능
  • 프로그램을 실행하는 명령어 수가 적다 -> '컴파일 프로그램의 크기가 작다'.

=> 메모리 공간을 절약할 수 있다.

단점

  • 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않다.
  • 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기를 필요로 한다.

정리

CISC 명령어 집합은 복잡하고 다양한 기능을 제공해 적은 수의 명령으로 프로그램을 동작시키고 메모리를 절약할 수 있지만, 명령어의 규격화가 어려워 파이프라이닝이 어렵다. 그리고 대다수의 복잡한 명령어는 사용 빈도가 낮다.

RISC

RISC는 Reduced Instruction Set Computer의 약자로 CISC에 비해 명령어의 종류가 적다. 그리고 짧고 규격화된 고정 길이 명령어를 활용한다.

명령어가 규격화되어 있고, 하나의 명령어가 1클럭 내외로 실행되기 때문에 파이프라이닝에 최적화되어 있다.

RISC는 메모리에 직접 접근하는 명령어를 load, store 두 개로 제한할 만큼 메모리 접근을 단순화하고 최소화를 추구한다(load-store 구조). CISC보다 주소 지정 방식의 종류가 적은 경우가 많다.

메모리 접근을 단순화, 최소화하는 대신 레지스터를 적극적으로 활용한다. 그래서 CISC보다 레지스터를 이용하는 연산이 많고 일반적인 경우보다 범용 레지스터 개수도 더 많다.

CISC vs RISC

0개의 댓글