컴퓨터(Computer Science)/컴퓨터구조(Computer Arichitecture)

CPU의 성능 비교, 측정 [컴퓨터구조]

게임이 더 좋아 2020. 3. 19. 10:47
반응형
728x170

이제는 프로세서에 대해서 알아보자

CPU, Central Processor Unit의 약자다.

 

CPU의 칩 생산자의 최강자인 AMD와 INTEL을 볼까??

AMD를 앞에 놓은 것은.. 그냥 놨다.

 

미안하다 이거보여주려고 어그로끌었다.

 

Intel의 펜티엄

 

AMD의 바르셀로나

 

 


 

CPU는 3가지 구성요소로 구성되어 있다.

1. Datapath -> 실제로 데이터를 가지고 연산을 수행

2. Control - 각각의 CPU의 컴포넌트들을 제어함

3. Cache Memory

**(이건 우리가 알고 있는 그 캐시가 맞다) SRAM임

 


 

 

컴퓨터의 성능을 알 수 있는 2가지 지표가 있다.

 

사용자에 따라 중요한 지표가 있다.

 

1. Response Time(응답시간)

2. Throughput(처리량)

 

1. 작업의 시작부터 완료까지 걸리는 시간 -> 일반적으로 개인 사용자는 이 지표를 본다.

2. 주어진 시간안에 할 수 있는 총량 -> 일반적으로 서버컴퓨터 같은 처리량이 많을 때 본다.

 

용어를 더 보자면

 

3. 실행시간(Execution Time)

4. 대역폭(Bandwidth)

 

 

응답시간과 실행시간을 성능에서 정의하자면

응답시간은컴퓨터가 Task 를 완료하기까지의 총 소요 시간이다.

디스크 접근, 메모리 접근, 입출력 작업, 운영체제, 오버헤드 CPU시간을 다 포함시킨다.

 

실행시간CPU가 task를 수행할 때 연산하는 시간이다.

순수 CPU가 연산하는 시간만 따지는 것이다.

**I/O나 대기시간에 대해서는 포함되지 않는다.

 

 

 

처리량과 대역폭을 성능에서 정의하자면

단위시간당 완료하는 Task의 수를 나타내는 다른 성능 척도이다.

 

즉, 응답 시간은 System Perfomance가 되겠고

CPU 실행시간이 바로 CPU Performance가 되겠다.

 

 

 

결국 성능이란??

아래와 같다.

 

 


 

 

아니 그렇다면 컴퓨터 성능을 결정하는 것은 CPU excution time, CPU time인데 

CPU time은 어떻게 구해??

 

CPU가 작동하는 원리를 알면 작동 시간을 알 수 있겠다.

 

 

그렇다면CPU가 어떻게 작동하는가? 

 

프로그램은  프로세서의 이벤트, 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용해서 실행을 하는데

이 간격을 Clock cycle이라고 한다.

 

즉,  CPU에서 operation 을 수행하기 위해서 Clock을 돌려야 한다는 말이다.

 

 

우리가 CPU를 살 때 많이 보는 클럭속도가 바로 이 클럭이다.

 

Clock period는 1클럭 당 시간

Clock frequency는 1초당 클럭

**서로 역수관계에 있다.

 

 

 

4 GHz를 가지고 있다면 1클럭은 저만큼의 시간에 작동한다는 말이다.

 

 

클럭은 rising edge와 falling edge 2개로 구성되어 있다.

 

 


 

 

결국 다시 성능을 비교해보자면..?

즉, CPU time을 계산하자.

소요된 클럭 * 1클럭 당 걸리는 시간을 연산하면 나온다.

 

 

즉, CPU time을 최소화 하고 싶다면

Clock Cycle을 줄이던가.. Clock Rate를 늘리던가 해야한다. 

둘다 trade-off 관계에 있다.

 

다시 말하면

CPU의 실행시간은 cycle의 길이와 cycle이 걸리는 시간에 의해서 결정된다.

 

문제 한 번 풀어보자

 

 

컴퓨터 B가 얼마나 빨라야 CPU time이 6초가 될까?

 

 

컴퓨터 B가 4GHz의 클럭 속도를 가지고 있어야 가능하다고 한다.

 

 


 

중요한 것이 또 있다.

CPU가 수행하는 모든 Instruction이 같다면 괜찮겠지만 다르다!!

-> Instruction마다 클럭의 소모되는 정도가 다르다는 말이다.

 

Instruction이 각각 다르기 때문에 CPI라는 개념으로 성능을 측정하기로 한다.

 

즉, 필요한 Clock Cycles의 수는

IC(총 필요한 Instruction) * (해당 Instruction을 수행하는데 필요한 평균 Clock 수)

바로 아래와 같은 식이 나온다.

 

 

 

IC는 다시 말해서 해당 프로그램에 필요한 Instruction 수이다.

실행하려는 프로그램, ISA나 컴파일러에 의해 달라질 수 있다.

-> 다른 프로그램 실행 또는  컴파일러를 사용 또는 다른 ISA를 가지고 있으면서 성능을 비교하는 것은 말도 안된다.

-> 같은 프로그램, 같은 컴파일러, 같은 ISA를 가지고 있어야 성능이 비교가 가능하다.

 

CPI는 해당 Instruction에 Cycle이 얼마나 필요한가를 평균낸 것이다.

당연히 CPU 하드웨어에 따라 달라지고

Instruction이 달라지면 CPI도 달라지기 때문에 평균으로 계산하는 것이다.

 

 

 

**사실 조금 CPI는 아래처럼 구하기도 한다. 자세히 알 필요는 없고 알고 넘어는 가자.

 

 

또한  CPU time의 식에 위의 식을 치환해본다면

CPU Time을 구할 수 있다.

 

 

 

문제를 풀어보자

 

 

이제는 성능을 절대적으로 측정할 수 있다. (그러나 거의 모든 성능은 상대적으로 평가한다)

 

 

 

 


 

문제를 하나 더 풀어보자

 

 

위에서 CPU Time 구하는 식을 알아보았다.

바로 이용하면 된다.

 

 

 


 

 

그렇다면 마지막으로 CPU Time에 영향을 미칠 수 있는 요소는 무엇일까??

알아보고 마치도록 하자

알고리즘에 따라 IC가 바뀔 수 있고

프로그래밍 언어에 따라 IC와 CPI가 바뀔 수 있다.컴파일러도 그렇고ISA도 그렇다.

 

 


 

 

문제를 풀어보자

 

1번 질문에 대한 답은 37.5% 성능 향상 

Load의 성능이 좋아져서 CPI가 2가됨

 

2번  10% 성능향상Branch의 성능이 좋아져서 CPI가 1이됨

 

3번 11.8% 성능 향상ALU의 성능이 좋아져서 CPI 가 0.5가 됨

 

위의 문제를 보면점유율에 따라 성능향상이 달라지는 것을 볼 수 있다.Make Commom case Fast의 뜻이 이해가 가길 바란다.

 

 


 

 

마지막으로 CPU의  극한의 성능을 끌어내려면 

최상의 알고리즘과 Low Level에 가까운 언어와 좋은 컴파일러를 가지고 ISA 설계를 잘한 하드웨어를 이용하면 되겠다.

 

 

728x90
반응형
그리드형