컴구 lecture note #03

2022. 9. 18. 23:30컴퓨터 구조

728x90

👹 CPU 성능 측정

clock rate의 값은 HW와 관련

clock cycles의 개수를 계산할 수 있는 방법은?

 

CPU 성능의 측정에는 여러 가지 요인이 존재한다.
성능을 측정하는 요인에는 어떤것이 있을까?

 

1. 실행되는 프로그램의 사이클 수
2. 프로그램의 명령의 개수
3. 초당 사이클 수(Clock rate)
4. 명령(instruction) 당 사이클수의 평균 개수
5. 초당 명령의 평균 개수

 

위 요소들 중 성능 비교가 가능하게 하는 요인은 무엇일까? 잠시 생각해보자.

정답을 먼저 말하자면 위 5개의 요소 전부 성능을 비교하는 요소로서 적합하지 않다. 하나씩 이유를 살펴보자.

 

1번. 프로그램의 사이클 수 
Q. A라는 프로그램은 사이클이 100만 개고 B라는 프로그램의 사이클은 200만 개라고 할 때 어떤 것이 더 우수한 성능일까? 당연히 사이클 수가 적은 A일까? 
A. 아니다. 우리는 사이클의 개수만 알뿐 1cycle에 걸리는 시간을 알지 못한다. 그러므로 비교할 수가 없다.

 

2번. 프로그램의 명령 개수
Q. A라는 프로그램의 instruction은 1000개, B의 instruction은 2000개 일 때 어떤 것이 더 우수할까?
A. 이것역시 instruction이 적다고 성능이 우수할 것이라 단정할 수 없다. 1 instruction에 걸리는 시간을 모르기 때문이다.

 

3번. clock rate
Q. A의 clock rate는 4 GHz이고 B는 3 GHz일 때 우수한 것은?
A. clock rate는 단순히 cycles per second를 의미한다. 우리는 프로그램의 연산의 개수를 모르고, 하나의 연산에 걸리는 cycle을 모르기 때문에 측정이 불가능하다.

 

4번. 명령 당 사이클수의 평균 개수
instruction당 cycle의 수를 알더라도 우리는 연산의 개수를 모르고 1사이클에 걸리는 시간을 모르므로 측정할 수 없다.

 

5번. 
초당 실행되는 연산의 개수를 알지라도, 우리는 연산의 개수를 모르므로 비교가 불가능하다. (CPU마다 컴파일하여 얻는 연산의 개수가 다르다.)

 

결국 CPU의 성능을 결정짓는 요소는 execution time(실행 시간)임을 알 수 있다.

 

틀린 식

cpu time은 machine instructions 개수와 관련 있다. 

그런데 위 식이 성립하지 않는 이유는??

 

- 같은 instruction을 처리할지라도 컴퓨터(machines)에 따라 시간이 달라진다.

(명령어 개수(instruction count)가 같더라도)

x 컴퓨터 에서의 clock cycle  !=  y 컴퓨터에서의 clock cycle

 

- instructions에 따라 clock cycles 수도 달라진다. (같은 컴퓨터일지라도 프로그램에 따라 다름.)

(명령어 개수(instruction count)가 같더라도)

x컴퓨터에서의  A 프로그램 실행시간  != x컴퓨터에서의 B프로그램 실행시간

 

👹 CPI (Clock Cycle Per Instruction)

- 명령어 당  clock cycle 수

- CPU에 의해 결정되며 Average CPI는 instruction의 조합에 따라 다르게 나타난다.

👹 CPI는 어떻게 측정할 수 있을까?

따라서 Average CPI를 계산하기 위해서는 instruction의 종류와 cycle 수만으로는 알 수 없다.

Average CPI를 계산하기 위해서는 프로그램 명령의 종류, 실행 횟수 등을 알아야 한다.

 

👹 CPI 예제 1

A컴퓨터의 Cycle time(clock period)은 250ps이며 CPI는 2.0이다.
B컴퓨터의 Cycle time(clock period)은 500ps이며 CPI는 1.2이다.

프로그램이 같다고 할 때 A와 B 중 어떤 컴퓨터가 더 빠를까? 그리고 얼마나 빠를까?

 

 

 

👹 CPI 예제 2

  • which code sequence executes more instructions?  I.C1(5) < I.C 2(6)
  • What is the CPI for each sequence?  CPI1 = 2 ,  CPI2 = 1.5
  • Which will be faster?      CPU time1 = 10t, CPU time2 = 9t  -> code sequence2가 더 빠르다.

똑같은 컴퓨터에서 똑같은 HLL로 컴파일한 코드이다. A, B, C의 클래스를 각각 다른 연산이라고 생각하고 보자.
sequence 1과 2에서 어떠한 연산이 가장 많이 수행되며, 가장 빠를까?

 

먼저 sequence1에서의 Total instruction count는 5이며 sequence2에서의 total I.C는 6이다.
연산 자체로만 보면 sequence2가 1보다 많다.

 

연산별 CPI를 보자. A는 1, B는 2, C는 3이다. 우리는 I.C와 CPI를 알기에 Clock cycle를 계산할 수 있다.

 

sequence1의 clock cycle : 1*2 + 2*1 + 3*2  = 2+2+6 = 10

sequence2의 clock cycle : 1*4 + 2*1 + 3*1 = 4 + 2 + 3 = 9
sequence1은 10, sequence2는 9이다 sequence1의 clock cycles이 더 많음을 볼 수 있다.

 

따라서 연산의 개수는 sequence2가 더 많았지만 clock cycles는 더 작으므로 실제 속도는 sequence2가 더 빠름을 알 수 있다.(clock rate가 같다는 조건)

 

CPU Time = Instruction count * CPI * Clock period

 

👹 Benchmark 

- 컴퓨터 성능 측정도구

performance A = 1

performanceB = 2

'컴퓨터 구조' 카테고리의 다른 글

컴퓨터 구 lecture note #06  (0) 2022.10.09
컴퓨터 구조 lecture note #05  (0) 2022.10.06
컴구 Lecture Note #04  (1) 2022.10.02
컴구 lecture note #02  (2) 2022.09.08