Ich habe etwas Material über Superscalr und OoO gelesen und ich bin verwirrt.
Ich denke, ihre Architektur Graphen sehen sehr ähnlich aus.Was ist der generelle Unterschied zwischen Superscalar und OoO-Ausführung?
Antwort
Superskalare Mikroprozessoren können zwei oder mehr Anweisungen gleichzeitig ausführen. Z.B. typischerweise haben sie mindestens 2 ALUs (obwohl ein superskalarer Prozessor möglicherweise 1 ALU und eine andere Ausführungseinheit wie eine Schalt- oder Sprungeinheit hat).
(Genauer gesagt, superskalare Prozessoren können mit der Ausführung von zwei oder mehr Anweisungen in derselben beginnen Die Pipelined-Prozessoren können mehr als einen Befehl gleichzeitig ausführen, aber ein nicht-superskalarer Pipeline-Prozessor startet nur einen einzigen Befehl in einem bestimmten Zyklus, Pipelined-Ausführungseinheiten benötigen mehrere Zyklen, um Ende-zu-Ende auszuführen sind in der Regel in der Lage, zwei nicht-pipelinierte Befehle mit einer einzelnen Zykluslatenz pro Zyklus auszuführen, während nicht-superskalare Pipeline-Prozessoren nicht gleichzeitig zwei Einzelzyklusbefehle in den ALUs ausführen können.)
Out-of-order-Prozessoren können Anweisungen aus der ursprünglichen Reihenfolge ausführen. Zum Beispiel in dem folgenden, in der MULTIPLY 5 Zyklen dauert, den Befehl 3 ausführen kann, bevor der Befehl 2 - weil der Befehl 2 wird für den Zyklus 5 Ergebnis der MULTIPLY des Befehls 1 warten:
1: MULTIPLY reg1 := reg2 * reg3
2: ADD reg4 := reg1 + 5
3: ADD reg6 := reg2 + 1
meist Unrund Auftragsprozessoren sind auch superskalar. Sie können sich jedoch vorstellen, einen Out-of-Order-Prozessor zu erstellen, der nicht superskalar ist und nur eine Operation pro Pipelined-ALU pro Zyklus initiieren kann. (I haben vorgeschlagen, solche Operationen, wenn sie von Intel, als Low-Power-Chips. Heck, können Sie Out-of-Order-Prozessoren, die nur zur Hälfte Skalar sind, z. B. dass nur eine 16 Bit breite ALU, 2 zu nehmen Zyklen für eine 32-Bit-Add, usw. Aber das ist Stretching.)
Viele superscalar Prozessoren sind jedoch nicht out-of-order. Im obigen Beispiel würde ein Superskalar in der richtigen Reihenfolge zuerst die Anweisung [1] ausführen. Es würde NICHT starten Anweisung 3, aber würde warten, bis Anweisung 2 starten könnte - zu diesem Zeitpunkt würde es Anweisung 2 und 3 zusammen starten.
Hoffe, das hilft.
Manchmal müssen Sie über unwahrscheinliche Grenzfälle nachdenken, z. B. 1-weite oder halb-breite OOO-Maschinen, um die Konzepte zu verstehen.
- 1. Was ist der Unterschied zwischen `==` und `ist`?
- 2. Was ist der Unterschied zwischen:.! und: r !?
- 3. Was ist der Unterschied zwischen Difftime und '-'?
- 4. Was ist der Unterschied zwischen $ und $$?
- 5. Was ist der Unterschied zwischen Verilog! und ~?
- 6. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 7. Was ist der Unterschied zwischen/* ... */und/** ... */
- 8. Was ist der Unterschied zwischen `&` und `ref`?
- 9. Was ist der Unterschied zwischen $ (...) und `...`
- 10. Was ist der Unterschied zwischen .Equals und ==
- 11. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 12. Was ist der Unterschied zwischen + = und = +?
- 13. Was ist der Unterschied zwischen? und ? = Nil
- 14. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 15. Was ist der Unterschied zwischen:
- 16. Was ist der Unterschied zwischen der JSP und der JSTL?
- 17. Was ist der Unterschied zwischen NetFx45WebLink und NetFx45RedistLink ist
- 18. Was ist der Unterschied zwischen PS1 und PROMPT_COMMAND ist
- 19. Was ist der Unterschied zwischen x86 und x64 ist
- 20. Was ist der Unterschied zwischen „ist None“ und „== None“
- 21. Was ist der Unterschied zwischen DISPATCH_QUEUE_CONCURRENT und DISPATCH_QUEUE_SERIAL ist
- 22. Was ist der Unterschied zwischen Task.Run ist() und Task.Factory.StartNew()
- 23. Was ist der Unterschied zwischen RewriteRule ist und umleiten 301
- 24. Was ist der Unterschied zwischen ist - (void) und + (void) Methoden
- 25. Was ist der Unterschied zwischen ist HttpResponseMessage und HttpResponseException
- 26. Was ist der Unterschied zwischen nohup und kaufmännisches Und
- 27. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 28. Was ist der Unterschied zwischen Microsoft.AspNet.WebApi.OData und Microsoft.Data.OData und Microsoft.AspNet.OData?
- 29. Was ist der Unterschied zwischen Chisel und Lava und CLaSH?
- 30. Was ist der Unterschied zwischen SimpleNamespace und der leeren Klassendefinition?
Siehe auch: ** [Moderne Mikroprozessoren: Ein 90-Minuten-Guide!] (Http://www.lighterra.com/papers/modernmicrocessors/) **. Dieser Artikel baut von einfachen Pipelining über Tief-Pipeline bis Superscalar auf, mit Diagrammen und Beispielen. Dann geht es weiter zu Befehlslatenzen und -abhängigkeiten, Verzweigungen (und Vorhersage) und Out-of-Order-Ausführung. (Und Prädikation (Datenabhängigkeiten), um Äste zu ersetzen.) Dann einige Diskussionen über "Brainiac vs Speed Dämon (z. B. Pentium 4)" und warum Frequenz/Power-Skalierung tötete P4 und warum wir Multi-Kerne statt immer schneller Einzelkerne haben. Sehr empfehlenswert. –