파이프라이닝
Amdahl's Law
어떤 시스템을 개선하여 전체 작업 중 P%의 부분에서 S배의 성능이 향상되었을 때 전체 시스템에서 최대 성능 향상은 다음과 같다.

파이프라이닝
명령어를 읽어 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다.
동시에 여러 개의 명령어를 실행하여 처리량을 늘리고 시간을 단축시킵니다.
세탁기 예제
자주 쓰이는 세탁기 예제입니다. 세탁기가 3단계의 과정을 가진다고 하겠습니다.
- 1단계 : 세탁기에 옷을 넣는다.
- 2단계 : 세탁을 한다.
- 3단계 : 건조를 한다.
파이프라인이 없는 경우
| 시간 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 세탁1 | 1단계 | 2단계 | 3단계 | ||||||
| 세탁2 | 1단계 | 2단계 | 3단계 | ||||||
| 세탁3 | 1단계 | 2단계 | 3단계 |
파이프라인이 있는 경우
| 시간 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 세탁1 | 1단계 | 2단계 | 3단계 | ||||||
| 세탁2 | 1단계 | 2단계 | 3단계 | ||||||
| 세탁3 | 1단계 | 2단계 | 3단계 |
파이프라인이 없는 경우 9시간이 걸리지만
파이프라인이 있으면 5시간만 있으면 된다.
파이프라인을 이용할 때 전체 프로그램 실행 시간
T = 사이클, m = 단계 수, n = 실행될 명령어 수
T = m + (n - 1)
파이프라인을 이용할 때 성능 향상
Sp = (m*n)/(m+(n-1))
각 단계의 시간이 동일하지 않고, Latch Time(stage 사이 시간) 0보다 크다면
L = 단계 사이 시간, t = 각 단계 시간, T = 전체 단계 시간
효율 = 1/(L+MAX(t))
지연 = m(L+MAX(t))
Sp = T/(L+MAX(t))
파이프라이닝으로 인한 장애(Hazards)
파이프라이닝으로 최대 성능을 얻을 조건
- 모든 명령어는 동일한 실행 단계를 가져야 한다.
- 같은 단계에서 동일한 하드웨어가 사용되어서는 안 됩니다.
파이프라이닝 사용으로 인한 Hazards 종류
- 구조적 해저드
- 데이터 해저드
- 제어 해저드
구조적 해저드
하나 이상의 명령어가 실행을 위해 동시에 동일한 하드웨어를 필요로 할 때 발생
데이터 해저드
어떤 단계가 다른 단계가 끝나기를 기다려야 하기 때문에 파이프라인이 지연되어야 하는 경우 발생
제어 해저드
다른 명령어들이 실행 중에 한 명령어의 결과 값에 기반을 둔 결정을 할 필요가 있을 때 일어난다.