CPI
contents
클럭당 명령어 수(Cycles Per Instruction, CPI) 는 프로세서의 평균 효율성을 측정하는 데 사용되는 핵심 컴퓨터 아키텍처 지표입니다. 이는 CPU가 단일 명령어를 성공적으로 실행하는 데 필요한 평균 클럭 사이클 수를 정량화합니다.
CPI 값이 낮을수록 프로세서의 설계와 파이프라인 효율성이 높다는 것을 의미합니다.
⚙️ 핵심 개념 및 공식
CPI는 프로그램 전체 실행 또는 특정 코드 섹션의 실행을 측정하여 계산되는 평균값입니다. 공식적인 정의는 다음과 같습니다.
$$CPI = \frac{\text{프로그램에 필요한 총 클럭 사이클}}{\text{실행된 총 명령어 수}}$$
CPI vs. IPC (사이클당 명령어 수)
CPI는 종종 그 역수인 IPC(Instructions Per Cycle, 사이클당 명령어 수) 와 함께 논의됩니다.
$$IPC = \frac{1}{\text{CPI}}$$
- CPI: 낮을수록 좋습니다 (이상적인 값은 1, 즉 한 사이클마다 하나의 명령어가 완료됨).
- IPC: 높을수록 좋습니다 (처리량을 나타내며, 한 사이클마다 더 많은 명령어가 완료됨).
여러 명령어를 동시에 실행하는 현대의 슈퍼스칼라 프로세서에서는 IPC 값이 종종 1보다 큽니다 (따라서 CPI는 1보다 작습니다).
CPI에 영향을 미치는 요인 (파이프라인 효율성)
명령어를 병렬로 실행할 수 있는 프로세서의 이상적인 CPI는 1 미만입니다. CPI는 명령어 파이프라인이 스톨(stall) 또는 버블(bubble) 을 겪을 때마다 증가합니다 (즉, IPC는 감소합니다).
1. 아키텍처 요인
이는 내재적인 설계 선택 사항입니다.
- 명령어 집합 구조 (ISA):
- RISC (축소 명령어 집합 컴퓨터): 간단하고 고정 길이 명령어를 사용하여 CPI가 낮도록(이상적으로 1에 가깝도록) 특별히 설계되었습니다.
- CISC (복합 명령어 집합 컴퓨터): 명령어가 복잡하고 가변 길이여서 완료하는 데 여러 클럭 사이클이 필요하므로, 본질적으로 CPI가 더 높습니다.
- 파이프라인 깊이: 파이프라인이 깊을수록(단계가 많을수록) 더 높은 클럭 속도를 허용하지만, 분기 예측 실패로 인한 페널티에 더 취약해져 CPI가 증가합니다.
2. 실행 요인 (스톨)
이는 CPI를 이상적인 값에서 벗어나게 하는 런타임 지연입니다.
- 메모리 계층 구조 (캐시 미스): 이것이 높은 CPI의 가장 큰 단일 원인입니다. CPU가 L1 또는 L2 캐시에 없는 데이터를 필요로 하면, 훨씬 느린 RAM에서 데이터를 가져올 때까지 수백 클럭 사이클 동안 기다려야 하므로 파이프라인이 완전히 멈춥니다(스톨).
- 데이터 위험 (Data Hazards): 후속 명령어가 아직 계산되지 않은 이전 명령어의 결과를 필요로 할 때 발생합니다. 필요한 데이터가 준비될 때까지 파이프라인은 멈춰야 합니다.
- 제어 위험 (분기 예측 실패): CPU가 조건부 분기(예:
if문이나 루프)를 만나면 다음에 어떤 코드 경로를 가져올지 추측합니다. 추측이 틀리면 파이프라인에 이미 로드된 모든 명령어를 플러시하고 버려야 하므로, 수많은 사이클을 낭비하고 평균 CPI를 급격히 증가시킵니다.
전체 성능 공식에서의 CPI
CPI는 프로그램의 총 실행 시간을 계산하는 데 사용되는 기본 공식의 핵심 구성 요소입니다. 이 공식은 CPU 설계자가 균형을 맞춰야 하는 트레이드오프를 보여줍니다.
$$\text{CPU 시간} = (\text{명령어 수}) \times \text{CPI} \times (\text{클럭 사이클 시간})$$
$\text{CPI} \times \text{클럭 사이클 시간}$의 곱은 명령어당 평균 시간입니다.
| 구성 요소 | 설계 목표 | 영향을 미치는 요소 |
|---|---|---|
| 명령어 수 | 최소화 | 컴파일러 최적화, ISA 선택 (CISC/RISC) |
| CPI | 최소화 | 파이프라인 설계, 캐시 계층 구조, 분기 예측 |
| 클럭 사이클 시간 | 최소화 (주파수 극대화) | 하드웨어 기술, 파이프라인 깊이 |
트레이드오프
엔지니어는 종종 단순한 마이크로아키텍처(낮은 CPI, 높은 클럭 사이클 시간)와 복잡한 마이크로아키텍처(낮은 CPI를 위해 높은 클럭 사이클 시간을 감수) 중에서 선택해야 합니다. 최적의 설계는 이 세 가지 요소의 곱을 최소화하는 것입니다.
references