[TIL] 2022.11.21. [pipelining]
오늘의 공부는...
파이프라인 해저드에 대해 알아보자.
파이프라인 해저드란?
-> 다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황이 있다. 이러한 사건을 해저드(hazard)라 부른다.
이는 세 가지 종류가 있다.
첫 번째는 구조적 해저드(strcutural hazard)이다.
주어진 클럭 사이클에 실행되도록 되어 있는 명령어 조합을 하드웨어가 지원하지 못해서 계획된 명령어가 적절한 클럭 사이클에 실행될 수 없는 사건이다.
천천히 살펴보자.
이는 같은 클럭 사이클에 실행하기를 원하는 명령어의 조합을 하드웨어가 지원할 수 없다는 것을 의미한다.
이것은 필요한 자원이 바쁘게된다면 발생한다.
이후 스케줄된 파이프라인 계획이 틀어진다.
RISC-V 명령어 집합은 파이프라이닝하도록 설계되었기 때문에 설계자가 파이프라인을 설계할 때 구조적 해저드를 피하는 것이 비교적 용이하다.
그러나 메모리가 두 개가 아니고 하나라고 생각해 보자.
기존의 파이프 라인에 명령어가 추가된다면 같은 클럭 사이클에 첫 번째 명령어는 메모리에서 데이터를 접근하고, 추가된 명령어는 같은 메모리에서 명령어를 가져오게 된다. 앞의 파이프라인에 메모리가 하나라면 구조적 해저드를 피할 수 없을 것이다.
그리고 다른 해저드도 나타난다.
다른 경우에 대해서 Forwarding을 적용할 수 있다.
기다리지 않고 extra connections을 발생시켜 해결한다.
Forwarding으로 해결이 안 될 경우 bubble이 발생하는 것을 감안하기도 한다.
※ 해당 게시물은 컴퓨터 구조 및 설계 (RISC-V)를 토대로 작성되었으며, 문제가 될 시 삭제하겠습니다. ※
'Today I Learned(TIL)' 카테고리의 다른 글
[TIL] 2022.11.28. [Computer Architecture] (0) | 2022.11.28 |
---|---|
[TIL] 2022.11.27. [Single Datapath] (0) | 2022.11.27 |
[TIL] 2022.11.27. [Computer Architecture] (1) | 2022.11.27 |
[TIL] 2022.11.26. [Context switch] (0) | 2022.11.26 |
[TIL] 2022.11.25. [System Programming] (0) | 2022.11.25 |