Come funziona una CPU: Sommatore con carry-lookahead #0.3.5.3

Nell’articolo di oggi analizzeremo nel dettaglio il funzionamento del sommatore carry-lookahead.

Negli articoli precedenti abbiamo visto:

Vediamo quali sono le caratteristiche generali dei moduli aritmetici e dei sommatori.

Possono avere complessità variabile a seconda di:

  • tipo di dati supportati (interi, interi con segno, decimali);
  • tipo di operazioni supportate (somma, sottrazione, moltiplicazione, divisione, operazioni trigonometriche);
  • velocità (soluzioni combinatorie o sequenziali);

I sommatori sono dei moduli che ricevono in ingresso due numeri su n-bit e producono in uscita il risultato della loro somma, espresso al più su n+1 bit.

Possono essere realizzati seguendo tre soluzioni alternative:

  • sommatori seriali
  • sommatori combinatori;
  • sommatori combinatori modulari;

Ora vediamo nel dettaglio come funziona il sommatore carry-lookahead.

Rappresenta una valida alternativa al Ripple Carry Adder. Permette di ridurre il ritardo nella generazione del risultato, dovuto al fatto che ogni modulo deve attendere il carry generato dal modulo precedente. Il Carry-Lookahead Generator è un circuito in grado di generare il bit di carry di ogni modulo sulla base dei segnali che gli vengono forniti in parallelo da tutti i moduli. Questi ultimi sono in realtà una versione modificata del Full-Adder in cui, al posto del carry out, vengono generati 2 segnali particolari:

gi = xiyi
pi = xi + yi

Il carry-out del singolo modulo è dato da:

 carry-lookahead

Ovvero, sviluppando l’equazione:

 carry-lookahead

N.B. gi e pi dipendono SOLO dagli ingressi del singolo Full-Adder e non dal carry del modulo precedente!

Quindi, nel momento in cui i Full-Adder ricevono gli ingressi, producono immediatamente i corrispondenti gi e pi. Tutti i Full-Adder lavorano in parallelo, riducendo significativamente il ritardo del Sommatore. Il Carry-Lookahead Generator riceve simultaneamente tutti i gi e pi dai rispettivi Full-Adder e produce tutti i carry.  A questo punto ciascun Full-Adder, ricevendo in ingresso il rispettivo carry-in, può produrre il proprio risultato zi.

Il ritardo per la generazione del risultato finale non dipende più dal parallelismo degli operandi (ovvero dagli n-bit su cui sono espressi i 2 numeri da sommare). Questa soluzione risulta di facile progetto, buone prestazioni in termini di velocità ma elevato costo hardware (dovuto principalmente al Carry-Lookahead Generator).

 carry-lookahead

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

1 Comment

  1. Luca Laurenti | | Reply

    Pazzesco

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.