1. Resposne Time, Throughput
컴퓨터 성능은 어떻게 측정하는가?
- Resposne time: 하나의 task를 실행하는데 걸리는 시간 (시작~종료)
개인 사용자들에게 중요
- Throughput: 주어진 시간동안 처리할 수 있는 task의 총 갯수
데이터 센터, 슈퍼 컴퓨터 관리자들에게 중요
Server는 throughput에 더 집중
• Pipelining: 파이프라인은 response time엔 도움 안 됨
하지만 throughput은 증가시킴
불균형한 길이의 파이프라인은 속도를 감소시킴
대부분 speedup = # of pipeline stages
컴퓨터 성능을 최대화하기 위해 execution(response time)을 줄이고 싶음
=> performance(성능) = 1 / execution time(실행 시간)
=> 성능, 실행 시간은 역수 관계!
- Execution time: seconds per program
disk access, memory access, I/O, OS 등 포함
- CPU time: CPU가 주어진 일을 하는 동안 걸린 시간
I/O, 다른 프로그램들은 포함하지 않음
-> 간단하게 CPU time을 성능 측정할 때 사용하자!
2. CPU Time
모든 컴퓨터는 clock으로 동기화
- 주기(T): 한 clock cycle 시간
- 주파수(f): 1초당 clock cycle 수 (= 1/T)
CPU Time = CPU 클락 사이클 수 * clock 주기(T)
= CPU 클락 사이클 수 / 주파수(f)
-> 성능을 증가시키기 위해선, 클락 사이클 수 ↓ or 주파수 ↑
3. Instructions and CPI
컴퓨터는 instruction으로 실행 -> 실행 시간은 instruction 갯수에 의존적
CPU time = CPU clock cycles * T
CPU clock cycles = # instructions * Avg. clock cycles per inst
(CPI, 명령어당 사용하는 평균 클락 사이클 수)
• CPU Time = # insts * CPI * T = # insts * CPI / f