Zauważmy, że niektóre czynności składające się na wykonanie pojedynczego rozkazu są wykonywane przez niezależne obwody w procesorze. Oczywiście, najprościej byłoby każdy rozkaz wykonać po kolei, ale wtedy tracimy mnóstwo czasu (na prezentacji obok podpisane jako Serialism - zauważ, jak długo to trwa!). Można przecież wcześniej zerknąć na to, co będziemy robić później, i się do tego przygotować. Zróbmy tak, żeby każdy element procesora pracował nieustannie. Poukładajmy te wszystkie konieczne czynności obok siebie, a znacznie skrócimy czas! Nazywa się to pipelining, i jest przedstawione na slajdzie obok.
Oczywiście, to wszystko nie jest takie proste. Zauważmy, że każda z faz wykonywania rozkazu może działać w różnym czasie.
Więcej o fazach przetwarzania rozkazu.
Pojawiają się również problemy. Co, jeśli rozkazy są od siebie zależne? Co, jeśli wystąpi skok? Wtedy pojawia się problem, bo praca, którą przed chwilą wykonał procesor nagle staje się bezużyteczna.
Może ten wycinek z IRCa Ci pomoże.
<tV2> ze 5 etapow insturkcji jest wykonywanych jednoczesnie? <flegmatyk> nie do końca <flegmatyk> jest 5 etapów instrukcji <flegmatyk> ale one są robione osobnymi układami w procku <flegmatyk> niezależnymi układami <flegmatyk> więc robisz etap 1 na elemencie 1 <flegmatyk> potem przechodzisz do etapu 2 na elemencie 2 <flegmatyk> to w tym czasiue możesz już robić etap 1 na elemencie 1 z następnej instrukcji