1) 클럭
- 클럭 속도가 높은 CPU는 빠르게 동작하지만, 무작정 높이면 발열 문제가 심하다
2) 코어
- CPU 내에서 명령어를 실행하는 부품. 코어마다 처리할 명령어를 얼마나 적절하게 분배하느냐에 따라서 연산속도가 달라진다.
3) 스레드
- 실행 흐름의 단위. 명령어를 실행하는 단위
하드웨어적 스레드 - 하나의 코어가 동시에 처리하는 명령어 단위
멀티 스레드 프로세서 - 여러 개의 하드웨어적 스레드를 지원하는 CPU
소프트웨어적 스레드 - 하나의 프로그램에서 독립적으로 실행되는 단위
[명령어 인출 → 해석 → 실행 → 결과 저장] 같은 단계가 겹치치만 않으면 동시에 실행할 수 있는데, 이렇게 동시에 여러 명령어를 겹쳐서 실행하는 기법
** 파이프라인 위험
1) 데이터 위험 - 데이터 의존적인 두 명령어를 동시에 실행하려고 할 때 파이프라인이 작동하지 않는 것
2) 제어 위험 - 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해 발생
3) 구조적 위험 - 명령어를 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등 CPU 부품을 사용하려고 할 때 발생
CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
공장 생산 라인 여러 개를 두는 것과 같음
의존성이 없는, 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인이 멈추는 것을 방지하는 기법
ISA(Instruction Set Architecture) - 명령어 집합 구조. CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속