#1. CPU time 과 CPI에 대해서, CPU의 성능측정 척도

컴퓨터구조론 2023. 11. 16. 17:07
반응형

대학원 과정에 진학하기 위해 준비과정으로, 컴퓨터 구조론 복습을 한다. 블로그에 올리는 내용은 내가 보기 쉬운 정도로만 적을 예정이라, 공부가 다 끝나고 나면 다시 정리하는 방식으로 적어보도록 하겠다. 중요한 부분들만 빠르게 정리 하면서 넘어갈 것이라, 정보를 찾는 분들에게는 도움이 되지 않는 글일 수 있겠다.

그럼 시작해본다.

1. CPU Time : CPU가 일을 처리하는데 걸리는 시간


CPU Time이란, 주어진 일을 처리하는 데 걸리는 시간

CPU time  = CPU Clock Cycles * CPU Clock Time = CPU Clock Cycles / Clock Rate

CPU Time은 결국, 일을 처리하는데 몇 클럭 (CPU Clock Cycles)이 소모되며, 한 클럭은 몇 초 간격 (CPU Clock Time) 인지의 곱으로 나타내어 진다.

이렇게 식으로 보았을 때에는 잘 와닿지 않는다, 예시를 통해서 생각해보자

A라는 컴퓨터의 클럭이 2Ghz 이고, cpu time은 10초라고 이야기해보자.

즉, 일을 처리하는데 10초가 걸린다는 의미이며, 1초에 2Ghz이니, 10초면 20Giga의 클럭이 일을 처리하는데 필요한 것이다.

이 컴퓨터보다 더 성능이 좋은 B 컴퓨터를 디자인 하기 위해 목표를 잡는다.

B컴퓨터는 cpu time이 6초가 되도록 셋팅해야한다. 그렇다면 클럭을 더 높일 수 있지만, 클럭을 높이게 되면 clock cycle수가 1.2배가 된다고 가정하자. 이 상황에서 B컴퓨터의 클럭은 어떻게 설정해야 할까?

A 컴퓨터의 cpu Time : 10초 = CPU Clock Cycles / Clock Rate = CPU Clock Cycles / (2*10^9) 이고

B 컴퓨터의 cpu Time : 6초 = 1.2 * CPU Clock Cycles / Clock Rate 가 된다.

식을 Clock rate에 대해서 정리하면

 A : 2Ghz = CPU Clock Cycles / 10

B : X ghz = 1.2 * CPU Clock Cycles / 6

X = 4ghz 가 된다.

간단한 산수이다.  그렇다면, 컴퓨터의 성능을 높이는 방법은 어떤 것이 있을까, 식을 기반으로 보면 , CPU Clock Cycle 수를 줄이던지, Clock rate를 높이던지 둘중 한가지를 해야한다.

하지만, Clock rate의 경우 제품이 만들어지고 나면 이미 정해진 값이기에, CPU Clock Cycle 수를 줄이는 것이 더 효과적이다. 그럼 Clock Cycle은 어떻게 구성될까?

2. Clock Cycle 


Clock Cycles = Instruction Count * Cycles per Instruction(CPI)

일을 처리하는데 필요한 Clock cycle의 개수는 명령어 개수와 1 명령어당 걸리는 Clock cycle의 곱으로 이루어진다. 

쉽게 이야기하면 어떤 일을 하는데 10개의 명령어가 필요하고, 1명령어당 10개의 Clock Cycle이 필요하다면, 총 100 Clock cycle이 필요한 것이다.

그럼 위의 CPU Time 식에서 이를 적용하면

CPU time  = CPU Clock Cycles * CPU Clock Time

                  = Instruction Count * Cycles per Instruction(CPI) * Clock cycle Time 

 이 된다. 앞으로 명령어당 Clock 개수는 CPI라고 하며 , 앞으로 중요한 지표가 된다.

하나의 예시를 보자

A 컴퓨터는 cycle time = 250ps 이고, cpi는 2.0이다.

B 컴퓨터는 cycle time = 500ps 이고, cpi는 1.2이다.

어떤 컴퓨터가 더 좋은 컴퓨터인가? 

A컴퓨터는 cpi가 2 이므로, 1개의 명령어를 처리하는데 2 cycle = 250ps*2 = 500ps 가 걸리고

B컴퓨터는 cpi가 1.2 이므로, 1개의 명령어를 처리하는데 1.2 cycle = 500ps*1.2 = 600ps 가 걸리므로

A 컴퓨터가 B 컴퓨터보다 1.2배 빠른 것이다.

cpu에서는 여러개의 명령어가 계속해서 처리되므로, 결국 명령어마다의 cpi가 있을 것이고, 그에 따라 cpu time이 달라지게 된다.

3. MIPS(Millions of Instructions Per Seconds)


나중에 MIPS 아키텍쳐가 나오긴 하지만, 여기선 그 의미가 아니다. MIPS라는 하나의 측정단위가 있다고 생각하자.

MIPS = Instruction count / (Execution time * 10^6) 에 해당하는데,

1초에 얼마나 많은 명령어수를 처리하는지 측정하는 단위가 된다. 여기서는 이런 단위가 있다는 것만 알고 넘어가자

 

이번 글에서는 CPU의 성능 측정에 관한 단위들에 대해서 알아보았다. 물론 수학적 계산이 간단하게 들어가긴 하지만, 가장 중요한 점은 결국 얼마나 빠르게 명령어들을 처리할 것인가에 달려 있는 것이다. 그 방법으로 물리적인 클럭스피드를 올리는 방법도 있지만, 명령어를 더 적은 클럭으로 처리하는 것 역시 성능향상에 중요한 부분이 되며 그것이 바로 컴퓨터 아키텍쳐의 설계에 따라 달라지는 것이 되겠다.

물론 이외에도 가격이나, 전력등의 요소들이 있겠지만, 컴퓨터 구조론에서 다루는 것은 결국 컴퓨터 아키텍쳐, 어떻게 명령어를 처리할 것인가에 대해 다루는 것이기 때문에 초점을 잘 맞추어보길 바란다.

 

 

 

 

 

 

 

반응형