Stimmt es, dass das Kopieren der CPU-intensivste Vorgang ist?

Ein Mechaniker sagte, dass das Kopieren den Mikroprozessor stärker belastet als "andere" Operationen (z. B. das Verschieben von Daten oder das Erstellen der gleichen Menge neuer Daten). Ist das wahr? Können Sie das näher erläutern? Ich verstehe, dass die Montageanleitung anders ist, aber nicht, wie das Kopieren "intensiver" ist ?

Mit Kopieren ist wahrscheinlich so etwas wie memcpyin C gemeint und mit Verschieben ist wahrscheinlich der MIPS-Befehl movzwischen Registern oder zwischen Primärspeichern gemeint.

Welchen Unterschied meinen Sie, wenn Sie zwischen „Kopieren“ und „Verschieben“ von Daten unterscheiden? Sie klingen für mich ähnlich.
@ThePhoton Ich habe versucht, die Frage zu aktualisieren, um die Antwort auf Ihren Kommentar widerzuspiegeln. Danke.

Antworten (3)

Ein einfacher Mikroprozessor arbeitet auf Baugruppenebene mit fester Geschwindigkeit. Zum größten Teil kann es "Anweisungen" in einer bestimmten Anzahl von Taktzyklen ausführen und das war's. Die Taktfrequenz ist normalerweise fest (dh beispielsweise 8 MHz) und ein Befehl kann beispielsweise 4 Taktzyklen dauern. Dies bedeutet, dass eine Anweisung (in diesem willkürlichen Beispiel) in 500 ns ausgeführt wird.

Wenn Sie ein Mikro programmieren, um komplexere Dinge zu tun, bitten Sie es normalerweise, eine Folge mehrerer "Anweisungen" auszuführen, und dies dauert natürlich länger - es belastet nichts mehr (wie es sich ein Maschinenbauingenieur vorstellen könnte, Last anzulegen eine Welle oder ein Balken) - es dauert nur länger, komplexere Dinge zu tun.

"Kopieren" könnte bedeuten "einen Wert im Speicher lesen und in einem anderen Bereich des Speichers speichern". Dazu sind normalerweise 2 Anweisungen erforderlich; eine, um den im Speicher gespeicherten Wert zu lesen, und eine zweite Anweisung, um ihn in einem anderen Speicherbereich zu speichern. Es kann natürlich etwas komplexer sein - Sie müssen die Zieladresse im Speicher einrichten und Sie müssen die Zieladresse einrichten - dies erfordert möglicherweise ein paar weitere Anweisungen, aber ändert sich die Last auf dem Mikro? Nicht wirklich, denn in einem einfachen Mikro würde es so etwas wie eine Schleife machen und darauf warten, dass sich eine Eingabe ändert, damit es mehr Daten verarbeiten kann.

NEIN.

Eine CPU ist ein komplexes System, das aus Subsystemen aufgebaut ist, und es gibt wahrscheinlich keine Last, die alle Subsysteme stark belastet, und daher keine Last, die den Namen "CPU-intensivster Betrieb" verdient, was immer Sie sich einfallen lassen, Sie können wahrscheinlich ein Subsystem finden, das mit einer anderen Last mehr verwendet werden kann.

Das Kopieren des Speichers belastet ein Subsystem – die Speicherschnittstelle – und das ist alles. Es wird nichts anderes belasten, und es ist vielleicht sogar nicht die sinnvollste Last für das Speichersubsystem (das Schreiben so vieler Daten wie das Lesen ist normalerweise nur eine Operation, die durch Speicherbandbreiten-Benchmarks getestet wird).

Die Antwort hängt stark davon ab, welche Art von System Sie besprochen haben.

In PCs gelten die folgenden Beziehungen:

  1. Das Verschieben der Daten ist das einfachste und kürzeste Verfahren. Normalerweise handelt es sich nur um Zeigeränderungen, ohne den Inhalt des Speichers tatsächlich zu ändern.
  2. Das Schreiben neuer Daten und das Kopieren erfordert normalerweise die gleiche Größenordnung von Operationen. Die CPU muss Speicher für die neuen Daten zuweisen, die DMA-Engine mit den Quell- und Zieladressen programmieren, die DMA-Engine mit zusätzlichen Parametern programmieren (zu übertragende Datenmenge, verschiedene Flags usw.) und nach dem Start des DMA die CPU wird nicht mehr benötigt.

Meine Intuition sagt, dass das Kopieren und Schreiben auf jeder Architektur die gleiche (eigentlich vergleichbare) CPU-Zeit (mit und ohne DMAs) benötigt. Dies ergibt sich aus der Tatsache, dass das Schreiben in den Speicher im Wesentlichen das Kopieren von einem anderen Ort ist.

Die obige Diskussion betraf jedoch nur die Anzahl der Operationen, die die CPU durchführt. Es kann sein, dass Ihr Freund Laufzeit meinte, als er von "Last auf Mikroprozessor" sprach. Nun, es macht keinen Sinn, die Laufzeit in Gegenwart eines DMA zu diskutieren - es ist nicht die CPU, die den Großteil der Arbeit erledigt. Ohne DMAs ist das Verschieben immer noch am schnellsten (unter der Annahme, dass es nicht der einfachste Mikroprozessor ist, der das Verschieben als Datenübertragung ausführt), aber die Beziehung zwischen Kopieren und Schreiben hängt von der Quelle ab, von der die Schreibdaten erfasst werden: wenn diese Quelle hat eine geringere Latenz als der Speicher, der Schreibvorgang wird schneller sein; Wenn die Quelle eine höhere Latenz als der Speicher hat, ist der Schreibvorgang langsamer.

Auf jeden Fall ist es schwierig zu sagen, ob Ihr Freund Recht hat, ohne den gesamten Kontext Ihrer Diskussion zu verstehen.

Grüße