<aside>
💡 선 요약
스테이지별 파이프라이닝
register, control 저장
</aside>
Pipelining

- 위 처럼 하면 오래 걸리지만, 아래처럼 한다면 동시에 최대 4배의 효율을 낼 수 있다!
- 가정은 다음과 같다
- 실행 간의 ordering dependency가 존재해서는 안된다.
- 예를 들어 첫번째 빨래 중에 어떤 옷을 두번째 빨래에서 다시 빨아야 한다면
위와 같이 하면 안된다!
- 따라서 매 task는 독립적이어야 한다.
- 예를 들어
a=c+d
e=a+b 이런 경우에, a가 실행이 완료 되어야 두번째 줄을 할 수 있는 것이 있다.
Performance of Pipelining
쪼개서 병렬로 처리할 수록 빨라지지만, 쪼갠 각각의 처리한 결과를 저장하고 전달하는 과정에서도 딜레이가 생긴다. (latch delay)
이를 고려하면 다음과 같이 나타낼 수 있다.



- optimal k를 달성한다면
동일 퍼포먼스에서 cost를 최소화 할 수 있고,
동일 cost에서 퍼포먼스를 최대로 올릴 수 있다.
Pipelining
- 다섯 스테이지
- IF
- ID
- EX
- MEM
- WB
- 이 다섯개를 나누어서 실행할 수 있다!
멀티코어에서 합쳐 놓은 ALU를 아래처럼 다시 3개로 쪼개야 한다.

파이프라이닝은 다음과 같다.
2400ps 걸릴 것을 1400ps에 끝낼 수 있다.
여기서 ID와 EX가 200ps 걸리기 때문에 이를 기준으로 맞추어 주어야 한다!