sei sul sito di Giovanni Fraterno
Per potenziare un
microprocessore per PC con lo scopo di renderlo più
rapido, si è appena visto che la tecnica più
semplice consiste nel fargli elaborare più
velocemente le istruzioni, il che si ottiene aumentando
la frequenza di clock.
Un altro metodo, denominato parallelismo, consiste invece nel fare in modo che
il microprocessore sia in grado di elaborare più
istruzioni contemporaneamente.
Il parallelismo ha fatto la
sua comparsa con l'avvento dei primi Pentium della Intel.
Il parallelismo può essere
implementato mediante 2 tecniche:
- la
pipelining
- e
l'architettura superscalare.
La pipelining
permette di elaborare più istruzioni
contemporaneamente perchè l'esame di una istruzione
inizia prima che la precedente sia già stata completamente elaborata.
Nella tecnica con pipeline
si può incominciare l'implementazione di un nuovo processo mentre l'azione in
corso non è ancora terminata perchè con la suddetta tecnica si suddivide in più
fasi, ovvero in più livelli, il trattamento
delle istruzioni.
Nell'architettura superscalare viceversa il parallelismo è ottenuto
aumentando effettivamente il numero di unità interne al microprocessore che effettuano il
trattamento delle istruzioni.
Tutti i moderni
microprocessori utilizzano entrambe le suddette
tecniche, per cui i processori per PC di oggi
sono caratterizzati da più pipeline ognuna composta
da 5 a 12 livelli.
Si badi che il numero di pipeline non può aumentare più di tanto
perchè l'esame di un'istruzione non è detto che possa essere sempre anticipata
rispetto a quando dovrebbe per il semplice motivo che la suddetta istruzione potrebbe dipendere dai dati di una precedente
istruzione.
Anche il numero dei livelli
delle singole pipeline non può aumentare più di tanto.
I singoli livelli, infatti,
di ognuna delle pipeline, vengono percorsi alla stessa identica velocità, con quest'ultima che
viene calcolata sulla base dell'istruzione che richiede il tempo di implementazione
più lungo.
Più cresce dunque il numero dei livelli delle singole pipeline,
più si rischia di allungare il tempo di implementazione delle istruzioni, provocando un
rallentamento generale.
D'altra parte, più è corta la
pipeline, più è probabile che aumentano il numero di cicli di clock durante i
quali il processore può restare senza far niente, perchè con un numero
insufficiente di livelli all'interno della pipeline, il processore rischia di
trovarsi con un flusso interrotto e quindi di
perdere diversi cicli di clock, ovvero di girare a vuoto nell'attesa che la memoria fornisca il codice o i
dati da elaborare.