Delayed Branches

김세영·2021년 5월 29일
0

Delayed Branches


Nondelayed Branch에서는 branch equal(beq) 명령어 다음엔 무조건 delay를 주어야 했지만,
컴파일러가 Delayed Branch를 수행하면 시간이 더 늘어나는 것이 아니기 때문에 효과적
(or명령은 beq명령과 전혀 관계 없는 레지스터를 사용하고 있는데, 이 때 beq를 수행하게 되면 아무 문제 없이 or명령어를 수행할 수 있으므로 매우 효과적)

Data Hazard for Branches

Control HazardData Hazard가 동시에 발생함

  • beq 이전에 $1, $4가 결정되지 않으면 두 Hazard가 동시에 발생함
    이 경우에, beq 이전에 한 번의 stall이 필요함
  • 만약 명령어가 add가 아니라 lw(load word)라면, lw는 시간이 오래 걸리는 명령어이므로 stall이 두 번 필요하다.

Hazard가 겹치는 경우 무조건 Stall을 넣어서 해결해야 함

profile
초보 iOS 개발자입니다ㅏ

0개의 댓글