20
2 SISTEMI ELETTRONICI DIGITALI SINCRONI
CON PIPELINE
2.1 La sincronizzazione
In informatica, la sincronizzazione è la problematica dell'ordinamento temporale di operazioni.
Se tutte le operazioni sono eseguite in serie, il problema della sincronizzazione non sussiste. Tutta-
via, spesso, per sfruttare meglio il sistema e quindi accelerare le elaborazioni, si ricorre al paralleli-
smo, che consiste nell'iniziare più flussi di esecuzione contemporanei (multithreading). Fintanto
che le operazioni eseguite in parallelo usano parti distinte del sistema, non ci sono problemi, ma,
quando due componenti hardware o software operano in parallelo sulla stessa parte del sistema,
si può avere un conflitto.
Il codice che può essere eseguito solo da un processo alla volta (perché contiene dati condivisi, ac-
cesso a risorse, ecc.) si chiama sezione critica.
Ora occorre introdurre una metodologia di progettazione di un sistema digitale sincrono. Alla base
di tutto sta l'individuazione di un insieme di stati, in ciascuno dei quali si esplica una ben determi-
nata azione(controllo, calcolo, decodifica ecc..); gli stati vengono via via assunti dal sistema per
realizzare una operatività e vengono ripercorsi ciclicamente. Infatti, perché una macchina sia utile
e necessario che essa operi ciclicamente, cioè che possa ripetere il proprio ciclo tante volte, quan-
te sono richieste per realizzare l'operatività desiderata. Per tutto questo un sistema sequenziale
sincrono può essere definito una macchina a stati sincrona.
Intendendo realizzare un sistema digitale, dapprima se ne pianifica l'architettura complessiva, poi
si passa alla progettazione delle macchine a stati che lo compongono, e infine si sviluppano le uni-
tà di elaborazione dei dati. Il progetto delle macchine a stati è probabilmente il compito più creati-
vo a cui è chiamato il progettista digitale.
2.2 Struttura generica di un sistema sincrono
In genere un sistema sequenziale è complesso, quindi non è possibile trattarlo come un'unica uni-
tà. Nella stragrande maggioranza dei casi però i sistemi digitali possono essere suddivisi in più parti
o sottosistemi, gerarchicamente organizzati e che sono singolarmente trattabili in maniera sempli-
ce. Se un sistema elabora numeri o segnali vocali digitalizzati o dati da un impianto tecnologico,
una certa sua parte, che sarà indicata come unità dati, svolgerà i compiti di memorizzare, distribui-
re, combinare o generalmente di elaborare dati. Un'altra parte del sistema, che sarà indicata come
unità di controllo, si occuperà di far funzionare l'unità dati, di verificare eventuali condizioni opera-
tive e di decidere che cosa fare secondo le circostanze. In genere, solo l'unità di controllo funziona
da macchina a stati e come tale deve essere progettata. In fig. 2.1 è dato lo schema a blocchi gene-
rale di un sistema, in cui sono indicate l'unità di controllo (CONTROL UNIT) e l'unità dati (DATA
UNIT) insieme con le unità di INPUT e di OUTPUT.
21
Questo schema è alla base di tutti i sistemi digitali, cioè tali sistemi sono tutti strutturati sulle due
unità fondamentali: unità di controllo e unità dati. Osservando la figura 2.1 si vede che l'unità di
controllo riceve comandi dall'esterno, che determinano come la macchina deve funzionare; riceve
condizioni dall’ unità dati, legate all'elaborazione dei dati stessi. L'unità di controllo caratterizza il
sistema ed è specifica per ogni sistema.
La caratteristica chiave della struttura indicata in figura 2.1 è che l'unità di controllo e l'unità da-
ti usano lo stesso clock, cioè tutta la macchina opera sotto il controllo temporale di un unico
clock. Nella figura 2.2 sono illustrate le operazioni compiute da entrambe le unità durante un pe-
riodo di clock.
La figura 2.2 illustra il funzionamento temporale del sistema sincrono di fig.2.1
22
La riga (1) indica che, dopo la transizione del clock, i flip-flop della unità di controllo e della unità
dati sono i primi ad assestarsi ed a presentare un'uscita valida.
La riga (2) indica quando diventano valide le uscite della logica combinatoria che forniscono i se-
gnali di controllo all'unità dati.
La riga (3) indica quando diventano valide le uscite combinatorie dall'unità dati, che sono le condi-
zioni da inviare all'unità di controllo.
La riga (4) indica quando sono definitivamente pronti i segnali che determinano l'evoluzione verso
lo stato prossimo dell'unità di controllo. Questi segnali determinano il momento in cui può iniziare
l'intervallo di tempo di hold, nel quale gli ingressi dei flip-flop devono rimanere stabili affinché i
flip-flop possano effettuare correttamente la transizione di stato su comando del clock.
Dopo la transizione positiva del clock ricomincia un altro periodo di clock. Pertanto la somma
dell'intervallo di tempo, necessario per il completo assestamento della logica combinatoria che
comanda i flip-flop della unità di controllo, con l'intervallo di tempo di hold dei flip-flop determina
la durata minima del periodo del clock, quindi la frequenza massima di funzionamento della mac-
china.
Da quanto visto si comprende come gli eventuali segnali esterni debbano essere sincronizzati col
clock prima di poter entrare nelle funzioni logiche della macchina.
Analogamente risulta ovvio che il clock deve essere distribuito all'interno della macchina in modo
bilanciato(es. ad albero H) al fine di garantire l'isocronicità. Eventuali ritardi di propagazione del
clock costringono per lo meno ad abbassare la frequenza operativa della macchina.
2.3 Vantaggi e svantaggi della logica sincrona
Il principale vantaggio della logica sincrona è la sua semplicità; ogni operazione nel circuito deve
essere completata entro un intervallo di tempo tra due impulsi di clock, chiamato ciclo di clock. Fi-
no a quando questa condizione è soddisfatta (senza violare i tempi di set-up ed hold ma questo lo
approfondiremo nel par. 3.3), il circuito dovrebbe essere affidabile.
La logica sincrona ha anche due svantaggi principali:
1. Il segnale di clock deve essere distribuito a tutti i flip-flop nel circuito; questo implica il con-
sumo di una quantità relativamente grande di potenza e generazione di calore; e i consumi
aumentano all’aumentare della frequenza. Anche i flip-flop che non stanno facendo nulla
consumano energia e dissipano calore nel chip;
2. La massima frequenza di funzionamento è generalmente determinata dal percorso di logi-
ca più lento del circuito, anche noto come il percorso critico (critical path). Questo significa
che ogni calcolo logico, dal più semplice al più complesso, deve essere completato in un so-
lo ciclo di clock. Un modo per aggirare questa limitazione è quella di dividere operazioni
complesse in più semplici operazioni, una tecnica nota come 'pipelining'. Questa tecnica è
di primo piano nella progettazione di microprocessori, e aiuta a migliorare le prestazioni
dei processori moderni; infatti, frazionando un’ intera operazione in tante più semplici, si
ottiene una minimizzazione del critical path e quindi la possibilità di aumentare la frequen-
za di lavoro.
23
2.4 Metodologia di progettazione sincrona
In un sistema digitale sincrono tutti i flip-flop sono comandati dallo stesso segnale di clock e quindi
tutti commutano in sincronia. (Gli eventuali ingressi asincroni dei flip-flop sono al più usati esclu-
sivamente all'inizializzazione del sistema). Quando vengono interconnessi due sistemi digitali di-
stinti o sottosistemi che usano clock diversi, è necessario identificare un numero ristretto di segna-
li asincroni essenziali che richiedono un trattamento speciale, come vedremo nel seguito.
Oltre a progettare il comportamento funzionale di ciascuna macchina a stati, il progettista di un
sistema sincrono reale deve svolgere tre ben definiti compiti per assicurare che il sistema operi in
modo sicuro:
1. Identificare gli ingressi asincroni essenziali, sincronizzarli col clock ed assicurarsi che i sin-
cronizzatori operino in modo sicuro.
2. Strutturare un sistema digitale in diversi sottoblocchi gerarchici sincroni col clock e tra lo-
ro(stesso clock).. può essere necessario suddividere il circuito in diverse macchine sincro-
ne, ma asincrone fra loro (usano clock diversi); è buona norma utilizzare dei flip-flop alla
fine di ogni sottoblocco, per sincronizzare i segnali intermedi tra 2 sottoblocchi del sistema
sincrono, con lo scopo di minimizzare i logic paths e quindi il critical path.
Questa tecnica detta pipelining è particolarmente indicata anche nella progettazione dei
PLD (es. FPGA), in quanto semplifica il lavoro di ottimizzazione che andrà ad eseguire il
compilatore del software (place & route), e cioè la scelta della struttura reale (tipo di celle,
loro disposizione geometrica e interconnessioni), allo scopo di massimizzare i margini
temporali su setup e hold time, per migliorare stabilità e prestazioni.
3. Assicurarsi che i flip-flop abbiano margini positivi di tempo di set-up e tempo di hold.
4. Determinare e/o minimizzare i ritardi di propagazione del clock nel sistema (fenomeno no-
to come clock-skew) con l’uso di buffer globali e linee bilanciate.
2.5 Tecnica del pipelining
E’ una tecnica finalizzata a migliorare le prestazioni di un processore, basata sulla sovrapposizione
dell’esecuzione di più processi appartenenti ad un flusso di esecuzione sequenziale (analogia con
la catena di montaggio).
L’idea alla base di un processore con pipelining è di suddividere il lavoro svolto per eseguire un
processo, in tanti passi (stadi o stazioni della pipeline) che richiedono una frazione P
k
del tempo P
necessario all’esecuzione dell’intero processo. Gli stadi sono connessi in maniera seriale per for-
mare la pipeline, e il flusso dei processi segue un verso sequenziale.
24
Questa tecnica è una soluzione che ottimizza il tempo del processore nel completare il compito
che deve svolgere, e deriva dalla “ricerca operativa”, quella teoria delle decisioni che serve a gesti-
re e coordinare attività e risorse limitate, al fine di massimizzare o minimizzare una funzione obiettivo
(nel nostro caso si tratta principalmente di minimizzare il tempo di esecuzione di un processo).
LA CATENA DI MONTAGGIO
E’ riconducibile ad un problema di scheduling del tipo flow shop dove i jobs vengono processati secondo
una sequenza prestabilita da macchine (gli stadi o le stazioni di lavoro) eterogenee, che svolgono cioè pro-
cessi differenti. Ogni stazione k impiega un tempo di processamento P
jk
per processare il job j-esimo; nel
nostro caso per semplificare il concetto, ogni stazione impiega un tempo di processamento P
k
identico nel
processare qualsiasi job.
Jobs j=4 (sono i task A, B, C e D);
Stazioni k=4 (sono le macchine che compongono la catena di montaggio);
P
k
= tempo di processamento dei jobs nella stazione k;
T
LAVAGGIO
= T
ASCIUGATURA
= T
STIRATURA
= T
RIORDINO
= 0,5 ore;
Poiché gli stadi sono collegati in sequenza, devono operare in modo sincrono (avanzamento della
pipeline sincronizzato col clock); la massima frequenza di funzionamento (e quindi di avanzamento
della catena di montaggio) è determinata dal processo più lento: T
CICLO
≥ max{P
k
}.
Nella figura notiamo che la soluzione sequenziale è caratterizzata da i=4 jobs (che sono A,B,C e D)
e k=1 stazione che esegue un unico processo con tempo di processamento P= T
LAVAGGIO
+ T
ASCIUGATU-
RA
+ T
STIRATURA
+ T
RIORDINO
= 2ore. Il job j+1 per essere processato, deve attendere il P del job j; ciò im-
plica la condizione T
CICLO
≥2ore.
La presenza della pipeline invece consente di frazionare il processo in k processi più corti, nel no-
stro caso k=4 (che sono lavaggio, asciugatura, stiratura e riordino) e ciascuno impiega P
k
=0,5 ore.
La differenza tra le 2 soluzioni è che la pipeline aumenta il numero di processi k contempora-
25
neamente in esecuzione (il throughput o numero di processi eseguiti nell’unità di tempo), con la
possibilità di lavorare su k jobs in parallelo (multi-tasking), ciò che non avviene nella soluzione
sequenziale, dove di fatto esiste un unico processo e un’unica stazione.
E’ quindi chiaro che aumentare il numero k di stazioni vuol dire poter diminuire il periodo di ciclo
del sistema. Con pipeline la condizione diventa T
CICLO
≥ 0,5 ore.
Due parametri rimangono costanti, e sono il tempo di permanenza dell’j-esimo job nel sistema
jk
=2 ore, così come il tempo effettivo lavorato della catena di montaggio
jk
=8 ore.
Un parametro però è stato migliorato, ed è il tempo di completamento di tutto il lavoro (il make-
span) che è diminuito da 8 a 3,5 ore, cioè di (k-1)*(P-P
k
).
A regime (cioè quando la catena inizia a restituire prodotti finiti) i tempi di inoperosità sono stati
quindi eliminati, infatti il job j+1 per essere processato non deve attendere il completamento del
job j (le 2 ore), ma solo l’avanzamento alla stazione successiva (cioè mezzora).
ANALOGIA CON UN SISTEMA ELETTRONICO DIGITALE SINCRONO:
T
CICLO
= T
CLK
;
i
JOB
= n
BITS
;
k
STAZIONI
(lavaggio, sciugatura ecc..) = k
STAGE
(decodifica, controllo, ecc..)
max{P
k
} = ritardo dello stadio più lento (critical path);
Abbiamo quindi dimostrato che aumentando gli stage mettendo dei flip-flop D tra le fasi di decodi-
fica, controllo ecc.. si potrebbe diminuire il critical path e lavorare con un T
CLK
inferiore; diminuire il
“makespan” vuol dire trasferire in uscita al sistema un maggior numero di bit nell’unità di tempo,
quindi aumenta la velocità del sistema (es. bitrate), nel nostro caso da 4bit/8ore a 4bit/3,5ore.
2.6 Sincronizzazione di segnali esterni
Un flip-flop D connesso come in Fig. 2.5a consente di sincronizzare il segnale esterno I sul clock se
la durata di I è maggiore del periodo del clock.