Il processore

Il processore

Nel modello di Von Neumann, l’elaborazione delle informazioni viene eseguita dall’unità centrale di elaborazione (CPU).

La CPU ( Central Processing Unit) è il “cervello” del computer. Viene detta anche processore, cioè esecutore dei processi.

All’interno della CPU si trovano:

  • l’unità aritmetico-logica o ALU ( Arithmetic Logic Unit);
  • l’unità di controllo o CU ( Control Unit);
  • i registri;
  • la cache memory.

L’unità aritmetico-logica

L’unità aritmetico-logica si occupa di eseguire le operazioni aritmetiche (somme, sottrazioni ecc.) e logiche (and, or ecc.).

La ALU può essere considerata l’essenza del calcolatore proprio perché è l’unità che esegue i calcoli. I dati vengono portati al suo interno, vengono elaborati e i risultati vengono restituiti in output. Il funzionamento di questa unità è basato su semplici dispositivi digitali che sono in grado di memorizzare le cifre binarie, effettuare calcoli aritmetici e operazioni di logica booleana (▶ unità 4).

L’unità di controllo

L’unità di controllo è quella che fa funzionare il computer. Si occupa per esempio di leggere dalla memoria RAM le istruzioni di un programma e di scomporre ciascuna istruzione in un insieme di attività (processi o task) che servono per eseguire l’istruzione stessa. Inoltre fa evolvere i diversi processi nel tempo.

Questa evoluzione non è sequenziale, ma parallela: le diverse attività vengono svolte contemporaneamente su più dispositivi. Questo significa che, per esempio, mentre un task utilizza la ALU per fare dei conti, un altro comunica al processore dove si trova la successiva istruzione da eseguire, un altro preleva i dati dalla RAM, un altro task ancora utilizza i registri ecc.

La CU, a ogni colpo di clock, legge dalla memoria le istruzioni e gli eventuali dati da elaborare, coordina l’esecuzione delle istruzioni e memorizza i risultati nelle memorie o nei registri della CPU ecc.


Il clock funziona come un orologio: è un segnale periodico, come quello in figura, che sincronizza il funzionamento dei dispositivi elettronici digitali.


A ogni fronte di salita (oppure di discesa) del clock, viene eseguita una serie di istruzioni in parallelo.


Più è alta la frequenza del clock, più il processore è potente perché elabora velocemente le istruzioni; inoltre, più la frequenza del clock è alta, più il processore consuma corrente producendo ulteriore calore, che deve essere dissipato, per evitare danni.

 >> pagina 45 
  ApprofondiMENTO
PROCESSORE E CORE

La frequenza di clock non può essere aumentata a piacimento e in modo illimitato, a causa di restrizioni di natura fisica legate alla dissipazione termica, alla generazione di piccoli disturbi elettromagnetici e alla velocità di propagazione dei segnali elettrici. Essi, infatti, si diffondono all’interno del processore con una velocità massima dettata dalla velocità della luce nel mezzo che, alle alte frequenze, si traduce in pochi centimetri di propagazione per ogni colpo di clock. Poiché il processore ha dimensione di alcuni centimetri, se la frequenza del clock diventa troppo elevata, in un colpo di clock i dati non riescono a propagarsi nell’intero processore.

Nei computer moderni, quindi, l’incremento di potenza del processore non è dovuto all’aumento della frequenza di clock, che negli ultimi anni ha raggiunto il valore limite, ma all’incremento del numero dei core, ovvero delle singole unità centrali di elaborazione. Gli attuali processori sono tutti multi-core (fino a 32 core), con i quali si ottiene più potenza elaborando più informazioni in parallelo su core diversi. Per trarre il massimo beneficio da questa architettura, è necessario che i sistemi operativi e i software siano sviluppati per far girare più task in parallelo su core diversi. Oggi il concetto di processore non coincide con il concetto di CPU. Per processore si intende il singolo chip (installato sul suo alloggiamento, chiamato socket). Il termine CPU coincide con quello di singolo core.

i registri

I registri sono speciali locazioni di memoria interne alla CPU a cui è possibile accedere molto velocemente.


La loro funzione è quella di fornire al sistema un piccolo spazio di archiviazione rapida di dati e altre informazioni utili alla loro gestione.

Esistono registri comuni spesso identificati con sigle come R1, R2, R3 ecc. che contengono i dati su cui la ALU esegue le operazioni aritmetico-logiche. Sono, inoltre, presenti dei registri speciali che effettuano funzioni accessorie.

Per esempio, caricano al proprio interno i dati che provengono dalla RAM o da qualche altra periferica per poi trasferirli dentro ad altri registri comuni.

Fra i registri che vengono riservati per usi speciali, vanno ricordati i seguenti:

  • Program Counter (PC): contiene l’indirizzo di memoria RAM della prossima istruzione da eseguire;
  • Instruction Register (IR): contiene l’istruzione in fase di elaborazione;
  • Memory Address Register (MAR): contiene l’indirizzo della locazione di memoria RAM in cui si andrà a leggere o scrivere un dato;
  • Memory Data Register (MDR): contiene i dati in transito tra la CPU e la RAM e viceversa. In particolare il dato contenuto nell’MDR viene letto o scritto dalla/alla locazione di RAM indicata nel MAR;
  • Process Status Word (PSW): è il registro di stato nel quale vengono memorizzati i  flag, cioè singoli bit che rappresentano, ciascuno, il risultato (vero o falso) di una specifica operazione o condizione. Ci sono flag che indicano se l’ultima operazione matematica ha fornito un risultato 0 o negativo; se l’ultima operazione di confronto tra numeri è risultata vera o falsa; se l’ultimo calcolo matematico è andato in  overflow (errore per numero troppo grande, unità 2) ecc.

 >> pagina 46 

la Cache memory

La  cache memory è una memoria veloce, relativamente piccola, non visibile al software, ma completamente gestita dall’hardware, che memorizza al proprio interno le parti di dati e programmi, contenuti nella memoria RAM, che sono più recentemente o più frequentemente usati dal processore.


La cache memory si trova all’interno della CPU e la sua funzione è quella di rendere più veloci gli accessi ai dati, aumentando le prestazioni del sistema e riducendo il traffico dei dati con la RAM.

All’inizio degli anni Settanta, le memorie erano molto più veloci dei processori, quindi il tempo necessario per accedere alla RAM non rallenta le prestazioni della CPU. Con il passare degli anni, però, la frequenza di funzionamento dei processori (clock) è aumentata rapidamente e il tempo di accesso alla memoria è diventato un problema non trascurabile.

Per mantenere elevate le prestazioni delle CPU, è stato necessario limitare il numero di accessi alla RAM. I processori sono stati, quindi, dotati della cache memory.

L’uso della cache è trasparente (non visibile) al programmatore e la sua gestione è completamente affidata alla CPU, quindi a livello hardware.


Le memorie cache migliorano notevolmente le prestazioni del sistema perché sfruttano il principio di località dei programmi, che sostanzialmente afferma:

1. se la CPU sta eseguendo una data istruzione, con molta probabilità le prossime istruzioni da eseguire saranno ubicate nelle vicinanze di quella in corso;

2. gran parte del codice di cui sono costituiti i programmi viene eseguito solo raramente, al verificarsi di errori o di condizioni anomale.


Le stesse osservazioni si applicano anche ai dati.

 >> pagina 47

La memoria virtuale

I programmi applicativi e i sistemi operativi caricati nella RAM aumentano continuamente in numero e dimensione; di conseguenza la quantità di RAM richiesta è sempre maggiore. Se la RAM di un elaboratore è troppo piccola, il sistema può utilizzare la memoria di massa (hard disk) per simulare una memoria RAM virtuale. Il disco però è più lento della RAM e il suo utilizzo rallenta il sistema.


La memoria di massa all’interno della quale viene simulata la RAM si chiama  swap.


Nello swap vengono copiati dati che hanno minore probabilità di essere richiesti (di solito quelli utilizzati meno recentemente, in virtù del principio di località) con lo scopo di liberare RAM per altri programmi.

Lo swap in genere viene gestito automaticamente dal sistema operativo, quindi a livello software, in modo trasparente ai programmi applicativi, prima che la RAM venga completamente esaurita.

La scheda grafica

Attualmente quasi tutti i sistemi operativi dei computer sono basati su un output a schermo che consente un’interazione facile, veloce ed efficiente (▶ unità 5).

La scheda grafica (o scheda video) è il componente hardware che si occupa di prelevare dalla memoria i dati da visualizzare e trasformarli in output su schermo.

La scheda grafica può essere dotata di un processore specializzato per elaborazioni grafiche (GPU, Graphics Processing Unit) e di una memoria dedicata (RAM video) e si frappone tra il monitor e il resto dell’hardware del computer.

 >> pagina 48

I bus

I bus sono i “fili che collegano tra loro le memorie, le periferiche e la CPU.


Ne esistono di tre tipi:

  • i bus dati: trasportano i dati dalla memoria centrale (o dalle periferiche) alla CPU e viceversa utilizzando un collegamento bidirezionale tra i dispositivi. Attraverso il bus dati la CPU legge o scrive i dati sulla RAM o sulle periferiche di I/O;
  • i bus indirizzi: trasportano gli indirizzi di memoria usando un collegamento unidirezionale. Attraverso il bus indirizzi la CPU comunica alla RAM o alle periferiche di I/O a quale indirizzo avverrà la scrittura o la lettura dei dati. Vengono usati in scrittura dalla CPU e in lettura dagli altri componenti;
  • i bus controllo: trasportano i segnali che coordinano le attività del sistema.
  SCHEDA CLIL
Blades you can’t cut with

We live in a “want-to-optimize-all” era. Computers have to be small, light, powerful, fast. Processor time is a resource not to be wasted. So, several years ago, virtualization was invented. More operating systems run on the same hardware, sharing it and using it in an optimized way. With the beginning of virtual machine era, the need of computational power increased. The “always-on” computers where services run are called servers. Such servers needed to be more powerful, to have more CPUs, more RAM, etc. Without using too much room in data center. Because occupied space costs. So, blade servers was invented. They are a class of computers with a single chassis, in which you can insert a number of blades. Every blade is a thin physical server: a computer with one or more processors, and a lot of RAM. So you can get many servers, managed in a single way, occupying a few space, and able to run tens or hundreds of virtual machines. It’s a quite optimization. And, it’s safe, because they are called blades, but it’s difficult to hurt your fingers with them!

 >> pagina 49

La scheda madre

Dal punto di vista fisico tutti i componenti che abbiamo elencato (memoria centrale e di massa, periferiche, processore) vengono collegati fra loro su un unico grande supporto che prende il nome di ▶ scheda madre.

La scheda madre, oltre a prevedere alloggiamenti per ciascun componente del computer, ospita un grande circuito stampato sul quale sono cablati (collegati) anche numerosi bus.


Sulla scheda madre sono presenti inoltre componenti accessori, come led di stato di funzionamento, connettori per l’alimentazione elettrica e una batteria necessaria a mantenere memorizzate le impostazioni elettroniche di base (BIOS) e permettere all’orologio interno di continuare a funzionare anche a computer spento.

  ApprofondiMENTO
LE PRESTAZIONI DI UN COMPUTER

Le prestazioni di un computer dipendono principalmente dalla sua velocità, ma anche dalla dimensione (o capacità) della memoria disponibile.


Per velocità si intende sia il tempo di accesso alle risorse, sia la capacità di elaborazione nell’unità di tempo, la quale viene espressa in MIPS (Milioni di Istruzioni Per Secondo). Nella scelta di un buon computer è importante anche valutare la velocità del clock e la quantità di core che sono presenti all’interno del processore.

Quando si parla di memoria disponibile all’interno di un computer non ci si riferisce esclusivamente alla RAM, ma si intende anche la cache e la memoria di massa (tipo di hard disk, dimensione e possibilità di collegare altri supporti).

Per aumentare efficacemente le performance di tutto il sistema, occorre sempre ricordare che un computer è formato da un insieme di dispositivi diversi e che non è detto che basti migliorare i componenti per ottenere dei miglioramenti complessivi apprezzabili: occorre anche tenere conto delle relazioni di dipendenza che intercorrono fra i diversi componenti.

Per esempio, se un computer risulta lento, non è detto che sia colpa di un processore poco potente; il collo di bottiglia (bottleneck) potrebbe essere dovuto all’hard disk. Così come non è detto che aumentando le dimensioni della RAM, tutto il sistema venga necessariamente velocizzato.

L’eliminazione dei colli di bottiglia è una delle migliori ottimizzazioni che possano essere effettuate durante la progettazione di un sistema e dei suoi singoli componenti, anche se è un’operazione molto complicata.

Lo sapevi che

Il bottleneck rappresenta un restringimento, ovvero quel punto o componente, in un sistema, che è la fonte di un rallentamento che costringe anche gli altri componenti a funzionare più lentamente.

Il bottlenek funziona come un restringimento di carreggiata in un’autostrada a tre corsie: provoca code e costringe gli automobilisti a rallentare.

Clic!
Clic!
Tecnologie informatiche per il primo biennio