Performance(X) = 1 / Execution time(X) (Execution time = CPU time)
Performance(X) > Performance(Y), Execution time은 역수이므로
Exeution time(X) < Execution time(Y)
2GHz 클럭의 컴퓨터 A에서 10초에 수행되는 프로그램을 6초 동안에 실행할 컴퓨터 B를 설계하고자 한다. A보다 1.2배 많은 클럭 사이클이 필요할 때, B의 클럭 속도는?
A의 실행시간 = 10 = A 클럭 사이클 수 / 2GHz => A 클럭 사이클 수 = 20 × 10^9 사이클 (1GHz = 10^9)
B의 클럭 속도 = B 클럭 사이클 수 / B의 실행시간
= 1.2 × A 클럭 사이클 수 / 6초 => 24 × 10^9 / 6초 => 4 × 10^9 / 1초 => 4GHz (2배 빠름)
하나의 프로그램에서 몇개의 인스트력션이 들어갔는가 X 인스트럭션당 필요한 Clock cycle수
CPU Time 공식을 먼저 이해하면 쉽다.
인스트럭션 한 개 당 몇개의 Cpu clock이 드는지는 CPI이므로
CPU Time = 인스트럭션 수 × CPI × Clock cycle time
Time = (Instructions / Program) × (Clock cycles / Instruction) × (Seconds / Clock cycle)
A: clock cycle time = 250ps, CPI = 2.0 / B: clock cycle time = 500ps, CPI = 1.2일 때 성능을 측정하라(단 ISA는 같음)
CPU timeA = InstructionA × 2.0 × 250 = 500 × InstructionA
CPU timeB = InstructionB × 1.2 × 500 = 600 × InstructionB
이므로 성능은 시간의 역순이므로 CPU time A / CPU time B = Performance B / Performance A = 500 / 600 즉 A가 B보다 1.2배 성능이 좋다.
이중 더 많은 instruction을 실행하는 코드는? 더 빠른 것은? 그리고 각 코드의 CPI는?
1번 코드의 CPU Time = 2×1 + 2×1 + 3×2 = 10
2번 코드의 CPU Time = 1×4 + 2×1 + 3×1 = 9
1번 코드의 Instruction 수 = 2 + 1 + 2 = 5
2번 코드의 Instruction 수 = 4 + 1 + 1 = 6
1번 CPI = 10 ÷ 5 = 2
2번 CPI = 9 ÷ 6 = 1.5
트랜지스터 개수(Capacitive load), 전압(Voltage), Clock rate(Frequency switched)에 비례
EX: 100초동안 돌아가는 프로그램에서, 곱셈연산이 차지하는 비율은 80초이다. 곱셈연산을 몇배나 빠르게해야 프로그램이 5배나 빨라질까?
정답: 불가능 -> P=0.8 / 결과=5이면 S는 무한대여야하는데 성능을 무한대로빠르게 개선하는것은 말이안됨
초당 백만개의 Instruction이 실행하는 능력