Buffl

RA

JS
by Jan Henrik S.

Welche Konflikte (Hazards) können bei Pipelining auftreten und wie können diese möglicherweise gelöst werden?

structural hazards (strukturelle Konflikte):

  • Hardware unterstützt das Pipelining bestimmter Instruktionskombinationen nicht, beispielsweise bei gleichzeitigem Zugriff auf Daten

    -> getrennte Speicher für Programme und Daten und getrennte Busse (Harvard - Architektur)

    -> Cache splitting in Instruktions- und Datencache

    -> Schreiben und Lesen des Registerfiles in einem Taktzyklus

    -> sonst muss Pipeline angehalten werden (pipeline stall)

data hazards (Datenkonflikte):

  • Eine Instruktion wartet auf das Ergebnis einer vorhergegangenen Instruktion

  • auch RAW- (read after write) Abhängigkeit genannt

    -> Registerfile mit Halbtaktzugriff

    -> pipeline stall durch Einfügen von Leeroperationen (Bubbles) -> Performanceverlust

    -> Daten früher bereitstellen (Forwarding/Bypassing)

    -> Umordnen der Instruktionen durch optimierte Compiler beispielsweise

control hazards (Steuerkonflikte):

  • treten bei Verzweigungen und Sprüngen auf

  • Ergebnis einer Sprunginstruktion ist noch nicht bekannt, während nächste Instruktionen ausgeführt werden sollen

    -> pipeline freeze (Anhalten der Pipeline)

    -> branch delay slots (Nutzen der Sprungverzögerung, auf Verzweigungsinstruktion folgen eine Reihe von Instruktionen, die unabhängig vom Ergebnis des Sprungs sind)

    -> static branch prediction (statische Sprungvorhersage, es wird angenommen dass nie verzweigt wird, was im korrekten Fall zu keinem branch penalty und im falschen Fall zu einem branch Penalty von ein paar Taktzyklen führt, siehe z.B. ATMega und MIPS)

    -> dynamic branch prediction (dynamische Sprungvorhersage, es werden vergangene Sprungentscheidungen gemerkt (branch taken oder branch not token), branch prediction buffer speichert die Vergangenheit der Sprunginstruktionen und branch target buffer speichert die zuletzt berechneten Zieladressen der Sprünge)


Author

Jan Henrik S.

Information

Last changed