Multicycle Processor Performance
- 명령어들은 다 다른 cycle의 수를 가진다.
- 3 cycles: beq, j
- 4 cycles: R-Type, sw, addi
- 5 cycles: lw
- CPI is weighted average
- SPECINT2000 benchmark:
- 25% loads
- 10% stores
- 11% branches
- 2% jumps
- 52% R-type
Average CPI = (0.11 + 0.02)(3) + (0.52 + 0.10)(4) + (0.25)(5) = 4.12
Multicycle critical path: Tc = tpcq_ALUout + tmux + max(tALU + tmux, tmem) + tsetup
- write은 read보다 조금 걸리고
- register file은 memory보다 조금 걸린다.(빠르다)
Multicycle Performance Example
Tc = tpcq_ALUout + tmux + max(tALU + tmux, tmem) + tsetup
= Tc = tpcq_ALUout + tmux + tmem + tsetup
= [30 + 25 + 250 + 20] ps
= 325 ps
중요한 의제
multi-cycle MIPS processor에서 동작하는 1억개의 명령어를 가진 프로그램을 가정
- CPI = 4.12
- Tc = 325 ps
- single에서는 925ps 였는데 clock cycle을 단순 1/5 한 것 치고는 너무 길다.
- 그 이유는?
Execution Time
= (# instructions) × CPI × Tc
= (100 × 109 )(4.12)(325 × 10-12)
= 133.9 seconds
- 제일 많이 걸리는 게 clock cycle을 정하는데 clock을 정확히 균등하게 나누지 않았다.
- Not even balenced
- Not all steps same length
- 자르다보면 다음 cycle에 계산하기 위해 저장하기 위한 register(f/f)가 중간중간에 들어가는데 register에서는 tpcq, tsetup 이라는 overhead로 인해 clock이 정확하게 5배 빨라지지 못하는 것이다.
- Sequencing overhead for each stop(tpcq+ tsetup = 50 ps)
- 그래서 CPI에서 손해본 것을 clock cylce에서 감당할 수 없었던 것이다.
Q) 어떻게 균등하게 쪼개는가
A) mips는 data memory 때문에 unbalance가 발생
Review: Single-Cycle Processor
Review: Multicycle Processor
- 장점
- resource sharing(memory, ALU)
- faster clock