Performance
어떤 것을 기준으로 성능이 좋다고 말할 수 있는가?
Response Time ( 응답 시간 ) and Throughput ( 처리량 )
- Response Time: task를 수행하는 데 걸리는 시간
- Throughput: 단위 시간 안에 얼마나 많은 일을 하는가
→ 우선 응답 시간에 초점을 맞춰서 알아보자.
상대적인 성능
성능 = 1 / 실행시간
- X가 Y보다 n배 빠르다는 것은 아래와 같다.
- ex) A는 10초, B는 15초가 걸린다.
- A는 B보다 1.5배 ( 15s / 10s ) 빠르다.
실행시간 측정
- Elapsed Time(wall clock time, response time) ( 경과 시간 )
- 모든 측면을 포함한 총 응답 시간
- processing, I/O, OS overhead, idle time 포함
- CPU time
- 주어진 일을 처리하는데 걸리는 시간
- I/O나 다른 작업을 하는데 사용한 시간 제외
- user CPU time과 system CPU time이 있음
- 프로그램이 다르면 CPU와 시스템 성능에 대해서 다르게 영향을 받을 수 있다.
CPU Clocking
- Clock period (clock cycle time): 한 클럭의 싸이클 기간. rising edge 이후 다음 rising edge까지 걸리는 시간
- e.g., 250ps = 0.25ns = 250*10^-12s
- Clock frequency(clock rate): 초당 싸이클 수
- e.g, 4.0GHZ = 4000MHZ = 4.0 * 10^9 Hz
Clock period = 1 / Clock frequency
ex) 10ns Clock cycle = 10MHz clock rates
CPU Time
CPU Time = CPU Clock Cycles X Clock Cycle Time = CPU Clock Cycles / Clock Rates
- 성능 향상 방법 ( CPU Time을 줄이는 방법 )
- clock cycle의 수를 줄이면
- clock rate를 증가시키면
- 하드웨어 디자이너는 반드시 cycle수 대비 clock rate를 조절해야 한다.
CPU Time Example
- 컴퓨터 A: 2GHz clock, 10s CPU time
- 컴퓨터 B 설계
- CPU time 6s 목표
- B clock cycles는 A의 clock cycles의 1.2배이다.
- 컴퓨터 B의 clock은 얼마나 더 빨라야 하는가? ⇒ 4GHz
Instruction Count와 CPI
프로그램은 instruction들이 있기 때문에 instruction 하나 당 평균적인 클럭 개수를 알면 된다.
Clock Cycles = Intstruction Count X Cycles per Instruction
CPU Time = Instruction Count X CPI X Clock Cycle Time
= Instruction Count X Cycles per Instruction / Clock Rate
- 프로그램의 Instruction Count란?
- 프로그램, ISA(Instruction set Architecture)와 컴파일러 등에 의해 결정 됨
- Instruction 당 평균 cycle 수 ( Average cycles per instruction, CPI )
- CPU 하드웨어에 의해 결정됨 ( CPU가 어떻게 구성되어지고 만들어져 있는지에 따라 )
- 만약 instruction이 다르다면, CPI도 다름.
CPI Example
- 컴퓨터 A: Cycle Time = 250ps, CPI = 2.0
- 컴퓨터 B: Cycle Time = 500ps, CPI = 1.2
- 동일한 ISA → instruction count가 같음
- 어떤 컴퓨터가 얼마나 빠른가?
→ A가 1.2배 빠름
CPI를 더 자세히 알아보자
- 만약 instruction의 종류가 다르다면, 필요한 cycles이 다를 것이다.
- 가중 평균 CPI ( weighted average CPI )
CPI Example
종류 | A | B | C |
CPI | 1 | 2 | 3 |
결과1에서의 instruction count | 2 | 1 | 2 |
결과2에서의 instruction count | 4 | 1 | 1 |
- 결과 1
- instruction 총 수 = 5
- CPU clock cycles = 1 * 2 + 2 * 1 + 3 * 2 = 10
- CPI = 10 / 5 = 2.0
- 결과 2
- instruction 총 수 = 6
- CPU clock cycles = 1 * 4 + 2 * 1 + 3 * 1 = 9
- CPI = 9 / 6 = 1.5
Performance Summary
- 알고리즘: IC에 영향. CPI에 영향을 줄 수도 있음
- 프로그래밍 언어: IC, CPI에 영향.
- 컴파일러: IC, CPI에 영향
- ISA: IC< CPI, Clock Cycle Time에 영향