#컴퓨터의 성능은 어떻게 정의될까
용어 정리부터 해보자
response time(execution time) : the total time required for the computer to complete a task
throughput(bandwidth) : measure of performance, the number of tasks completed per unit time
당연하게도 execution time 이 짧을수록 성능이 좋고 성능 performance를 다음과 같이 정의할 수 있다.

하지만 processor 은 하나의 task만 수행하지 않고 여러 task를 나눠서 수행하기도 하고 execution time 자체가 I/O, OS overhead, memory access time등을 포함한다. 따라서 위와 같이 하나의 프로그램이 수행되기 까지의 elapsed time으로 성능측정을 하기에 문제가 있다.
CPU execution time(CPU time) : the actual time the CPU spends computing for a specific task
즉 I/O나 다른 프로그램을 돌리는데 걸리는 시간을 제외한 실제 소비한 시간만을 말한다.
그렇다면 CPU execution time은 어떻게 구할까


영어로 되있어서 어려워 보일 수 있지만 사실 당연한 식이다.
프로그램 수행시간 동안 clock 이 뛴 횟수 : x (tick)
1 tick 당 걸리는 시간 : y (msec / tick) (단위는 주어지면 계산하면 된다)
위와 같은 상황이면 프로그램을 수행하는데 걸리는 시간은 x*y (msec) 가 된다.
clock rate은 clock cycle time 의 역수이니 아래의 식은 당연히 성립한다.
예제를 풀어보면 금방 감이 온다!
그렇다면 저 program은 무엇일까
program은 명령어들의 집합이다.
따라서 program을 수행하는데 걸리는 시간은 program을 이루는 Instructions 들을 수행하는데 걸리는 시간과 같고 다음과 같은 식을 생각할 수 있다.

여기서 average clock cycle인 이유는 instruction마다 수행시간이 다르기 때문이다. 이 average clock cycle per instruction을 CPI 라고도 한다.
CPI(clock cycles per instruction) : average number of clock cycles per instruction
정리해보면 저번 포스팅의 CPU execution time은 CPI로 표현이 될 수 있다는 것이다.

변형하고 응용해서 시험에 내기 딱 좋기 때문에 중간고사를 준비중인 학생은 여러 예제를 풀어보자.

댓글 없음:
댓글 쓰기