프로그래밍[Univ]/아키텍처

[Architecture] 컴퓨터 성능 평가

Cloud Travel 2013. 5. 11. 20:54

* 컴퓨터 성능 평가

 - 컴퓨터의 성능을 평가하는 일은 단순하지 않다.

 - 보는 시점에 따라 다양한 결과가 나올 수 있다.

 - 응답시간(실행시간), 처리량, ... 등 다양한 시점이 존재한다.


* 성능향상 1 : 처리량 and 응답시간

 - 실행시간이나 처리량이 변화하면 다른 쪽에도 영향을 미친다.

 Case 1) Processor를 빠르게 업그레이드 한다. > 응답시간이 단축되고 이로인해 처리량도 증가한다.

 Case 2) 시스템 Processor를 하나더 추가한다. > 처리량이 증가하게 되고, 이로인해 응답시간이 감소한다.


* 성능형상 2 : 상대적인 성능

 Performance ∝ 1 / Execution Time

 - 성능은 실행시간과 반비례한다. ( 실행시간이 작을 수록 성능은 좋다.)

 - 같은 프로그램에서 A컴퓨터 실행시간이 10초, B컴퓨터 실행시간이 20초라면 A는 B보다 2배 성능이 좋다

 - A컴퓨터가 B보다 성능이 3배좋다고 한다. B컴퓨터에서 실행시간이 18초인 프로그램이 A컴퓨터에서는 몇초에 돌아가는가?

  > 18/3 = 6초


* CPU 성능을 결정하는 요인

 - CPU_Time   = CPU_clock_cycles * Clock_cycle_time

                     = 클럭의 사이클 수 * 클락덩 소유 시간

   = CPU_clock_cycles / Clock_rate

   = 클럭의 사이클 수 / 각 클럭이 진동하는 비율(주파수)

 - CPU_Time(=CPU_Execution_Time) = User CPU time + System CPU time

     = 프로그램 실행시간 + OS의 환경 조성시간


* CPU 향상 1 : 성능의 개선

 - 컴퓨터 A : 4GHz 클럭, 프로그램 실행시간 = 10초, 프로그램 실행시간이 6초가 되도록 컴퓨터 B를 설계하라.

  > 단, 클럭속도는 무한정 빨라질 수 있지만, 이로인해 컴퓨터B는 컴퓨터A보다 1.2배 많은 클럭을 필요하게 된다.

  > COM A : 10 = CPU_CLOCK_CYCLE / 4GHz     CPU_CLOCK_CYCLE = 40

  > COM B :   6 = 40 * 1.2 / x             x = 8, 따라서 컴퓨터 B의 클럭을 8GHz로 증가시킨다.

 - 위 예를 통해서 CPU속도가 2배 빨라진다고 하더라도 속도가 2배빨리지는 것이 아님을 알 수 있다.


* CPI ( Clock cycles per instruction )

 - 위 식에서는 명령의 수에 관한 사항이 포함되있지 않아 제대로된 성능 평가가 안됬다.

 - CPI : 명령당 필요한 클럭수/평균 사이클 수를 의미한다.


* CPU 향상 2 : 성능식 사용

 - 컴퓨터A : Clock_cycle_time = 250ps / CPI = 2.0

 - 컴퓨터B : Clock_cycle_time = 500ps / CPI = 1.2

  ※ 주기가 증가하면 그 주기에 할 수 있는 Instruction 수가 증가흐는 것을 의미한다.

 - 어느 것이 더 빠른 컴퓨터인가?
  Step 1) A와 B에서 돌리는 프로그램의 Instruction 수를 I로 동일하다고 가정한다.

  Step 2) Time = I * CPI * clock_cycle_time

   Ta = I * 2.0 * 250 = 500I

   Tb = I * 1.5 * 500 = 600I

  Step 3) 결론

   > Ta가 Tb보다 1.2배 빠르다고 할 수 있다.

 - CPI와 clock_cycle_time은 서로 연관되있으므로 어느 것이 높거나 작다고 좋다고 할 수 없다.


* CPI 계속

 - CPU 성능을 결정하는 기본요수

  > CPU time for a program

  > Instruction count

  > CPI

  > Clock cycle time

 - Time = I * CPI * Clock_Cycle_time = Seconds/Program

 - CPU_clock_cycle = SUM(CPI[i] * C[i])

  > C[i]는 CPI[i]가 몇번 반복하는가를 카운팅

  > CPI[i]와 C[i]는 서로 반비례 관계에 있다.

  > 많이 사용되는 것일 수록 CPI를 줄어 최적화 시킨다. (RISK의 관점)


* CPU 성능비고 3 : 컴파일러의 개입

 - 명령 형태가 A,B,C로 존재하며, 각 명령당  CPI는 각각 1,2,ㄱ이다.

 - 고급언어로 작성된 프로그램을 컴파일러 1과 2를 이용하여 코드 시퀀스를 생성하였다.

  Compiler 1 > A : 2 , B : 1 , C : 2

  Compiler 2 > A : 4 , B : 1 , C : 1

  현재의 판단, 총 사용되는 명령어의 수는 각각 5와 6으로 컴파일러 1에의한 것이 작다.(1이 더좋다)

 - CPU Clock수를 계산해 보자.

  Compiler 1 > 2*1 + 1*2 + 2*3 = 10

  Compiler 2 > 4*1 + 1*2 + 1*3 = 9

  현재의 판단, cycle이 적은 것이 실행시간도 적게 들기 때문에 컴파일러 2가 더좋다고 할 수 있다.

 - 각 컴파일러에서의 CPI를 계산해보자 ( Clock수 / 명령수 )

  Compiler 1 > 10 / 5 = 2

  Compiler 2 > 9 / 6 = 1.5

  현재의 판단, 명령당 소요되는 클락수가 컴파일러 2가 적기때문에 2가 더좋다.

 -  CPI는 명령 배합에 따라 다르므로, 클럭 속도가 같다하더라도 명령 개수와 CPI는 반드시 비교해야한다.


* CPU 성능 비교 4 : 여러프로그램 비교

 - 두 개의 프로그램 1과 2가 있다.

 - 컴퓨터 A는 프로그램 1을 2초, 프로그램 2를 4초에 실행한다.

 - 컴퓨터 B는 프로그램 1을 5초, 프로그램 2를 2초에 실행한다.

 - 이 경우에는 한가지의 단서가 더필요하게 된다.

  > 어느 비율로 A와 B가 사용되는가?

  > 각 비율에 따라 가중 산술을 적용하여 산출한다.


* 성능에 요인을 주는 것

 1) 명령어의 수 ( 명령어의 수가 적으면 명령당 하는일이 증가하고, CPI도 증가하게 된다.)

 2) Clock Cycle Time을 적게한다.

 3) CPI를 낮춘다(핵심)


* MIPS (Million Instruction Per Second)

 - 시간당 몇개의 명령어가 수행되는가?
 - MIPS는 성능을 제대로 반영하지 못한다.

 - 사용하는 컴파일러에 따라도 다르게 나올 수 있다.