Akkumulator (Computerwissenschaft)

In einer in einer Prozession gehenden Haupteinheit (CPU) eines Computers ist ein Akkumulator ein Register, in dem arithmetische Zwischen- und Logikergebnisse versorgt werden. Ohne ein Register wie ein Akkumulator würde es notwendig sein, das Ergebnis über jede Berechnung (Hinzufügung, Multiplikation, Verschiebung, usw.) zum Hauptgedächtnis zu schreiben, um vielleicht nur Recht zurück wieder für den Gebrauch in der folgenden Operation gelesen zu werden. Der Zugang zum Hauptgedächtnis ist langsamer als Zugang zu einem Register wie der Akkumulator, weil die für das große Hauptgedächtnis verwendete Technologie langsamer (aber preiswerter ist) als das, das für ein Register verwendet ist.

Das kanonische Beispiel für den Akkumulator-Gebrauch summiert eine Liste von Zahlen. Der Akkumulator wird auf die Null am Anfang gesetzt, dann wird jede Zahl der Reihe nach gelesen und zum Wert im Akkumulator hinzugefügt. Nur, als alle Zahlen hinzugefügt worden sind, ist das Ergebnis, das im Akkumulator gehalten ist, der dem Hauptgedächtnis oder einem anderen, Nichtakkumulator, Zentraleinheitsregister geschrieben ist.

Eine Akkumulator-Maschine, auch genannt eine 1-operand Maschine oder eine Zentraleinheit mit der Akkumulator-basierten Architektur, ist eine Art Zentraleinheit, wo, obwohl es mehrere Register haben kann, die Zentraleinheit größtenteils die Ergebnisse von Berechnungen in einem speziellem Register, normalerweise genannt "der Akkumulator" versorgt. Historisch fast alle frühen Computer waren Akkumulator-Maschinen; und viele Mikrokontrolleure, die noch bezüglich 2010 (solcher als 68HC12, der PICmicro, die 8051 und mehrere andere) populär sind, sind grundsätzlich Akkumulator-Maschinen.

Moderne Zentraleinheiten sind normalerweise 2-operand oder 3-operand Maschinen — die zusätzlichen operands geben an, welches von vielen allgemeinen Zweck-Registern (auch genannt "allgemeine Zweck-Akkumulatoren") als die Quelle und der Bestimmungsort für Berechnungen verwendet werden. Diese Zentraleinheiten werden "als Akkumulator-Maschinen" nicht betrachtet.

Die Eigenschaft, die ein Register als seiend der Akkumulator einer Computerarchitektur unterscheidet, ist, dass der Akkumulator (wenn die Architektur einen haben sollte) als ein impliziter operand für arithmetische Instruktionen verwendet würde. Zum Beispiel könnte eine Zentraleinheit eine Instruktion haben wie:

FÜGEN SIE memaddress HINZU

Diese Instruktion würde den Wert hinzufügen, der von der Speicherposition an memaddress zum Wert vom Akkumulator gelesen ist, das Ergebnis in den Akkumulator legend. Der Akkumulator wird in der Instruktion durch eine Register-Zahl nicht identifiziert; es ist in der Instruktion implizit, und kein anderes Register kann in der Instruktion angegeben werden. Einige Architekturen verwenden ein besonderes Register als ein Akkumulator in einigen Instruktionen, aber andere Instruktionsgebrauch-Register-Zahlen für die ausführliche operand Spezifizierung.

Geschichte des Computerakkumulators

Historische Tagung widmet ein Register "dem Akkumulator", ein "arithmetisches Organ", das wörtlich seine Zahl während einer Folge von arithmetischen Operationen ansammelt:

: "Der erste Teil unseres arithmetischen Organs sollte... ein paralleles Lagerungsorgan sein, das eine Zahl erhalten und es zu demjenigen bereits darin hinzufügen kann, der auch im Stande ist, seinen Inhalt zu klären, und der versorgen kann, was es enthält. Wir werden solch ein Organ einen Akkumulator nennen. Es ist im Prinzip in vorigen und gegenwärtigen Rechenmaschinen der verschiedensten Typen, z.B Schreibtisch-Vermehrer, Standardschalter von IBM, modernere Relaismaschinen, der ENIAC ziemlich herkömmlich" (Goldstine und von Neumann, 1946; p. 98 in Bell und Newell 1971).

Gerade sind einige der Instruktionen, zum Beispiel (mit einer modernen Interpretation):

  • Klarer Akkumulator und fügt Zahl von der Speicherposition X hinzu
  • Klarer Akkumulator und zieht Zahl von der Speicherposition X ab
  • Fügen Sie Zahl hinzu, die von der Speicherposition X zum Inhalt des Akkumulators kopiert ist
  • Ziehen Sie Zahl ab, die von der Speicherposition X vom Inhalt des Akkumulators kopiert ist
  • Klarer Akkumulator und Verschiebungsinhalt des Registers in den Akkumulator

Keine Tagung besteht bezüglich der Namen für Operationen von Registern bis Akkumulator und vom Akkumulator bis Register. Tradition (z.B Donald Knuth (1973) hypothetischer MISCHUNGS-Computer) verwendet zum Beispiel zwei Instruktionen genannt Lastakkumulator vom Register/Gedächtnis (z.B "LDA r") und Lager-Akkumulator zum Register/Gedächtnis (z.B "STA r"). Das Modell von Knuth hat viele andere Instruktionen ebenso.

Bemerkenswerte Akkumulator-basierte Computer

Die meisten frühen binären "wissenschaftlichen" Computer von IBM, mit der Vakuumtube IBM 701 1952 beginnend, haben einen einzelnen 36-Bit-Akkumulator zusammen mit einem getrennten Register des Vermehrers/Quotienten verwendet, um Operationen mit längeren Ergebnissen zu behandeln. IBM 650, eine dezimale Maschine, hatte einen 10 Ziffer-Akkumulator; IBM 7070, eine spätere, transistorisierte dezimale Maschine hatte drei Akkumulatoren.

Der 12-Bit-PDP-8 war einer der ersten Minicomputer, um Akkumulatoren zu verwenden, und hat viele spätere Maschinen begeistert. Der PDP-8 hatte nur ein Akkumulator. Der HP 2100 und Datengeneral Nova hatte 2 und 4 Akkumulatoren. Die Nova wurde geschaffen, als das, das zum PDP-8 später folgend ist, dafür zurückgewiesen wurde, was der PDP-11 werden würde. Die Nova hat vier Akkumulatoren, AC0-AC3 zur Verfügung gestellt, obwohl AC2 und AC3 auch verwendet werden konnten, um Ausgleich-Adressen zur Verfügung zu stellen, zu mehr Allgemeinheit des Gebrauchs für die Register neigend. Der PDP-11 hat ein zeitgenössischeres Modell von allgemeinen Registern, numeriert R0-R7 oder mehr, angenommen durch spätesten CISC und RISC Maschinen eingeführt.

Frühe 4-bit- und 8-Bit-Mikroprozessoren wie die 4004, 8008 und zahlreich andere, hatten normalerweise einzelne Akkumulatoren. Der 8051 Mikrokontrolleur hat zwei, ein primärer Akkumulator und ein sekundärer Akkumulator, wo das zweite durch Instruktionen verwendet wird, wenn nur man (MUL AB) multipliziert oder sich (DIV AB) teilt; die ehemaligen Spalte das 16-Bit-Ergebnis zwischen den zwei 8-Bit-Akkumulatoren, wohingegen die letzten Läden der Quotient auf dem primären Akkumulator A und der Rest im sekundären Akkumulator B. Als ein direkter Nachkomme der 8008, der 8080 und der 8086, verwenden die modernen allgegenwärtigen Verarbeiter von Intel x86 noch den primären Akkumulator EAX und der sekundäre Akkumulator EDX für die Multiplikation und Abteilung der großen Anzahl. Zum Beispiel MUL wird ECX die 32-Bit-Register ECX und EAX multiplizieren und das 64-Bit-Ergebnis zwischen EAX und EDX spalten. Jedoch sind MUL und DIV spezielle Fälle, andere arithmetisch-logische Instruktionen (TRAGEN SIE U-BOOT, CMP, UND, ODER, XOR BEI, TEST) kann einige der acht Register EAX, ECX, EDX, EBX, BESONDERS, EBP, ESI, EDI als der Akkumulator (d. h. verlassener operand und Bestimmungsort) angeben; x86 ist so eine ziemlich allgemeine Register-Architektur trotz des Basierens auf einem Akkumulator-Modell. Die 64-Bit-Erweiterung von x86, x86-64, ist weiter zu 14 statt 6 allgemeiner Register verallgemeinert worden.

  • Goldstine, Herman H., und von Neumann, John, "Planend und von den Problemen für ein Elektronisches Recheninstrument", das Vertreter 1947, Institut für die Fortgeschrittene Studie, Princeton Codierend. Nachgedruckt auf Seiten 92-119 in Glocke, C. Gordon und Newell, Allen (1971), Computerstrukturen: Lesungen und Beispiele, McGraw-Hill Book Company, New York. Internationale Standardbuchnummer 0-07-004357-4}. Ein wahrer Schatzfund von Detaillieren von alten Maschinen einschließlich Fotos.

Amiga 500 Plus / Abu Zubaydah
Impressum & Datenschutz