CPU의 언어인 ISA란 무엇인지 이해하고, 현대 CPU의 주요 설계 방식인 CISC와 RISC의 정의와 차이점에 대해 학습한다.

명령어 파이프라이닝과 슈퍼스칼라 기법을 실제로 CPU에 적용하려면 명령어가 파이프라이닝에 최적화되어 있어야 한다. 쉽게 말해 CPU가 파이프라이닝과 슈퍼스칼라 기법을 효과적으로 사용하려면 CPU가 인출하고 해석하고 실행하는 명령어가 파이프라이닝 하기 쉽게 생겨야 한다.

파이프라이닝 하기 쉬운 명령어란 무엇일까?

명령어가 어떻게 생겨야 파이프라이닝에 유리할까?

→ 이와 관련해 CPU의 언어인 ISA와 각기 다른 성격의 ISA를 기반으로 설계된 CISC와 RISC를 학습해 본다.


명령어 집합

CPU는 명령어를 실행한다. 그런데 한가지 의문점!

이 세상 모든 CPU들이 똑같이 생긴 명령어를 실행할까?

세상에는 수많은 CPU 제조사들이 있고, CPU마다 규격과 기능, 만듦새가 다 다른데, 모든 CPU가 이해하고 실행하는 명령어들이 다 똑같이 생겼을까?

→ 그렇지 않다.

물론 명령어의 기본적인 구조와 작동 원리는 03에서 학습한 내용에서 크게 벗어나지 않지만, 명령어의 세세한 생김새, 명령어로 할 수 있는 연산, 주소 지정 방식 등은 CPU마다 조금씩 차이가 있다. CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합(instruction set)또는 명령어 집합 구조(Instruction Set Architecture)(이하 ISA)라고 한다. 즉, CPU마다 ISA가 다를 수 있다는 것이다.

NOTE

명령어 집합에 구조라는 단어가 붙은 이유는 CPU가 어떤 명령어를 이해하는지에 따라 컴퓨터 구조 및 설계 방식이 달라지기 때문이다.

예제) 가령 인텔의 노트북 속 CPU는 x86 혹은 x86-64 ISA를 이해하고, 애플의 아이폰 속 CPU는 ARM ISA 를 이해한다. x86(x86-64)과 ARM은 다른 ISA이기 때문에 인텔 CPU를 사용하는 컴퓨터와 아이폰은 서로의 명령어를 이해할 수 없다. 실행 파일은 명령어로 이루어져 있고 서로의 컴퓨터가 이해할 수 있는 명령어가 다르기 때문이다.