💠 클럭 속도와 오버클럭
- 클럭(Clock)
CPU가 명령어를 처리하는 속도를 나타내며, Hz(헤르츠) 단위로 측정됩니다.
예: 1GHz = 1초에 10억 번의 클럭 사이클 - 클럭 속도는 항상 일정하지 않음
부하나 온도 등에 따라 자동 조절되기도 함. - 오버클럭(Overclocking)
제조사가 지정한 최대 클럭을 넘어 더 빠르게 작동하도록 설정하는 기법.
⛔ 단점: 발열 증가, 안정성 저하
💠 코어와 멀티코어
- 코어(Core)
명령어를 처리하는 최소 실행 유닛.
예전에는 1개였지만 지금은 2, 4, 8, 16개 등으로 증가. - 멀티코어(Multi-Core)
하나의 CPU에 여러 개의 코어가 존재 → 병렬 처리 가능.
단, 코어 수가 늘어난다고 무조건 성능이 1:1로 비례하진 않음.
📌 핵심: 각 코어에 적절하게 명령어를 분배하는 것이 중요
💠 스레드와 멀티스레딩
🔹 스레드(Thread)의 두 가지 관점
- 하드웨어적 스레드
→ 하나의 코어가 동시에 처리할 수 있는 명령어 흐름.
→ 예: 1코어 2스레드 → 한 코어가 두 개의 명령어 처리 가능. - 소프트웨어적 스레드
→ 하나의 프로그램 내에서 독립적으로 실행되는 흐름 단위.
→ 실제 코어 수보다 많은 스레드 실행 가능.
🔹 멀티스레드(Multithread)
- 하나의 코어가 여러 스레드를 처리하는 구조
- 인텔에서는 이를 하이퍼스레딩(Hyper-Threading) 이라고 부름.
🔹 논리 프로세서(Logical Processor)
- 예: 2코어 4스레드 → 4개의 논리 프로세서
→ 프로그램 입장에선 CPU 4개처럼 보임
(즉, 논리 프로세서 = 하드웨어 스레드)
💠 명령어 병렬 처리 기법
🔹 명령어 파이프라이닝 (Instruction Pipeline)
- 명령어 실행 단계를 나눠서 동시에 겹쳐 실행하는 구조
예: -
복사편집명령어 인출 → 명령어 해석 → 실행 → 결과 저장
- 이를 공장 생산 라인처럼 만들어 병렬로 처리
⚠️ 파이프라인의 위험 (Pipeline Hazard)
- 데이터 위험 (Data Hazard)
→ 명령어 간 데이터 의존 관계로 인한 충돌 - 제어 위험 (Control Hazard)
→ 분기, 점프 명령어로 인한 흐름 변화
→ 해결: 분기 예측(Branch Prediction) - 구조적 위험 (Structural Hazard)
→ ALU, 레지스터 등 하드웨어 자원을 동시에 요구할 때 충돌
💠 슈퍼스칼라와 비순차 실행
🔹 슈퍼스칼라 (Superscalar)
- 여러 개의 파이프라인을 동시에 운영하는 구조
→ 공장에서 생산 라인을 여러 줄로 만드는 개념
🔹 비순차 실행 (OoOE, Out-of-Order Execution)
- 명령어들을 순서에 관계없이 실행
단, 의존성이 없는 명령어에 한해서만 가능
text
복사편집
1 → 2 → 3 → 4 → 5 → 1,2,4,5 실행 후 3 실행 (3은 1,2에 의존)
💠 CISC vs RISC
🔹 ISA (Instruction Set Architecture)
- CPU가 이해할 수 있는 명령어 집합
- ISA가 다르면 어셈블리어도 다르고, 바이너리도 다름
🔹 CISC (Complex Instruction Set Computer)
- 복잡하고 강력한 기능을 가진 가변 길이 명령어
- 장점: 명령어 수가 적고 메모리 효율적
- 단점: 파이프라인 처리에 불리
🔹 RISC (Reduced Instruction Set Computer)
- 단순하고 빠른 고정 길이 명령어 중심
- 장점:
- 파이프라인 처리에 유리
- 실행 시간이 예측 가능
- 단점: 더 많은 명령어 조합 필요 (메모리 사용 증가 가능성)
🧠 정리 요약
항목설명
| 클럭 속도 | 명령어 처리 속도 (Hz) |
| 오버클럭 | 최대 클럭 이상으로 동작시키는 기법 |
| 멀티코어 | 코어 수 증가로 병렬 처리 |
| 멀티스레드 | 한 코어가 여러 명령어 흐름 처리 |
| 파이프라인 | 명령어 단계를 겹쳐서 처리 |
| 슈퍼스칼라 | 파이프라인을 여러 개 둠 |
| 비순차 실행 | 순서를 바꿔 명령어 처리 (의존성 고려) |
| CISC | 복잡하지만 적은 명령어 수 |
| RISC | 단순하고 빠르지만 명령어 수 많음 |
📌 오늘 배운 핵심:
CPU는 더 빠르게, 더 많이, 더 효율적으로 명령어를 처리하기 위해 파이프라이닝, 병렬 구조, 명령어 최적화 등 다양한 설계 기법을 사용한다.