본문 바로가기
2학년 2학기/컴퓨터 구조

9.4 Instruction pipeline

by kkkkk1023 2024. 11. 24.


instruction pipline

 

 

 

위의 Fetch, Decod, Excute를 pipeline으로 만들 수 있는데 오류가 발생할 수 있다.

 

 

위의 사진과 같이 EX에서 branch를 수행해야하는데, 아직 다음 명령어가 Fetch되지 않았기 때문에 어떤 명령어로 점프해야하는지 알 수 없다. 

 

 

따라서, 아래와 같이 다음 Segment를 지연시켜서 EX 다음에 FI가 실행되도록 만들어야한다.

 




Pipelining에서 발생할 수 있는 주요 문제점(Hazards)

 

Structural Hazards (구조적 해저드)

: 하드웨어 Resource가 부족해서 동시에 실행되는 명령어들이 서로 충돌할 때 발생한다.

 

 

Fetch 시킬수 있는 코드가 하나만 있을 때 동시에 FO와 FI가 일어나면 충돌이 일어날 수 있다. 따라서, 지연을 통해서 이를 방지해야한다.

 


Data Hazards (데이터 해저드)

: 한 명령어의 실행이 완료되지 않아 다음 명령어가 필요한 데이터를 사용할 수 없을 때 발생한다.

 

B, C의 덧셈 연산이 되지 않았을 때 R1을 증가하면 충돌이 일어날 수 있다. 따라서, bubble(지연)을 통해서 연산 결과가 R1에 저장되고 난 후에 R1을 증가시키면 이를 방지할 수 있다.

 

 


Control Hazards (제어 해저드)

: Branch / Jump로 인해 파이프라인이 잘못된 명령어를 Fetch할 때 발생한다.

 

 

위의 문제도 지연을 이용해서 방지할 수 있다. 

 

'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글

9.5 RISC pipeline  (0) 2024.11.24
9.2 Pipelining  (0) 2024.11.24
9.1 Parallel processing(Instruction Level Parallelism)  (0) 2024.11.24
8.8 Reduced Instruction Set Computer (RISC)  (0) 2024.11.17
8.7 Program control  (0) 2024.11.17