티스토리 뷰

컴퓨터구조

[컴퓨터구조] 파이프라인 해저드

Hani_Levenshtein 2021. 4. 18. 19:50

안녕하세요 Hani입니다.

병렬성을 위한 파이프라인에 이어서 이번 시간에는 파이프라인 해저드에 대하여 알아보겠습니다.


 

파이프라인은 '모든 명령이 정해진대로 수행된다'는 것을 가정합니다.

반대로 말하면 다음 명령이 다음 사이클에 수행될 수 없는 상황을 마주하게 되면 파이프라인이 깨집니다.

파이프라인을 망가트릴 수 있는 몇 가지 위험들을 알아보겠습니다.

 

 

Structural hazards

하드웨어가 동일한 클럭 사이클에서 실행하고자 하는 명령의 조합을 지원하지 않는 경우가 있습니다.

쉽게 말하자면, 한 클럭에서 두 가지 이상의 명령이 같은 메모리 주소의 자원을 필요로 하는 경우입니다.

A, B, C 명령이 있고 A, B 명령이 같은 자원을 필요로 한다면 C와는 무관하지만 A와 B간 해저드가 생깁니다.

 

Data hazards

명령이 아직 끝나지 않았음에도 다음 명령이 이전 명령이 사용하던 레지스터에 접근 할 때 발생하는 해저드입니다.

읽기 명령(R)이 끝나기 전에 쓰기 명령(W)이 발생하거나,

쓰기 명령(W)이 끝나기 전에 쓰기 명령(W)이 발생하거나,

쓰기 명령(W)이 끝나기 전에 읽기 명령(R)이 발생할 때 두 명령간 데이터 의존성(Data Dependency)이 있다고 말합니다.

데이터 의존성이 생기지 않는 경우는 둘 다 데이터를 변경시키지 않는 읽기 명령(R)일 때뿐입니다.

 

Control hazards

분기 예측에 실패하여 선택하지 말아야 할 명령어를 파이프라인에 가져와서 생기는 해저드입니다.

 

 

댓글