YYYEJI

[MIPS] Pipelining Hazard 본문

Computer architectures

[MIPS] Pipelining Hazard

YEJI ⍢ 2022. 11. 28. 00:15
728x90

Hazard란?

Clock cycle이 증가함에 따라 잘 진행되야 하는데 

다음 clock cycle에서 Instruction을 수행할 수 없는 상황을 의미합니다.

 

Pipelining에서는 3개의 hazard가 있습니다.

 

하나씩 살펴보겠습니다.

 

 

① Structural Hazard

Stage 1에서는 instruction을 fetch하고,

stage 4에서는 data를 read/write 해야하는데,

동시에 진행할 수 없는 상황을 의미합니다.

•  MEM - IF: instruction, data를 한 번에 읽을 수 없다면 hazard 발생.

•  EX - IF: 기본적인 연산인 add, sub etc를 계산하면서 PC의 값을 증가시킬 수 없다면 hazard 발생.

•  WB - ID: Register에 값이 쓰이면서 읽힐 수 없다면 hazard 발생

 

Solution - resource를 여러 개 사용해서 구조적인 문제를 해결하자.

 

 

② Data Hazard

아래 상황과 같이 add에서 아직 수행된 값이 $S0에 저장되지 않았는데,

다음 instruction에서 $S0의 값이 읽혀져야 되는 상황을 의미합니다.

ADD  $S0, $t1, $t2

SUB  $S1, $S0, $t2

 

 

Solution 1 - Stall 시키자.

Solution 2 - Forwarding 시키자.

 

 

③ Control Hazard

beq instruction의 결과를 확인하지 전까지

다음 instruction을 수행하지 않고 기다리고 있는 상황을 의미합니다.

beq  $t0, $t1, label

add .................... 

sub .................... 

label: and ....................             

 

Solution 1 - Stall 시키자.

Solution 2 - Branch 유무를 빨리 결정하자.

빼기를 하지 않고 단순히 비교해서 branch 유무를 결정

 

Solution 3 - Branch 유무를 예측하자.

•   beq, never branch로 예측

•   bne, always branch로 예측

 

1 bits 예측 메모리 두기

 

 

 ◡̈

'Computer architectures' 카테고리의 다른 글

[MIPS] Memory hierarchy (locality)  (0) 2022.12.03
[MIPS] Performance  (0) 2022.11.28
[MIPS] Pipelining Control Signal  (0) 2022.11.27
[MIPS] Corrected Datapath란?  (0) 2022.11.27
[MIPS] beq Datapath (Pipelining)  (0) 2022.11.27