Vsimnite si, ako sme rozdelili jednotlive "stage" pipeline. Execution a Memory stage su oddelene Okrem toho, mame zrazu moznost vyuzivat prostriedky pre celociselne operacie, a floating point.
Funkcne jednotky su zariadenia, ktore umoznuju vykonanie nejakej ulohy, typicky transformuju vstupne data na vystupne. Je to napr. scitacka, nasobicka a pod.
Vsetky FJ maju svoje parametre.
- latenciu
Oznacuje pocet taktov, kym je k dispozicii vysledok. Typicky to je pocet stupnov pipeline v jednotke.
- a spustaci interval
Oznacuje pocet taktov, ktory funkc. jed. potrebuje, kym bude znovu pouzitelna
Pre potreby tejto pipeline musime zaviest nove pojmy pre instrukcie.
- Instrukcia moze tiez mat svoju latenciu. Latencia instrukcie je pocet taktov, nez je k dispozicii vysledok pre datovo zavislu instrukciu. Latencia zavisi na latencii funkc. jednotky pre danu instrukciu, forwardovacich cestach v procesore a na type zavislej instrukcie (kedy dana instrukcia potrebuje data).
- Spustaci (opakovaci) interval instrukcie je pocet taktov, ktore su potreba, kym moze byt spustena dalsia instrukcia rovnakeho typu a bez strukturnych hazardov. Zavisi na poctu funkc. jednotiek a ich spustacich intervaloch
S FP pipeline prichadzaju aj dalsie problemy. Vacsi pocet strukturnych hazardov. Vacsi pocet RAW hazardov, sposobeny vacsiou latenciou instrukcii.WAR hazardy tu stale nemozu nastat, pretoze operandy su citane na zaciatku vykonavania instrukcie su vykonavane v sekvencnom poradi. WAW hazardy tentokrat mozu nastat, pretoze instrukcie su ukoncene v roznom poradi, kvoli roznej latencii. Volame to "In Order Issue + Out of Order Completion". Objavit hazardy v ID je zlozite.