Computer Science/컴퓨터 구조

[컴퓨터 구조] Control Hazard in Pipelined Datapath

바보1 2022. 11. 16. 02:20

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2022.11.11 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Control Hazard

 

[컴퓨터 구조] Control Hazard

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.10 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Hazard [컴퓨터 구조] Hazard 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.10 - [Computer Science/컴퓨

hi-guten-tag.tistory.com

2022.11.16 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Data Hazard in Pipelined Datapath

 

[컴퓨터 구조] Data Hazard in Pipelined Datapath

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.11 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Data Hazard [컴퓨터 구조] Data Hazard 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.10 - [Computer Scie

hi-guten-tag.tistory.com


1. Control Hazard

 

 

Branch는 MEM Stage에 도달하기 전까지 발생하지 않습니다.

따라서 만약 Branch를 해야 한다면, MEM Stage 이전의 모든 Stage의 값은 날려야 하는 불상사가 생깁니다.

다만 ID Stage에서 미리 비교를 함으로써 한 번의 stall로 손실을 최소화 할 수 있습니다.

그렇기 위해서는 무엇을 먼저 비교를 해야 할까요?

  • 우선 branch target address를 계산한다. -> target address adder
  • branch decision을 평가한다. -> register comparator

ID 단계에서 Register 두 개의 값이 같은지를 판단하며, 동시에 branch address를 계산해야 합니다.

만약 branch를 한다면 IF stage의 모든 정보를 날려야 하기 때문에 그것을 해주는 또 다른 Control line이 있어야 합니다.

(참고로 해당 글에서는 branch address는 beq만 취급함, bge, bne는 취급하지 않음)

 

따라서 Branch가 Taken 되었을 때의 그림을 보겠습니다.

 

파란색 네모가 새로 생긴 Unit입니다.

맨 우측 Unit은 레지스터 두 개가 같은지를 판단합니다.

3번째 네모는 Imm Gen에서 생성된 Imm 값이 PC와 더해지는 모습을 볼 수 있습니다.

마지막으로 Branch Taken이 된다면 IF.Flush에서 IF/ID의 모든 정보를 날리며,

새로운 PC 값으로 업데이트 합니다.

 

원래는 MEM Stage에서 Branch 결정이 났는데, 이제는 ID Stage에서 결정이 나네요.

그와 마찬가지로 ALU에서는 zero signal이 사라진 모습을 볼 수 있습니다.

 

따라서 Branch Taken이 되었으므로 다음 Clock Cycle에서는 아래의 그림이 됩니다.

ID Stage의 모든 값이 날아가고, 새로운 PC에서 명령어를 반입했습니다.


2. Pipeline Summary

 

 

 

Pipelined Datapath

Pipelined에 대한 글은 여기서 끝내도록 하겠습니다.

시간이 된다면 Simple Version도 쓰겠습니다.

 

다음 글부터는 Memory Hierarchy에 대해서 쓰도록 하겠습니다.

 

2022.11.22 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Introduction to the Memory Hierarchy

 

[컴퓨터 구조] Introduction to the Memory Hierarchy

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.01 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] RISC-V 명령어 작동 과정 (RISC-V Instruction Operation Process) [컴퓨터 구조] RISC-V 명령어 작동 과정 (RISC-V

hi-guten-tag.tistory.com

 

모두 고생하셨습니다.

 

지적 환영합니다.