참고 도서: 혼자 공부하는 컴퓨터구조 + 운영체제
섹션 6에 대한 정리.
(멀티코어, 멀티스레드, 명령어 파이프라인)
📍 빠른 CPU를 위한 설계 기법
1. 클럭 신호를 빠르게 하기
1. 컴퓨터 부품들은 클럭 신호에 맞춰 움직인다. ➡️ 클럭 신호를 빨라지게 한다면?
2. CPU는 명령어 사이클에 맞춰 명령어들을 실행한다.
클럭 속도: 헤르츠(Hz) 단위, 1초에 클럭이 반복되는 횟수
실제로는 클럭 신호가 일정하지 않고 필요할 때 빠르게 만든다.
그러나 필요 이상으로 클럭을 높이면 발열이 심해진다.
2. 코어 수 늘리기 (듀얼 코어, 멀티 코어)
코어: CPU 내에서 명령어를 실행하는 부품
전통적인 관점의 CPU는 싱글 코어였지만, 오늘날은 여러 개의 코어를 사용한다.

그러나 코어 수에 비례하여 연산 속도가 증가하는 것은 아니다.
3. 스레드 수 늘리기 (멀티 스레드)
스레드: 실행 흐름의 단위

하드웨어 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
논리 프로세서라고도 부른다.


(레지스터 세트: 하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들을 편의상 레지스터 세트라고 표기함)
-> 멀티스레드 프로세서, 멀티스레드 CPU
-> 핵심은 레지스터
소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위

하나의 프로그램을 동시에 여러 군데를 실행할 수 있다.
📍 명령어 병렬 처리 기법
명령어 파이프라인
명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면?
1. 명령어 인출
2. 명령어 해석
3. 명령어 실행
4. 결과 저장 (메모리)
명령어 파이프라이닝
동시에 여러 개의 명령어를 겹쳐 실행하는 기법이다.
같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다.

파이프라인 위험(Hazard)
명령어 파이프라인이 성능 향상에 실패하는 경우이다.

데이터 위험
명령어 간의 의존성에 의해 야기된다.
이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우, 모든 명령어를 동시에 처리할 수는 없다.
(R2+R3=R1, R1+R4=R5)
제어 위험
프로그램 카운터의 갑작스러운 변화에 의해 야기된다. (분기-> 분기 예측)
구조적 위험
서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터 등)을 쓰려고 할 때 생긴다.
슈퍼스칼라
CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조이다.
(ex. 8코어 16스레드 CPU -> 한 번에 16개의 명령어를 실행할 수 있는 CPU)

이론적으로는 파이프라인 개수에 비례하여 처리 속도가 증가한다.
하지만 파이프라인 위험도의 증가로, 실제로는 꼭 증가한다고 보기 어렵다.
비순차적 명령어 처리
파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법이다.
(합법 새치기)
의존성이 없는 명령어의 순서를 바꿔 파이프라인의 중단을 막고 더 빠르게 처리할 수 있다.
전체 프로그램 실행 흐름에는 영향이 없다.
📍 명령어 집합 구조, CISC와 RISC
명령어 파이프라이닝에 유리한 명령어는 어떻게 생겼을까?
명령어 집합 구조 = ISA
CPU마다 이해할 수 있는 명령어들의 모음 = CPU의 언어
ex. 인텔 CPU 컴퓨터에서 만든 실행 파일을 그대로 아이폰에 옮겨 특별한 설정 없이 바로 실행하면 실행이 되지 않는다.
CPU의 언어이자, 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다.
명령어가 달라지면 그에 따라 많은 것들이 달라지게 된다.
명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성...
CISC
Complex Instruction Set Computer
복잡한 명령어 집합을 활용하는 컴퓨터(CPU)
x86, x86-64가 해당한다.
복잡하고, 형태와 크기가 다양한 가변 길이 명령어를 활용한다.
상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다.
명령어 파이프라이닝이 불리하다는 치명적인 단점이 있다.
명령어의 크기와 실행되기까지의 시간이 일정하지 않고, 명령어 하나를 실행하는 데에 여러 클럭 주기를 필요로 한다.
(메모리를 최대한 아끼면서 개발해야 했을 시절엔 인기가 높았음)
RISC
Reduced Instruction Set Computer
명령어의 종류가 적고, 짧고 규격화된 명령어를 사용한다.
CISC에 비해 명령어 파이프라이닝에 유리하다.
ARM이 해당한다.
메모리 접근을 최소화하고 레지스터를 활용하려는 경우가 많아, 범용 레지스터의 종류가 많은 경우가 많다.
다만 명령어 종류가 CISC보다 적어 더 많은 명령어로 프로그램을 동작시킨다.

실제로는 CISC가 실제로 실행될 때는 명령어 단위보다 더 잘게 쪼개서 마이크로 명령어 단위로 수행되고, 내부적으로는 RISC처럼 사용된다.
'𝐄𝐰𝐡𝐚 > 𝐄-𝐂𝐎𝐏𝐒' 카테고리의 다른 글
| 시스템해킹 스터디 - (4) 보조기억장치 (0) | 2025.04.09 |
|---|---|
| 시스템해킹 스터디 - (3) 메모리와 캐시 메모리 (0) | 2025.04.09 |
| 시스템해킹 스터디 - (1) CPU의 작동 원리 (0) | 2025.04.02 |
| 🍀 3월 4주차 TWIL (0) | 2025.03.31 |
| [포너블] 스택 카나리란? (0) | 2025.03.26 |