📗 명령어 집합(ISA)
명령어 집합이란 CPU가 이해할 수 있는 명령어들의 모음을 말한다.
명령어의 세세한 구조와, 연산, 주소지정 방식은 CPU 마다 다르다.
CPU는 자신의 명령어 집합에 속한 명령어만 이해할 수 있다.
예를 들어, 명령어 집합이 각기 다른 A와 B CPU가 있다고 할 때,
A CPU에서 만든 실행 파일을 그대로 B CPU에 옮겨
특별한 설정 없이 바로 실행하면 실행되지 않는다.
명령어들의 모음으로 만들어진 것이 실행 파일인데, A에서 이해할 수 있는
명령어의 모음으로 만든 실행 파일을 B에 바로 옮기면
이해할 수 있는 명령어가 아니기 때문에 실행이 불가한 것이다.
=> 같은 소스코드를 컴파일 하더라도 CPU에 따라 다른 기계어, 어셈블리어가 나올 수 있다.
🖥️ISA(Instruction Set Architecture)
명령어 집합, 혹은 명령어 집합 구조(ISA)는
하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이기도 하다.
ISA가 달라지면 그에 따른 많은 것들이 달라지게 된다.
- 명령어 해석 방식
- 레지스터의 종류와 개수
- 파이프라이닝의 용이성
📗 ISA의 두 종류
명령어 집합에는 대표적으로 CISC와 RISC 2가지 종류가 있다.
🖥️CISC (Complex Instruction Set Computer)
CISC의 풀네임에서도 알 수 있듯이 복잡한 명령어 집합을 활용하는 컴퓨터를 말한다.
CISC를 사용하는 예로 Intel의 x86, x86-64 CPU가 있다.
CISC는 복잡하고 다양한 명령어를 활용하기 때문에 명령어의 형태와 크기가
다양한 가변 길이 명령어를 활용한다.
다양하고 강력한 명령어를 활용하기 때문에 상대적으로 적은 수의 명령어로도
프로그램을 실행할 수 있다.
✅CISC의 단점
명령어 파이프라이닝이 불리하다는 치명적인 단점이 존재한다.
명령어 하나하나가 복잡하고 다양한 기능을 제공하기에
명령어의 크기와 실행되기까지의 시간이 일정하지가 않다.
파이프라이닝에 유리하기 위해서는 각 명령이 한 클럭 주기로
실행되어야 하고 명령어의 길이나 실행 시간도 일정해야 한다.
또, 하나의 복잡한 명령어를 실행하는데에 여러 클럭 주기가 필요하고
대다수의 복잡한 명령어는 사용빈도가 낮다.
🖥️ RISC (Reduced Instruction Set Computer)
CISC에 비해 명령어의 종류가 적고 짧으며 규격화된(고정된) 명령어를 사용한다.
따라서 명령어 파이프라이닝에 유리하다고 할 수 있다.
메모리 접근 명령어를 Load, Store 2가지 명령으로 축소하여 메모리 접근을 최소화한다.
RISC는 레지스터를 십분 활용하므로 CISC에 비해 범용 레지스터의 수가 많다.
명령어 종류가 적기에 더 많은 명령어로 프로그램을 동작 시켜야 한다.
📗 정리
CISC | RISC |
복잡하고 다양한 명령어를 사용 | 단순하고 적은 개수의 명령어를 사용 |
가변길이명령어 | 고정길이 명령어 |
다양한 주소 지정 방식 | 적은 주소 지정 방식 |
프로그램을 이루는 명령어의 수가 적음 | 프로그램을 이루는 명령어의 수가 많음 |
여러 클럭에 걸쳐 명령어 수행 | 1클럭 내외로 명령어 수행 |
파이프라이닝하기 어려움 | 파이프라이닝하기 쉬움 |
학습 출처: https://www.youtube.com/watch?v=lJwIERMo_N4&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=16
'CS-Study' 카테고리의 다른 글
컴퓨터 구조 : 메모리의 주소 공간 (0) | 2024.02.01 |
---|---|
컴퓨터 구조 : RAM의 특성과 종류 (0) | 2024.01.30 |
컴퓨터 구조 : 명령어 병렬 처리 기법 (0) | 2024.01.30 |
컴퓨터 구조 : CPU를 빠르게 설계하는 법 (클럭, 코어, 스레드) (0) | 2024.01.29 |
컴퓨터 구조 : 명령어 사이클과 인터럽트 (0) | 2024.01.28 |