Moin,
Ich versuch mal mein Glück, obwohl das schon alles länger her bei mir ist :)
Kann mir mal jemand das mit dem Pipelining erklären, also wie das genau funktioniert in einem Prozessor? Ich durchblicke insbesondere den folgenden Punkt nicht ganz: Man nimmt eine weitere Registerstufe dazu und unterteilt die Funktion also in Teilaufgaben. Hierdurch erhöht sich zwar die mögliche Taktfrequenz (-->Durchsatz) aber die Latenz erhöht sich.
Soweit ich weiß, erhöht sich die Latenz nicht zwingend. Gemäß dem Wikipedia-Artikel ist das Problem der Latenz nur dann relevant, wenn es zu einem Pipeline-Flush kommt (die Pipeline also verworfen werden muss):
Dies ist ja auch logisch, wenn ich nur wenig Stufen in der Pipeline habe und dann alles "wegwerfen" muss, ist nicht so viel "hin", wie wenn ich viel Stufen habe, also viele Aufgaben in der Pipeline "stecken".
Wenn es aber zu wenig Kontrollfluss-Wechseln kommt (= wenig Pipeline-Flushes nötig sind), ist Pipelining IMMER sinnvoll, weswegen das ja auch alle modernen Prozessoren so machen: Während ein Teil der Pipeline mit Aufgabe X beschäftigt ist, kann ein anderer Teil schonmal mit Aufgabe Y anfangen. Je besser ein Programm gewissermassen "vorhersagbar" ist (der Prozessor also im Vorfeld schon weiss, was er die nächste Zeit so tun wird) desto rentabler ist Pipelining.
Die Taktfrequenz wird IMO dadurch NICHT erhöht, den selbige ist ja abhängig von den Registern (wie schnell diese also schalten können) - es wird aber der DURCHSATZ (wie Du ganz richtig gesagt hast) erhöht, weil in einem Taktzyklus immer gleich mehrere Aufgaben erledigt werden, und nicht mehr so lange bis zum Beginn der Ausführung des nächsten Befehls gewartet werden muss.
Alles ohne Gewähr :)
Hope that helps,
Jörg