[9] 명령어 집합 구조, CISC와 RISC

hyunsooo·2023년 4월 12일
0

지난 시간에 배운 명령어 파이프라인은 현대 CPU에서 빼놓을 수 없는 병렬처리 기법이라고 소개했습니다. 그렇다면 명령어가 어떻게 생겨야 적절하게 명령어 파이프라이닝을 할 수 있을지 이번 시간에 알아보겠습니다.

명령어 집합

기본적으로 CPU는 명령어를 실행합니다. 하지만, CPU의 종류마다 명령어의 생김새, 연산, 주소 지정 방식 등 다를 수 있습니다.

명령어 집합(구조)는 CPU가 이해할 수 있는 명령어들의 모음을 의미하는데, 인텔 CPU는 X86(X86-64) 명령어 집합을, 애플의 CPU는 일반적으로 ARM 명령어 집합을 따르게 됩니다. 그렇기 때문에 인텔 CPU에서 만든 실행 파일을 특정한 설정 없이 애플에서 실행하면 작동하지 않게 되는 것 입니다.

명령어 집합은 결국 CPU의 언어로 받아들일 수 있습니다. 명령어가 달라지면 그에 대한 영향으로 명령어의 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성 등 다양한 것들이 달라지게 됩니다. 이처럼 명령어는 컴퓨터의 구조에도 영향을 미칠 수 있기 때문에 명령어 집합을 ISA(Instruction Set Architecture)라고 부릅니다.

ISA는 하드웨어(CPU)와 소프트웨어(명령어) 사이의 약속입니다. 이러한 명령어 집합의 두 축인 CISC와 RISC에 대해서 알아보겠습니다.

CISC(Complex Instruction Set Computer)

CISC는 약어 그대로, 복잡한 명령어 집합을 활용하는 컴퓨터(CPU)로 이해할 수 있으며 x86, x86-64가 CISC 기반 명령어 집합 구조입니다. CISC는 복잡하지만 다양한 명령어를 활용할 수 있기 때문에 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용합니다.

CISC는 복잡하고 다양한 명령어를 가지고 있기 때문에 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있습니다.

메모리를 최대한 아끼며 개발해야 했던 시절에는 인기가 높았으나, 명령어가 워낙 복잡하고 다양한 기능을 제공 하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않습니다. 또한, 복잡한 명령어 때문에 명령어 하나를 실행하는데 여러 클럭 주기를 필요로 합니다. 이런 이유로 동일한 시간 간격으로 명령어 처리가 불가능하여 파이프라이닝이 불리하다는 치명적인 단점이 존재합니다.

RISC(Reduced Instruction Set Computer)

RISC는 명령어의 종류가 적고, 짧으며 규격화(고정 길이)된 명령어만 사용합니다. 짧고 규격화된 명령어(1클럭 내외)를 활용하기 때문에 명령어 파이프라이닝에 유리합니다.

RISC는 메모리 접근 최소화(load, store)하고 있으며, 반면에 레지스터를 적극적으로 활용하고 있습니다. 따라서 RISC는 범용레지스터가 더 많은 경우가 많습니다. 다만 명령어가 CISC보다 더 적기 때문에 더 많은 명령어로 프로그램을 실행시켜야 합니다.

정리

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

0개의 댓글