CPU: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
cleanup sul funzionamento generale di una CPU |
|||
Riga 47:
Una generica CPU deve gestire una serie di operazioni sincronizzandole con il resto del sistema: perciò è dotata, oltre a quanto sopra elencato, anche di uno o più bus interni che si occupano di collegare registri, ALU, unità di controllo e memoria: inoltre, all'unità di controllo interna della CPU fanno capo una serie di segnali elettrici esterni che si occupano di tenere la CPU al corrente dello stato del resto del sistema e di agire su di esso. Il tipo e il numero di segnali esterni gestiti possono variare ma alcuni, come il ''[[RESET]]'', le linee di ''[[IRQ]]'' e il ''[[CLOCK]]'' sono sempre presenti.
Tipicamente la CPU è l'[[Interprete (informatica)|Interprete]] del linguaggio assembler. Come tutti gli interpreti, si basa sul seguente ciclo:
1) Acquisizione dell'istruzione: il processore preleva l'istruzione dalla memoria, presente nell'indirizzo (tipicamente [[Memoria virtuale|logico]])specificato da un registro "speciale" ("speciale" opposto di "generico"), il [[Program counter|PC]]
2) Decodifica: una volta che la [[Word|word]] è stata prelevata, viene determinata quale operazione debba essere eseguita e come ottenere gli operandi, in base ad una funzione il cui dominio è costituito dai codici operativi (tipicamente i bit alti delle [[Word|word]]) ed il codominio consiste nei brani di [[Microprogramma|microprogramma]] da eseguire
3) Esecuzione: viene eseguita la computazione desiderata. Nell'ultimo passo dell'esecuzione viene incrementato il [[Program counter|PC]]: tipicamente di uno se l'istruzione non era un salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di questa
Questo ciclo elementare può essere migliorato in vari modi: per esempio, la decodifica di una istruzione può essere fatta contemporaneamente all'esecuzione della precedente e alla lettura dalla memoria della prossima ('''instruction prefetch''') e lo stesso può essere fatto con i dati che si prevede saranno necessari alle istruzioni ('''data prefetch'''). La stessa esecuzione delle istruzioni può essere suddivisa in passi più semplici, da eseguire in stadi successivi, organizzando la unità di controllo e la ALU in stadi consecutivi, come delle catene di montaggio ('''[[Pipeline dati|pipeline]]'''): in questo modo più istruzioni possono essere eseguite "quasi contemporaneamente", ciascuna occupando ad un certo istante uno stadio diverso della pipeline.
|