본문 바로가기
CS(Computer Science)/컴퓨터구조

10. 파이프라인 (2)

by 동욷 2023. 6. 4.

Hazard

-> 바로 다음 cycle에서 insturction을 이어서 실행 할 수 없는 상황

 

1) Structural hazards

=> 여러개의 instruction이 같은 장치를 같은 cycle에 사용하려고 할때 발생

 

2) Data hazards

=> 이전의 instruction에서 만들어줘야 할 data가 아직 준비되어 있지 않을 때

 

3) Control hazards

=> Data hazard와 비슷하지만 beq와 같이 PC 값에 영향을 주는 경우

 

 

Structural hazards

-> resource의 사용 conflict

-> 장치를 더 추가하여 해결함

ex) single ALU 사용 시 문제가 되는 사례 

beq는 두개의 ALU 연산을 필요로 함

1) 두 Register의 value 비교

2) PC + 4 및 displacement(address) * 4 주소 연산

 

Data hazards

-> 이전 instruction에서 새로 바꾸는 값을 이어서 사용하는 경우

add $s0,$t0,$t1

sub $t2, $s0, $t3

 

add에서 WB 단계에서 $s0에 값이 쓰여지기 전에

sub에서 ID 단계에서 $s0의 값을 읽어버릴려고 하니까 문제가 생김

-> sub의 ID 단계를 add의 WB 단계 다음으로 지연시켜서 해결(Stall)

 

 

Pipeline Stall

-> 필요한 결과값이 나올때까지 명령어 수행을 지연(Stall) 시키는것

-> 간단한 방법이지만 성능이 저하된다

 

Stall 피하는 방법 => code 배치를 바꿔서 다음 instruction에서 load result의 바로 사용을 피한다.

 

Forwarding (Bypassing)

-> 필요한 결과값이 register에 저장되는 것을 기다리지 않는다

-> Datapath에 추가적인 연결을 통해서 중간에서 가져온다.

 

 

같은 Register에서 Read Write가 동시에 이루어짐

1) Single - cycle CPU : 읽는 값은 새로 쓰기 이전의 값

 

2) Pipelined CPU : 새로 쓰는 값을 바로 읽어 올 수 있음 , 그러나 하나의 instruction이 동시에 읽고 쓰진 않는다.

Register를 읽는 부분은 ID 단계에서, Register에 쓰는 부분은 WB 단계에서 이루어진다.

그래서 읽는 instruction은 더 나중에 들어온 instruction

쓰는 instruction은 더 이전에 들어온 instruction

=> Register file 안에 Bypass 회로가 내장되어 있다 가정하여 해결

 

 

 

 

Data hazard

1) Load-Use Data Hazard

발생 조건 : ID/EX.MemRead and ((ID/EX.RegisterRt = IF/ID.RegisterRS) or (ID/EX.RegisterRt = IF/ID.RegisterRt))

lw $s0 , 20($t1)

sub $t2, $s0, $t3

 

2) EX Hazard

발생 조건 : EX/MEM.RegisterRd = ID/EX.RegisterRs 혹은 EX/MEM.RegisterRd = ID/EX.RegisterRt

 

3) MEM Hazard

발생 조건 : MEM/WB.RegisterRd = ID/EX.RegisterRs 혹은 MEM/WB.RegisterRd = ID/EX.RegisterRt

 

 

 

 

Control hazard

- Branch 결정은 EX 단계에서 ALU 연산에 의해 이루어지며, Branch 주소도 별도의 adder를 통해 EX 단계에서 확정된다

- 그러나 PC값이 다음 instruction의 IF 단계 이전에 결정이 되어 있어야 한다.

=> ID 단계에서 추가적인 h/w resource를 추가하여, 비교할 register 값을 읽자마자 ID 단계에서 바로 Branch 결정 및 Branch 주소를 계산해 버리는 해결책 (하지만 이 역시 1 cycle stall이 필요함)

 

 

 

 

728x90

'CS(Computer Science) > 컴퓨터구조' 카테고리의 다른 글

11. 메모리 구조(1)  (0) 2023.06.04
10. 파이프라인 (3)  (0) 2023.06.04
10. 파이프라인 (1)  (0) 2023.06.04
9. 프로세서 (3)  (0) 2023.06.04
9. 프로세서 (2)  (0) 2023.06.04