Il Processore
Il processore o
più precisamente microprocessore inizialmente era un componente facente
parte della scheda madre. Infatti, sui primi elaboratori veniva saldato al
momento della fabbricazione, mentre oggi è possibile rimuovere il processore
danneggiato o lento ed aggiornare la propria macchina con un nuovo componente, a
patto che sia compatibile.
Il processore è chiamato CPU (Central Processing Unit), cioè unità
centrale di elaborazione.
Esso è formato da:
un piccolo bus preposto al transito delle istruzioni che deve elaborare ed ai dati da esse ottenuti, unitamente ad una piccola zona di memoria chiamata buffer. Un buffer è una memoria temporanea utilizzata per memorizzare i dati durante l’elaborazione;
una zona di memoria detta cache, che serve temporaneamente per memorizzare i dati più comuni in modo da non doverli leggere ogni volta dalla memoria centrale e velocizzare così l’esecuzione del programma. Questa cache è detta anche di primo livello;
un gestore della cache, che a sua volta rispecchia la struttura di un mini-processore;
l’ALU (Arithmetic Logic Unit), unità aritmetico-logica che svolge operazioni matematiche con numeri interi (a virgola fissa) ed operazioni di confronto;
i registri, cioè celle di memoria con precisi compiti;
il coprocessore matematico, detto anche FPU (Floating Point Unit). E’ un processore che si occupa di elaborare le operazioni matematiche con numeri decimali (in virgola mobile). In questo modo coopera con la ALU velocizzando operazioni di disegno o elaborazioni su suoni. Nei vecchi computer il coprocessore matematico era un componente separato dalla CPU che si poteva installare attraverso un apposito zoccolo posto sulla scheda madre. Dal 80486 in poi l’FPU è integrato nella CPU.
La frequenza del
clock (clock = orologio), espressa in MegaHertz, descrive il numero di
operazioni elaborate in un secondo. I circuiti elettronici impiegano un certo
tempo per compiere le operazioni e, per quanto piccolo, questo non è mai zero.
Se un circuito è più lento di un altro si possono verificare perdite di dati in
quanto il circuito più veloce ne invia più di quelli che il circuito più lento è
in grado di raccogliere. Serve allora un meccanismo per la sincronizzazione e
questo è il compito del clock. Il segnale di clock è calcolato in base al
componente più lento.
Se per elaborare un’istruzione, per esempio, un componente impiega mezzo
secondo, vuol dire che in un secondo esso può compiere due operazioni. Quindi un
computer che ha una frequenza di clock di 133 MHz compie 133 milioni di
operazioni al secondo e, conseguentemente, per compiere un’operazione impiega un
centotrentatremilionesimo di secondo, ossia 7,5 nS (nanosecondi).
Esistono comunque due tipi di clock: interno ed esterno. Il clock interno è quello che regola la velocità della CPU e del bus interno, mentre quello esterno regola la velocità del bus dati sulla scheda madre ed è sempre minore rispetto a quello interno. Infatti, sulle scheda madre è possibile selezionare un’appropriata velocità per il bus dati (detto clock del bus) ed un moltiplicatore, per ottenere la velocità della CPU. Così un Pentium 133 MHz si ottiene utilizzando 66 MHz sul bus con il moltiplicatore impostato a 2. Infatti, 66x2=132, circa 133 MHz.
Oggi è nota la
tecnica dell’overclocking (over = sopra), ossia l’impostare un clock più
alto di quello prescritto dal costruttore. Ciò si può fare sia sul bus sia sulla
CPU tramite il moltiplicatore, ma comporta comunque dei rischi. Infatti, il
passaggio di corrente a velocità più elevate provoca un aumento del calore
ed in alcuni casi bisogna potenziare il sistema di raffreddamento
tramite pasta elettroconduttiva (e quindi anche termoconduttiva), dissipatori di
calore, ventole di aerazione. Normalmente la CPU è corredata di ventola per
prevenire rischi da surriscaldamento (Figura). Bisogna cercare di non esagerare,
perché anche i circuiti hanno i loro limiti e, anche se la CPU non fonde, può
provocare errori inaspettati.
Attenzione all’overclocking: si perde la garanzia del
prodotto.
Sottosistema di controllo
Il sottosistema di controllo (SCO) regola il flusso di dati da e verso le varie parti della CPU. Per esempio si occupa della gestione del buffer, della cache, del bus interno e della coda di istruzioni. Questa parte interna del processore coopera in modo diretto con il controllore di dati presente sulla scheda madre, il quale è costituito da una serie di chip (integrati) detto appunto insieme di chip (chipset).
Il buffer e la coda
Quando un
processore elabora le informazioni ad una velocità diversa da quella delle varie
periferiche si verifica il fenomeno chiamato “collo di bottiglia”, cioè la sua
esecuzione viene rallentata finché il sistema non ha ricevuto il dato che sta
elaborando al momento. Accade però, anche il contrario, cioè che il processore
finisca il lavoro molto prima che giunga l’istruzione successiva. In questo modo
“girerebbe a vuoto" per diversi cicli di clock. Per ovviare a questi due
inconvenienti sono stati introdotti il buffer e la coda di istruzioni (chiamata
anche di pre-fetch).
Il buffer libera
rapidamente la CPU perché immagazzina i risultati delle istruzioni già eseguite.
A questo punto, mentre le periferiche prelevano questi dati, la CPU ne sta
elaborando altri. Si è così ridotto il “collo di bottiglia“.
La coda di
pre-fetch, invece, è una lista di istruzioni inviate dall’esterno al processore e
raccolta in uno spazio di memoria temporanea, in modo da poter essere sempre
disponibili per il processore mentre la parte restante del sistema trasferisce
il resto dei dati (per esempio quelli in uscita).
Mettendo in
cooperazione la coda ed il buffer si ottiene un lavoro continuo ed omogeneo da
parte della CPU verso il bus dati.
Per gestire le operazioni sui dati il processore ha bisogno di uno spazio da cui prelevare i dati e di uno spazio in cui memorizzarli. Questi piccoli spazi sono chiamati registri. Dopo che un’istruzione ha inviato al sottosistema di controllo la richiesta dei dati, questi vengono letti dalla memoria centrale e copiati nei registri del processore, a cui hanno diretto accesso le istruzioni vere e proprie. Il risultato dell’istruzione eseguita viene posto in un ultimo registro prima di essere trasmesso (sempre tramite il sottosistema di controllo) alla memoria centrale.
Così, per esempio,
per eseguire 5 + 3 = 8 l’iter che il processore segue è questo:
1. Richiesta al sottosistema di controllo di
esecuzione dell’addizione;
2. Porre nel registro A il valore 5 copiandolo
dalla memoria centrale;
3. Porre nel registro B il valore 3 copiandolo
dalla memoria centrale;
4. Inviare l’istruzione ADD (somma), che
eseguirà A+B=C;
5. Porre nella memoria centrale il valore 8
copiandolo dal registro C.
I registri sono
numerosi e dipendono dall’architettura del processore. Per fare un esempio un
processore 80386 dotato di bus a 32 bit contiene i seguenti registri:
AL:AH (AX), BL:BH
(BX), CL:CH (CX), DL:DH (DX), CS:IP, DS:SI, SS:SP, BP, DI, ES, Flags.
Pipeline ed architetture superscalari
Come si può notare dal paragrafo precedente il processore sfrutta 4 cicli per compiere un’operazione. Poiché le fasi 2 e 3 possono essere riassunte in un’unica fase chiamata estrazione dei dati dalla memoria, otteniamo:
1. IF (Istruction Fetch): prelievo
dell’istruzione dalla memoria;
2. ID (Istruction Decode): decodifica
dell’istruzione per il prelievo dei dati dalla memoria;
3. EX (Execute): esecuzione dell’istruzione;
4. WB (Write Back): fase di scrittura in
memoria del risultato.
Tutto questo lavoro può essere velocizzato tramite il sistema Pipeline. Questo sistema può essere tradotto come catena di montaggio. Ciò vuol dire che le fasi di esecuzione di un’istruzione vengono ridistribuite in modo non lineare, e precisamente incolonnate, in modo che per ogni ciclo avvenga un’operazione di WB (a parte la prima istruzione che dovrà in ogni caso attendere il 4° ciclo).
Qui sotto è illustrato il caso in cui manca la pipeline e, per ottenere il risultato di tre istruzioni, ci vogliono ben 12 cicli di clock, mentre si nota nella figura successiva come, con una struttura a pipeline, per eseguire le stesse tre istruzioni bastino 6 cicli.
Questo è possibile
perché i quattro circuiti interessati alle quattro fasi di elaborazione sono
stati resi indipendenti. In assenza di pipeline, rimarrebbero inattivi per ¾ del tempo.
Le architetture
superscalari non sono altro che l’implementazione di più pipeline. Per esempio
l’80386 era dotato di una pipeline, quindi non era un processore superscalare, mentre sin dalla
prima serie di Pentium si parla di pipeline superscalari.
Branch
Prediction
Branch Prediction (predizione del ramo) è una particolarità dei Pentium Pro, Pentium II, III e successivi. Consiste nell’esame, da parte di un determinato circuito della CPU, della coda di pre-fetch, in modo da individuare i rami (le istruzioni) che devono attendere i dati da altre istruzioni. Poiché tali operazioni “bloccano” momentaneamente l’esecuzione del programma, il circuito di Branch Prediction interpreta in che modo è meglio riorganizzare la coda spostando le varie istruzioni. Tutto questo lavoro dovrebbe farlo il programmatore durante la fase di progetto, ma richiederebbe una minuziosa conoscenza di ogni istruzione e l’attenzione posta per questa ottimizzazione spesso andrebbe a discapito delle funzionalità del programma. In passato è già successo che abbiano scritto codice ottimizzato (per codice s’intendono i programmi), ma poco funzionale. Attraverso il Branch Prediction tutto ciò è svolto in tempo reale dal processore.
Tecnologia MMX
L’elaborazione di suoni, immagini, disegni tridimensionali, filmati si chiama multimedialità. Questo tipo di elaborazione richiede l’esecuzione di calcoli complicati molto velocemente (in tempo reale). Le operazioni da eseguire sui disegni 3D e sui filmati sono di tipo floating point (in virgola mobile) e vengono svolti dal coprocessore matematico. Per aumentare le performance è stata realizzata una tecnologia chiamata MMX (MultiMedia eXtension), con la quale si sono aggiunte al set del coprocessore matematico 15 istruzioni multimediali ed i relativi circuiti per eseguirle. La tecnologia MMX è in continua espansione e presto avremo un set di istruzioni multimediali molto più ricco. Per esempio, dal pentium III sono state aggiunte le istruzioni chiamate SSE, con funzioni anch'esse multimediali.
La famiglia 80x86
I microprocessori prodotti dalla Intel si sono imposti sul mercato fin dai primi modelli perché vantavano il pregio di essere tutti compatibili. Per poter garantire la compatibilità, il set di istruzioni del processore successivo doveva essere formato da quello precedente, espanso con nuove istruzioni. Questo tipo di compatibilità è chiamata verso il basso, perché un programma che funziona con un determinato modello può funzionare anche con i successivi, ma non viceversa.
I diversi modelli realizzati nella famiglia 80x86 sono i seguenti:
- 8088, con architettura a 8 bit, realizzato
negli anni ’70 circa ed utilizzato fino al 1986-87 circa. Frequenza di lavoro 8
MHz circa;
- 8086, sempre a 8 bit, poco utilizzato.
Frequenza di lavoro 10 MHz circa;
- 80186, con architettura a 16 bit, mai
commercializzato. Frequenza di lavoro 12 MHz circa;
- 80286, sempre a 16 bit. Frequenza di lavoro
fino a 16 MHz circa;
- 80386, funzionante a 32 bit con cache
interna di 4 Kb ed una struttura con pipeline. Frequenze di lavoro fino a 40 MHz
circa;
- 80486, a 32 bit, con 8 Kb di cache,
coprocessore matematico integrato e doppia pipeline. Frequenze di lavoro fino a
100 MHz circa;
- Pentium serie I. Si sarebbe dovuto chiamare
80586, con architettura a 64 bit, pipeline superscalare e cache interna
maggiorata. Frequenze di lavoro fino a 200 MHz circa;
- Pentium MMX, che raggiunge frequenze di
lavoro fino a 266 MHz circa;
- Pentium II e III, che incapsulano anche la
cache di secondo livello (prima risiedeva sulla scheda madre). Raggiungono
frequenze di lavoro fino a 600 MHz circa ed hanno uno zoccolo particolare
chiamato Slot 1, perché, a differenza dei precedenti processori che utilizzavano
il Soket 7, essi hanno una forma che ricorda quella di una cartuccia;
- Pentium III FC-PGA (Flip Chip - Pin Grid Array), derivati dai Pentium III a cartuccia, ma con la forma
classica del vecchio Pentium I, con la sola differenza che lo zoccolo (Slot A)
ha un numero molto maggiore di piedini (anche nella parte centrale). Questi
processori lavorano fino a 850 MHz circa.
- Pentium 4, sempre in tecnologia FCPGA, conservano tutte le caratteristiche del
Pentium III supportando nuovi standard hardware e software ed in grado di
lavorare a frequenze molto più alte: da 1 GHz a 2 GHz (1GHz = 1000MHz).
Necessitano anche una alimentazione maggiore perché dissipano più potenza
elettrica.
Concorrenti della Intel
Ciryx e AMD (Advanced Micro Devices Inc) sono i marchi più famosi sempre stati antagonisti della Intel per la produzione di microprocessori compatibili, ma mentre la prima di queste due case ha praticamente chiuso i battenti, la seconda continua a produrre processori che hanno raggiunto le potenzialità dei processori Intel ed anche la compatibilità (che fino a qualche tempo fa sfiorava l'80%). Ma c'é di più: con i nuovi processori Thunderbird e XP l'AMD si è conquistata il mercato dei processori affermando uno standard sicuro, veloce ed anche economico (rispetto ad Intel), tanto che la nota casa produttrice di software Microsoft da deciso di supportare pienamente i nuovi processori AMD Athlon XP nel nuovo sistema operativo. Ed i risultati sono impressionanti: i nuovi Athlon XP 1600 MHz superano in prestazioni i Pentium 4 - 2 GHz.
Torna alla Home page Torna a Nozioni di base Torna a Hardware