Articles

Cosè laccumulatore?

Migliore risposta

Un accumulatore è un oggetto che tiene traccia in modo incrementale delle somme, dei conteggi necessari per un calcolo efficiente delle medie, della deviazione standard, dei minuti , max ecc. invece di dover ricalcolare ogni volta.

Risposta

Consentitemi di affinare leggermente la vostra domanda: qual è la differenza tra unarchitettura di un insieme di istruzioni dellaccumulatore e unarchitettura di un insieme di istruzioni di registro generico?

Questi rappresentano due punti nello spazio di progettazione per i set di istruzioni. Considera cosa deve fare unistruzione della CPU. Per ora, considera le istruzioni di compute . Come minimo, deve fornire le seguenti informazioni:

  • Quale calcolo eseguire (somma, sottrazione, spostamento, confronto)
  • Su quali valori eseguire il calcolo ( gli input per il calcolo)
  • Dove mettere il risultato (loutput del calcolo)

Ad esempio, se ho scritto listruzione di programma di alto livello X = Y + Z, devi dire al processore di recuperare i valori contenuti in Y e Z, aggiungerli e scrivere il risultato in X.

In unarchitettura ad accumulatore, la maggior parte le istruzioni di calcolo operano su un registro speciale chiamato accumulatore. La maggior parte delle operazioni, quindi, ha laccumulatore come argomento implicito dellistruzione. Laccumulatore fornisce un ingresso allistruzione, riceve luscita dallistruzione o entrambi. Per eseguire X = Y + Z su una macchina basata su accumulatori, la sequenza di istruzioni sarà più o meno simile a questa:

  • Carica Y nellaccumulatore
  • Aggiungi Z allaccumulatore
  • Memorizza accumulatore a X

Se avessi unespressione più complessa, come “I = J + K + L + M + N + O “, la sequenza potrebbe essere questa:

  • Carica J nellaccumulatore
  • Aggiungi K allaccumulatore
  • Aggiungi L al accumulatore
  • Aggiungi M allaccumulatore
  • Aggiungi N allaccumulatore
  • Aggiungi O allaccumulatore
  • Memorizza accumulatore a I

Poiché la maggior parte delle operazioni coinvolge laccumulatore, non è necessario dedicare alcun bit di codice operativo per specificarlo. Come ho detto prima, laccumulatore è implicito . Inoltre, nella macchina stessa, laccumulatore potrebbe essere integrato direttamente nellunità aritmetica stessa, semplificando lhardware.

In unarchitettura di registro di uso generale, calcolare listruzione s accetta più argomenti per specificare da quali registri leggere i valori. Questo li rende più flessibili. Ma la flessibilità ha un costo: hai bisogno di più bit di codice operativo per specificare su quali registri operare e devi fornire i percorsi per tutti quei registri allunità aritmetica.

Per le espressioni di esempio sopra , il codice finisce per non sembrare molto diverso:

  • Carica Y nel registro R0
  • Carica Z nel registro R1
  • Aggiungi R0 a R1, inserendo il risultato in R2
  • Memorizza R2 su X

Le macchine con registri per uso generico iniziano a mostrare un vantaggio quando puoi mantenere i valori nei registri in molte operazioni. Ad esempio, supponiamo di voler eseguire questo programma leggermente più complicato:

X = A + B

Y = A - B

In una macchina di accumulazione, dovrei ricaricare A e B per entrambe le operazioni. In una macchina di uso generale, caricarei A e B solo una volta.

Anche allinterno delle macchine a registri di uso generale, ci sono più varietà: (Questa lista non è esaustiva; inoltre, alcune architetture mescolano questi concetti. )

  • Register-Memory: Un operando proviene da un registro e un operando proviene dalla memoria.
  • Registro-Registro, 2 indirizzi: entrambi gli operandi provengono da registri, ma il risultato deve sovrascrivere uno degli ingressi.
  • Registro-Registro, 3 indirizzi: entrambi gli operandi provengono da registri, e il risultato può andare al proprio registro.

Il processore x86, per esempio, è una macchina a memoria di registro che offre anche istruzioni di registro a 2 indirizzi. La maggior parte delle macchine RISC sono macchine Register-Register a 3 indirizzi, con istruzioni di caricamento / memorizzazione separate. Entrambe sono macchine a registro di uso generale.

Confrontale con 6502 , che è una macchina di accumulo. La maggior parte delle operazioni aritmetiche (addizione, sottrazione, rotazione e spostamento) opera sul registro A. Gli altri due registri, X e Y, supportano solo lincremento, il decremento e il confronto; sono usati principalmente per lindicizzazione della memoria e dei contatori di loop.

Un terzo tipo di architettura che non hai menzionato è l architettura a stack . Unarchitettura stack è simile a unarchitettura accumulator in quanto tutto il calcolo è focalizzato su un singolo punto. La differenza è che unarchitettura dello stack legge sempre i suoi argomenti da uno stack e mette sempre i suoi risultati sullo stack.Entrambi gli ingressi e gli output di unistruzione di calcolo sono impliciti. Altre istruzioni devono quindi gestire linserimento di valori e lestrazione di valori dallo stack.

Non si trovano molte architetture di stack nei chip effettivi. Ma sono popolari negli interpreti (bytecode Java, ad esempio , o FORTH) e in alcuni calcolatori come i calcolatori basati su RPN di HP.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *