Was bedeutet "die Einsparung von Taktzyklen kann die Ausführungszeit erheblich beeinflussen"?

377
The Pointer

Der folgende Text behandelt die historische Entwicklung von UNIX:

Der nächste wichtige Meilenstein war das Umschreiben von UNIX in der Programmiersprache C. Dies war damals eine unerhörte Strategie. Es wurde allgemein angenommen, dass etwas so Komplexes wie ein OS, das sich mit zeitkritischen Ereignissen befassen muss, ausschließlich in Assemblersprache geschrieben werden muss. Gründe für diese Haltung sind folgende:

  • Die Prozessor- und Busgeschwindigkeiten waren relativ niedrig, sodass die Einsparung von Taktzyklen die Ausführungszeit erheblich beeinträchtigen könnte.

Ich verstehe nicht, warum das Einsparen von Taktzyklen zu einer kürzeren Ausführungszeit führt.

Stimmt es nicht, dass je schneller (und häufiger) Taktzyklen sind, desto besser ist die Ausführungszeit des Prozessors. Wäre es in diesem Fall nicht das Ziel, die Taktzyklen zu erhöhen, anstatt sie zu "speichern" (zu reduzieren)?

Ich würde mich sehr freuen, wenn sich jemand die Zeit nehmen könnte, diesen Punkt zu klären.

0
Sie verstehen es nicht, sie zu "retten". Sie möchten die Anzahl der benötigten Taktzyklen für eine bestimmte Aufgabe reduzieren. djsmiley2k vor 7 Jahren 0
@ djsmiley2k Danke für die Antwort. Das ist mein Punkt: Warum sollten Sie sie speichern, wenn mehr Zyklen = schneller sind? Oder missverstehe ich immer noch etwas? The Pointer vor 7 Jahren 0
Es bedeutet, die Anzahl der verwendeten zu speichern. - Wenn Sie sich jeden Taktzyklus vorstellen, können Sie einen Befehl ausführen. Sie möchten, dass Ihr Programm in so wenigen Befehlen / Zyklen wie möglich ausgeführt wird. Sie erhalten immer nur die festgelegte Anzahl von Zyklen pro Sekunde. djsmiley2k vor 7 Jahren 2
"Ich verstehe nicht, warum das Einsparen von Taktzyklen zu einer kürzeren Ausführungszeit führt." - Jede Anweisung benötigt Zeit, um zu arbeiten. Je mehr Anweisungen Sie haben, desto länger dauert es, bis der Befehl abgeschlossen ist. * Grundsätzlich kann ein Compiler die Optimierung besser durchführen als ein menschlicher can.v Ramhound vor 7 Jahren 0

1 Antwort auf die Frage

0
jcbermu

Wenn Sie in Assembler (Maschinencode) programmieren, wissen Sie, wie viele CPU-Zyklen jede Anweisung verwenden. Sie wissen also im Voraus, wie viel Zeit eine Routine benötigt.

Wenn Sie jedoch eine Hochsprache verwenden, die kompiliert wird (eine Übersetzung ist eine Übersetzung in Maschinencode), ist es unsicherer, wie lange ein Prozess dauern kann. Daneben besteht eine Abhängigkeit von der Fähigkeit des Compilers, den endgültigen Code entsprechend dem verwendeten CPU-Typ zu optimieren.

Nicht optimierter Code bedeutet mehr CPU-Zyklen, um dieselbe Aufgabe auszuführen.

Klarstellung: * Wenn Sie C-Code kompilieren, übersetzen Sie diesen in eine Assembly, die dann als Maschinencode verarbeitet wird. * `Assembly ist eine menschliche Interpretation des Maschinencodes. Sie können die Berechnungszeit beim Umgang mit C immer noch schätzen oder sogar Sprachen wie Java und C #. Der Maschinencode ist nicht immer ein 1: 1-Analogon zum Montagecode. [Montagecode vs. Maschinencode vs. Objektcode?] (Http://stackoverflow.com/questions/466790/assembly-code-vs-machine-code-vs-object-code) Ramhound vor 7 Jahren 0
@Ramhound Ja. das ist wahr. Ich habe es zu stark vereinfacht, um es verständlicher zu machen. jcbermu vor 7 Jahren 0