Antwort von
nach 3 Stunden
hilfreich
Re: 500 Mhz = 500 MIPs ?
Das kommt ganz auf die CPU an, in der
Regel lautet die Antwort nein.
Zum einen benoetigtder Prozessor fuer die Ausfuehrung einer Instruktion in der Regel mehr als einen Taktzyklus. Andererseits haben moderne Prozessoren mehrere Rechenwerke (oder neudeutsch Execution Units) die parallel arbeiten koennen. Wie sinnvoll dies ist hanegt von dem gerade abzuarbeitenden Programm ab.
Um in der Praxis der "scheinbaren" Ausfuehrung von einer Instruktion in einem Taktzyklus nahezukommen wird das sogenannte Pipelining eingesetzt. Dabei durchlaufen die Befehle die einzelnen Ausfuehrungseinheiten nacheinander, beispielsweise folgendermassen:
1.) Werte laden
2.) Operation ausfuehren
3.) Werte zurueckschreiben
wobei dann in ein und demselben Taktzyklus die Werte eines Befehls zurueckgeschrieben werden waherend fuer einen weiteren Befehl die eigentliche Operation ausgefuehrt und fuer einen dritten die Werte bereits in die Prozessorregister geladen werden.
Bei der Annahme von durchschnittlich 3 Taktzyklen pro Befehl und einer Pipelinelaenge von 3 ergbist sich somit theoretisch die "scheinbare" Ausfuehrung von 1 Befehl pro Takt. In der Prxis scheitert es daran, dass Programme selten linear ablaufen. Bei einem Sprung muass die Pipeline zunaechst geleehrt und wieder mit den dann aktuellen Befehlen gefuellt werden. Je laenger die Pipeline nun ist umso laenger dauert es, ehe weitergearbeitet werden kann (Sog. Latenzzeit). Allerdings koennen auch mehr Befehlsteile gleichzeitig ausgefuehrt werden, wenn die Pipeline laenger ist.
Ich hoffe, das reicht erstmal als Erklaerung.
Joern