2016-10-29 7 views
0

Es gibt zwei Mechanismen zum Ausführen von Anweisungen.Taktzyklus in Pipeline- und Einzeltakt-Implementierung

  1. einzigen Taktzyklus Implementierung
  2. Pipelining.

In MIPS-Architektur (aus dem Buch Computer-Organisation und Gestaltung), hat Befehl 5 Stufen.

Also, in Eintaktzyklusimplementierung, was bedeutet, dass während eines Taktzyklus 5 Stufen für einen Befehl ausgeführt werden.

Zum Beispiel wird Ladebefehl (es hat 5 Stufen) in einem Taktzyklus ausgeführt. Somit können andere Befehle nach diesem einen Taktzyklus ausgeführt werden. Nehmen wir an, dass ein Taktzyklus 10 Sekunden dauert.

Und jetzt, in Pipelining, können mehrere Anweisungen überlappt werden. Ich bin verwirrt von diesem Konzept im Vergleich zu einem Taktzyklus im obigen Beispiel.

enter image description here

In hier 5 Anweisungen auszuführen, braucht es neun Taktzyklen. Es bedeutet, 5 Anweisungen auszuführen, es benötigt 90 Sekunden. Aber bei der Implementierung eines einzelnen Taktzyklus braucht es nur 50 Sekunden, um 5 Befehle auszuführen. Pipelining benötigt mehr Taktzyklen. (Nicht gut) Ich denke falsch? oder fehle ich etwas?

Und hier, So, um die erste Anweisung lw $10, 20($1) auszuführen, braucht es 50 Sekunden ??

+0

* Nehmen wir an, dass ein Taktzyklus 10 Sek. * 1 Nanosekunde ist eine wahrscheinliche Wahl (1 GHz CPU). Sogar ein sehr früher RISC, der eine so einfache Pipeline verwenden könnte, würde wahrscheinlich bei 100 MHz laufen. Sie sind also um 9 oder 10 Größenordnungen in der Annahme, was ein gutes/vernünftiges Beispiel sein könnte ... –

+1

Was Sie vermissen, ist, dass das Pipelining Ihnen ermöglicht, das Design schneller zu takten, als wenn eine ganze Anweisung es müsste Holen/Dekodieren/Ausführen/Zurückschreiben in einem einzigen Zyklus. (In der Regel würde eine CPU ohne Pipeline, wie Intels ursprüngliches 8086, mehrere Zyklen für jede Anweisung benötigen, anstatt die Uhr wirklich langsam zu laufen und sie in interne Zeitoperationen zu unterteilen.) –

Antwort

1

Ich denke, das größte Missverständnis, das Sie haben, ist, dass Sie die Dauer eines Taktzyklus in beiden Designs als gleich betrachten, was nicht der Fall ist. Lets bezeichnen einen Taktzyklus im Einzelzyklus-Design als X und einen Taktzyklus in Pipeline-Design als Y. In einem einzigen Zyklus Design 5 Anweisungen werden 5X Zyklen und in einem Pipeline-Design dauert dies 9Y Zyklen.

Jetzt müssen wir eine Beziehung zwischen X und Y finden. Nun denken Sie an einen Fall, in dem Sie nur einzelne Anweisungen ausführen müssen. In einem einzigen Zyklus-Design dauert dies X Zyklen und in einem Pipeline-Design wird dies 5Y dauern. Wenn beide mit der gleichen Rate getaktet werden, sollte X gleich 5Y sein.

können nun ein wenig Substitutions Mathe tun :-)

Einzelzyklus - 5X

Pipeline - 9Y

X Substituieren = 5Y

Einzelzyklus - 25Y

Pipeline - 9Y

Dort gehen Sie. Einzelzyklus-Design ist 2.7X langsamer als ein Multi-Zyklus-Design.

+0

Warten auf 5 Anweisungen von Anfang bis Ende Finish der Pipeline-Design ist ein bisschen unrealistisch. Die stationäre Situation zum Ausführen eines langen Befehlsstroms ist idealerweise "5Y" -Zyklen. (Natürlich werden Ställe aufgrund begrenzter Parallelität und Verzweigungsfehlvorhersagen die Dinge verlangsamen, so dass 9Y vielleicht doch realistisch ist). –

+0

Aber die Art, wie Sie es verwenden, wäre es vernünftiger zu erwarten, dass die Pipeline-CPU-Zeit für einen Befehl den ganzen Weg durch die Pipeline gehen würde, um ungefähr der CPU-Zeit für einen Befehl zu entsprechen (wenn Sie pipelieren der Mindestbetrag erforderlich). So könnte das Taktverhältnis leicht so groß wie 5: 1 sein (gegenüber einem albernen Design, das so langsam getaktet ist, dass es jeden Befehl in einem einzigen Zyklus ausführen kann). –

Verwandte Themen