Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
DATAPATH
Individuiamo i componenti per realizzare il datapath
analizzando i componenti richiesti per realizzare le diverse
fasi
Individuiamo i segnali di controllo che l’unità di controllo
deve generare per il datapath
Assumiamo che il processore faccia uso dei seguenti
registri
PC, registro con l’indirizzo della prossima istruzione
Register File, banco di 32 registri da 32 o 64 bit
REALIZZAZIONE DELL’UNITÀ DI CONTROLLO
Possibili implementazioni dell’unità di controllo
Cablata
Microprogrammata
Nella implementazione cablata la realizzazione
dell’unità di controllo equivale alla realizzazione di
una rete sequenziale sincrona
Data la macchina a stati, è necessario realizzare
la funzione stato prossimo
◼ la funzione delle uscite ovvero i segnali di controllo
◼
REALIZZAZIONE CABLATA
Controllo
Segnali
Unità Unità
di Rete
Controllo Operativa
combinatoria State
Next
Ingressi Stato
Prossimo
Registro di Stato
Cod.Op.
Reg.Istruzione
LOGICA CABLATA
Progetto
• Come sintesi di rete sequenziale
– ingressi: IR, Stato
• uscite: comandi, Stato prossimo
•
Uso di ROM. La rete che definisce stato prossimo e i segnali di
– controllo è implementata mediante una memoria ROM che ha
come
ingressi (indirizzi alla ROM): IR, stato di UO, stato di UC
• uscite: comandi, ingressi di eccitazione dei FF di stato
• Questa soluzione evita di dovere fare la sintesi della rete
• sequenziale. Copiamo in memoria direttamente il contenuto della
tabella delle eccitazione.
Progettazione con CAD per VLSI
– Realizziamo un modello HDL e facciamo la sintesi con strumenti automatici
PROBLEMI DELLA REALIZZAZIONE CABLATA
Se il numero di istruzioni è piccolo, la macchina a stati è semplice da
realizzare e da implementare senza fare errori.
Con un set di istruzioni elevato (anche dell’ordine di alcune centinaia) con
cicli di clock per la loro esecuzione che possono variare di molto ( da 1 al
alcune decine), la descrizione dell’unità di controllo mediante macchina a
stati ( stati prossimi e segnali di controllo per ogni stato) risulta problematica
La macchina a stati potrebbe contenere da alcune migliaia fino a centinaia di migliaia
di stati per ISA molto complessi
La rappresentazione grafica della macchina a stati risulta estremamente complicata
Esprimere le funzioni di controllo in termini di equazioni diventa praticamente
impossibile
REALIZZAZIONE MICROPROGRAMMATA
Tecnica affermatasi negli anni 70
L’unità di controllo viene vista come una unità in grado di
eseguire sequenze di microistruzioni.
L’implementazione dell’unità di controllo viene vista come la
scrittura di un programma ovvero come la scrittura di una
sequenze di microistruzioni
Progettare il controllo come un programma che realizza le
istruzioni macchina in termini di microistruzione prende il nome
di microprogrammazione
Ogni microistruzione definisce
quali segnali di controllo devono essere asseriti
la configurazione dei segnali di controllo dei multiplexer
REALIZZAZIONE MICROPROGRAMMATA
Ogni microistruzione è composta da un insieme di
microoperazioni eseguibili in parallelo
Una microoperazione è associata ad uno o più segnali di controllo
L’esecuzione delle microistruzioni/microoperazioni, oltre a
generare i segnali di controllo per il datapath, determina la
successiva microistruzione da eseguire.
L’esecuzione di una istruzione del processore viene realizzata
mediante l’esecuzione di una sequenza di microistruzioni
A ciascuna delle fasi di esecuzione di una istruzione
(fetch,decode,execute,memory access, write back) corrisponde
l’esecuzione di una o più microistruzioni.
REALIZZAZIONE MICROPROGRAMMATA
Le microistruzioni sono memorizzate nella memoria di
microprogramma
PC: contatore di microprogramma. Contiene l’indirizzo della
prossima microistruzione
REALIZZAZIONE MICROPROGRAMMATA
Unità D
di E
Controllo C
Memoria di O Unità
MicroProgramma D Operativa
E
R
Contatore di
MicroProgramma Condizioni
+ Selezione
Indirizzo
Cod.Op.
Reg.Istruzione
REALIZZAZIONE MICROPROGRAMMATA
L’esecuzione di una microistruzione consiste dei seguenti passi
Fetch della microistruzione
Decodifica/esecuzione delle microoperazione ovvero generazione dei
segnali di controllo
L’esecuzione di una istruzione viene realizzata nel seguente modo
PC
All’inizio della fase di fetch contiene l’indirizzo (I ) del tratto di
0
microprogramma corrispondente al fetch PC
Alla fine della fase di fetch e decodifica il viene aggiornato
l'indirizzo della prima microistruzione della routine che effettua le
azioni richieste dalla particolare istruzione. Tale indirizzo è ottenuto a
partire dal contenuto di IR
PC
Al termine, viene di nuovo caricato con (I )
0
FORMATO DELLE MICROISTRUZIONI
Anziché scrivere direttamente, come nella memoria ROM
dell’approccio cablato, la configurazione dei segnali di controllo per
ogni fase di ogni istruzione, possiamo scrivere le microistruzioni in
modo simbolico e tramite un traduttore le microistruzioni vengono
tradotte nella sequenza di bit da memorizzare nella memoria di
microprogramma.
MICROPROGRAMMAZIONE
ORIZZONTALE
Orizzontale
▪Nella microprogrammazione orizzontale le microistruzioni
contengono molte microoperazioni eseguite in parallelo
▪Il microprogramma risulta costituito da un numero limitato
di microistruzioni
▪Vantaggi: buona velocità nella esecuzione delle istruzione
▪Svantaggi: notevole spreco di memoria
MICROPROGRAMMAZIONE VERTICALE
▪Nella microprogrammazione verticale le
microistruzioni contengono poche
microoperazioni eseguite in parallelo
▪Il microprogramma risulta costituito da un
elevato numero di microistruzioni
▪Svantaggi: ridotta velocità nella
esecuzione delle istruzione
▪Vantaggi: buon uso della memoria
CABLATA O MICROPROGRAMMATA?
Fino a fine anni ‘60: logica cablata
• (PDP8, HP 2116)
Anni ‘70: microprogrammazione
• (VAX, Z80, 8086,
68000)
Repertorio di istruzioni molto esteso e variato:
– CISC
Il VAX 11/789 (Digital) e il 370/168 (IBM)
– avevano oltre 400.000 bit di memoria di
controllo
Dagli anni ‘80 si è tornati alla logica cablata;
• Affermazione delle macchine RISC
–
Istruttivo è esaminare l’evoluzione dell’architettura
• Intel: da CISC a (praticamente) RISC
Organizzazione pipeline della CPU
PIPELINE
La pipeline è una tecnica di ottimizzazione basata sulla
sovrapposizione temporale delle istruzioni come in una catena
di montaggio.
Idea base:
L’esecuzione di un’istruzione è divisa in differenti fasi (pipeline stages)
Ciascuna fase ha bisogno di una specifica risorsa
Al termine di ogni fase la risorsa è disponibile per la successiva
istruzione
Anziché aspettare che tutte le fasi siano completate per iniziare la prima
fase dell’istruzione successiva, al termine della prima fase
dell’istruzione i-esima, parte la prima fase dell’istruzione i+1-esima
come in una catena di montaggio
PRESTAZIONE CON PIPELINE
Il tempo di exec della singola istruzione non diminuisce
• Migliora il throughput delle istruzioni poiché anziché
• completare un istruzione ogni N cicli di clock, completa ad
ogni ciclo di clock.
Il tempo medio di esecuzione delle istruzioni si riduce di un
• fattore N (caso ideale)
CPI =N CPI = 1
• Sequenziale Pipe
Il pipeline rate è limitato dallo stage più lento.
•
COSA SERVE PER OTTENERE UNA
IMPLEMENTAZIONE PIPELINE DEL DATAPATH
▪ Un valore prodotto nella fase i dell’esecuzione di
un’istruzione deve essere memorizzato in un registro per
potere essere usato in una fase successiva della stessa
istruzione
✓ L’istruzione letta dalla memoria nella fase di fetch deve essere
memorizzata nel registro IR
✓ I valori letti dal Register file nella fase di decode devono essere
memorizzati nei registri A e B
▪ Se un valore presente nella fase i dell’esecuzione deve
essere utilizzato in una fase successiva, deve essere ricopiato
un altro registro
✓ Il valore del registro destinazione presente in IR nella fase di Decode
deve essere copiato in un altro registro poiché tale valore servirà in
una fase successiva (Write back)
UNITÀ DI CONTROLLO PER IL PIPELINE
WB
Instruction M WB
Control EX M WB
IF/ID ID/EX EX/MEM MEM/WB
L'unità di controllo nella fase ID produce i segnali di controllo
che verranno utilizzati negli stadi successivi EX, MM e WB
I segnali non utilizzati in uno stadio sono inoltrati agli stadi
successivi. Pipeline Hazards
PROBLEMI
Potenziali conflitti sulle risorse!
1. Con un’unica memoria le fasi di IF e MeM vorrebbero usare la
stessa risorsa Memoria => Conflitto tra le due fasi per
accedere alla memoria.
2. Con IM e DM separate, nessun conflitto, ma a parità di clock
cycle occorre una memoria 5 volte più veloce rispetto a una
implementazione sequenziale
3. Le fasi ID e WB usano lo stesso banco di registri nello stesso
periodo di clock per istruzioni diverse!
4. Il PC va aggiornato ogni periodo di clock per fare un
fetch/clock. Cosa accade per un branch il cui esito è noto
soltanto nella fase di mem?
se noi non gestiamo opportunamente questo tipo di istruzioni
rischiamo di eseguire istruzioni che non dovrebbero essere seguite es. immaginiamo di dover fare il salto di
una certa istruzione, noi ignoriamo questo salto e carichiamo nella pipeline l’istruzione che viene subito
dopo. se permettiamo che questa istruzione arrivi alla fine.. cosa succede? noi avremo dovuto eseguire
altre istruzioni invece ne eseguiamo altre. risultato, il comportamento del processore risulterà essere
sbagliato
LIMITI ALLA ESECUZIONE PIPELINE: I
CONFLITTI (HAZARD)
•I conflitti (Hazard) impediscono che una istruzione
venga eseguita nel ciclo di clock atteso
Structural hazards: Le risorse HW non supportano alcune
-
combinazioni di istruzioni
-Data hazards: Un’istruzione dipende dal risultato di una
istruzione che è ancora nella pipel