앞의 글을 읽으시면 이해에 도움이 됩니다.
2022.11.10 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Hazard
목차
1. Structural Hazard
2. 해결법
1. Structural Hazard
첫 번째 Hazard는 Structural Hazard입니다.
Structural Hazard는 어떤 resource를 써야 하는데, 누가 지금 사용하고 있을 때 발생합니다.
이는 하드웨어가 동일한 clock cycle에 실행하려는 명령어의 조합을 지원하지 못하기 때문에 발생합니다.
짧게 말해서 resource 사용에 있어서 충돌이 일어났다는 뜻입니다.
이때 MEM에서 memory에 access를 하고 있고, IF에서도 memory에 access를 하고 있습니다.
Single memory에 두 개의 명령어가 접근하고 있으니, 충돌이 발생합니다.
따라서 4번째 명령어인 Instruction Fetch를 Stall를 하여, 충돌을 피해야 합니다.
그렇게 된다면 4번째 명령어는 한 번 늦게 실행이 되므로 충돌을 피할 수 있습니다.
하지만 한 번 stall 한다 해도 2번째 명령어와 또 충돌이 일어나네요.
아무튼 이러한 현상을 Pipeline bubble이라고 합니다.
2. 해결법
간단하게 single memory 대신에 두 개의 memory로 분할하면 됩니다.
따라서 명령어를 stall 할 필요가 없어집니다.
그러므로 pipeline datapath에서는 instruction memory와 data memory를 분리해놓았습니다.
혹은 cache를 사용하여 해결하기도 합니다.
다음 글에서는 Data Hazard에 대해 쓰도록 하겠습니다.
2022.11.11 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Data Hazard
감사합니다.
지적 환영합니다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Control Hazard (9) | 2022.11.11 |
---|---|
[컴퓨터 구조] Data Hazard (2) | 2022.11.11 |
[컴퓨터 구조] Hazard (0) | 2022.11.10 |
[컴퓨터 구조] Pipelining (0) | 2022.11.10 |
[컴퓨터 구조] Basic Implementation of the RISC-V (RISC-V의 기본적인 구현) (2) | 2022.11.01 |