★ 3 pipelines는 독립적으로 수행됨!!!!
(stage 별로 구성요소가 겹치지 않음)
⇒ 한번에 3개의 명령어가 처리됨
명령어 실행 사이클 : 1 cycle → 3 cycle
⇒ 이전 명령어의 destination register가 다음 명령어의 입력으로 쓰이는 경우 2 cycle stall 발생
ADD r3,r2,r1, LSL #3
ADD r5, r5, r3, LSL r2
r3 계산은 ex1에서 이뤄짐
BUT write-back cycle에서 r3에 값이 저장됨(forwarding path가 없는 경우)
그 다음 사이클에서 다음 명령어의 첫번째 실행 사이클이 시작될 수 있음
⇒ 이걸 해결하기 위해 data forwarding path가 만들어짐
(forwarding path를 이용하면 다음 cycle에 ex1 실행 가능)
(Data) forwarding paths
- stalling 막기 위해 만들어짐
- DPI에서는 no stall
LDR rN,...
ADD r2,r1,rN