바로 직전 글은 명령어 파이프라이닝에 대해 배웠다.
현대 컴퓨터에서 명령어 파이프라이닝은 굉장히 중요한 기술이다.
과연 명령어의 구조에 따라 파이프라이닝의 효율이 달라질까 ?
그렇다면 명령어가 어떻게 생겨야 명령어 파이프라이닝에 유리할까?
명령어 집합 구조 = (ISA, Instruction set architecture) : CPU가 이해할 수 있는 명령어들의 모음
이 세상의 모든 CPU가 똑같이 생긴 명령어를 실행할까 ?
그렇지 않다. CPU 마다 명령어의 구조(연산, 주소 지정 방식)이 다르다.


즉 x86-64 구조를 따르는 명령어들은 ARM CPU 는 이해하지 못하고 반대도 마찬가지다.
그리고 명령어가 다르면 명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용의성, ... 등이 많은 것들이 달라진다.
더해서 명령어 구조가 다르면 하드웨어도 달라진다.

직역하면 복잡한 명령어 집합을 활용하는 컴퓨터(CPU)
x86, x86-64는 CISC 기반 명령어 집합 구조
명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용

다양하고 강력한 명령어를 활용해서 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다.
CISC는 강력한 명령어 덕분에 적은 수의 명령어로 프로그램을 실행시킬 수 있어서 메모리를 최대한 아끼며 개발해야 했던 시절에는 인기가 높았으나 명령어 파이프라이닝이 불리하다는 치명점인 단점이 있다.
명령어가 워낙 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않아 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기가 필요
더해서 복잡한 명령어는 사용 빈도가 낮다.
명령어의 종류가 적고, 짧고 규격화된 명령어 사용

RISC는 짧고 규격화된 명령어를 활용하기에 명령어 파이프라이닝에 유리하다.

메모리 접근 최소화(load, store), 레지스터를 더 많이 활용. 따라서 CISC에 비해 Base Register (범용 레지스터)가 더 많다.
다만 명령어 종류가 CISC에 비해 적기 때문에 더 많은 명령어로 프로그램을 동작시킴

