본문 바로가기
Computer Science

파이프라인이란?

by 융식 2022. 6. 9.

명령어 파이프라인

하나의 명령어 사이클을 여러단계로 나누고 각 단계에서 동시에 다른 명령어를 처리하도록 CPU설계.

파이프라인의 깊이는 총 단계 수.

 

명령어 사이클의 단계 설계

최소 다음 단계의 순차 실행을 고려

  • 메모리에 저장된 명령어를 인출
  • 명령어를 해독 → 연산코드와 오퍼랜드 필드분리
  • 오퍼랜드 필드에서 유효주소를 찾아냄
  • 유효주소로 메모리에 저장된 실제 피연산자를 인출
  • 연산을 실행해 명령어 수행을 완료
  • 연산결과를 저장

하나의 명령을 3단계로 나누어 실행 하는 예

 

4단계 파이프라인 구조

  • 1 단계 : 명령어 인출
  • 2 단계 : 명령어 해독
  • 3 단계 : 연산 실행
  • 4 단계 : 연산결과 저장

5단계 파이프라인 구조

  • 1 단계 : 메모리에서 명령어 인출
  • 2 단계 : 명령어를 해독하고 명령어 형태를 결정하며 필요한 피연산자 결정
  • 3 단계 : 레지스터 또는 메모리에서 피연산자 결정
  • 4 단계 : 명령어 연산 수행
  • 5 단계 : 결과를 레지스터에 저장

요즘은 수십 단계로 나누지만 무한정 늘리지 않음

요즘 CPU →여러 개의 명령어 파이프라인과 연산 파이프라인을 갖도록 설계

 

파이프라인 구조 사용시 병렬계산의 속도상승→ 명령어 개수가 커지면 단계 수 N에 근접

 

데이터 해저드

데이터 의존성 (data dependency) : 파이프 라인에서 앞서가는 명령의 연산 결과를 레지스터에 기록 전에 다른 명령에 이 데이터가 필요한 상황. 앞의 명령결과가 다음 명령 입력으로 사용될 때 파이프 라인 시스템에 문제 발생

 

해결 방법 :

  • 레지스터에 저장되기 전에 연산 결과를 직접 다음 명령에 전달하는 데이터 포워딩,
  • 버블을 명령 사이에 끼워 넣어 프로그램 실행을 1단계 또는 2단계 지연

제어 해저드

파이프 라인 CPU 구조의 분기 명령이 실행될 떄 발생

이미 파이프 라인에 적재되어 실행되고 있는 이어지는 다른 명령들이 더 이상 필요가 없어지므로 발생

 

해결 방법 :

  • 지연 슬롯(delay slot)을 넣고 분기 목적지 주소를 계산하는 과정을 파이프 라인 속에 넣는 것
  • 지연 슬롯이란 NOP이나 분기 명령과 무관한 명령을 끼워 넣는 것, 컴파일러나 프로그래머가 프로그램 순서를 바꾸는 것.

 

구조적 해저드

서로 다른 단계에서 동시에 실행되는 명령이 컴퓨터 내의 장치 하나를 동시에 사용하려고 할 때 발생

Ex) 명령어 인출과 오퍼랜드 인출이 동시에 발생하는 경우

 

해결 방법 :

  • 하버드 구조(harvard architecture)를 사용, 메모리를 프로그램(명령어) 메모리와 데이터 메모리로 완전 분리시킨 구조
  • 동일한 장치를 동시 사용하여 일어나는 충돌 : 장치를 하나 더 둠

 

슈퍼 스칼라

하나의 프로세서 안에 2개 이상의 파이프 라인 탑재

하나의 명령어 인출 장치가 명령어 쌍을 동시에 가져와서 각 명령어를 다른 파이프 라인에 배치하고 개별 ALU를 가지고 병렬 작업

둘 중 어느 명령도 다른 명령의 결과에 의존하지 않아야 함

하드웨어를 추가해 실행 도중에 충돌을 감지 및 제거

혹은 파이프 라인은 한개지만 기능 장치를 여러 개 제공하는 슈퍼 스칼라도 있음 ex) S4 단계에서 여러 장치 제공 

 

기능 장치가 여러 개인 슈퍼 스칼라