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 |