본문 바로가기
cs

[혼공운영체제] CPU의 성능 향상 기법(3) : 명령어 집합 구조, CISC와 RISC

by 이쟝 2023. 4. 17.
인프런의 개발자를 위한 컴퓨터 공학1 : 혼자 공부하는 컴퓨터 구조 + 운영체제 강의를 듣고, 학습 및 요약

 

명령어 집합(구조) : ISA(Instruction Set Architecture)

CPU가 이해할 수 있는 명령어들의 모음. 즉, CPU는 명령어 집합에 속해있는 명령어들만 이해할 수 있음

 

  • CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속
  • 명령어가 달라지면 명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성 등이 달라짐

실행 파일 == 명령어 집합

 

 

CISC(Complex Instuction Set Computer)

복잡한 명령어 집합을 활용하는 컴퓨터(CPU)

 

  • x-86, x86-64는 CISC 기반 명령어 집합 구조
  • 복잡하고 명령어의 형태와 크기가 다양한 수의 가변 길이 명령어 집합을 활용
  • 상대적으로 적은 수의 명령어로도 프로그램을 실행 가능
  • 메모리를 최대한 아끼며 개발해야 했던 시절에는 인기가 많았지만 명령어 파이프라이닝이 불리함
  • 명령어가 워낙 복잡하고 다양한 기능을 제공 하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않음
  • 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기 필요
  • 대다수의 복잡한 명령어는 사용 빈도가 낮음

RISC(Reduced Instruction Set Computer)

명령어의 종류가 적고, 짧고 규격화된 명령어 사용

 

  • 단순하고 적은 수의 고정 길이 명령어 집합을 활용
  • RISC는 짧고 규격화된 명령어를 활용하기에 명령어 파이프라이닝에 유리
  • 메모리 접근 최소화(load, store)하고, 레지스터를 잘 활용하기 때문에 RISC는 CISC에 비해서 범용 레지스터의 종류가 더 많은 경우가 있음
  • 명령어의 종류가 CISC보다 적기 때문에 더 많은 명령어로 프로그램을 동작시킴

 

CISC RISC
복잡하고 다양한 명령어 단순하고 적은 명령어
가변 길이 명령어 고정 길이 명령어
다양한 주소 지정 방식 적은 주소 지정 방식
프로그램을 이루는 명령어의 수가 적음 프로그램을 이루는 명령어의 수가 많음
여러 클럭에 걸쳐 명령어 수행 1클럭 내외로 명령어 수행
파이프라이닝하기 어려움  파이프라이닝하기 쉬움

 

[성능 차이]

  • CISC와 RISC 중 어느 쪽의 성능이 더 우수한지 딱 잘라 말할 수는 없다. 오늘날의 몇몇 CISC MCU는 RISC의 장점을 일부 공유하고 있으며, 몇몇 RISC MCU는 CISC의 장점을 일부 공유하고 있기 때문이다. 

[파이프라인 처리]

  • RISC는 명령어의 길이가 고정되어 파이프라인 처리의 고속화를 가능하게 하지만, 컴파일러의 최적화 과정이 복잡해지기 쉽다. 컴파일러의 최적화를 통해 파이프라인 해저드는 사라지게 된다.