명령어 파이프라이닝, 슈퍼스칼라 기법을 실제로 CPU에 적용하려면 명령어가 파이프라이닝에
최적화되어야 있어야 합니다.
명령어 집합, 명령어 집합 구조(ISA)
CPU가 이해 가능한 명령어들의 모음입니다.
명령어 집합에 구조가 붙은 이유로 CPU가 특정 명령어를 이해하는지에 따라 컴퓨터 구조 및 설계 방식이
변경되어 사용됩니다.
ISA가 동일한 CPU인 경우 서로의 명령어를 이해 가능하지만 다른 경우 서로의 명령어를 이해 못 합니다.
이러한 점으로 ISA는 일종의 CPU의 언어 인 셈입니다.
ISA는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속입니다.
ISA 예
- x86, x86-64
많은 전력이 필요하며 발열도 상대적으로 높음으로 데스크톱, 렙탑에 사용
- ARM
CPU는 저전력, 고효율을 목표로 시장에 뛰어들어 발열 문제에 민감한 스마트폰, 임베디드 장비에 사용
- MIPS
현재 MIPS보다 ARM의 소요가 있고 MIPS는 임베디드 시스템 사용
- AVR
ARM, MIPS와 동일하게 임베디드 장비에 사용되며 아두이노가 AVR을 사용
CISC
그대로 해석하는 경우 '복잡한 명령어 집합을 활용하는 컴퓨터'를 의미합니다.
이름 그대로 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식입니다.
다양하고 강력한 기능의 명령어 집합을 활용하기에 명령어의 형태와 크기가
다양한 '가변 길이 명령어'를 활용합니다.
다양하고 강력한 명령어를 활용한다는 의미는 상대적으로 적은 수의 명령어로도 프로그램일
실행 가능하다는 의미 입니다.
실행 명령어가 적다는 말은 '컴파일된 프로그램의 크기가 작다'는 것을 의미로
메모리 공간을 절약할 수 있습니다.
동일한 소스를 컴파일해도 CPU마다 생성되는 실행 파일의 크기가 다릅니다.
이러한 장점으로 메모리를 최대한 아끼며 개발하던 시절 인기가 높았습니다.
단점으로 활용하는 명령어가 복잡하고 다양한 기능을 제공하여 명령어의 크기, 실행되기 까지의
시간이 일정하지 않습니다.
복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기가 필요하고 이러한 점이
파이프라인을 구현하는데 걸림돌로 작용됩니다.
명령어 파이프 라인 기법의 이상적인 명령어로 각 단계에 소용되는 시간일 동일해야 합니다.
소요 시간이 동일해야 공장의 생상 라임처럼 결과가 나타납니다.
CISC 가 활용하는 명령어는 수행 시간이 길고 다양하여 파이프라인이 효율적으로 처리가 불가합니다.
정리하면 CISC 명령어 집합은 복잡하고 다양한 기능을 제공하고 적은 수의 명령으로 프로그램을
동작시킵니다.
적은 수의 명령을 사용하여 메모리를 절약할 수 있지만 명령어의 규격화가 어려워 파이프라이닝이
어렵습니다.
이러한 단점으로 CISC 기반의 CPU는 성장에 한계가 있습니다.
RISC
CISC에 비해 명령어의 종류가 한정됩니다.
CISC와 달리 짧고 규격화된 명령어, 되도록 1 클럭 내외로 실행되는 명령어를 지향합니다.
즉 RISC는 고정 길이 명령어를 활용합니다.
명령어가 규격화되어 있고 하나의 명령어가 1 클럭 내외로 실행되어 RISC 명령어 집합은
명령어 파이프라이닝에 최적화되어 있습니다.
메모리에 직접 접근하는 명령어를 load, store 두 개로 제한할 만큼 메모리 접근을
단순, 최소화를 추구합니다.
사용 가능한 명령어 개수가 CISC보다 적어 RISC는 많은 명령으로 프로그램을 작동시킵니다.