https://kangcoder.tistory.com/10
Performance
어떤 것을 기준으로 컴퓨터의 성능이 좋다고 말할 수 있는가?
-> 어떻게 정의하느냐에 따라 달라질 수 있다.
Relative Performance
- 성능의 정의 = 1 / 실행 시간
- A가 B보다 N배 더 빠르다는 것 => A의 성능 / B의 성능 = B의 실행시간 / A의 실행시간 = N
Measuring Execution Time
- 경과 시간
: 모든 측면에서의 총 응답 시간. 어떤 task의 시작부터 끝까지의 총 작업 시간.
- CPU Time
: CPU가 주어진 task를 처리하는데 걸리는 시간. (I/O나 다른 작업을 하는데 사용되는 시간은 제외)
Response Time and Throughput
Response Time (응답시간) : 하나의 task를 수행하는데 걸리는 시간
Throughput (처리량) : 단위 시간 당 얼마나 많은 task를 처리할 수 있는가?
어떤 것에 영향을 받을까?
- 프로세서를 더 빠른 것으로, 더 많이 배치하면?
-> 같은 종류의 프로세서를 더 많이 배치한다고 해도, 하나의 task를 나눠서 처리하는 것은 아니기 때문에 응답 시간은 동일하다. 그러나 같은 시간에 더 많은 task를 처리할 수 있으므로 처리량은 늘어난다.
CPU Clock (GHz)
일종의 타이머 역할을 하며, Clock의 주파수는 초당 실행할 수 있는 명령어의 수를 결정한다.
Clock의 속도가 높을 수록 더 많은 명령어를 처리할 수 있다.
Clock period
- 한 Clock cycle 기간 (즉 짧을 수록 Clock의 속도가 높아지므로 성능이 좋다)
Clock rate
- 초 당 Cycle 수 (cycles / sec)
- 한 cycle에 걸린 시간? -> sec / cycles
- Clock rate = 1 / cycles (cycle은 clock이 한 번 발생하는데 걸리는 시간을 의미하므로 둘은 역수 관계이다)
CPU Time
CPU가 주어진 task를 처리하는데 걸리는 시간.
CPU Time = CPU Clock Cycles * Clock Cycle Time
= CPU Clock Cycles / Clock Rate
우리가 앞으로 성능을 얘기할 때 말하는 것이 CPU Time이다.
CPU Time은 다음으로 향상될 수 있다.
- Clock cycle 수 줄이기
- Clock rate 증가시키기
예제
CPU A = CPU Clock = 2GHz, CPU Time = 10s
CPU Time = 6s, CPU Cycle = Clock CycleA * 1.2인 CPU B를 만들고 싶다. CPU Clock이 어떻게 되어야 하는가?
Sol) 6s = Clock B * 1.2 * 2GHz
= 1.2 * 2 * 10^9 * ClockB
따라서 ClockB = 4GHz
Instruction Count and CPI
Instruction Count
- 프로그램의 명령어의 개수.
- 프로그램, ISA, 컴파일러 등에 의해 결정된다.
Cycles per Instruction (CPI)
- Instruction 당 평균 cycle 수 (하드웨어에 의해 결정된다)
- 만약 프로그램의 Instruction이 다양하게 섞여 있다면, 평균 CPI를 산출해야 한다.
Clock Cycles = Instruction Count * CPI
CPU Time = Instruction Count * CPI * Cycle Time
= (Instruction Count * CPI) / Clock rate
예제
Computer A : Cycle Time = 250ps, CPI = 2.0
Computer B : Cycle Time = 500ps, CPI = 1.2
Same ISA
누가 몇 배 더 빠른가?
Sol)
CPU Time A = Instruction Count * 2.0 * 250ps = Inst. * 500ps
CPU Time B = Instuction Count * 1.2 * 500ps = Inst. * 600ps
따라서 CPU Time B / CPU Time A = 1.2, A가 B보다 1.2배 더 빠르다.
(A가 B보다 몇 배 더 빠른가에 대해 계산할 때는 A가 분모에 들어가야 한다.)
CPI in More Details
Instruction의 타입에 따라 처리하는 속도가 다르고, 프로그램은 여러 Instruction으로 이루어져 있는 경우가 많다.
Weighted average CPI : 명령어마다 CPI는 다르기 때문에, CPU Time 구할 때 각각 구해 평균을 구해야 한다.
Performance Summary
각 성능지표는 다음에 의존한다.
- Algorithm : IC, CPI
- Programming Language : IC, CPI
- Complier : IC, CPI
- ISA : IC, CPI, Clock Cycle Time