명령어 파이프라이닝과 슈퍼스칼라 기법을 효과적으로 사용하려면, CPU가 인출하고 해석하고 실행하는 명령어가 파이프라이닝하기 쉽게 생겨야함. 그렇다면 '파이프라이닝 하기 쉬운 명령어'란 무엇일까? 어떻게 생겨야 할까?
1. ISA(Instruction Set Architecture)
- CPU가 이해할 수 있는 명령어들의 모음. 명령어 집합 또는 명령어 집합 구조
- 모든 CPU가 이해하고 실행하는 명령어들이 다 똑같이 생긴 것이 아님
- 기본적인 구조와 작동 원리는 앞서 배운 것에서 크게 벗어나지 않지만, 명령어의 세세한 생김새, 명령어로 할 수 있는 연산, 주소 지정 방식 등은 CPU마다 조금씩 차이가 있음
- ISA가 다르면 그에 따른 나비효과로 많은 것이 달라짐. ISA는 CPU의 언어임과 동시에 CPU를 비롯한 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속
- 제어장치가 명령어를 해석하는 방식
- 사용되는 레지스터 종류와 개수
- 메모리 관리 방법
- CPU 하드웨어 설계
- 파이프라이닝하기 쉬운 명령어도 있고, 어려운 명령어도 있음
2. CISC(Complex Instruction Set Computer)
- 이름 그대로 '복잡한 명령어 집합을 활용하는 컴퓨터'
- 명령어의 형태와 크기가 다양한 가변 길이 명령어 활용
- 장점
- ARM(RISC) 명령어 여러 개로 수행해야 하는 일을 x86-64(CISC) 명령어 몇 개 만으로도 수행할 수 있음
- 적은 명령어를 쓰기 때문에 메모리를 최대한 아끼며 개발할 수 있음
- 단점
- 활용하는 명령어가 워낙 복잡하고, 다양한 기능을 제공하기 때문에 명령어의 포맷과 길이에 관한 규칙이 없음
- 하나 이상의 사이클로 명령어를 실행한다는 의미로, 전체 명령이 얼마나 걸릴지 시간 예측이 어려움
- 복합 명령어 수행을 위해 CPU 로직 회로 복잡도도 증가하고, 하나의 명령어 실행 시간도 증가함
- 파이프라이닝하기 어려운 언어
- 활용하는 명령어가 워낙 복잡하고, 다양한 기능을 제공하기 때문에 명령어의 포맷과 길이에 관한 규칙이 없음
- 대표적인 CISC CPU - Intel CPU
3. RISC(Reduced Instruction Set Computer)
- CISC의 한계가 주는 교훈
- 빠른 처리를 위해 명령어 파이프라인을 활용하기 위해서는, '명령어 포맷과 길이가 짧고 규격화' 되어 있어야함
- 어차피 자주 쓰는 명령어는 한정적. 복잡한 기능 지원보다 '자주 쓰이는 기본적인 명령어를 작고 빠르게 만드는 것'이 중요함
- 이름처럼 CISC에 비해 명령어 종류가 적으며, 짧고 규격화된 명령어, 되도록 1클럭 내외로 실행되는 명령어를 지향
- 메모리 접근을 단순화, 최소화하는 대신 레지스터를 적극적으로 활용함
- 한번에 사용 가능한 명령어 개수가 CISC보다 적기 때문에 CISC보다 더 많은 명령으로 프로그램을 작동시킴
- 대표적인 RISC CPU - ARM(스마트폰, 임베디드, IoT기기)
'computer science > computer architecture' 카테고리의 다른 글
[오늘 CS] 컴퓨터 구조 - 캐시 메모리 (0) | 2024.04.30 |
---|---|
[오늘 CS] 컴퓨터 구조 - 메모리(RAM) (0) | 2024.04.30 |
[오늘 CS] 컴퓨터 구조 - CPU 성능 향상을 위한 명령어 병렬 처리 기법 (0) | 2024.04.23 |
[오늘 CS] 컴퓨터 구조 - CPU 성능 향상을 위한 설계 기법 (1) | 2024.04.23 |
[오늘 CS] 컴퓨터 구조 - 명령어 사이클과 인터럽트 (0) | 2024.04.03 |