일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- CPU 스케줄링
- 138477
- Transform
- 입출력장치
- 렌더링 파이프라인
- 혼자공부하는
- 장치컨트롤러
- 프로세스
- 멀티스레드
- 컴퓨터 구조
- 풀이
- DDR SDRAM
- 그래프
- 지역변수
- dfs
- C++
- static
- 프로그래머스
- 보조기억장치
- 스레드
- 혼자 공부하는
- 독학
- 한빛미디어
- 운영체제
- 131701
- BFS
- 코딩테스트
- 컴퓨터구조
- DirectX
- 인터럽트
- Today
- Total
빼미의 개발일기
[컴퓨터 구조] - 14강. CISC와 RISC 본문
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 정리한 내용입니다.
● 명령어 집합(Instruction Set) : CPU가 이해할 수 있는 명령어들의 모음. 명령어집합 구조(ISA - Instruction Set Architecture)라고 한다. 명령어의 세세한 생김새, 명령어로 할 수 있는 연산, 주소 지정 방식 등 CPU마다 차이가 있고, 때문에 ISA가 다를 수 있다. 예를 들어 인텔 노트북의 CPU는 x86 혹은 x86-64 ISA를 이해하고, 애플 아이폰의 CPU는 ARM ISA를 이해한다.
- ISA가 다르다는 건 CPU가 이해할 수 있는 명령어가 다르다는 뜻이고, 명령어가 달라지면 어셈블리어도 달리진다.
- 같은 소스 코드로 만들어진 같은 프로그램이라도 ISA가 다르면 CPU가 이해하는 명령어도 어셈블리어도 달라진다.
- 위와 같은 코드일 때
- x86-64 ISA 어셈블리어로 바꿨을 때
- ARM ISA 어셈블리어로 바꿨을 때 이런 차이가 있다.
// 코드를 어셈블리어로 바꿔주는 사이트 : https://godbolt.org/
Compiler Explorer
godbolt.org
- 이렇듯 ISA가 다르면 제어장치가 명령어를 해석 하는 방식, 사용되는 레지스터의 종류와 개수, 메모리 관리 방법 등 많은 것이 달라지고, CPU 하드웨어 설계에도 영향을 미친다.
● CISC : Complex Instruction Set Computer의 약자로, 직역하면 '복잡한 명령어 집합을 활용하는 컴퓨터'라는 의미.
x86, x86-64가 대표적인 CISC 기반의 ISA이다. CISC는 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용한다.
- 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있었는데, 여기서 명령어 수가 적다는 말은 '컴파일된 프로그램의 크기가 작다'는 것을 의미한다. 때문에 메모리를 최대한 아끼며 개발해야 했던 시절이 인기가 높았다.
- 활용하는 명령어가 복잡하고 다양한 기능을 제공하는 탓에 명령어 크기와 실행되기까지의 시간이 일정하지 않다는 단점이 있다.
- 명령어 크기가 들쑥날쑥한 가변 길이 명령어다 보니, 파이프라이닝을 더욱 어렵게 만든 꼴.
정리 : CISC 명령어 집합은 복잡하고 다양한 기능을 제공하여 적은 수의 명령으로 프로그램을 동작시키고 메모리를 절약 할 수 있지만, 명령어 규격화가 어려워 파이프라이닝이 어렵다. 게다가 대다수의 복잡한 명령어는 사용 빈도도 낮다.
● RISC : Reduced Instruction Set Computer 의 약자로, 원활한 파이프라이닝을 지원해야하며, 복잡한 기능의 명령어보단 자주 쓰이는 기본적인 명령어를 활용해야 한다는 CISC의 단점을 보완하여, 명령어의 종류가 적고, 짧고 규격화된 명령어, 되도록 1클럭 내외로 실행되는 명령어를 지향한다.
- RISC는 메모리 접근을 단순화, 최소화하는 대신 레지스터를 적극 활용. 때문에 CISC보다 레지스터를 이용한 연산이 많고, 범용 레지스터 개수도 많다. 다만 사용 가능한 명령어 개수가 CISC보다 적기 때문에 많은 명령으로 프로그램을 작동해야 한다.
CISC | RISC |
복잡하고 다양한 명령어 | 단순하고 적은 명령어 |
가변 길이 명령어 | 고정 길이 명령어 |
다양한 주소 지정 방식 | 적은 주소 지정 방식 |
프로그램을 이루는 명령어의 수가 적음 | 프로그램을 이루는 명령어의 수가 많음 |
여러 클럭에 걸쳐 명령어 수행 | 1클럭 내외로 명령어 수행 |
파이프라이닝하기 어려움 | 파이프라이닝하기 쉬움 |
'프로그래밍 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] - 16강. 메모리의 주소 공간 (0) | 2023.09.10 |
---|---|
[컴퓨터 구조] - 15강. RAM의 특징과 종류 (0) | 2023.09.09 |
[컴퓨터 구조] - 13강. 명령어 병렬 처리 기법 (0) | 2023.09.07 |
[컴퓨터 구조] - 12강. 빠른 CPU를 위한 설계 기법 (0) | 2023.09.06 |
[컴퓨터 구조] - 11강. 명령어 사이클과 인터럽트 (0) | 2023.09.04 |