컴퓨터구조 4-5강. 파이프라이닝(Pipelining)

기타/[컴퓨터 구조]

2019. 12. 10. 17:22

 

[단일 사이클 구현의 문제점]

: 앞에서 보았던 방식은 한 명령어를 데이터패스를 통해 실행하는 동안에, 다음명령어는 앞 명령어가 실행끝나기를 기다린다.

: 하지만 이러면 클럭 사이클 시간이 너무 길어져 전체 성능에 좋지 않다.

=> 파이프라이닝 기술 적용

 

 

[파이프라이닝]

: 여러 명령어가 중첩되어 실행되는 구현 기술 (병렬성 이용)

: 각 명령어의 실행시간을 개선하진 못하지만, 처리량을 개선한다.

 

# 파이프 라이닝 성능 개선 정도 예시

ex) 명령어 5개, 명령어 4단계이고, 한 명령어 처리 시간이 1이라 할때,

- 일반적 방법 : 시간 1 * 4단계 * 5개 = 20 (시간)

- 파이프라이닝 : 4 + 1 + 1 +1 + 1 = 8 (시간)

=> 20 / 8 = 2.5 배 개선

 

 

[단일 사이클 vs 파이프라인 성능]

# 명령어 실행의 5단계

  1. 명령어 메모리에서 명령어 인출

  2. 명령어 해독과 레지스터 읽기(동시수행)

  3. 연산 수행 or 주소 계산

  4. 데이터 메모리 내의 피연산자에 접근

  5. 결과 값을 레지스터에 작성

 

# 각 기능 유닛 수행 시간과 수행 명령어 예시

명령어 종류 Inst fetch Register Read ALU oper Data access Reg write Total time
lw 200 100 200 200 100 800
sw 200 100 200 200   700
R형식 200 100 200   100 600
beq 200 100 200     500

lw $1, 100($0)

lw $2, 200($0)

lw $3, 300($0)

# 단일 사이클과 파이프라인 예시 수행 시간 비교

 

 

[파이프라인의 성능]

- 완벽하게 균형 잡힌 파이프라인 : 모든 단계의 처리시간이 같은 파이프라인

 

 

[파이프라인 해저드]

: 다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황

  1. 구조적 해저드

    : 다른 단계에 있는 명령어들이 동시에 같은 자원 사용하려 하는 상황 => 해당 자원 여러개 설치로 해결

  2. 데이터 해저드

    : 앞 명령어 결과 사용해야하는데 앞이 아직 안끝나 그 결과 사용 못하는 상황 => 파이프라인 지연, 전방전달로 해결

  3. 제어 해저드

    : 앞 분기 명령어 결과 몰라 다음 명령어 인출 못하는 상황 => 파이프라인 지연, 분기예측, 지연분기로 해결