클락 사이클의 개수는 결국, 각각의 Instruction의 개수와 그 Instruction 한 개를 실행하는데 걸리는 CPI 를 곱한 것의 합이다. 다시 말해, add 명령어가 100개가 있고, add 명령어 한 개를 처리하는데 하나의 클락 사이클이 필요하다. 또 multiply 명령어가 200개가 있고, multiply 명령어 한 개를 처리하는데 두 개의 클락 사이클이 필요하다. 그럼, 결국 필요한 클락 사이클의 개수는, 100 * 1 + 200 * 2 = 500 개 이다.
그럼 이제 평균 CPI를 구해 보자.
예제를 풀어보며 개념을 다지자. 지금 A 인스트럭션 하나를 처리하는데 필요한 CPI 가 1개, B instruction 하나를 처리하는데 필요한 cpi 가 2개, C 인스트럭션 하나를 처리하는데 필요한 cpi 가 3개이다. 이때, 1번 코드의 경우, A가 2번, B가 1번, C가 2번이 있다.
그럼, 평균 CPI 는 얼마가 될까?
2번 코드의 경우, A가 4번, B가 1번, C가 1번 실행이 된다.
그럼 결과적으로 1번 코드의 총 클락 사이클의 개수가 더 많으니 오히려 인스트럭션의 총 개수가 적은 1번의 실행 시간이 더 많이 걸린다는 것을 확인할 수 있다. 즉 인스트럭션의 개수가 적다고 무조건 실행 시간도 더 적다는 보장은 없다.
결국 퍼포먼스 === 시간!!
시간이라는 거는 한 프로그램을 실행할 때 걸리는 시간을 의미하는 것이니까, 이는 다시 Seconds / Program 으로 쓸 수 있고, Seconds 를 CPI 등 이용해서 다시 풀어서 써 보면,
퍼포먼스의 성능은
이렇게 4가지에 의해 영향을 받는다.