아.. 한 사이클에 Add를 연산하는 걸 잘못 이해하고 있었던 것 같다.
정확하게는(?)
1 machine cycle에 1명령어 처리고
1 machine cycle은
- fetching / decoding / executing / storing 4단계로 이루어진다.
그리고
clock cycle은
회로가 작동하는 속도.. 라고 해야하려나?
다시 정리하자면.. clock은 state machine을 한단계씩 넘기는데 소요되는 시간이고
cycle은 state machine이 합쳐진 각종 모듈이 작동하는데 소요되는 시간으로 보면 되려나?
[링크 : https://www.quora.com/What-is-clock-cycle-machine-cycle-and-instruction-cycle-in-a-microprocessor]
[링크 : https://www.difference.wiki/machine-cycle-vs-clock-cycle/]
32비트 리플 캐리 가산기에서 약 65 gate delay가 필요한데
gate delay가 clock 이라고 한다면(CPU로 치면 3GHz니 머니 하는 그 클럭)
메모리에서 명령어 불러오고, 명령어 해석하고, 실행하고 저장하는 건
그 이상의 clock이 필요하고, 해당 stage를 state machine으로 간주하여
명령어 자체를 실행하는데 걸리는 시간을 Machine cycle 시간으로 간주하는 것으로 생각된다.
In a 32-bit ripple-carry adder, there are 32 full adders, so the critical path (worst case) delay is 3 (from input to carry in first adder) + 31*2 (for carry propagation in latter adders) = 65 gate delays. |
[링크 : https://en.wikipedia.org/wiki/Adder_(electronics)#Ripple-carry_adder]
[링크 : https://en.wikipedia.org/wiki/Instructions_per_cycle]
[링크 : https://en.wikipedia.org/wiki/Cycles_per_instruction]