명령어 파이프라이닝

김코·2025년 10월 1일

Content

명령어 파이프라이닝 - Instruction Pipelining

  • CPU가 여러 명령어를 동시에 처리하기 위해 각 명령어를 여러 단계로 분할한다.
    즉 각 단계를 다른 명령어와 겹쳐서 실행한다.
  • 전통적인 CPU는 한 번에 하나씩 처리하지만 파이프라인 기법의 CPU는 그렇지 않다.
    여러 명령어를 다른 단계에서 동시 처리 하는 것이다.


    [출처 : 위키피디아]
  • 5개의 명령어가 동시에 처리되고 있는 모습이다.

  • 파이프라인 기법의 CPU는 동시에 처리함으로써 높은 성능을 가져올 수 있지만 항상 그런 것은 아니다.
    이를 파이프라인 위험 - Pipeline Hazard라고 한다.
  1. 데이터 위험: 데이터 의존적인 두 명령어를 동시 실행 시 파이프라인이 제대로 작동하지 않는다.
    -> 명령어 B가 명령어 A의 연산 결과 R을 의존할 때, 명령어 A의 저장 결과 단계가 끝나야 명령어 B가 R을 사용 가능하다.

  2. 제어 위험: 분기 or 조건문 등으로 인해 다음 실행 명령어가 무엇인지 결정을 내리지 못해 파이프라인이 멈춘다. 이를 해결하기 위해 분기 예측 기법을 사용할 수 있지만, 에측 실패 시 계산된 파이프라인을 버리게 되고 이는 성능 저하로 이어진다.

  3. 구조적 위험: 한 명령어가 자원 사용 시 그 자원을 필요로 하는 다른 명령어는 멈추게 되어 파이프라인이 작동하지 않는다.
    -> 서로 다른 명령어가 ALU와 같은 CPU 자원을 사용할 때가 그러하다.

Keywords

CPU, 파이프라인, 명령어, 단계, 성능 향상/저하, Hazard
Hazard 3개 - 데이터, 제어, 구조

Summary

전통 CPU와 달리 지금 CPU는 여러 명령어를 동시 처리한다. 이때 파이프라이닝 기법을 사용해 성능을 높인다. 하지만 성능이 좋아지지 않는 경우가 있다.
명렁어 의존으로 인한 데이터 위험, 분기/조건 등으로 결정을 내리지 못하는 제어 위험, 자원 필요로 인한 구조적 위험이다.

profile
백엔드 공부하는 코린이입니다

0개의 댓글