Pipeline Pipeline-Stufe = Pipeline-Segment Pipeline-Register Pipeline-Maschinentakt Pipeline-Durchsatz IF - Instructions Fetch - Befehlsholephase ID - Instruction Decode - Befehlsdekodierphase EX - Execute/Adress Calculation - Ausführungsphasen MEM - Memory Access - Speicherzugriffsphase WB - Write Back - Resultatsspeicherphase Befehlsholestufe Befehlsdekodierstufe Operanden Operationen innerhalb der ALU Speicherzugriffsphase Pipeline-Konflikte Pipeline-Hemmnisse = Pipeline-Hazards 1. Datenkonflikte 2. Struktur- und Ressourcenkonflikte 3. Steuerflusskonflikte Datenkonflikte: 1. Echte Datenabhängigkeit - Lese-nach-Schreibkonflikte - Read after Write - RAW 2. Gegenabhängigkeit - anti dependence - Schreibe-nach-Lesekonflikte - WAR 3. Ausgabeabhängigkeit - output dependence - Schreibe-nach-Schreibekonflikte - WAW Behandlung: 1. Statisch durch den Compiler 2. Pipeline-Sperrung - Erkennung durch Hardware - Interlocking - Stalling Steuerflusskonflikte Steuerflussabhängigkeiten Steuerflussänderungen BTAC - Branch Target Adress Cache - Sprungziel-Adress-Cache BTB - Branch Target Buffer Branch Adress Cache - Sprungziel-Cache Statische Sprungvorhersagen: 1. Predict always not taken 2. Predict always taken 3. Predict backward taken, forward not taken 1-Bit-Prädiktor 1. Genommen - T - taken 2. Nicht genommen - NT - Not taken 2-Bit-Prädiktor 1. predict strongly not taken 2. perdict weakly not taken 3. predict weakly taken 4. predict strongly taken arsort($array) asort($array) implode($array, $key) explode($array, $key) count ($array) natsort ($array) natcasesort ($array) ... body head title meta base links