Pipeline Hazards




Forwarding (실제 계산이 되는 것은 EX단계이므로, 같은 pipeline인 ID단계말고 뒷명령어의 EX단계 실행전으로 보내버림


forwading condition (조건)

EX Hazard (데이터 하자드 중 하나)
조건

MEM Hazard (데이터 하자드 중 하나)
조건

forwarding path

Forward가 필요한 경우

조건추가

Double data hazard
이유 : ex hazard는 1줄 차이이고, mem hazard는 2줄차이라
줄의 갯수 차이가 더 적게 나는 것이 최근 데이터 값이기에

조건 추가
EX hazard : 조건 : (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs1)) → ForwardA = 10
MEM hazard : 조건 : (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and
and no EX hazard
(MEM/WB.RegisterRd = ID/EX.RegisterRs1)) → **ForwardA = 01**
최종적인 Data hazard 흐름

Load Use data hazard

stall이 불가피하다! (ID 스테이지가 되어야 본인이 필요한 레지스터의 정보를 해독하기 때문에)



좀 더 자세한 과정

그래서 중간에 버블을 하나 만들고 and는 ID단계에 머무르도록 함

Detection 탐지


