Processore

Cos'è un processore

Il processore (CPU, per Central Processing Unit, ossia Unità di Elaborazione Centrale) è il cervello del computer. Permette di manipolare delle informazioni digitali, cioè delle informazioni codificate sotto forma binaria e di eseguire le istruzioni memorizzate nella memoria. Il primo microprocessore (Intel 4004) è stato inventato nel 1971. Si trattava di un'unità di calcolo a 4 bit, cadenzato a 108 kHz. Da qui, la potenza dei microprocessori aumenta in maniera esponenziale. Quali sono quindi questi piccoli pezzi di silicio che dirigono i nostri computer?

processore Intel 4004

Funzionamento della CPU

Il processore (sigla CPU, per Central Processing Unit) è un circuito elettronico cadenzato al ritmo di un clock interno, grazie ad un cristallo di quarzo che, sottoposto ad una corrente elettrica, invia degli impulsi, detti «top». La frequenza del clock (detta anche ciclo, corrispondente al numero di impulsi al secondo, è espressa in Hertz (Hz). Così, un computer a 200 MHz ha un clock che invia 200 000 000 battiti al secondo. La frequenza del clock è generalmente un multiplo della frequenza del sistema (FSB,Front-Side Bus), cioè un multiplo della frequenza della scheda madre.

Ad ogni top del clock il processore esegue un'azione, corrispondente ad un'istruzione o ad una parte di istruzione. L'indicatore detto CPI (Cycli Per Istruzione) permette di rappresentare il numero medio di cicli del clock necessario all'esecuzione di un'istruzione su un microprocessore. La potenza può quindi essere caratterizzata dal numero di istruzioni che è capace di trattare al secondo. L'unità utilizzata è il MIPS (Milioni di Istruzioni al secondo) corrispondente alla frequenza del processore che divide il CPI.

Istruzione

Un'istruzione è l'operazione elementare che il processore può eseguire. Le istruzioni sono stoccate nella memoria principale, per essere poi trattate dal processore. Un'istruzione è composta da due campi:

Il codice operazione, che rappresenta l'azione che il processore deve eseguire;

Il codice operando, che definisce i parametri dell'azione. Il codice operando dipende dall'operazione. Si può trattare di un dato oppure di un indirizzo di memoria:

Codice operazione Campo operando

Il numero di byte di un'istruzione è variabile secondo il tipo di dato (l'ordine di grandezza va da 1 a 4 byte). Le istruzioni possono essere classificate in categorie fra cui le principali sono:

Accesso alla memoria, degli accessi alla memoria o trasferimenti di dati tra registri;

Operazioni aritmetiche, operazioni come le addizioni, sottrazioni, divisioni o moltiplicazioni;

Operazioni logiche, operazioni AND, OR, NOT, EXCLUSIVE NOT e così via;

Controllo, controlli di sequenza, collegamenti condizionali, ecc.

Registri

Quando il processore esegue delle istruzioni, i dati sono temporaneamente memorizzati in piccole memorie rapide da 8, 16, 32 o 64 bit che vengono chiamate Registri. Secondo il tipo di processore il numero totale dei registri può variare da una dozzina fino a più centinaia. I principali registri sono:

Il registro accumulatore (ACC), che immagazzina i risultati delle operazioni aritmetiche e logiche;

Il registro di stato (PSW, Processor Status Word), che permette di memorizzare degli indicatori sullo stato del sistema (ritenuta, sorpasso, ecc.);

Il registro istruzioni (RI), che contiene le istruzioni in corso di elaborazione;

Il contatore ordinal (CO o PC per Program Counter), che contiene l'indirizzo della prossima istruzione da elaborare;

Il registro tampone, che immagazzina temporaneamente un dato proveniente dalla RAM.

Memoria cache

La Memoria cache (detta anche antimemoria o memoria tampone) è una memoria rapida che permette di ridurre i tempi di attesa delle informazioni memorizzate nella RAM. In effetti, la memoria centrale del computer ha una velocità molto meno importante rispetto al processore. Esistono comunque delle memorie molto più rapide, ma ad un costo decisamente elevato. La soluzione consiste quindi nell'includere questo tipo di memoria rapida in prossimità del processore e immagazzinarvi temporaneamente i dati principali che devono essere elaborati dal processore. I computer recenti hanno più livelli di memoria cache:

La memoria cache di primo livello (detta L1 cache, per Level 1 Cache) è direttamente integrata nel processore. Essa è suddivisa in 2 parti:

La prima è la cache di istruzioni, che contiene le istruzioni derivanti dalla RAM decodificata durante il passaggio nelle pipeline;

La seconda è la cache di dati, che contiene dei dati derivanti dalla RAM e i dati recentemente utilizzati nelle operazioni dal processore.

Le cache di primo livello sono di rapido accesso. Il loro tempo di accesso tende ad avvicinarsi a quello dei registri interni del processore.

La memoria cache di secondo livello (detta L2 Cache, per Level 2 Cache) è posta a livello del case contenente il processore (nel chip). La cache di secondo livello si pone tra il processore con la sua cache interna e la RAM. è di più rapido accesso rispetto a quest'ultima ma meno rapida rispetto alla cache di primo livello.

La memoria cache di terzo livello (detta L3 Cache, per Level 3 Cache) è posta a livello della scheda madre. Tutti questi livelli di cache permettono di ridurre il tempo di latenza delle diverse memorie durante l'elaborazione e il trasferimento delle informazioni.

Mentre il processore lavora, il controller di cache di primo livello può interfacciarsi con quello di secondo livello per effettuare dei trasferimenti di informazioni senza bloccare il processore. Allo stesso modo, la cache di secondo livello si interfaccia con quella della RAM (cache di terzo livello), per permettere dei trasferimenti senza bloccare il normale funzionamento del processore.

Segnali di controllo

I Segnali di controllo sono dei segnali elettrici che permettono di orchestrare le diverse unità del processore partecipanti all'esecuzione di un'istruzione. I segnali dei comandi sono distribuiti grazie a un elemento detto Sequencer. Il segnale Read/Write, in italiano lettura/scrittura, permette di segnalare alla memoria che il processore vorrebbe leggere o scrivere un'informazione.

Unità funzionali

Il processore è costituito da un insieme di unità funzionali collegate fra loro. L'architettura di un microprocessore può variare di molto da un'architettura ad un'altra, tuttavia gli elementi principali di un microprocessore sono i seguenti:

Un'unità di istruzione (o unità di controllo, in inglese control unit) che legge i dati in arrivo, li decodifica e poi li invia all'unità di esecuzione. L'unità di istruzione è costituita soprattutto dai seguenti elementi:

Sequencer (o blocco logico di controllo) incaricato di sincronizzare l'esecuzione delle istruzioni al ritmo di un clock. E' inoltre incaricato dell'invio dei segnali di controllo;

Contatore ordinal che contiene l'indirizzo dell'istruzione in corso;

Registro di istruzione che contiene la prossima istruzione.

Un'unità di esecuzione (o unità di elaborazione), che compie le azioni che gli ha passato l'unità di istruzione. L'unità di esecuzione è composta soprattutto dai seguenti elementi:

L'unità aritmetica e logica (sigla UAL o in inglese ALU per Arithmetical and Logical Unit). L'UAL assicura le funzioni di base del calcolo aritmetico e le operazioni logiche (AND, OR, NOT, EXCLUSIVE NOT, ecc.);

L'unità in virgola mobile (sigla FPU, per Floating Point Unit), che compie i calcoli complessi non interi che l'unità aritmetica e logica non può realizzare.

Il registro di stato;

Il registro accumulatore.

Una unità di gestione del bus (o unità di entrata-uscita), che gestisce i flussi di informazioni in entrata e uscita, interfacciata con la RAM del sistema;

Lo schema sottostante da una rappresentazione semplificata degli elementi che costituiscono il processore (l'organizzazione hardware degli elementi non corrisponde alla realtà):

Schema rappresentativo

Transistor

Per effettuare il trattamento dell'informazione, il microprocessore ha un insieme di istruzioni, dette set di istruzioni, realizzate mediante dei circuiti elettronici. Più esattamente, il set di istruzioni è realizzato con l'aiuto di semiconduttori, ovvero «piccoli interruttori» che utilizzano l'effetto transistor, scoperto nel 1947 da John Barden, Walter H. Brattain e William Shockley che ricevettero il premio Nobel nel 1956 per questa scoperta.

Un Transistor (contrazione di transfer resistor, in italiano resistore di trasferimento) è un componente elettronico semi-conduttore, che ha tre elettrodi, capaci di modificare la corrente che li attraversa mediante uno dei suoi elettrodi (detti elettrodi di controllo). Si parla quindi di «componenti attivi», in opposizione ai « componenti passivi », come la resistenza o il condensatore, che hanno solo due elettrodi (si parla di «bipolare»).

Il transistor MOS (metallo, ossido, silicio) è il tipo di transistor maggiormente utilizzato per la concezione di circuiti integrati. Il transistor MOS è composto da due zone caricate negativamente, dette rispettivamente sorgente (che ha un potenziale quasi nullo) e DRAIN (con un potenziale di 5V), separati da una regione caricata positivamente, detta substrato (in inglese substrate). Il substrato è sormontato da un elettrodo di controllo, detto gate, talvolta chiamato anche griglia), che permette di applicare una tensione al substrato:

Transistor MOS

Quando non si applica nessuna tensione all'elettrodo di controllo, il substrato caricato positivamente agisce come una barriera e impedisce all'elettrone di andare dalla sorgente al drain. Se invece si applica una tensione al gate, le cariche positive del substrato sono respinte e si stabilisce un canale di comunicazione, caricato negativamente, che collega la sorgente al drain:

Transistor MOS

Il transistor agisce quindi globalmente come un interruttore programmabile grazie all'elettrodo di controllo. Quando si applica una tensione all'elettrodo di controllo, esso agisce come un interruttore chiuso, in caso contrario come un interruttore aperto.

Circuiti integrati

Una volta assemblati, i transistor possono formare dei circuiti logici, che, assemblati a loro volta, costituiscono dei processori. Il primo circuito integrato data 1958 ed è stato messo a punto dalla società Texas Instruments.

I transistor MOS sono quindi realizzati in sezioni di silicio (dette wafer, ottenute dopo vari trattamenti. Queste sezioni di silicio sono quindi ritagliate in elementi rettangolari, che costituiscono quello che viene chiamato un «circuito». I circuiti sono in seguito posti in case provvisti di connettori di entrata-uscita, per formare un «circuito integrato». La finezza dell'incisione, espressa in micron (micrometri, sigla µm) definisce il numero di transistor per unità di superficie. Possono esistere fino a numerosi milioni di transistor in un solo processore.

La legge di Moore, pubblicata nel 1965 da Gordon E. Moore, cofondatore della società Intel, prevedeva che le performance dei processori (per estensione il numero di transistor integrati sul silicio) raddoppiavano ogni 12 mesi. Questa legge è stata rivista nel 1975, portando il numero di mesi a 18. La legge di Moore è ancora ad oggi in atto.

Famiglie

Ogni tipo di processore ha il proprio set di istruzione. Distinguiamo quindi le seguenti famiglie di processori, ciascuna con un proprio set di istruzione specifico:

80x86, la «x» rappresenta la famiglia. Si parla quindi di 386, 486, 586, 686, e così via;

ARM;

IA-64;

MIPS;

Motorola 6800;

PowerPC M;

SPARC.

Questo spiega perché un programma realizzato per un tipo di processore non possa funzionare direttamente su un sistema con un altro tipo di processore, a meno che non si faccia una traduzione delle istruzioni, detta emulazione. Il termine emulatore è usato per designare il programma che realizza questa traduzione.

Set di istruzioni

Viene detto set di istruzioni l'insieme delle operazioni elementari che un processore può compiere. Il set di istruzioni di un processore determina quindi la sua architettura, sapendo che una stessa architettura può dare delle implementazioni diverse secondo i costruttori. Il processore lavora effettivamente grazie ad un numero limitato di funzioni, direttamente stampate sui circuiti elettronici. La maggior parte delle operazioni possono essere realizzate attraverso delle funzioni di base. Alcune architetture prevedono tuttavia delle funzioni avanzate del processore.

Architettura CISC

L'architettura CISC (Complex Instruction Set Computer, ossia computer con set di istruzioni complesso) consiste nel stampare nel processore delle istruzioni complesse, difficili da creare partendo dalle istruzioni di base. L'architettura CISC è usata in particolare per i processori di tipo 80x86. Questo tipo di architettura ha un costo elevato dovuto alle funzioni avanzate stampate sul silicio. D'altra parte, le istruzioni sono di lunghezza variabile e possono talvolta avere bisogno di più di un ciclo del clock. Ora, un processore basato sull'architettura CISC non può elaborare che una sola istruzione alla volta, con un conseguente tempo di esecuzione.

Architettura RISC

Un processore che usa la tecnologia RISC (Reduced Instruction Set Computer, ossia «computer con set di istruzioni ridotto») non ha delle funzioni avanzate stampate. I programmi devono quindi essere tradotti in istruzioni semplici, cosa che provoca una programmazione più difficile e/o un compilatore più potente. Un'architettura simile ha un costo di produzione ridotto rispetto al processore CISC. Inoltre, le istruzioni, semplici per natura, sono eseguite in un solo ciclo di clock, cosa che rende più rapida l'esecuzione dei programmi rispetto ai processori basati su un'architettura CISC. Infine, simili processori sono capaci di trattare più informazioni simultaneamente trattandole in parallelo.

Miglioramenti tecnologici

Durante gli anni, i produttori di microprocessori (detti fondatori), hanno raggiunto un certo numero di miglioramenti che permettono di ottimizzare il funzionamento del processore.

Il parallelismo

Il parallelismo consiste nell'eseguire simultaneamente, su processori differenti, delle istruzioni relative ad uno stesso programma. Questo si traduce con la divisione di un programma in più processi trattati in parallelo per guadagnarne in tempo di esecuzione. Questo tipo di tecnologia necessita tuttavia di una sincronizzazione e una comunicazione tra i diversi processori, allo stesso modo della divisione dei compiti in un'azienda: il lavoro è diviso in piccoli processori distinti, elaborati da servizi diversi. Il funzionamento di una simile azienda può essere disturbato quando la comunicazione tra i servizi non funziona correttamente.

La pipeline

La pipeline (o pipelining) è una tecnologia che punta a permettere una maggiore velocità di esecuzione delle istruzioni eseguendo in parallelo le varie tappe. Per capire il meccanismo della pipeline, è necessario comprendere prima le fasi di esecuzione di un'istruzione. Le fasi di esecuzione di un'istruzione per un processore contenenti una pipeline «classica» a 5 piani sono le seguenti:

LI, (Lettura dell'istruzione (in inglese Fetch Instruction) dalla cache;

DI, Decodifica dell'istruzione (Decode Instruction) e ricerca degli operandi (Registro o valori immediati);

EX, Esecuzione dell'istruzione (EXecute instruction) (se ADD, si somma, se SUB, si sottrae, ecc.);

MEM, Accesso memoria (MEMory access), scrittura nella memoria se necessario o caricamento dalla memoria;

ER, Scrittura (Write instruction) del valore calcolato nei registri.

Le istruzioni sono organizzate in coda nella memoria, e sono caricate le une dopo le altre. Grazie alla pipeline, l'elaborazione delle istruzioni richiede al massimo le cinque tappe precedenti. Dato che l'ordine di queste tappe non cambia (LI, DI, EX, MEM e ER), è possibile creare nel processore un certo numero di circuiti specializzati per ciascuna di questi fasi.

L'obiettivo della pipeline è di essere capace di realizzare ogni tappa in parallelo con le tappe a monte e a valle, cioè di poter leggere un'istruzione (LI) mentre la precedente è in corso di decodifica (DI), e quella ancora prima è in corso di esecuzione (EX), e quella posta ancora prima accede alla memoria (MEM) e infine la prima della serie è già in corso di scrittura nei registri (ER):

pipeline a 5 tappe

Solitamente bisogna contare da 1 a 2 cicli di clock (raramente di più) per ogni fase della pipeline, ossia 10 cicli di clock al massimo per istruzione. Per due istruzioni, saranno necessari al massimo 12 cicli di clock (10+2=12 invece di 10*2=20), dato che la precedente istruzione era già nella pipeline. Le due istruzioni sono quindi in elaborazione nel processore, con una differenza di uno o due cicli di clock). Per 3 istruzioni, saranno così necessari 14 cicli di clock, ecc.

Il principio della pipeline è quindi paragonabile ad una catena di produzione di automobili. L'automobile passa da una postazione di lavoro all'altra seguendo la catena di montaggio ed esce completamente assemblata all'uscita del complesso. Per ben capire il principio, è necessario guardare la catena nel suo insieme, e non veicolo per veicolo. Servono quindi 3 ore per fabbricare un'auto, ma si produce un veicolo ogni minuto. Da notare tuttavia che esistono differenti tipi di pipeline, da 2 a 40 piani, ma il principio resta lo stesso.

Tecnologia superscalare

La tecnologia superscalare (in inglese superscaling) consiste nel disporre di più unità di trattamento in parallelo per poter trattare più istruzioni per ciclo.

HyperThreading

La tecnologia HyperThreading (o Hyper-Threading, sigla HT, consiste nel definire due processori software all'interno di un processore hardware. Così, il sistema riconosce due processori hardware e si comporta come un sistema multitask inviando due thread simultanei, si parla allora di SMT (Simultaneous Multi Threading). Questa «astuzia» permette di utilizzare al meglio le risorse del processore garantendo che i dati gli siano inviati in massa.

Multi-core

Un processore multi-core è semplicemente un processore fatto non da 1 ma 2 (o 4 o 8) unità di calcolo. Così, per un dual-core, il processore, a frequenza di clock pari, di una potenza di calcolo doppia. Tuttavia, il guadagno non è sempre visibile. In effetti, è necessario che i software e sistemi operativi siano in grado di gestire correttamente questi processori per ottenere un guadagno significativo o evidente. Così, in Windows, solo Vista e Seven sfruttano correttamente questi processori. In questo caso, la versione a 64 bit è raccomandata.

Foto: © Pixabay.

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Potrebbe anche interessarti
Il documento intitolato « Processore » dal sito CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.