martedì 7 settembre 2010

Processore (CPU)


Il Processore o CPU è l'unità centrale di elaborazione, è uno dei due componenti principali della macchina di von Neumann, il modello su cui sono basati la maggior parte dei moderni computer. 
Compito della CPU è quello di eseguire le istruzioni di un programma. 
Durante l'esecuzione del programma,
 la CPU legge o scrive dati in memoria ed in base all'organizzazione della memoria 
si possono distinguere due famiglie di CPU:
  • con architettura di von Neumann classica, in cui dati e istruzioni risiedono nella stessa memoria (è dunque possibile avere codice automodificante). Questa architettura è la più comune, perché è semplice e flessibile.
  • con architettura Harvard, in cui dati e istruzioni risiedono in due memorie separate. Questa architettura garantisce migliori prestazioni poiché le due memorie possono lavorare in parallelo riducendo le alee strutturali, ma è ovviamente più complessa da gestire. È tipicamente utilizzata nei DSP.
Una generica CPU contiene:
  • una Unità di controllo CU (Control Unit) che legge dalla memoria le istruzioni, se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU.
  • una ALU (Arithmetic Logic Unit) che si occupa di eseguire le operazioni logiche e aritmetiche;
  • dei registri, speciali locazioni di memoria interne alla CPU, molto veloci, a cui è possibile accedere molto più rapidamente che alla memoria, il valore complessivo di tutti i registri della CPU costituisce lo stato in cui essa si trova attualmente. 
Due registri sempre presenti sono:
  • il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in memoria della prossima istruzione da eseguire;
  • il registro dei flag: questo registro non contiene valori numerici convenzionali, ma è piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. 
Una generica CPU deve eseguire i suoi compiti sincronizzandoli 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, 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. 
Una CPU è un circuito digitale sincrono, vale a dire che il suo stato cambia ogni volta che riceve un impulso da un segnale di sincronismo detto clock, che ne determina di conseguenza la velocità operativa, quindi il tempo di esecuzione di una istruzione si misura in quanti impulsi di clock sono necessari perché la CPU la completi. Il processore utilizza l'assembly per scrivere più semplicemente i programmi, associa un simbolo mnemonico ad ogni istruzione della CPU e introduce una sintassi che permette di esprimere i vari metodi di indirizzamento in modo più intuitivo. 
Tipicamente la CPU è l'Interprete del linguaggio macchina e come tutti gli interpreti, si basa sul seguente ciclo:
  • Acquisizione dell'istruzione: il processore preleva l'istruzione dalla memoria, presente nell'indirizzo (tipicamentelogico) specificato da un registro "speciale" ("speciale" opposto di "generico"), il PC
  • Decodifica: una volta che la 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) ed il codominio consiste nei brani di microprogramma da eseguire
  • Esecuzione: viene eseguita la computazione desiderata, nell'ultimo passo dell'esecuzione viene incrementato il PC, tipicamente di uno se l'istruzione non era un salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di questa
I Processori sono progettati in due set di istruzioni, CISC e RISC.
Quando i transistor disponibili su un solo chip erano pochi e i calcolatori venivano spesso programmati in assembly, era naturale sfruttarli in modo tale da avere CPU con istruzioni potenti, evolute e complesse, più queste erano vicine alle istruzioni dei linguaggi di programmazione ad alto livello più il computer sarebbe stato facile da programmare, e i programmi avrebbero occupato poco spazio in memoria, le CPU progettate secondo questo approccio sono dette CISC ed avevano unità di controllo complesse capaci di sfruttare al meglio pochi registri e i cui programmi erano di dimensioni relativamente piccole. 
Il tipico set di istruzioni RISC invece, è molto piccolo, circa sessanta o settanta istruzioni molto elementari, hanno tutte lo stesso formato e la stessa lunghezza, e molte vengono eseguite in un solo ciclo di clock. 
La diretta conseguenza di tale scelta progettuale è che i processori RISC posseggono una unità di controllo semplice e a bassa latenza, riservando invece molto spazio per i registri interni.

Per domande commentate il post.
Fonte:it.wikipedia.org

Nessun commento:

Posta un commento