- 프로세서 시리즈 모아보기 -
https://microelectronics.tistory.com/112
파이프라인 해저드(Pipeline Hazards)
파이프라인은 컴퓨터 프로세서의 성능을 극대화하는 중요한 기술이다. 여러 명령어를 동시에 실행하여 성능을 향상시키지만, 그 과정에서 여러 문제가 발생할 수 있다. 이번 글에서는 파이프라인 해저드(Pipeline Hazards)의 종류와 이를 해결하기 위한 다양한 방법들을 간략하게 살펴본다.
1. 파이프라인에서 발생하는 해저드란?
파이프라인은 여러 명령어를 겹쳐 실행하는 구조이다. 하지만 각 명령어가 자원을 공유하거나 서로 간섭할 경우 문제가 발생한다. 이를 해저드(hazards)라고 부른다. 해저드는 크게 세 가지로 나뉜다:
- 구조적 해저드(Structural Hazard):
여러 명령어가 동시에 동일한 하드웨어 자원을 필요로 할 때 발생한다. 예를 들어, 한 명령어는 레지스터 파일을 읽으려 하고 다른 명령어는 같은 레지스터 파일에 쓰기를 시도하면 충돌이 일어난다. - 데이터 해저드(Data Hazard):
명령어 실행 간 데이터 의존성이 있을 때 발생한다. 예를 들어, 이전 명령어의 결과값을 현재 명령어가 필요로 할 경우, 데이터가 준비되지 않아서 문제가 생긴다. - 제어 해저드(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)이다. 이는 레지스터 파일을 한 클록 주기의 두 절반으로 나누어 쓰기와 읽기를 분리하는 방식이다:
- 클록 주기의 첫 절반: 쓰기 작업 수행.
- 클록 주기의 두 번째 절반: 읽기 작업 수행.
더블 펌핑의 효과
더블 펌핑을 도입하면, 읽기와 쓰기를 같은 클록 주기 안에서 처리할 수 있기 때문에 충돌이 발생하지 않는다.
- 첫 번째 명령어가 쓰기 작업을 하고, 동시에 두 번째 명령어가 읽기 작업을 수행해도 문제가 없다.
- 이는 파이프라인의 성능을 유지하면서 해저드를 효과적으로 해결한다.
결론
파이프라인은 컴퓨터 성능을 극대화하기 위한 핵심 기술이지만, 해저드라는 문제를 동반한다. 특히, 레지스터 파일에서 발생하는 구조적 해저드는 더블 펌핑 기법을 통해 효과적으로 해결할 수 있다. 이를 통해 명령어 간섭을 방지하면서도 파이프라인 성능을 유지할 수 있다.
Reference
'Computer Architecture > Processor' 카테고리의 다른 글
파이프라인 실제 예시 (1) | 2024.12.13 |
---|---|
Pipeline - Data Hazard(데이터 해저드) 발생과 해결 (0) | 2024.11.25 |
Processor의 구조 - 6. Pipeline(파이프라인) 설계 (0) | 2024.11.13 |
Processor의 구조 - 5. Pipeline(파이프라인) (0) | 2024.11.12 |
Processor의 구조 - 4. Decoder(디코더) (0) | 2024.11.11 |
댓글