전공/컴퓨터 구조

5. CPI 계산과 CPU time 구하기

문정훈 2021. 12. 27. 12:16

1) 프로그램 A를 실행 했을 때, CPI는 얼마인가?

Performance

컴퓨터를 사용하는 사용자 입장에서는 작업을 시작하고 종료하기 까지의 시간 (response time)이 중요할 것입니다. 이런 관점에서 Performance를 논할 때 이와 관련된 척도를 정리해야합니다.

 

성능의 척도

clock cycle

컴퓨터는 하드웨어적으로 명령어의 이벤트가 발생되는 시점을 결정하는데 이것을 clock 신호라 합니다. clock cycle 이란 일정한 속도를 가지고 동작하는 프로세스의 clock의 한 주기동안의 시간을 의미합니다.

 

clock period

clock 주기란 clock 사이클에서 한 주기가 도는데 걸리는 시간을 의미하며 이는 clock frequency(clock speed)와 역수 관계입니다.

 

CPI(Cycles Per Instruction) ?

프로그램이 있으면 그 프로그램의 한 명령어를 수행하는데 걸리는 평균 clock cycles 수를 CPI(Cycles Per Instruction) 라 합니다.

프로그램을 실행하는데 한 명령어당 clock cycle의 개수가 있을 것입니다. 전체 명령어를 실행하는데는 (각 명령어)*(각 명령어의 clock cycle의 수)로 생각할 수 있습니다.

이것을 정리해보면

CPU clock cycle의 수 = 명령어의 수 * 명령어 당 clock cycle의 수로 생각할 수 있습니다.

따라서 아래의 CPI를 구하는 공식이 됩니다.

 

CPI 구하는 방법

 

 

CPI 구하기

 

 

2) CPU Clock Frequency1.5 GHz일 때, 프로그램 ACPU time은 얼마인가?

CPU time이란?

시스템 전체의 시간 측정에는 Elapsed time개념이 사용됩니다. 이 개념은

I/O 작업 시간, CPU의 작업 시간, OS overhead 시간, 등 모든 내용이 고려되는 개념입니다.

 

그 중 CPU time이라는 것은 CPU에서 일을 처리하는데 걸리는 시간을 뜻합니다.

하지만 CPU time의 순수한 성능 측정이 어렵습니다.

그 이유는 총 응답시간에 CPU가 다른 작업을 같이하고 있는 간섭이 있을 수 있기 때문에 이는 응답 시간을 느리게 만들고 CPU의 성능을 감소시키는 원인이 됩니다.

따라서 정밀한 CPU time을 측정하는 것은 힘든일입니다.

 

CPU time 구하는 방법

CPU time을 구하는 방법은 만약 프로그램의 전체 명령어의 개수가 n개라고 가정하고 각 명령어는 10cycle을 가진다고 가정하겠습니다. 그리고 CPU1GHz의 속도로 명령어를 수행한다고 가정할 때, CPU time을 구하는 방법은 n개의 명령어는 10n이라는 cycle을 필요로 하게 됩니다. 그리고 이 10n이라는 프로그램 전체 명령어의 전체 cycle수에다가 한 cycle을 처리하는데 걸리는 시간을 곱해주게 되면 CPU time을 구할 수 있습니다.

이 말을 공식으로 나타내면 아래와 같습니다.

 

CPU time 구하는 공식

CPU Time = CPU Clock Cycles * Clock Cycle Time

위 공식을 좀더 자세히 나타내면 CPU Clock Cycles란 전체 명령어를 처리하는데 필요한 cycle의 개수를 의미하는데 이 값은 Instrunction count * CPI가 됩니다. 따라서

 

CPU Time = instrunction count * CPI * Clock cycles TIme입니다.

Clock RateClock cycles Time의 역수 이므로

 

CPU Time = instrunction count * CPI / Clock Rate 입니다.

 

 

CPU time 구하기

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

8. Pipeline이란  (0) 2021.12.27
7. Pipeline에서 데이터 처리  (0) 2021.12.27
6. Processor Design  (0) 2021.10.29
4. Calling Convention(Caller-save, Callee-save, Hybrid)  (0) 2021.10.07
3. MIPS 문법 정리  (0) 2021.10.07