Lezione n.5 Percorso dati e unità di controllo

Transcript

Lezione n.5 Percorso dati e unità di controllo
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Lezione n.5
Percorso dati e unità di controllo
Autore: Luca Orrù
1
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Sommario
• Unità di esecuzione o percorso dati (data path)
• Unità di controllo
L’architettura interna di una CPU è divisa in due parti: l’unità di esecuzione e l’unità
di controllo.
L’unità di esecuzione opera sui dati eseguendo le operazioni.
L’unità di controllo è la struttura fisica che traduce il comportamento. Agisce
sull’unità di esecuzione per fargli svolgere le operazioni. Questa unità, quindi,
controlla l’unità di esecuzione generando i segnali di controllo per il Data Path
(percorso dati).
Esempio di unità di controllo
Control
Unit
Data Path
Il percorso dati contiene i registri (memorie), le unità funzionali (es.sommatori),
quindi i moduli fisici che operano sui dati.
L’unità complessiva può essere rappresentata nel seguente modo:
Xin
Inizio delle
operazioni
Unità di
controllo
C’in
Ingresso dati
Xout
Operazioni
terminate
C’out
Percorso
dati
Uscita dati
L’unità di controllo è realizzata a partire dalla descrizione delle operazioni che noi
vogliamo che l’unità di esecuzione esegua.
Autore: Luca Orrù
2
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
C’in è un comando che l’unità di controllo manda all’unità di esecuzione.
C’out è un insieme di linee (in numero inferiore alle linee C’in, che permettono al
percorso dati (unità di esecuzione) di comunicare all’unità di controllo eventuali
situazioni particolari come un riporto o un risultato nullo.
Xin e Xout sono delle linee di comunicazione con altre unità di controllo a livello
superiore. L’unità di controllo (UC) è gestita da altre unità di controllo a livello
superiore che comandano all’UC l’inizio(Xin) e la fine (Xout) delle operazioni. Il
percorso dati è influenzato da dei dati che arrivano in ingresso e fornisce dei risultati.
Vediamo ora la realizzazione della struttura.
Unità Dati e Unità di Controllo
BUS
C1
C3
C7
C10
C11
R1
C2
R2
C4
C6
C5
1
Unità
funzionale
C8
R3
C9
C1
C11
Unità di
controllo
Autore: Luca Orrù
3
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
L’unità di controllo seleziona i cammini che devono essere attivi in un determinato
istante per svolgere determinate operazioni. L’unità funzionale è per esempio un
sommatore, oppure un’unità di operazioni (OR, AND, XOR, etc). R1, R2, R3 sono
registri. Agli ingressi 1 e 2 dell’unità funzionale non possono arrivare segnali/dati da
più percorsi.
Esempio: all’input 1 potrebbero arrivare dati dal BUS, dal registro R1 e da R2. Se
arrivassero contemporaneamente si avrebbe un conflitto (di tipo elettrico). Allora
occorre fare in modo che un solo percorso sia attivo. Per fare questo si usano i punti
di controllo C1, C2, C3, C4 e C5 che sono governati dall’unità di controllo, la quale
fornisce istante per istante i segnali di controllo che forza i percorsi attivi e l’unità
funzionale a svolgere quella determinata operazione. I segnali di controllo C10 e C11
specificano all’unità funzionale quale operazione deve svolgere (AND, OR etc).
Nel caso delle linee C3, C4, C5 solo uno dei controlli C3, C4, C5 sarà attivato (posto
a 1); gli altri saranno posti a zero (disattivati). Il percorso dati è quindi costituito da
innumerevoli percorsi.
Vediamo ora come possono essere realizzati alcuni tipi di controllo.
Cammino dati
BUS
C3
C4
C5
Codificatore
a 4 bit
R1
R3
C8
R2
S1
S2
EN
S1 e S2 sono gli
ingressi di
selezione
C10
C11
Autore: Luca Orrù
Mux a 4
ingressi
AND
Unità funzionale
(UF)
4
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Questo schema rappresenta parte della struttura di commutazione del cammino dati
dell’esempio precedente. Da questo schema è possibile vedere come vengono
selezionati i due input dell’unità funzionale.
Il codificatore a 4 bit riceve in ingresso un codice e lo trasforma in un codice con un
numero inferiore di bit.
Vediamo per esempio cosa succede per l’ingresso 2 all’unità funzionale.
L’ingresso 2 proviene dalla porta AND. C8 controlla i dati provenienti da R3.
Vogliamo far si che all’input 2 sia presente il dato proveniente da R3 oppure 0. Basta
un modulo AND generalizzato (che opera su parole) con il segnale C8 che controlla
l’arrivo dei dati. Se C8=1 i dati di R3 si presentano in ingresso (I2), perché all’uscita
della AND avremmo un vettore di 1. Se C8=0 allora i dati di R3 non possono passare
e quindi all’ingresso I2 si presenta un vettore di zeri.
Vediamo ora come selezionare i dati provenienti dal BUS, da R1 e da R2.
C3, C4, C5 non saranno mai attivi contemporaneamente. Solo uno alla volta sarà
attivo. Il codificatore in base alla combinazione C3, C4, C5, genera un codice che
arriva al Mux. Questo codice funziona da copia di selettori per il Mux, che in base ad
esso seleziona solo uno degli ingressi (BUS, R1, R2) e lo porta in uscita e quindi in
input al primo ingresso dell’unità funzionale.
Nella seguente tabella vengono riportati in corrispondenza agli ingressi C3, C4, C5
(solo 1 attivo) i codici di selezione S1,S2 che permettono di far passare solo uno tra
BUS, R1, R2.
C3
1
0
0
C4
0
1
0
C5
0
0
1
S1
0
1
0
S2 Ingresso al Mux selezionato
0
BUS
0
R1
1
R2
Controllo cablato e controllo microprogrammato
Generazione di sequenze
L’unità di controllo è considerata come una normale macchina a stati. E’ un circuito
sequenziale che realizza la funzione desiderata. Vediamo come viene realizzata
l’Unità di Controllo (UC).
• Compito dell’unità di controllo: deve generare dei segnali di controllo che
forzano l’unità funzionale a svolgere determinate operazioni utili per eseguire
l’istruzione. Quindi avremmo un linguaggio di descrizione del funzionamento
che va tradotto in una sequenza di vettori di controllo.
Autore: Luca Orrù
5
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
• Per realizzare l’UC si parte da un diagramma di flusso (o un programma) che
definisce il comportamento della parte operativa (Unità dati).
• Si deve poi generare dal programma una sequenza temporale di n vettori
C1,C2,C3,….Cn con Ci=(c1,c2,….cm) che definiscono le operazioni da
svolgere ai tempi t1,t2,t3,….tn. Ogni vettore Ci sarà un insieme di segnali di
controllo (c1,c2,….cm). Questi vettori sono generati in sequenza agli istanti
t1,t2,t3,….tn.
Implementazione
Ci sono vari modi per realizzare il sistema che genera questi vettori. Noi né vediamo
due.
1. Controllo cablato: bisogna progettare un circuito sequenziale speciale che
realizza la funzione desiderata, cioè la generazione della sequenza di vettori.
Questo circuito è formato da Flip Flop, codificatori e contatori. Questo
meccanismo, nel caso di sistemi semplici, è più conveniente dal punto di vista
della progettazione ed è poco costoso rispetto ad altri meccanismi più
flessibili, cioè in grado di adattarsi nel caso si debba modificare qualcosa al
progetto, ma è di difficile progettazione per sistemi complessi. In pratica se
voglio modificare o cambiare le funzioni svolte dall’Unità Funzionale devo
riprogettare tutto. E’ tipico delle CPU RISC.
2. Controllo microprogrammato: si basa sul fatto che la sequenza dei vettori di
controllo da inviare all’Unità di esecuzione è memorizzata in una memoria
detta memoria di microprogramma, di tipo ROM. Chiameremmo questi vettori
microistruzioni. Naturalmente, nel caso di sistemi semplici, si hanno costi
maggiori a causa della maggiore complessità richiesta dal hardware (è
necessario un numero maggiore di porte e un’area di silicio più grande) ma si
ha il vantaggio che si può modificare il microprogramma e quindi realizzare
nuove funzioni. In sintesi maggiore flessibilità. Tipico delle CPU CISC.
Riepilogando si ha
o Microistruzioni (vettori di controllo) che contengono le indicazioni (i
segnali di controllo) per l’attivazione delle operazioni/istruzioni.
o Progettazione concorrente, di parte operativa (struttura hardware)
composta dal percorso dati e dai componenti combinatori che formano
l’unità di controllo e parte di controllo (parte software) costituita dalla
sequenza di istruzioni (microistruzioni) che fanno svolgere alla parte
hardware le operazioni che ci interessano.
o Semplice aggiornamento del hardware
o Progettazione strutturata
Cambiare o modificare il microprogramma significa cambiare il contenuto di
una memoria e questo è abbastanza facile.
Autore: Luca Orrù
6
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Confrontando l’Unità di Controllo cablata con l’Unità di Controllo
microprogrammata abbiamo che:
• L’Unità di Controllo cablata è più veloce in quanto il ritardo nella
generazione delle uscite (i segnali di controllo) dipendono unicamente
dai tempi di propagazione dei segnali attraverso le porte logiche, i flip
flop e i circuiti combinatori componenti. L’Unità di controllo
microprogrammata è invece più lenta in quanto per la
generazione/attivazione dei segnali di controllo è comunque richiesto un
accesso alla memoria di microprogramma, oltre ai tempi di propagazione
dei segnali attraverso l’hardware di cui l’Unità di Controllo ha necessità
(mux ,decoder etc).
• L’Unità di Controllo cablata è più complessa da progettare e da
realizzare nel caso il sistema sia di media/alta complessità ovvero il
processore debba svolgere un ampio repertorio di istruzioni e quindi
elaborare una grande quantità di dati.
• Una maggiore complessità circuitale implica che l’Unità di controllo
cablata è più costosa da progettare nel caso di sistemi di media/alta
complessità.
• L’Unità di Controllo cablata è meno flessibile di una Unità di Controllo
microprogrammata in quanto viene realizzata per risolvere un problema
specifico. Se sono richieste delle modifiche, anche solo parziali al
progetto, allora deve essere riprogettata e ricostruita completamente. Nel
caso dell’Unità di Controllo microprogrammata si ha un’alta flessibilità,
in quanto è possibile modificare solamente il programma nella control
memory per far svolgere funzioni diverse senza riprogettare tutto. Al
massimo si deve sostituire l’integrato della control memory (memoria
ROM).
Esempi di progettazione per il controllo cablato
• Metodi di progetto per la costruzione di un sistema di generazione dei
segnali di controllo
o Costruire dei generatori di sequenze basati su elementi (Flip Flop)
di ritardo (asincrono) o contatori (sincrono)
o Macchine a stati finiti: progetto tradizionale di circuiti sequenziali.
Questa tecnica non la vedremo.
Progetto basato su elementi di ritardo
E’ una tecnica asincrona. La sequenza dei segnali di controllo Cij viene generata a
partire da una sequenza di segnali di fase Fn.
Autore: Luca Orrù
7
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
A
F1
Flip Flop
FF1
F2
FF2
F3
Fk-1
Al tempo t1, F1 assume il
valore 1. Al tempo t2 cioè
dopo un t=t2-t1,F2
assume il valore 1 e cosi
via.
F1,F2,..Fk sono i segnali
di fase
FFk
Fk
B
Questo circuito porta a 1 solo F1 o solo F2 o solo Fk. I segnali F1, F2,…Fk
attiveranno poi i segnali di controllo.
Se per esempio si invia un impulso di clock all’ingresso A, questo impulso rimarrà
memorizzato per un tempo t=t2-t1 nel primo blocco di ritardo (FF1) ed in questo t
verrà generato tramite un circuito combinatorio opportuno il segnale di controllo che
ci interessa, attraverso il segnale di fase F1. Poi questo impulso si propaga attraverso
il primo blocco di ritardo e viene memorizzato in FF2 per un nuovo t e attraverso il
segnale di fase F2 verranno generati altri segnali di controllo. Il processo continua
fino all’ultimo FF.
Ci sono anche dei meccanismi sincroni che sono più adatti.
Start
A
Clock
End
Generatore di
sequenza modulo K
F1
F2
Fk
B
Autore: Luca Orrù
8
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Start è il segnale di start per il generatore di sequenza. Il generatore in funzione del
segnale di clock genererà i segnali di fase F1,F2,…Fk. Ad ogni colpo di clock passa
ad 1 un’uscita diversa (F1,F2,…Fk). Al tempo t1, F1=1, in t2, F2=1, in t3, F3=1, in
tk, Fk=1 che segnala anche la fine delle operazioni.
Progetto basato su contatori
Vediamo ora come può essere realizzato questo generatore di fasi.
clock
Begin
S
end
R
Flip Flop
SR
Q
Contatore
modulo K
(realizzato con
FF JK)
Q
Codice (1,2,3, …K
Reset
Decodificatore 1/k
F1
Fk
Il contatore modulo K conta fino a K; ad ogni colpo di clock il conteggio aumenta di
1. Il segnale begin in ingresso al FF SR serve per portare l’input della porta AND a 1.
Quando l’input Q della AND si porta a 1 il clock diventa attivo sul contatore, che
inizia il conteggio. Questo conteggio da origine a dei codici sulle linee d’uscita del
contatore (da 1 a K) e questo codice entra nel decodificatore che attiverà in base al
codice d’ingresso una ed una sola linea d’uscita, cioè un solo segnale di fase tra i k
segnali presenti. Quando il contatore segna 1 si attiva F1; quando il contatore segna K
si attiva Fk.
I segnali di reset e di end interrompono il conteggio.
Autore: Luca Orrù
9
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
Breve richiamo sul funzionamento del FF SR.
Begin
S
1
0
0
1
End
R
0
1
0
1
Q
Qt+1
1
0
Qt
Non ammessa
Abbiamo visto come costruire un generatore di sequenza. Vediamo ora come questo
generatore pilota il circuito combinatorio, che genera i segnali di controllo per il data
path.
Unità di controllo basato su generatore di sequenza.
F1
Generatore di
sequenza modulo
K
Cout
Fk
Circuito
combinatorio
clock
Cin
Cin sono i segnali di controllo provenienti dall’unità di esecuzione; è il C’out della
figura di pagina 2. Cout sono i segnali di controllo in uscita, cioè i segnali C’in della
figura di pagina 2.
Vediamo come si possa passare dal generatore di fasi al circuito di controllo che
attraverso un circuito combinatorio genera i segnali di controllo/i vettori.
Saranno alternativamente a 1 i segnali di fase F1,F2,..Fk. Quando F1=1 sarà generato
un vettore Cout (esempio vengono attivati i segnali di controllo C1,C3,C8 che sono
componenti dei vettori) in modo tale che si svolga una determinata operazione
Autore: Luca Orrù
10
CALCOLATORI ELETTRONICI
Percorso dati e Unità di Controllo
nell’unità funzionale. Poi sarà attivato F2 (F2=1) e sarà generato un altro vettore Cout
( vengono quindi attivati altri segnali Ci di controllo) e cosi via.
Cin sono segnali provenienti dall’unità di esecuzione che forzano, in una determinata
fase Fk, il circuito combinatorio a generare un determinato vettore di controllo Cout.
Si ricordi l’esempio del riporto.
Nella fase F1 viene generato un determinato vettore in funzione del fatto che i segnali
Cin provenienti dall’unità di esecuzione siano di un certo tipo.
Seconda tecnica per la generazione dei vettori di controllo
Controllo microprogrammato
• Ogni istruzione è realizzata da una sequenza di microistruzioni (vettori
di controllo)
• Ogni microistruzione implementa una o più microoperazioni
concorrenti, cioè trasferimenti dati da registri.
• Ogni microistruzione attiva le microoperazioni con un insieme di linee
di controllo generate dal circuito combinatorio
• I segnali di controllo sono memorizzati all’interno di una memoria di
controllo (CM- Control Memory)
• La Control Memory è una memoria Rom (Read Only Memory) ricavata
sullo stesso chip della CPU. Il contenuto della ROM (insieme di
microistruzioni) è stabilito dal progettista dell’Unità di Controllo del
processore
In sintesi:
• una CPU esegue una o più istruzioni;
• ogni istruzione è definita da una o più operazioni specificate dall’Unità di
Controllo (UC), (vettori di controllo).
• Se l’UC è microprogrammata la sequenza delle operazioni che definisce
un’istruzione sono chiamate microistruzioni e sono memorizzate in una
memoria non volatile ovvero una memoria ROM.
Autore: Luca Orrù
11