Nondelayed Branch
에서는 branch equal(beq)
명령어 다음엔 무조건 delay를 주어야 했지만,
컴파일러가 Delayed Branch를 수행하면 시간이 더 늘어나는 것이 아니기 때문에 효과적
(or
명령은 beq
명령과 전혀 관계 없는 레지스터를 사용하고 있는데, 이 때 beq
를 수행하게 되면 아무 문제 없이 or
명령어를 수행할 수 있으므로 매우 효과적)
Control Hazard와 Data Hazard가 동시에 발생함
beq
이전에 $1, $4
가 결정되지 않으면 두 Hazard가 동시에 발생함beq
이전에 한 번의 stall이 필요함add
가 아니라 lw(load word)
라면, lw
는 시간이 오래 걸리는 명령어이므로 stall이 두 번 필요하다.Hazard가 겹치는 경우 무조건 Stall을 넣어서 해결해야 함