Computer Architecture

Performance (클럭 사이클, CPU time)

여의도비 2021. 5. 3. 22:40

--- 공부하는 내용을 정리하는 글입니다!----

 

Performance를 정의할 때 두 가지 방식을 생각해 볼 수 있다.

 

 1. Response time (or execution time)

 - 하나의 작업을 완료하기 위해 소요되는 시간

 - 단일 사용자 데스크톱 performance 측정에 유용

 

 High Performance == Fast Response Time 이면,

 

 Performance = 1 / Response Time으로 설정할 수 있다.

 (소요시간이 적어질 수록 분모가 적어지기 때문에 performance의 값을 증가한다.)

 

 예시)

 Performance X는 10 초 소요, Performance Y는 100초를 소요할 때 각자의 값을 비교하면,

 Performance X = 1 / 10  (0.1)

 Performance Y = 1 / 100 (0.01)

 따라서 Performance X > Performance Y

 

 심화)

 더 나아가서 우리는 Performance X / Performance Y를 하여 몇 배 더 빠른지 확인할 수 있다.

  1) 0.1 / 0.01 = 0.1 * 100 (10배)

 

 Performance X는 Performance Y보다 10배 빠르다고 할 수 있다.

 

 2. Throughput (or bandwidth)

 - 주어진 시간에서 완료할 수 있는 총 작업량

 - 서버나, WSC 등 다양한 작업을 동시에 진행하는 경우 유리하다.

 

그러나 과연 총 소요시간(wall clock time)이 정확하게 Performance를 측정할 수 있는가?

 - single-user PC에서도 다양한 작업을 동시에 수행하는 경우가 빈번하다.

 - 따라서 소요시간과 CPU가 작업에 소요한 시간을 구분하여 주는 것이 중요하다.

 

CPU Execution time (or CPU time)

 - CPU가 I/O 대기와 다른 작업에 소요한 시간을 제외하고 우리가 원하는 작업을 진행하는데 소요한 시간

 - CPU time은 1) User CPU time: 프로그램을 돌리는데 소요된 시간

                         2) System CPU time: OS서 소요된 시간

 

프로세서는 클럭 신호를 기반으로 작동한다.

 

클럭 주기 (Clock period/cycle)를 완료하는데 걸리는 시간으로 성능을 측정할 수 있는 방식도 존재한다.

 예시) 1-GHz 클럭에서는 클럭 주기를 완료하는데 1ns(nano second)가 소요된다.

         4-GHz 클럭에서는 클럭주기를 완료하는데 250ps(pico second)가 소요된다.

----- Clock Rate, Clock Cycle Time 설명 추가----

 

클럭에 대한 정확한 개념을 공부한 적이 없어서 가볍게 설명을 추가한다.

 

컴퓨터에서 클럭 시그널이란 0에서 1로 논리신호가 바뀌는 형태를 이야기한다. 여기서 Clocy Cycle Time이란 신호가 1신호로 바뀌는 지점에서 다음 1신호까지 도달하는데 걸리는 시간으로 볼 수 있다.

1-GHz 클럭은 1초에 10^9 만큼의 Clock Cycle이 만들어진다. 이에 따라 1번의 클럭사이클이 도는데 소요되는 시간은 1/10^9 초로 볼수 있다. 

따라서 Clock Cycle Time = 1/Clock Rate 이 되는 것이다.

 

---------------------

 

 

클럭 주기 예제 풀어보기

 1) 2-GHz에서 프로그램을 실행하는데 10초가 소요되었다. 클럭 사이클을 계산하시오

  - 먼저 CPU time을 구하는 공식을 알아보자! 

     CPUtime = CPU clock cycles / Clock rate

     CPU clock rate 은 먼저 2-GHz에서 구할 수 있다. ( 2 GHz = 2000 MHz = 2 * 10^9 Hz)

     이후 소요시간과 사이클을 넣어서 계산하게 되면

     10 = CPU clock cycles / (2 * 10^9)

     Clock clock cycles = 10 * 2* 10^9 = 20 * 10^9 (cycles)