Articles

Was ist ein Akkumulator?

Beste Antwort

Ein Akkumulator ist ein Objekt, das schrittweise Summen, Zählungen, die für eine effiziente Berechnung von Mittelwerten, Standardabweichung und Minuten benötigt werden, verfolgt , max etc,. anstatt jedes Mal neu berechnen zu müssen.

Antwort

Lassen Sie mich Ihre Frage leicht verfeinern: Was ist der Unterschied zwischen einer Akkumulatorbefehlssatzarchitektur und einer Allzweckregisterbefehlssatzarchitektur?

Diese repräsentieren zwei Punkte im Entwurfsraum für Befehlssätze. Überlegen Sie, was ein CPU-Befehl tun muss. Betrachten Sie vorerst nur die Anweisungen compute . Es muss mindestens die folgenden Informationen enthalten:

  • Welche Berechnung durchzuführen ist (Addieren, Subtrahieren, Verschieben, Vergleichen)
  • Welche Werte sollen für die Berechnung durchgeführt werden ( die Eingaben in die Berechnung)
  • Wo soll das Ergebnis abgelegt werden (die Ausgabe der Berechnung)

Zum Beispiel, wenn ich die übergeordnete Programmanweisung X = Y + Z, Sie müssen den Prozessor anweisen, die in Y und Z enthaltenen Werte abzurufen, sie hinzuzufügen und das Ergebnis in X zu schreiben.

In einer Akkumulatorarchitektur meistens Rechenanweisungen arbeiten mit einem speziellen Register, das als Akkumulator bezeichnet wird. Die meisten Operationen haben daher den Akkumulator als implizites Argument für die Anweisung. Der Akkumulator liefert entweder eine Eingabe für den Befehl, empfängt die Ausgabe von dem Befehl oder beides. Um X = Y + Z auf einer akkumulatorbasierten Maschine auszuführen, sieht die Befehlssequenz ungefähr so ​​aus:

  • Laden Sie Y in den Akkumulator
  • Z zum Akkumulator hinzufügen
  • Akkumulator unter X speichern

Wenn ich einen komplexeren Ausdruck hätte, z. B. „I = J + K + L + M +“ N + O „, die Sequenz könnte folgendermaßen aussehen:

  • J in den Akkumulator laden
  • K zum Akkumulator hinzufügen
  • L zum Akkumulator hinzufügen Akkumulator
  • M zum Akkumulator hinzufügen
  • N zum Akkumulator hinzufügen
  • O zum Akkumulator hinzufügen
  • Akkumulator zu I speichern

Da die meisten Operationen den Akkumulator betreffen, müssen Sie keine Opcode-Bits zuweisen, um ihn anzugeben. Wie bereits erwähnt, lautet der Akkumulator impliziert . Auch in der Maschine selbst könnte der Akkumulator direkt in die Recheneinheit selbst eingebaut werden, was die Hardware vereinfacht.

Berechnen Sie in einer Allzweckregisterarchitektur den Befehl s Verwenden Sie mehrere Argumente, um anzugeben, aus welchen Registern Werte gelesen werden sollen. Dies macht sie flexibler. Die Flexibilität ist jedoch mit Kosten verbunden: Sie benötigen mehr Opcode-Bits, um anzugeben, mit welchen Registern gearbeitet werden soll, und Sie müssen Pfade für alle diese Register zur Recheneinheit bereitstellen.

Für die obigen Beispielausdrücke Der Code sieht am Ende nicht viel anders aus:

  • Laden Sie Y in Register R0
  • Laden Sie Z in Register R1
  • Fügen Sie R0 zu R1 hinzu und setzen Sie Das Ergebnis in R2
  • Speichern von R2 in X

Allzweck-Registermaschinen zeigen einen Vorteil, wenn Sie Werte in Registern für viele Vorgänge behalten können. Angenommen, ich wollte dieses etwas kompliziertere Programm ausführen:

X = A + B

Y = A - B

In einer Akkumaschine müsste ich A und B für beide Operationen neu laden. In einer Allzweckmaschine würde ich A und B nur einmal laden.

In Allzweckregistermaschinen gibt es auch mehrere Varianten: (Diese Liste ist nicht vollständig; auch einige Architekturen mischen diese Konzepte. )

  • Registerspeicher: Ein Operand stammt aus einem Register und ein Operand aus dem Speicher.
  • Register-Register, 2-Adresse: Beide Operanden stammen aus Registern, aber das Ergebnis muss einen der Eingänge überschreiben.
  • Register-Register, 3-Adresse: Beide Operanden stammen aus Register, und das Ergebnis kann in ein eigenes Register verschoben werden.

Der x86-Prozessor ist beispielsweise eine Register-Speicher-Maschine, die auch Register-Register-Anweisungen mit zwei Adressen bietet. Die meisten RISC-Maschinen sind Register-Register-Maschinen mit drei Adressen und separaten Anweisungen zum Laden / Speichern. Beide sind Allzweck-Registermaschinen.

Vergleichen Sie diese mit der 6502 , bei der es sich um eine Akkumulatormaschine handelt. Die meiste Arithmetik (Addition, Subtraktion, Drehung und Verschiebung) arbeitet mit dem A-Register. Die beiden anderen Register X und Y unterstützen nur das Inkrementieren, Dekrementieren und Vergleichen. Sie werden hauptsächlich zum Indizieren von Speicher- und Schleifenzählern verwendet.

Ein dritter Architekturtyp, den Sie nicht erwähnt haben, ist die -Stack-Architektur . Eine Stapelarchitektur ähnelt einer Akkumulatorarchitektur dahingehend, dass die gesamte Berechnung auf einen einzelnen Punkt konzentriert ist. Der Unterschied besteht darin, dass eine Stapelarchitektur ihre Argumente immer von einem Stapel liest und ihre Ergebnisse immer auf den Stapel legt.Sowohl die Eingaben als auch der Ausgaben eines Rechenbefehls sind implizit. Andere Anweisungen müssen dann das Verschieben von Werten auf den Stapel und das Entfernen von Werten aus dem Stapel verwalten.

In tatsächlichen Chips finden Sie nicht viele Stapelarchitekturen. Sie sind jedoch bei Interpreten beliebt (z. B. Java-Bytecode) oder FORTH) und in bestimmten Taschenrechnern wie den RPN-basierten Taschenrechnern von HP.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.