본문 바로가기
Computer Architecture/Processor

Pipeline - Pipeline Hazard (파이프라인 해저드) 란?

by FastBench 2024. 11. 24.
반응형

- 프로세서 시리즈 모아보기 -

https://microelectronics.tistory.com/112

파이프라인 해저드(Pipeline Hazards)

파이프라인은 컴퓨터 프로세서의 성능을 극대화하는 중요한 기술이다. 여러 명령어를 동시에 실행하여 성능을 향상시키지만, 그 과정에서 여러 문제가 발생할 수 있다. 이번 글에서는 파이프라인 해저드(Pipeline Hazards)의 종류와 이를 해결하기 위한 다양한 방법들을 간략하게 살펴본다.

1. 파이프라인에서 발생하는 해저드란?

파이프라인은 여러 명령어를 겹쳐 실행하는 구조이다. 하지만 각 명령어가 자원을 공유하거나 서로 간섭할 경우 문제가 발생한다. 이를 해저드(hazards)라고 부른다. 해저드는 크게 세 가지로 나뉜다:

  1. 구조적 해저드(Structural Hazard):
    여러 명령어가 동시에 동일한 하드웨어 자원을 필요로 할 때 발생한다. 예를 들어, 한 명령어는 레지스터 파일을 읽으려 하고 다른 명령어는 같은 레지스터 파일에 쓰기를 시도하면 충돌이 일어난다.
  2. 데이터 해저드(Data Hazard):
    명령어 실행 간 데이터 의존성이 있을 때 발생한다. 예를 들어, 이전 명령어의 결과값을 현재 명령어가 필요로 할 경우, 데이터가 준비되지 않아서 문제가 생긴다.
  3. 제어 해저드(Control Hazard):
    분기(branch) 명령어로 인해 다음 실행될 명령어가 불확실할 때 발생한다. 이는 분기 예측 실패와 같은 상황에서 문제가 된다.

2. 파이프라이닝의 장점과 한계

파이프라이닝은 성능을 크게 향상시키는 기술이다. 예를 들어, 5단계 파이프라인에서 명령어가 겹쳐 실행되면, 이상적으로 5배의 성능 향상을 기대할 수 있다. 하지만 이론적인 성능 향상을 방해하는 요소가 바로 해저드이다.

파이프라이닝의 이점

  • 명령어 실행 단계를 겹쳐서 처리함으로써 프로세서의 자원 활용도를 극대화한다.
  • 여러 명령어가 동시에 실행되기 때문에 클록당 처리 성능(CPI)을 감소시킨다.

파이프라이닝의 한계

  • 명령어 간섭(interference)으로 인해 충돌이 발생한다.
    • 예제: 첫 번째 명령어가 레지스터 파일에 쓰기 작업을 하는 동시에, 네 번째 명령어가 같은 레지스터 파일에서 읽기 작업을 하려 할 경우 충돌이 발생한다.

3. 예시 - 레지스터 파일에서 발생하는 structural hazard

구조적 해저드는 레지스터 파일과 같은 공유 자원에서 충돌이 발생할 때 나타난다. 특히, 파이프라인에서 다음과 같은 상황이 문제가 된다:

  • 명령어가 서로 다른 파이프라인 단계에서 레지스터 파일을 동시에 접근하려 할 경우.
  • 예를 들어, 한 명령어는 write-back 단계에서 레지스터 파일에 쓰기를 시도하고, 다른 명령어는 instruction decode 단계에서 읽기를 시도하는 상황이다.

3.1 structural hazard 해결방법 - bubble 삽입

아래 그림과 같이 reading instruction을 delay 시키는 방법이다.

절대 write conflicting 이 발생하지 않으나, 그만큼 파이프라인을 활용하지 못하므로 성능이 떨어진다.

3.2 structural hazard 해결방법 - double pumped register

구조적 해저드를 해결하기 위해 사용하는 방법 중 하나가 더블 펌핑(Double Pumping)이다. 이는 레지스터 파일을 한 클록 주기의 두 절반으로 나누어 쓰기와 읽기를 분리하는 방식이다:

  1. 클록 주기의 첫 절반: 쓰기 작업 수행.
  2. 클록 주기의 두 번째 절반: 읽기 작업 수행.

더블 펌핑의 효과

더블 펌핑을 도입하면, 읽기와 쓰기를 같은 클록 주기 안에서 처리할 수 있기 때문에 충돌이 발생하지 않는다. 

  • 첫 번째 명령어가 쓰기 작업을 하고, 동시에 두 번째 명령어가 읽기 작업을 수행해도 문제가 없다.
  • 이는 파이프라인의 성능을 유지하면서 해저드를 효과적으로 해결한다.

결론

파이프라인은 컴퓨터 성능을 극대화하기 위한 핵심 기술이지만, 해저드라는 문제를 동반한다. 특히, 레지스터 파일에서 발생하는 구조적 해저드는 더블 펌핑 기법을 통해 효과적으로 해결할 수 있다. 이를 통해 명령어 간섭을 방지하면서도 파이프라인 성능을 유지할 수 있다. 

 

 

Reference

반응형

댓글