본문 바로가기
Computer Architecture/컴퓨터구조[05]

[CA] Lecture #21

by leziwn.cs 2023. 11. 15.
Hazards
Data Hazards

: Register file에서 서로 다른 instruction에 대한 WB과 ID가 동시에 일어나기 때문에 발생하는 hazard.

 

In the Pipeline

Data Hazards

  • EX hazard
  • MEM hazard

Cf) 세 번째 WB, ID는 같은 time에 일어나도 괜찮다! 

: ID에서 wirte 먼저, read 나중에 일어나기 때문이다.

 

Solution: Forwarding

Solution: Forwarding

  • EX hazard, MEM hazard --> forwarding!
  • 세 번째는 forwarding 할 필요 없다.

 


Data Hazard Detection
EX hazard (ver.1)

EX hazard (ver.1)

: EX/MEM pipeline register에 저장된 destination register = ID/EX pipeline에 저장된 source register 

--> EX hazard!

 

MEM hazard (ver.1)

MEM hazard (ver.1)

: MEM/WB pipeline register에 저장된 destination register = ID/EX pipeline에 저장된 source register

--> MEM hazard!

 

 

Further Conditions
  1. WB을 하는 instruction인지 확인한다.
  2. EX/MEM.RegisterRD =/= 0
    : $zero는 항상 0이다.

 

EX hazard (ver.2)

EX hazard (ver.2)

 

MEM hazard (ver.2)

MEM hazard (ver.2)

 

 

Without Forwarding

Without Forwarding

: ID 단계에서 ID/EX pipeline register에 저장된 값만 ALU로 전달된다.

--> 만약 Data hazard (WB, ID 동시에)가 있다면, WB이 될 때까지 기다려야 한다. (STALL)

 

With Forwarding

With Forwarding

  • EX hazard, MEM hazard 중 어떤 hazard가 발생했는지 여부를 판단하여, MUX에서 값을 선택한다.
  • Forwarding unit: Source 1, Source 2 중 어떤 것이 destination과 같은지 판단한다. 

 

Control Values for Forwarding

Control Values for Forwarding

 


Double Data Hazard

Double Data Hazard

: Forwarding은 가장 최근에 업데이트된 값으로 해야 한다.

 

▶ Hazard의 우선순위:

  1. EX hazard
  2. MEM hazard

--> EX hazard가 발생하지 않으면, MEM hazard.

EX hazard가 발생하지 않으면, MEM hazard

 

 

Datapath with Forwarding

Datapath with Forwarding

  • Forwarding unit: Source 1, Source 2 중 어느 것이 Destination과 같아서, EX hazard 또는 MEM hazard가 발생하는지 판단한다.

--> Forwarding unit의 input으로 Rs1, Rs2가 추가된다.

 

A Close-Up of the Datapath

A Close-Up of the Datapath

▶ ALU inputs:

  • R-format, beq: Register 값들(Read data 1, Read data 2)
  • lw, sw: Register 값 하나(Read data 1), offset

--> 하나의 MUX를 추가하여, ALU input으로 Read data 2를 넣을 것인지, offset을 넣을 것인지 결정한다.

 


Load-Use Data Hazard

Load-Use Data Hazard

: lw의 경우, 1 STALL은 불가피하다.

 

Load-Use Hazard Detection

Load-Use Hazard Detection

: lw의 경우, 무조건 1 STALL한다.

 

NOP: No Operation

: 모든 control signal == 0이면, nop 가능! (아무것도 하지 않겠다.)

 

Load-Use Data Hazard

Load-Use Data Hazard

 

Datapath with Hazard Detection

Datapath with Hazard Detection

  1. ID/EX.MemRead (control signal): lw임을 알려준다.
  2. Hazard detection unit: Input으로 source 1, source 2, destination을 받아서, IF/IDWrite, PCWrite control signal을 생성한다.
    - IF/IDWrite (control signal): IF 발생하지 않도록 한다.
    - PCWrite (control signal): PC값이 (PC+4)로 증가하지 않도록 한다.

 


Stalls and Performance

: STALL은 성능을 떨어뜨린다.

--> Change the order of instructions!

 

 

 

 

 

출처: 이화여자대학교 윤명국교수님 컴퓨터구조

'Computer Architecture > 컴퓨터구조[05]' 카테고리의 다른 글

파이프라이닝(Pipelining)과 비순차적 명령어 처리(Out-of-order execution)  (3) 2023.11.20
[CA] Lecture #22  (1) 2023.11.17
[CA] Lecture #20  (1) 2023.11.14
[CA] Lecture #19  (0) 2023.11.09
[CA] Lecture #18  (0) 2023.11.08