[컴퓨터 구조] #2 CPU 성능 측정 방식

September 19, 2023


CPU time

CPU time은 CPU가 순수하게 작업을 수행하는데 걸리는 시간으로, I/O 대기 시간과 같이 CPU와 관련없는 시간은 제외한 시간입니다.

p

CPU time = CPU 클럭 사이클의 횟수 * clock cycle time

또는

CPU time = CPU 클럭 사이클의 횟수 / clock rate

clock rate는 1 / clock cycle time입니다.

성능을 높이는 방법으로는 해당 프로그램에 대한 클럭 사이클의 횟수를 줄이거나 또는, 해당 프로그램에 대한 클럭 사이클의 길이를 줄이면 됩니다.

예제 문제

A program runs on computer A with a 2 GHz clock in 10 seconds. What clock rate must computer B run at to run this program in 6 seconds? Unfortunately, to accomplish this, computer B will require 1.2 times as many clock cycles as computer A to run the program.

어느 프로그램에 대해 2GHz인 컴퓨터 A에서는 10초이다. B에서 6초동안 수행하게 할려면 컴퓨터 B를 몇 GHz로 실행해야 하는가? 단, B의 클럭 사이클은 A보다 1.2배이다.

풀이

CPU time = CPU clock cycles / clock rate

CPU clock cycles = CPU time * clock rate


CPU clock cycles(A)

= 10 sec * 2 * 10^9 cycles/sec
= 20 * 10^9 cycles

CPU time(B) = ( 1.2 * 20 * 10^9 cycles ) / clock rate(B)

clock rate(B) = 1.2 * 20 * 10^9 cycles / 6 seconds = 4 GHz


생각해 볼 점

컴퓨터 B는 A보다 2배 빠른 클럭으로 실행해서 2배 빠른 CPU라고 말할 수 있습니다.

하지만, 프로그램을 수행하는 데 걸리는 시간은 10초의 절반인 5초가 아닌 6초가 걸립니다. 이는 클럭 사이클이 B가 A보다 1.2배이기 때문입니다.

CISC ISA는 평균적으로 클럭 사이클이 RISC ISA의 1.2배입니다. 성능은 높지만 한 명령어를 실행하는 데 시간이 CISC가 더 걸리기 때문입니다. 이 점에서 우리는 CPU 클럭이 높더라도 프로그램 수행 시간이 완전하게 비례해서 감소하는 것은 아니라는 것을 알 수 있습니다.

그러면 CPU 수행 시간을 비교하기 위해서는 다른 단위가 필요합니다. 그래서 등장한 것이 Clock cycles Per Instruction (CPI) 입니다.

CPI

Clock cycles Per Instruction는 명령어 하나를 수행하는데 필요한 클럭 사이클의 수를 지칭하는 성능 평가의 단위입니다.

CPI가 낮을 수록 명령어 수행이 더 빨라서, 성능이 높다고 말할 수 있습니다.

Average CPI = # CPU clock cycles / Instruction count

예제 문제

One program is alternatively compiled, result in two sequences of different code, using instructions in classes A, B, C. Calculate the total cycles and average CPI for both sequence 1 and sequence 2.

Instruction class i A B C
CPI for class 1 2 3
IC in sequence 1 2 1 2
IC in sequence 2 4 1 1

풀이

이 문제는 명령어 유형마다 실행시간이 다르므로, 이를 반영해서 sequence 각각의 평균 CPI를 구하는 문제입니다.

  • Sequence 1

    • total IC( 총 명령어 개수 ): 5

    • clock cycles

      = 2 * 1 + 1 * 2 + 2 * 3 ==> 10
    • Avg. CPI = 10 / 5 = 2.0

  • Sequence 2

    • total IC: 6

    • clock cycles

      = 4 * 1 + 1 * 2 + 1 * 3 ==> 9
    • Avg. CPI = 9 / 6 = 1.5

Sequence 2는 수행해야 할 명령의 수가 6이라 sequence 1보다 더 많지만 수행 시간은 9만큼 걸려 sequence 1보다 Sequence 2는 더 빨리 실행됨을 볼 수 있습니다.

정리

CPU time = CPU clock cycle / clock rate

CPU time = Instruction count * CPI * clock cycle time

Avg. CPI = clock cycle들의 합 / Instruction count

성능을 측정하기 위한 3가지 요소

  1. clock rate
  2. instruction count
  3. 명령어 유형마다의 CPI 자료들

문제들

http://www.cse.cuhk.edu.hk/~byu/CENG3420/2018Spring/slides/L04-quiz-sol.pdf


Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby