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

명령어 집합 

CPU는 명령어를 실행한다. 근데 모든 CPU가 똑같이 생긴 명령어를 처리할까?

명령어의 세세한 생김새, 연산, 주소 지정 방식 등은 CPU마다 다르다.

 

명령어 집합 (구조) : CPU가 이해할 수 있는 명령어들의 모음 (=CPU의 언어)

인텔의 CPU

 

CPU는 명령어 집합에 속해있는 명령어만 이해하고 처리할 수 있다.

명령어 처리

 

위 그림처럼 같은 소스코드를 컴파일해도 CPU에 따라 저급언어가 다르게 생성되는 것을 볼 수 있다.

 

명령어가 달라지면 많은 것들이 달라진다. ex) 명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성...

 

ISA

 

ISA는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다.

 

 

명령어 집합의 두 축 : CISC & RISC

 

CISC(Complex Instruction Set Computer)

복잡한 명령어 집합을 활용하느 컴퓨터(CPU). x86, x86-64는 CISC 기반 명령어 집합 구조이다.

복잡하고 다양한 명령어를 활용하며 명령어의 크기가 다양한 가변 길이 명령어를 활용한다.

 

 

CISC

 

다양하고 강력한 명령어를 활용하기 때문에 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다.

 

이러한 이유로 메모리를 최대한 아끼며 개발해야 했던 시절에 인기가 높았으나 명령어 파이프라이닝이 불리하다는 치명적인 단점이 존재하여 지금은 인기가 시들해졌다. 

 

명령어가 워낙 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않고 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기가 필요하다.

 

게다가, 대다수의 복잡한 명령어는 사용 빈도가 낮다.

 

 

 

RISC(Reduced Instruction Set Computer)

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

RISC

 

짧고 규격화된 명령어를 활용하기 때문에 파이프라이닝에 유리하다. 메모리 접근 최소화(load, store), 레지스터를 많이 사용한다.

 

 

정리

 

'컴퓨터구조와 운영체제' 카테고리의 다른 글

메모리의 주소 공간  (0) 2024.07.07
RAM의 특성과 종류  (1) 2024.07.03
명령어 병렬 처리 기법(CPU)  (3) 2024.07.01
빠른 CPU를 위한 설계 기법  (0) 2024.06.28
명령어 사이클과 인터럽트  (0) 2024.06.27

+ Recent posts