Pipelining Pipeline-Hazards (Pipeline-Hemmnisse) Pipeline-Studen (Pipeline-Segmente) Pipeline-Register Pipeline-Takt Steuerflussabhängigkeiten Datenkonflikte Struktur- und Steurflusskonflikte IF-Phase (Instruction Fetch) Befehlsholestufe ID-Phase (Instruction Decode) Befehlsdekodier-Stufe EX-Phase (Execute/Adress Calculation) Ausführung mit ALU MEM (Memory Access) WB (Write Back) Datenkonflikte: (1.) Echte Datenabhängigkeit - RAW (Lese-nach-Schreibekonflikte) (2.) WAR (Schreibe nach Lese-Konflikte) (3.) WAW (Schreibe nach Schreibe-Konflikte) Steuerflussabhängigkeit Steuerflussbefehle Steuerflusskonflikte Sprungvorhersage: (1.) Predict Always Not Taken (2.) Predict Always Taken (3.) Predict Backward Taken, Foward Not Taken BTAC (Branch Target Adress Cache) BTB (Branch Target Buffer) Ein-Bit-Prädiktor (1.) Genommen - T - Taken (2.) Nicht genommen - NT - Not Taken T->T T->NT NT->NT NT->T Zwei-Bit-Prädiktor - Strongly Not Taken (00) - Weakly Not Taken (01) - Weakly Taken (10) - Strongly Taken (11) 1. Hystherese 2. ... 11->10 11->11 10->11 10->01 01->10 01->00 00->00 00->01 11->10 11->11 10->00 10->11 01->00 01->11 00->00 00->01