수행시간이 길면 퍼포먼스가 나쁜 것임
elapsed time
: 전체 응답 시간을 말함. processing, 입출력, os 오버헤드 다 더한 것
cpu time ✅
: 주어진 특정 job을 수행하는데 걸린 시간. 다른 일은 무시하고 딱 'cpu'에 걸리는 시간만 측정
우리는 CPU time === execution time
clock cycle : 특정 타임에서 위로 갔다가 내려가는 것을 반복. cycle동안 instruction을 가져오거나 메모리에 접근하는 등의 일을 함
clock period : 컴퓨터 cpu안 clock의 하나의 cycle을 마무리하는 시간 (rising - rising)
2-1) rising clock (rising edge) : state가 업데이트 됨
2-2) falling clock (falling edge) :
cpu execution time = clock cycle / clock rate
= clock cycle * clock period (= clock cycle time)
실행시간 = 한 주기 X 한 주기 당 시간
특정 프로그램을 위해 Instruction 당 clock cycle 수
(명령어 하나 실행하는데 clock cycle 평균 몇 번? )
CPU clock cycles = instruction 수 X instruction당 평균적으로 필요한 clock cycles (CPI)
cpu 전체 clock 수 = 명령어 수 X 평균 clock cycle 수
-> cpu clock 수 : 결정되어서 나옴
-> instruction 수 : 코딩에 의해 결정
-> average cycles : 하드웨어가 결정
code sequence : 같은 function 하는데 누가 더 코딩을 잘했는지 따지는 것
instruction 수 만으로 성능을 평가하면 안됨!
1. cpu excution time 계산을 위해 clock cycle 계산하기
✅ cpu execution time = clock cycle X clock cycle time
✅ clock cycle = instruction 수 X CPI
sequence 1 clock cycle = 21 + 12 + 23 = 10
sequence 2 clock cycle = 41 + 12 + 13 = 9
=> clock cycle이 더 짧은 sequence 2가 더 빠르다
2. 각 코드의 CPI 구하기
✅ CPI = clock cycle / instruction 수
sequence 1 CPI = 10 / (2+1+2) = 2.0
sequence 2 CPI = 9 / (4+1+1) = 1.5
수식 정리
cpu execution time = clock cycle X clock cycle time
= (instrunction 수 X instruction당 평균적으로 필요한 clock cycle) X clock clycle time
= (instruction 수 X CPI) X clock cycle time
= {instruction 수 X (clock cycle / instruction 수)} X clock cycle time
= clock cycle X clock cycle time
CPU Execution time = clock cycle X clock cycle time
보기 편하게
실행시간 = 전체 clock cycle X cycle 도는 시간
= (명령어 수 X 명령어 당 필요한 cycle 평균) X cycle 도는 시간
= (명령어 수 X (전체 clock cycle / 명령어 수)) X cycle 도는 시간
= 전체 clock cycle X cycle 도는 시간
= 전체 clock cycle / clock rate