명령당 사이클 수
IT 위키
- Cycles Per Instruction; CPI
- 명령어 한 개를 실행하는 데 걸리는 평균 클록 사이클 수
- 프로그램이 실행한 전체 클록 사이클 수를 실행한 명령어 개수로 나눈 값이다.
- 명령어마다 필요한 사이클 수가 다르므로 개별 명령어가 아니라 프로그램 단위의 평균값으로 다룬다.
- 값이 작을수록 같은 클록으로 더 많은 명령어를 처리한다.
- 역수를 IPC(Instructions Per Cycle)라 한다. CPI = 1 / IPC
- 실행 시간 = 명령어 수(IC) × CPI × 클록 주기
- 클록 주기는 클록 주파수의 역수이므로 아래와 같이도 쓴다.
- 실행 시간 = (명령어 수 × CPI) ÷ 클록 주파수
| 요소 | 뜻 | 주로 영향을 주는 것 |
|---|---|---|
| 명령어 수(IC) | 프로그램이 실행하는 총 명령어 개수 | 명령어 집합(ISA), 컴파일러, 알고리즘 |
| CPI | 명령어당 평균 클록 사이클 수 | 명령어 집합, 마이크로아키텍처(파이프라인, 캐시) |
| 클록 주기 | 클록 한 주기의 시간 | 반도체 공정, 회로 설계 |
- 세 요소는 서로 독립이 아니다. RISC처럼 명령어를 단순하게 만들면 CPI는 낮아지지만 같은 일을 하는 데 필요한 명령어 수는 늘어난다.
- 어떤 프로그램의 실행 시간이 10초였는데, 새 컴파일러가 명령어 수를 0.5배로 줄인 대신 CPI가 1.1배로 늘었다면
- 실행 시간 = 10 × 0.5 × 1.1 = 5.5초
- 클록 주파수가 같다면 실행 시간은 명령어 수와 CPI의 곱에 비례한다. 둘 중 하나만 보고 빨라졌다고 말할 수 없다.
- MIPS(Millions of Instructions Per Second) = 클록 주파수 ÷ (CPI × 106)
- 초당 실행하는 명령어 수를 백만 단위로 나타낸 값
- 명령어 하나가 하는 일의 양이 구조마다 다르므로 서로 다른 명령어 집합끼리 비교하는 데는 쓸 수 없다.
- 파이프라인을 쓰면 이상적으로는 CPI가 1에 가까워지지만, 실제로는 파이프라인 해저드 때문에 1보다 크다.
