Come funziona una CPU: operazioni sulla ALU #0.4.3

Nell’articolo di oggi analizzeremo come la ALU esegue le operazioni.

Negli articoli precedenti abbiamo visto:

Facendo riferimento alla figura sottostante immaginiamo di voler eseguire l’operazione di somma tra 2 registri R5 ed R6, andando a scrivere il risultato in un terzo registro R7. L’unità di controllo dovrà quindi utilizzare il registro Y connesso al primo ingresso della ALU (il cui altro ingresso è collegato al Bus) per memorizzare il primo operando. Il secondo operando invece, arriverà direttamente al secondo ingresso della ALU.

alu

Di seguito riportiamo la sequenza di operazioni gestite dall’unità di controllo:

  • acquisizione e trasferimento di R5 in Y;
  • trasferimento di R6 sul Bus interno, in modo che possa giungere all’ingresso della ALU;
  • comunicazione alla ALU del tipo d’istruzione da eseguire (somma in questo caso);
  • memorizzazione in Z del valore prodotto in uscita dalla ALU;
  • trasferimento del risultato sul Bus interno;
  • acquisizione del risultato dal Bus interno e conseguente scrittura dello stesso in R7;

L’unità di controllo deve quindi attivare il segnale di controllo della ALU che specifichi l’operazione di somma, deve attivare il segnale di Load Zin di Z per consentire a quest ultimo di ricevere in ingresso l’output della ALU, deve attivare il segnale Zout e anche il segnale R7in per memorizzare in tale registro il risultato finale.

N.B. Bisogna evitare assolutamente che si crei un ciclo tra ALU e Bus interno, violando così il vincolo di assenza di cicli nei circuiti combinatori ben formati (d’altronde la ALU è un circuito combinatorio). Esso si creerebbe in assenza del registro Z che ”cattura” e trattiene l’output della ALU, in attesa dell’attivazione del segnale Zout. Si noti inoltre che il registro Y ha solo un segnale di ”in” mentre il registro Z ha sia un segnale di ”in” che un segnale di ”out”.

Riassumiamo qui di seguito la sequenza di segnali attivati dall’unità di controllo:

  • R5out;
  • Yin;
  • R6out;
  • Add;
  • Zin;
  • Zout;
  • R7in;

Con ”attivare un segnale” s’intende porre il segnale ad 1. Ogni segnale, dopo esser stato portato ad 1, deve essere riportato a 0 (rispettando opportuni intervalli di tempo in modo da consentire la corretta esecuzione delle istruzioni). Ad ogni periodo di Clock l’UC genera i segnali di controllo necessari perché l’unità funzionale esegua un’operazione elementare, detta microistruzione. Ad ognuna di esse corrisponde l’attivazione di 1 o più segnali di controllo. Per eseguire una qualunque istruzione è necessario un certo numero di microistruzioni, ognuna corrispondente a quanto eseguito dal processore in un periodo di Clock. Ciò vuol dire che, per eseguire la precedente istruzione, sono necessari 7 periodi di Clock (1 per microistruzione).

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.

Leave a Reply

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