Acumulador (informàtica)

De la Viquipèdia, l'enciclopèdia lliure
Arquitectura d'un processador amb acumulador (bloc de color carbassa).

A la unitat central de processament (CPU) d'un ordinador, l'acumulador és un registre en el qual s'emmagatzemen els resultats de la unitat lògica aritmètica intermèdia.[1]

Sense un registre com un acumulador, caldria escriure el resultat de cada càlcul (suma, multiplicació, desplaçament, etc.) a la memòria principal, potser només per llegir-lo de nou per utilitzar-lo en la següent operació.[2]

L'accés a la memòria principal és més lent que l'accés a un registre com un acumulador perquè la tecnologia utilitzada per a la memòria principal gran és més lenta (però més barata) que la que s'utilitza per a un registre. Els primers sistemes informàtics electrònics sovint es dividien en dos grups, els que tenien acumuladors i els que no.

Els sistemes informàtics moderns solen tenir múltiples registres de propòsit general que poden funcionar com a acumuladors, i el terme ja no és tan comú com abans. Tanmateix, per simplificar el seu disseny, diversos processadors especials encara utilitzen un sol acumulador.[3]

Concepte bàsic[modifica]

Sovint, les operacions matemàtiques es duen a terme de manera gradual, utilitzant els resultats d'una operació com a entrada per a la següent. Per exemple, un càlcul manual de la nòmina setmanal d'un treballador podria semblar:

  1. buscar el nombre d'hores treballades a la targeta de temps de l'empleat
  2. cerqueu la taxa de pagament d'aquest empleat des d'una taula
  3. multipliqueu les hores per la taxa de pagament per obtenir la seva paga setmanal bàsica
  4. multiplicar el seu salari bàsic per un percentatge fix per comptabilitzar l'impost sobre la renda
  5. resta aquest nombre de la seva paga bàsica per obtenir la seva paga setmanal després d'impostos
  6. multipliqueu aquest resultat per un altre percentatge fix per tenir en compte els plans de jubilació
  7. resta aquest nombre de la seva paga bàsica per obtenir la seva paga setmanal després de totes les deduccions
Esquema d'una microarquitectura d'acumulador.

Un programa informàtic que realitzés la mateixa tasca seguiria la mateixa seqüència bàsica d'operacions, encara que els valors que es busquen s'emmagatzemarien tots a la memòria de l'ordinador. Als primers ordinadors, el nombre d'hores probablement es guardaria en una targeta perforada i la taxa de pagament en alguna altra forma de memòria, potser un tambor magnètic. Un cop completada la multiplicació, el resultat s'ha de col·locar en algun lloc. En una "caixa de tambor", això probablement tornaria al tambor, una operació que requereix un temps considerable. I després la següent operació ha de tornar a llegir aquest valor, la qual cosa introdueix un altre retard considerable.

Arquitectures d'acumuladors[modifica]

En els processadors amb acumulador, tots els resultats d'una instrucció manipulant registres s'escriuran en aquest acumulador. De la mateixa manera, qualsevol instrucció manipularà el contingut d'aquest acumulador.

L'acumulador es pot connectar dins de l' UAL, o ALU en anglès (arithmetic logical unit ), un bloc de càlcul que tracta d'operacions aritmètiques i lògiques simples.

En altres casos, aquest acumulador forma part integrant d'un banc de registres, amb la resta de registres del processador.

Alguns processadors només tenen un acumulador com el 6502 de MOS Technology o els Intel i4004, i4040 i i8008. Altres processadors tenen diversos acumuladors. És el cas dels microprocessadors 6800 i 6809 de Motorola que per la seva banda disposen de dos acumuladors, A i B. O fins i tot el Hitachi 6309 que té quatre acumuladors (A, B, E, F). El PDP-8 de Digital Equipment Corporation és un miniordinador que només tenia una bateria. Mentre que el miniordinador Nova de Data General en tenia quatre (AC0, AC1, AC2, AC3).[4]

Programa de mostra[modifica]

El següent codi de muntatge 8051 funciona amb l'acumulador primari:

MOV A,R2 ;stocke R2 dans l'accumulateur
ADD A,R4 ;ajoute la valeur de R4 dans l'accumulateur
MOV R5,A ;stocke la valeur de l'accumulateur dans R5

Un altre exemple clàssic d'utilitzar un acumulador és afegir una llista de números. L'acumulador es posa a zero i a cada iteració s'afegeix un valor al seu contingut. Al final del bucle, el resultat es pot copiar a la memòria o moure's a un altre registre.

Referències[modifica]

  1. Computerbin. «What is Accumulator in Computer Processor?» (en anglès americà). https://computerbin.com,+02-03-2023.+[Consulta: 1r setembre 2023].
  2. «Accumulator» (en anglès). https://www.techtarget.com.+[Consulta: 1r setembre 2023].
  3. «Accumulator (computing)» (en anglès). https://en-academic.com.+[Consulta: 1r setembre 2023].
  4. Bernstein, David «Accumulators» (en anglès). Patterns for Beginning Programmers, 06-05-2022.