Sama potokowość tego nie załatwia, ale i tak przyspiesza przetwarzanie bo zauważe każdy element potoku jest wykonywany niezależnie. I nie chodzi tutaj o framgnety "o podobnych właściwościach" tylko identyczny typ operacji.
Najbardziej podstawowa wersja wykonania kodu to 3 elementy: fetch (pobranie rozkazu z pamięci), decode (wyliczenie co to będzie za operacja), execute (faktyczne wykonanie operacji).
Początkowo było tak że wszystkie te operacje były wykonywane jako jeden blok, w efekcie Jeśli każda z tych operacji zabiera 1ns to wykonanie jednej instrukcji kosztuje 3ns, dwóch instrukcji 6ns itd. A teraz wyobraź sobie że każdy z tych 3 elementów podzielimy na osobne kawałki obsługiwane przez osobne elementy CPU. Wtedy Najpierw wykonujemy fetch 1 rozkazu, następnie wykonujemy decode 1 rozkazu ale możemy jednocześnie wykonać fetch 2 rozkazu (bo układ realizujacy fetch jest "wolny"). W efekcie wykonanie 1 instrukcji to nadal 3ns ale wykonanie 2 instrukcji kosztuje już tylko 4ns, bo te "niezależne bloki" są wykonywane jednocześnie!
Dodatkowo wprowadzono później także tzw superskalarność -> CPU posiada więcej niż 1 układ pozwalający na wykonywanie "execute". Wynika to między innymi z faktu, że "execute" nie zabiera stałego czasu, są operacje cieższe obliczeniowo i te łatwiejsze. Proste instrukcje mogłyby być blokowane w strumieniu przez jakąś długą operacje. W procesorze superskalarnym CPU może zrobić execute kilku instrukcji na raz.