2016-05-29 9 views
0

Ich sah ein paar Grafiken und Tabellen, die zeigen, wie gut die CPU-Anweisungen verschachtelt sind. Zum Beispiel:CPU-Pipelinestände Visualisierung

die ich von Playing with the CPU pipeline erhalten habe.

Meine Frage ist zweifach: Wie finde ich die Stände an erster Stelle und wie visualisiere ich sie lesbar? Ich meine, welche Software wird verwendet, um Code auf dieser Ebene zu betrachten und zu optimieren?

Antwort

0

Kurz: In den meisten Fällen wird keine Software verwendet, um "die Stände anzusehen". Stände sind vorhersehbar und können gefunden werden, ohne einen Computer zu berühren. Du weißt wann sie passieren werden und du kannst sie zeichnen wie du willst.

Ganzer Artikel:

Zunächst einmal müssen Sie Pipelining verstehen.

Jede "Aktion", die ausgeführt werden muss, um einen Befehl zu verarbeiten, wird auf separater Hardware (separate Teile Ihrer CPU) ausgeführt. Wenn es 7 Schritte gibt, könnten Sie 7 Anweisungen gleichzeitig behandeln.
enter image description here

(Quelle: http://www.phatcode.net/res/260/files/html/CPUArchitecturea3.html)

Dieses Bild visualisiert dieses Pipelining. Sie können mehrere Anweisungen sehen, die sich durch die CPU bewegen. Sobald der Opcode von Befehl 1 abgerufen wird, benötigt er die Opcode-Hardware nicht mehr. Der Opcode von Befehl 2 kann jetzt abgerufen werden. Dies gilt auch für alle anderen Blöcke.
Die wichtige Sache, die hier zu bemerken ist, ist zu sehen, dass die Werte für den Befehl 2 geladen werden, bevor der Befehl 1 beendet ist. Dies ist möglich, wenn die Werte von Befehl 2 nicht von Befehl 1 abhängen. Wenn sie von Befehl 1 abhängen, muss Befehl 2 angehalten werden. Es wird an seinem Platz warten. Statt zu T5 werden Werte bei T6 abgerufen. An diesem Punkt hat der Befehl 1 sein Ergebnis gespeichert, so daß der Befehl 2 fortfahren kann.

Dies ist, was Sie mit 1 und 2 sehen. Sie sind unabhängig, so dass die nächste Anweisung ohne Stalle ausgeführt werden kann. Allerdings hängt 3 von 1 und 2 ab. Dies bedeutet, dass gewartet werden muss, bis beide Ergebnisse gespeichert sind.

Um Ihre Frage jetzt zu beantworten: Woher wussten wir? Wir haben es gesehen, ohne irgendein Werkzeug zu benutzen. Wie haben wir es visualisiert? Genauso würden wir andere Daten visualisieren, was bedeutet, dass Sie wählen können, welchen Weg Sie gehen, solange es klar ist.

Bitte beachten Sie, dass dies eine vereinfachte Antwort ist, um es verständlich zu machen. Pipelining und Prozessor-Optimierungen sind in modernen Computern weit fortgeschritten. Zum Beispiel gibt es (bedingte) Sprünge, die dazu führen können, dass der Befehl 2, 3, 4 übersprungen wird, und aufgrund des Sprungs plötzlich ein anderer Befehl in die Pipeline geladen werden muss. Sie können viel darüber finden (sowohl vereinfacht als auch erweitert), wenn Sie nach Pipelining suchen.

Weitere Informationen zu diesem Thema:
http://www.phatcode.net/res/260/files/html/CPUArchitecturea3.html Abschnitt 4.8.2. (Dies ist, was ich beim googlen gefunden, um mein Gedächtnis zu aktualisieren, aber es sieht wie ziemlich gute Informationen aus)

+0

Ok, aber unterschiedliche Anweisungen haben Unterschied Latenzen und "Komplexitäten", nehme ich an. Also dachte ich, es gibt einen König der Software, der all die Feinheiten berücksichtigt, so dass ich es nicht von Hand machen muss. –

+0

In der Tat sind einige Anweisungen komplexer als andere.Befehlssätze für verschiedene CPUs enthalten diese Informationen (zusammen mit weiteren Details und Einschränkungen). Dies ist jedoch etwas, das (soweit ich weiß) nur Compiler benötigen. Deshalb gibt es nicht so viele Werkzeuge dafür. Das einzige, was ich finden kann, ist http://www.teach-sim.com/. Gibt es einen bestimmten Grund, warum Sie dies tun müssen? – Bertware

+0

Die Art der Optimierung, die im verbundenen Artikel erwähnt wurde, hat mich interessiert, wie es gemacht wird ... –